diff options
author | Arystanbek Dyussenov <arystan.d@gmail.com> | 2009-11-29 21:54:37 +0300 |
---|---|---|
committer | Arystanbek Dyussenov <arystan.d@gmail.com> | 2009-11-29 21:54:37 +0300 |
commit | 71a2cc322286a689e19c4ad069fded3b02d43f38 (patch) | |
tree | eb10907e08a370fbd0f70075ff19aa825b01c607 | |
parent | ead79e535d403f3cff00352a9ef0a750afbab30d (diff) | |
parent | ae16f465738b538964e5f00c1506582d47ead7d1 (diff) |
Merge from trunk -r 24758:25003.
364 files changed, 27409 insertions, 19604 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 14510cbeecd..184b106a84d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# $Id$ + # $Id$ # ***** BEGIN GPL LICENSE BLOCK ***** # # This program is free software; you can redistribute it and/or @@ -531,19 +531,21 @@ IF(APPLE) SET(LLIBS stdc++ SystemStubs) IF (WITH_COCOA) - SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -DGHOST_COCOA") - SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio") - IF(USE_QTKIT) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT") - SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit") - ELSE(USE_QTKIT) - IF(WITH_QUICKTIME) - SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime") - ENDIF(WITH_QUICKTIME) - ENDIF(USE_QTKIT) + SET(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA") + SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio") + IF(USE_QTKIT) + SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT") + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit") + IF(CMAKE_OSX_ARCHITECTURES MATCHES i386) + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime") + #libSDL still needs 32bit carbon quicktime + ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES i386) + ELSEIF(WITH_QUICKTIME) + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime") + ENDIF(USE_QTKIT) ELSE (WITH_COCOA) - SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") - SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime") + SET(PLATFORM_CFLAGS "-pipe -funsigned-char") + SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime") ENDIF (WITH_COCOA) IF(WITH_OPENMP) @@ -585,15 +587,23 @@ IF(APPLE) SET(EXETYPE MACOSX_BUNDLE) - + SET(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g") + SET(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g") IF(CMAKE_OSX_ARCHITECTURES MATCHES "i386") - SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller") - SET(CMAKE_C_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller") + SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller") + SET(CMAKE_C_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller") ELSEIF(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64") - SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller") - SET(CMAKE_C_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller") + SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller") + SET(CMAKE_C_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller") + ELSE(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64") + SET(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing") + SET(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing") ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES "i386") + # Better warnings + SET(C_WARNINGS "-Wall -Wno-char-subscripts -Wpointer-arith -Wcast-align -Wdeclaration-after-statement") + SET(CXX_WARNINGS "-Wall -Wno-invalid-offsetof -Wno-sign-compare") + ENDIF(APPLE) IF(CMAKE_SYSTEM_NAME MATCHES "Linux") diff --git a/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h b/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h index be261ec4080..a9f3223798b 100644 --- a/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h +++ b/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h @@ -152,6 +152,10 @@ BT_DECLARE_ALIGNED_ALLOCATOR(); { return (proxyType == STATIC_PLANE_PROXYTYPE); } + static SIMD_FORCE_INLINE bool isSoftBody(int proxyType) + { + return (proxyType == SOFTBODY_SHAPE_PROXYTYPE); + } } ; diff --git a/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp index 10e880e2523..7159f552829 100644 --- a/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp +++ b/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp @@ -31,6 +31,7 @@ subject to the following restrictions: #include "LinearMath/btAabbUtil2.h" #include "LinearMath/btQuickprof.h" #include "LinearMath/btStackAlloc.h" +#include "BulletSoftBody/btSoftBody.h" //#define USE_BRUTEFORCE_RAYBROADPHASE 1 //RECALCULATE_AABB is slower, but benefit is that you don't need to call 'stepSimulation' or 'updateAabbs' before using a rayTest @@ -411,6 +412,31 @@ void btCollisionWorld::rayTestSingle(const btTransform& rayFromTrans,const btTra // restore collisionObject->internalSetTemporaryCollisionShape(saveCollisionShape); } + } else { + if (collisionShape->isSoftBody()) { + btSoftBody* softBody = static_cast<btSoftBody*>(collisionObject); + btSoftBody::sRayCast softResult; + if (softBody->rayTest(rayFromTrans.getOrigin(), rayToTrans.getOrigin(), softResult)) + { + btCollisionWorld::LocalShapeInfo shapeInfo; + shapeInfo.m_shapePart = 0; + shapeInfo.m_triangleIndex = softResult.index; + // get the normal + btVector3 normal = softBody->m_faces[softResult.index].m_normal; + btVector3 rayDir = rayToTrans.getOrigin() - rayFromTrans.getOrigin(); + if (normal.dot(rayDir) > 0) { + // normal always point toward origin of the ray + normal = -normal; + } + btCollisionWorld::LocalRayResult rayResult + (collisionObject, + &shapeInfo, + normal, + softResult.fraction); + bool normalInWorldSpace = true; + resultCallback.addSingleResult(rayResult,normalInWorldSpace); + } + } } } } diff --git a/extern/bullet2/src/BulletCollision/CollisionShapes/btCollisionShape.h b/extern/bullet2/src/BulletCollision/CollisionShapes/btCollisionShape.h index 1f4b9bec647..b6374e64153 100644 --- a/extern/bullet2/src/BulletCollision/CollisionShapes/btCollisionShape.h +++ b/extern/bullet2/src/BulletCollision/CollisionShapes/btCollisionShape.h @@ -72,6 +72,10 @@ public: { return btBroadphaseProxy::isCompound(getShapeType()); } + SIMD_FORCE_INLINE bool isSoftBody() const + { + return btBroadphaseProxy::isSoftBody(getShapeType()); + } ///isInfinite is used to catch simulation error (aabb check) SIMD_FORCE_INLINE bool isInfinite() const diff --git a/extern/glew/make/msvc_9_0/glew.vcproj b/extern/glew/make/msvc_9_0/glew.vcproj index a7186f61cbc..f8b791de218 100644 --- a/extern/glew/make/msvc_9_0/glew.vcproj +++ b/extern/glew/make/msvc_9_0/glew.vcproj @@ -43,7 +43,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;GLEW_STATIC"
MinimalRebuild="false"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -115,7 +115,7 @@ Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
diff --git a/intern/audaspace/make/msvc_9_0/audaspace.vcproj b/intern/audaspace/make/msvc_9_0/audaspace.vcproj index 93dcdd66628..7c72ef70f06 100644 --- a/intern/audaspace/make/msvc_9_0/audaspace.vcproj +++ b/intern/audaspace/make/msvc_9_0/audaspace.vcproj @@ -342,6 +342,10 @@ >
</File>
<File
+ RelativePath="..\..\intern\AUD_C-API.h"
+ >
+ </File>
+ <File
RelativePath="..\..\intern\AUD_ChannelMapperFactory.cpp"
>
</File>
@@ -758,10 +762,6 @@ >
</File>
</Filter>
- <File
- RelativePath="..\..\AUD_C-API.h"
- >
- </File>
</Files>
<Globals>
</Globals>
diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index ff4a5956a12..3f5f52aa2ed 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -23,6 +23,9 @@ * * Contributor(s): none yet. * + * Part of this code has been taken from Qt, under LGPL license + * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). + * * ***** END GPL LICENSE BLOCK ***** */ @@ -126,6 +129,8 @@ GHOST_SystemX11( m_xclip_out= XInternAtom(m_display, "XCLIP_OUT", False); m_incr= XInternAtom(m_display, "INCR", False); m_utf8_string= XInternAtom(m_display, "UTF8_STRING", False); + m_last_warp = 0; + // compute the initial time timeval tv; @@ -310,6 +315,61 @@ static void SleepTillEvent(Display *display, GHOST_TInt64 maxSleep) { } } +/* This function borrowed from Qt's X11 support + * qclipboard_x11.cpp + * */ +struct init_timestamp_data +{ + Time timestamp; +}; + +static Bool init_timestamp_scanner(Display*, XEvent *event, XPointer arg) +{ + init_timestamp_data *data = + reinterpret_cast<init_timestamp_data*>(arg); + switch(event->type) + { + case ButtonPress: + case ButtonRelease: + data->timestamp = event->xbutton.time; + break; + case MotionNotify: + data->timestamp = event->xmotion.time; + break; + case KeyPress: + case KeyRelease: + data->timestamp = event->xkey.time; + break; + case PropertyNotify: + data->timestamp = event->xproperty.time; + break; + case EnterNotify: + case LeaveNotify: + data->timestamp = event->xcrossing.time; + break; + case SelectionClear: + data->timestamp = event->xselectionclear.time; + break; + default: + break; + } + + return false; +} + +Time +GHOST_SystemX11:: +lastEventTime(Time default_time) { + init_timestamp_data data; + data.timestamp = default_time; + XEvent ev; + XCheckIfEvent(m_display, &ev, &init_timestamp_scanner, (XPointer)&data); + + return data.timestamp; +} + + + bool GHOST_SystemX11:: processEvents( @@ -405,10 +465,15 @@ GHOST_SystemX11::processEvent(XEvent *xe) window->getCursorGrabAccum(x_accum, y_accum); if(x_new != xme.x_root || y_new != xme.y_root) { - /* when wrapping we don't need to add an event because the - * setCursorPosition call will cause a new event after */ - setCursorPosition(x_new, y_new); /* wrap */ - window->setCursorGrabAccum(x_accum + (xme.x_root - x_new), y_accum + (xme.y_root - y_new)); + if (xme.time > m_last_warp) { + /* when wrapping we don't need to add an event because the + * setCursorPosition call will cause a new event after */ + setCursorPosition(x_new, y_new); /* wrap */ + window->setCursorGrabAccum(x_accum + (xme.x_root - x_new), y_accum + (xme.y_root - y_new)); + m_last_warp = lastEventTime(xme.time); + } else { + setCursorPosition(x_new, y_new); /* wrap but don't accumulate */ + } } else { g_event = new @@ -907,7 +972,7 @@ setCursorPosition( int rely = y-cy; XWarpPointer(m_display,None,None,0,0,0,0,relx,rely); - XFlush(m_display); + XSync(m_display, 0); /* Sync to process all requests */ return GHOST_kSuccess; } diff --git a/intern/ghost/intern/GHOST_SystemX11.h b/intern/ghost/intern/GHOST_SystemX11.h index 782f08f6737..d76c3991beb 100644 --- a/intern/ghost/intern/GHOST_SystemX11.h +++ b/intern/ghost/intern/GHOST_SystemX11.h @@ -266,6 +266,10 @@ private : /// A vector of keyboard key masks char m_keyboard_vector[32]; + /* to prevent multiple warp, we store the time of the last warp event + * and stop accumulating all events generated before that */ + Time m_last_warp; + /** * Return the ghost window associated with the * X11 window xwind @@ -281,6 +285,11 @@ private : XEvent *xe ); + Time + lastEventTime( + Time default_time + ); + bool generateWindowExposeEvents( ); diff --git a/intern/ghost/intern/GHOST_Window.cpp b/intern/ghost/intern/GHOST_Window.cpp index e89e0274276..14a255e2e5e 100644 --- a/intern/ghost/intern/GHOST_Window.cpp +++ b/intern/ghost/intern/GHOST_Window.cpp @@ -109,6 +109,8 @@ GHOST_TSuccess GHOST_Window::setCursorGrab(GHOST_TGrabCursorMode mode, GHOST_Rec m_cursorGrabBounds.m_l= m_cursorGrabBounds.m_r= -1; else if (bounds) { m_cursorGrabBounds= *bounds; + } else { /* if bounds not defined, use window */ + getClientBounds(m_cursorGrabBounds); } m_cursorGrab = mode; return GHOST_kSuccess; diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm index 24abc9c45fc..b1b23963b3d 100644 --- a/intern/ghost/intern/GHOST_WindowCocoa.mm +++ b/intern/ghost/intern/GHOST_WindowCocoa.mm @@ -858,15 +858,18 @@ GHOST_TSuccess GHOST_WindowCocoa::installDrawingContext(GHOST_TDrawingContextTyp if (!s_firstOpenGLcontext) s_firstOpenGLcontext = tmpOpenGLContext; #ifdef WAIT_FOR_VSYNC + { + GLint swapInt = 1; /* wait for vsync, to avoid tearing artifacts */ - [tmpOpenGLContext setValues:1 forParameter:NSOpenGLCPSwapInterval]; + [tmpOpenGLContext setValues:&swapInt forParameter:NSOpenGLCPSwapInterval]; + } #endif - [m_openGLView setOpenGLContext:tmpOpenGLContext]; - [tmpOpenGLContext setView:m_openGLView]; - - m_openGLContext = tmpOpenGLContext; + [m_openGLView setOpenGLContext:tmpOpenGLContext]; + [tmpOpenGLContext setView:m_openGLView]; + + m_openGLContext = tmpOpenGLContext; break; - + case GHOST_kDrawingContextTypeNone: success = GHOST_kSuccess; break; diff --git a/projectfiles_vc9/blender/blender.sln b/projectfiles_vc9/blender/blender.sln index deb9d216bf6..12f3f877c33 100644 --- a/projectfiles_vc9/blender/blender.sln +++ b/projectfiles_vc9/blender/blender.sln @@ -157,13 +157,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blenderplayer", "..\gameeng {9C71A793-C177-4CAB-8EC5-923D500B39F8} = {9C71A793-C177-4CAB-8EC5-923D500B39F8}
{F90BD995-FFA4-4B18-81E8-FA4322C939E8} = {F90BD995-FFA4-4B18-81E8-FA4322C939E8}
{BB6AA598-B336-4F8B-9DF9-8CAE7BE71C23} = {BB6AA598-B336-4F8B-9DF9-8CAE7BE71C23}
- {8154A59A-CAED-403D-AB94-BC4E7C032666} = {8154A59A-CAED-403D-AB94-BC4E7C032666}
{3648FB9A-C36F-43AB-AED0-1F1361E67FC7} = {3648FB9A-C36F-43AB-AED0-1F1361E67FC7}
{542A9FA1-B7FF-441C-AE15-054DB31D3488} = {542A9FA1-B7FF-441C-AE15-054DB31D3488}
{D8ABD6A5-1B36-4D62-934E-B5C6801130B0} = {D8ABD6A5-1B36-4D62-934E-B5C6801130B0}
{E109F1A5-FDD3-4F56-A1C4-96867EEA4C5B} = {E109F1A5-FDD3-4F56-A1C4-96867EEA4C5B}
{727F90AC-ABE6-40BF-8937-C2F2F1D13DEA} = {727F90AC-ABE6-40BF-8937-C2F2F1D13DEA}
{BAC615B0-F1AF-418B-8D23-A10FD8870D6A} = {BAC615B0-F1AF-418B-8D23-A10FD8870D6A}
+ {E8904FB3-F8F7-BC21-87A6-029A57B901F4} = {E8904FB3-F8F7-BC21-87A6-029A57B901F4}
{E90C7BC2-CF30-4A60-A8F2-0050D592E358} = {E90C7BC2-CF30-4A60-A8F2-0050D592E358}
{8B8D4FC3-3234-4E54-8376-5AB83D00D164} = {8B8D4FC3-3234-4E54-8376-5AB83D00D164}
{4B6AFCC5-968C-424A-8F20-76E41B3BEF74} = {4B6AFCC5-968C-424A-8F20-76E41B3BEF74}
@@ -1097,6 +1097,7 @@ Global {B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.Blender Release|Win32.Build.0 = Blender Release|Win32
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
+ {B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.Debug|Win32.ActiveCfg = 3DPlugin Debug|Win32
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.Debug|Win32.Build.0 = 3DPlugin Debug|Win32
@@ -1155,6 +1156,7 @@ Global {A90C4918-4B21-4277-93BD-AF65F30951D9}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
{A90C4918-4B21-4277-93BD-AF65F30951D9}.Blender Release|Win32.Build.0 = Blender Release|Win32
{A90C4918-4B21-4277-93BD-AF65F30951D9}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
+ {A90C4918-4B21-4277-93BD-AF65F30951D9}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
{A90C4918-4B21-4277-93BD-AF65F30951D9}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
{A90C4918-4B21-4277-93BD-AF65F30951D9}.Debug|Win32.ActiveCfg = 3DPlugin Debug|Win32
{A90C4918-4B21-4277-93BD-AF65F30951D9}.Debug|Win32.Build.0 = 3DPlugin Debug|Win32
@@ -1329,12 +1331,12 @@ Global {884D8731-654C-4C7F-9A75-8F37A305BE1E}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Blender Release|Win32.Build.0 = Blender Release|Win32
- {884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
- {884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
+ {884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Debug|Win32.ActiveCfg = BlenderPlayer Debug|Win32
+ {884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Debug|Win32.Build.0 = BlenderPlayer Debug|Win32
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
- {884D8731-654C-4C7F-9A75-8F37A305BE1E}.Debug|Win32.ActiveCfg = Blender Debug|Win32
- {884D8731-654C-4C7F-9A75-8F37A305BE1E}.Debug|Win32.Build.0 = Blender Debug|Win32
+ {884D8731-654C-4C7F-9A75-8F37A305BE1E}.Debug|Win32.ActiveCfg = BlenderPlayer Release|Win32
+ {884D8731-654C-4C7F-9A75-8F37A305BE1E}.Debug|Win32.Build.0 = BlenderPlayer Release|Win32
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Release|Win32.ActiveCfg = Blender Release|Win32
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Release|Win32.Build.0 = Blender Release|Win32
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.3D Plugin Debug|Win32.ActiveCfg = Blender Debug|Win32
@@ -1351,8 +1353,8 @@ Global {FB88301F-F725-401B-ACD7-D2ABBF333B71}.Blender Release|Win32.Build.0 = Blender Release|Win32
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
- {FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Release|Win32.ActiveCfg = Blender Debug|Win32
- {FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Release|Win32.Build.0 = Blender Debug|Win32
+ {FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
+ {FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.Debug|Win32.ActiveCfg = Blender Debug|Win32
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.Debug|Win32.Build.0 = Blender Debug|Win32
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.Release|Win32.ActiveCfg = Blender Release|Win32
@@ -1409,8 +1411,8 @@ Global {7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.Blender Release|Win32.Build.0 = Blender Release|Win32
- {7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
- {7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
+ {7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
+ {7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.Debug|Win32.ActiveCfg = Blender Debug|Win32
@@ -1431,8 +1433,8 @@ Global {D1A9312F-4557-4982-A0F4-4D08508235F4}.Blender Release|Win32.Build.0 = Blender Release|Win32
{D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
{D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
- {D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Release|Win32.ActiveCfg = Blender Debug|Win32
- {D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Release|Win32.Build.0 = Blender Debug|Win32
+ {D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
+ {D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{D1A9312F-4557-4982-A0F4-4D08508235F4}.Debug|Win32.ActiveCfg = Blender Debug|Win32
{D1A9312F-4557-4982-A0F4-4D08508235F4}.Debug|Win32.Build.0 = Blender Debug|Win32
{D1A9312F-4557-4982-A0F4-4D08508235F4}.Release|Win32.ActiveCfg = Blender Release|Win32
@@ -1447,8 +1449,8 @@ Global {59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.Blender Release|Win32.Build.0 = Blender Release|Win32
- {59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
- {59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
+ {59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
+ {59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.Debug|Win32.ActiveCfg = Blender Debug|Win32
@@ -1465,8 +1467,8 @@ Global {9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.Blender Release|Win32.Build.0 = Blender Release|Win32
- {9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
- {9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
+ {9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
+ {9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.Debug|Win32.ActiveCfg = Blender Debug|Win32
@@ -1487,8 +1489,8 @@ Global {E8904FB3-F8F7-BC21-87A6-029A57B901F4}.Blender Release|Win32.Build.0 = Blender Release|Win32
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
- {E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Release|Win32.ActiveCfg = Blender Debug|Win32
- {E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Release|Win32.Build.0 = Blender Debug|Win32
+ {E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
+ {E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.Debug|Win32.ActiveCfg = 3DPlugin Debug|Win32
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.Debug|Win32.Build.0 = 3DPlugin Debug|Win32
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.Release|Win32.ActiveCfg = 3DPlugin Release|Win32
@@ -1507,8 +1509,8 @@ Global {87032FD2-9BA0-6B43-BE33-8902BA8F9172}.Blender Release|Win32.Build.0 = Blender Release|Win32
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
- {87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Release|Win32.ActiveCfg = Blender Debug|Win32
- {87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Release|Win32.Build.0 = Blender Debug|Win32
+ {87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
+ {87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.Debug|Win32.ActiveCfg = 3DPlugin Debug|Win32
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.Debug|Win32.Build.0 = 3DPlugin Debug|Win32
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.Release|Win32.ActiveCfg = 3DPlugin Release|Win32
@@ -1525,8 +1527,8 @@ Global {79D0B232-208C-F208-DA71-79B4AC088602}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
{79D0B232-208C-F208-DA71-79B4AC088602}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
{79D0B232-208C-F208-DA71-79B4AC088602}.Blender Release|Win32.Build.0 = Blender Release|Win32
- {79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
- {79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
+ {79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
+ {79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
{79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
{79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{79D0B232-208C-F208-DA71-79B4AC088602}.Debug|Win32.ActiveCfg = 3D Plugin Debug|Win32
@@ -1545,8 +1547,8 @@ Global {8BFA4082-773B-D100-BC24-659083BA023F}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
{8BFA4082-773B-D100-BC24-659083BA023F}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
{8BFA4082-773B-D100-BC24-659083BA023F}.Blender Release|Win32.Build.0 = Blender Release|Win32
- {8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
- {8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
+ {8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
+ {8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
{8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
{8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{8BFA4082-773B-D100-BC24-659083BA023F}.Debug|Win32.ActiveCfg = 3D Plugin Debug|Win32
@@ -1567,8 +1569,8 @@ Global {37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Blender Release|Win32.Build.0 = Blender Release|Win32
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
- {37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Release|Win32.ActiveCfg = Blender Debug|Win32
- {37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Release|Win32.Build.0 = Blender Debug|Win32
+ {37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
+ {37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Debug|Win32.ActiveCfg = Blender Debug|Win32
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Debug|Win32.Build.0 = Blender Debug|Win32
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Release|Win32.ActiveCfg = Blender Release|Win32
@@ -1585,10 +1587,8 @@ Global {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Blender Release|Win32.Build.0 = Blender Release|Win32
- {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
- {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
- {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Debug|Win32.ActiveCfg = Blender Debug|Win32
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Debug|Win32.Build.0 = Blender Debug|Win32
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Release|Win32.ActiveCfg = Blender Release|Win32
diff --git a/projectfiles_vc9/blender/blender.vcproj b/projectfiles_vc9/blender/blender.vcproj index b90a64fd160..ec863853daa 100644 --- a/projectfiles_vc9/blender/blender.vcproj +++ b/projectfiles_vc9/blender/blender.vcproj @@ -108,7 +108,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\bin\blender.lib ..\..\..\build\msvc_9\libs
MOVE /Y ..\..\bin\blender.exp ..\..\..\build\msvc_9\libs
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\python\lib\python31.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\release\python31.zip ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\release\zlib.pyd ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\install\msvc_9
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9\.blender MKDIR ..\..\..\install\msvc_9\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9\.blender\scripts MKDIR ..\..\..\install\msvc_9\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\bin\.blender\ui MKDIR ..\..\..\install\msvc_9\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9 /E
ECHO Done
"
+ CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\bin\blender.lib ..\..\..\build\msvc_9\libs
MOVE /Y ..\..\bin\blender.exp ..\..\..\build\msvc_9\libs
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\python\lib\python31.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\release\python31.zip ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\install\msvc_9
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9\.blender MKDIR ..\..\..\install\msvc_9\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9\.blender\scripts MKDIR ..\..\..\install\msvc_9\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\bin\.blender\ui MKDIR ..\..\..\install\msvc_9\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9 /E
ECHO Done
"
/>
</Configuration>
<Configuration
@@ -202,7 +202,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\bin\debug\blender.lib ..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\bin\debug\blender.exp ..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\bin\debug\blender.ilk ..\..\..\build\msvc_9\libs\debug
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\python\lib\python31_d.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\release\python31.zip ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\release\zlib.pyd ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\install\msvc_9d
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9d\.blender MKDIR ..\..\..\install\msvc_9d\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9d\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\scripts MKDIR ..\..\..\install\msvc_9d\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9d\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\ui MKDIR ..\..\..\install\msvc_9d\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9d\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9d /E
ECHO Done
"
+ CommandLine="ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\python\lib\python31_d.dll ..\..\..\install\msvc_9d
COPY /Y ..\..\..\lib\windows\release\python31.zip ..\..\..\install\msvc_9d\python31_d.zip
XCOPY /Y ..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\install\msvc_9d
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9d\.blender MKDIR ..\..\..\install\msvc_9d\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9d\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\scripts MKDIR ..\..\..\install\msvc_9d\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9d\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\ui MKDIR ..\..\..\install\msvc_9d\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9d\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9d /E
ECHO Done
"
/>
</Configuration>
</Configurations>
diff --git a/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj b/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj index 3f17da1ddab..ad40639db12 100644 --- a/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj +++ b/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj @@ -119,7 +119,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern;..\..\..\extern\lzo\minilzo;..\..\..\extern\lzma;..\..\..\source\blender\blenfont;..\..\..\source\blender\ikplugin"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_OPENEXR;WITH_DDS;WITH_BULLET;WITH_FFMPEG"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_OPENEXR;WITH_DDS;WITH_BULLET;WITH_FFMPEG;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -195,7 +195,7 @@ Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern;..\..\..\extern\lzo\minilzo;..\..\..\extern\lzma;..\..\..\source\blender\blenfont;..\..\..\source\blender\ikplugin"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;UNWRAPPER;WITH_OPENEXR;WITH_DDS;WITH_BULLET=1;WITH_FFMPEG"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;UNWRAPPER;WITH_OPENEXR;WITH_DDS;WITH_BULLET=1;WITH_FFMPEG;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
@@ -345,7 +345,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern;..\..\..\extern\lzo\minilzo;..\..\..\extern\lzma;..\..\..\source\blender\blenfont;..\..\..\source\blender\ikplugin"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_FFMPEG"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_FFMPEG;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -420,7 +420,7 @@ Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern;..\..\..\extern\lzo\minilzo;..\..\..\extern\lzma;..\..\..\source\blender\blenfont;..\..\..\source\blender\ikplugin"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;UNWRAPPER;WITH_FFMPEG"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;UNWRAPPER;WITH_FFMPEG;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
diff --git a/projectfiles_vc9/blender/gpu/BL_gpu.vcproj b/projectfiles_vc9/blender/gpu/BL_gpu.vcproj index af0b90796d1..a182a3eceb5 100644 --- a/projectfiles_vc9/blender/gpu/BL_gpu.vcproj +++ b/projectfiles_vc9/blender/gpu/BL_gpu.vcproj @@ -119,7 +119,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\gpu"
- PreprocessorDefinitions="_DEBUG,WIN32,_LIB,DWORDS_LITTLEENDIAN"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;DWORDS_LITTLEENDIAN;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="false"
@@ -195,7 +195,7 @@ Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\gpu"
- PreprocessorDefinitions="NDEBUG,WIN32,_LIB,DWORDS_LITTLEENDIAN"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;DWORDS_LITTLEENDIAN;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
@@ -345,7 +345,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\gpu"
- PreprocessorDefinitions="_DEBUG,WIN32,_LIB,DWORDS_LITTLEENDIAN"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;DWORDS_LITTLEENDIAN;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="false"
@@ -420,7 +420,7 @@ Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\gpu"
- PreprocessorDefinitions="NDEBUG,WIN32,_LIB,DWORDS_LITTLEENDIAN"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;DWORDS_LITTLEENDIAN;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
diff --git a/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj b/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj index b0ba1133393..272a56f58a4 100644 --- a/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj +++ b/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj @@ -568,6 +568,22 @@ <File
RelativePath="..\..\..\source\blender\imbuf\intern\openexr\openexr_api.cpp"
>
+ <FileConfiguration
+ Name="BlenderPlayer Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="BlenderPlayer Release|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\..\..\source\blender\imbuf\intern\png.c"
diff --git a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj index c0a13bbe26b..ae0ce4327b6 100644 --- a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj +++ b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj @@ -141,7 +141,7 @@ Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf"
- PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
+ PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE;GAMEBLENDER=1"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
@@ -327,7 +327,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf"
- PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;GAMEBLENDER=1"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -423,7 +423,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf"
- PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE"
+ PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE;GAMEBLENDER=1"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -519,7 +519,7 @@ Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf"
- PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
+ PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE;GAMEBLENDER=1"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
diff --git a/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj index 66449b01f81..02deec88843 100644 --- a/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj +++ b/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj @@ -44,7 +44,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\ikplugin;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\source\blender\render\extern\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GAMEBLENDER=1"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -115,7 +115,7 @@ Optimization="2"
EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\ikplugin;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\source\blender\render\extern\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS"
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GAMEBLENDER=1"
MinimalRebuild="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="false"
diff --git a/projectfiles_vc9/blender/windowmanager/windowmanager.vcproj b/projectfiles_vc9/blender/windowmanager/windowmanager.vcproj index ad52b9f1fae..8cba876841b 100644 --- a/projectfiles_vc9/blender/windowmanager/windowmanager.vcproj +++ b/projectfiles_vc9/blender/windowmanager/windowmanager.vcproj @@ -44,7 +44,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\blender\collada"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;WITH_COLLADA"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;WITH_COLLADA;GLEW_STATIC"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -114,7 +114,146 @@ Optimization="2"
EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\blender\collada"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;WITH_COLLADA"
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;WITH_COLLADA;GLEW_STATIC"
+ MinimalRebuild="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="false"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="..\..\..\..\build\msvc_9\source\blender\render\release\WM_windowmanager.pch"
+ AssemblerListingLocation="..\..\..\..\build\msvc_9\source\blender\windowmanager\release\"
+ ObjectFile="..\..\..\..\build\msvc_9\source\blender\windowmanager\release\"
+ ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\blender\windowmanager\release\"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="BlenderPlayer Debug|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\blender\collada"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GLEW_STATIC"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="..\..\..\..\build\msvc_9\source\blender\render\debug\WM_windowmanager.pch"
+ AssemblerListingLocation="..\..\..\..\build\msvc_9\source\blender\windowmanager\debug\"
+ ObjectFile="..\..\..\..\build\msvc_9\source\blender\windowmanager\debug\"
+ ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\blender\windowmanager\debug\"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="BlenderPlayer Release|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\blender\collada"
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GLEW_STATIC"
MinimalRebuild="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="false"
diff --git a/projectfiles_vc9/gameengine/blenderhook/KX_blenderhook.vcproj b/projectfiles_vc9/gameengine/blenderhook/KX_blenderhook.vcproj index ab959de31c7..033f5cb036f 100644 --- a/projectfiles_vc9/gameengine/blenderhook/KX_blenderhook.vcproj +++ b/projectfiles_vc9/gameengine/blenderhook/KX_blenderhook.vcproj @@ -44,7 +44,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\ketsji;..\..\..\source\gameengine\network;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Physics\Sumo;..\..\..\source\gameengine\Physics\common;..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\blenfont;..\..\..\intern\audaspace\intern"
- PreprocessorDefinitions="WIN32;_LIB;_DEBUG;WITH_GLEXT;WITH_FFMPEG"
+ PreprocessorDefinitions="WIN32;_LIB;_DEBUG;WITH_GLEXT;WITH_FFMPEG;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -121,7 +121,7 @@ Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\ketsji;..\..\..\source\gameengine\network;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Physics\Sumo;..\..\..\source\gameengine\Physics\common;..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\blenfont;..\..\..\intern\audaspace\intern"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT;WITH_FFMPEG"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT;WITH_FFMPEG;GLEW_STATIC"
StringPooling="true"
BasicRuntimeChecks="0"
RuntimeLibrary="0"
diff --git a/projectfiles_vc9/gameengine/converter/KX_converter.vcproj b/projectfiles_vc9/gameengine/converter/KX_converter.vcproj index 4e05c05ff51..474ecb36f46 100644 --- a/projectfiles_vc9/gameengine/converter/KX_converter.vcproj +++ b/projectfiles_vc9/gameengine/converter/KX_converter.vcproj @@ -526,10 +526,6 @@ >
</File>
<File
- RelativePath="..\..\..\source\gameengine\Converter\BL_SkinMeshObject.cpp"
- >
- </File>
- <File
RelativePath="..\..\..\source\gameengine\Converter\BlenderWorldInfo.cpp"
>
</File>
@@ -561,6 +557,10 @@ RelativePath="..\..\..\source\gameengine\Converter\KX_IpoConvert.cpp"
>
</File>
+ <File
+ RelativePath="..\..\..\source\gameengine\Converter\KX_SoftBodyDeformer.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Header Files"
@@ -615,10 +615,6 @@ >
</File>
<File
- RelativePath="..\..\..\source\gameengine\Converter\BL_SkinMeshObject.h"
- >
- </File>
- <File
RelativePath="..\..\..\source\gameengine\Converter\BlenderWorldInfo.h"
>
</File>
@@ -650,6 +646,10 @@ RelativePath="..\..\..\source\gameengine\Converter\KX_IpoConvert.h"
>
</File>
+ <File
+ RelativePath="..\..\..\source\gameengine\Converter\KX_SoftBodyDeformer.h"
+ >
+ </File>
</Filter>
</Files>
<Globals>
diff --git a/projectfiles_vc9/gameengine/gameplayer/common/GP_common.vcproj b/projectfiles_vc9/gameengine/gameplayer/common/GP_common.vcproj index ad8f3338594..9e6b41997ac 100644 --- a/projectfiles_vc9/gameengine/gameplayer/common/GP_common.vcproj +++ b/projectfiles_vc9/gameengine/gameplayer/common/GP_common.vcproj @@ -343,10 +343,6 @@ >
</File>
<File
- RelativePath="..\..\..\..\source\gameengine\GamePlayer\common\GPC_PolygonMaterial.cpp"
- >
- </File>
- <File
RelativePath="..\..\..\..\source\gameengine\GamePlayer\common\GPC_RawImage.cpp"
>
</File>
diff --git a/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj b/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj index 4d6b7a4cd8a..759c469bcf6 100644 --- a/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj +++ b/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj @@ -44,7 +44,7 @@ <Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\makesrna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
PreprocessorDefinitions="WIN32,_CONSOLE,dSINGLE, _DEBUG;WITH_FFMPEG"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -72,12 +72,12 @@ <Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386
"
- AdditionalDependencies="ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib OpenAL32.lib wrap_oal.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python31_d.lib pthreadVSE2.lib pthreadVC2.lib Half_d.lib Iex_d.lib IlmImf_d.lib IlmThread_d.lib Imath_d.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
+ AdditionalDependencies="libsamplerate.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib OpenAL32.lib wrap_oal.lib libjpeg.lib dxguid.lib libeay32.lib libpng_st.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python31_d.lib pthreadVSE2.lib pthreadVC2.lib Half_d.lib Iex_d.lib IlmImf_d.lib IlmThread_d.lib Imath_d.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
ShowProgress="0"
- OutputFile="..\..\..\..\bin\debug\blenderplayer.exe"
+ OutputFile="..\..\..\..\..\install\msvc_9d\blenderplayer.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib"
+ AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib;..\..\..\..\..\lib\windows\samplerate\lib"
IgnoreDefaultLibraryNames="libc.lib;libcmt.lib;msvcrt.lib;libcd.lib;msvcrtd.lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\..\..\build\msvc_9\libs\debug\blenderplayer.pdb"
@@ -105,7 +105,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\..\..\bin\debug\blenderplayer.lib ..\..\..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\..\..\bin\debug\blenderplayer.exp ..\..\..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\..\..\bin\debug\blenderplayer.ilk ..\..\..\..\..\build\msvc_9\libs\debug
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\..\..\lib\windows\python\lib\python31_d.dll ..\..\..\..\bin\debug
XCOPY /Y ..\..\..\..\..\lib\windows\sdl\lib\SDL.dll ..\..\..\..\bin\debug
XCOPY /Y ..\..\..\..\..\lib\windows\png\lib\libpng.dll ..\..\..\..\bin\debug
XCOPY /Y ..\..\..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\..\bin\debug
XCOPY /Y ..\..\..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\..\bin\debug
XCOPY /Y ..\..\..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\..\bin\debug
ECHO Done
"
+ CommandLine="ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\python\lib\python31_d.dll ..\..\..\..\..\install\msvc_9d
COPY /Y ..\..\..\..\..\lib\windows\release\python31.zip ..\..\..\..\..\install\msvc_9d\python31_d.zip
XCOPY /Y ..\..\..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\..\..\install\msvc_9d
"
/>
</Configuration>
<Configuration
@@ -138,7 +138,7 @@ Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\makesrna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE;WITH_FFMPEG"
StringPooling="true"
RuntimeLibrary="0"
@@ -167,11 +167,11 @@ <Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="odelib.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib OpenAL32.lib wrap_oal.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python31.lib pthreadVSE2.lib pthreadVC2.lib Half.lib Iex.lib IlmImf.lib IlmThread.lib Imath.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
- OutputFile="..\..\..\..\bin\blenderplayer.exe"
+ AdditionalDependencies="libsamplerate.lib odelib.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib OpenAL32.lib wrap_oal.lib libjpeg.lib dxguid.lib libeay32.lib libpng_st.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python31.lib pthreadVSE2.lib pthreadVC2.lib Half.lib Iex.lib IlmImf.lib IlmThread.lib Imath.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
+ OutputFile="..\..\..\..\..\install\msvc_9\blenderplayer.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib"
+ AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib;..\..\..\..\..\lib\windows\samplerate\lib"
IgnoreDefaultLibraryNames="libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\..\..\build\msvc_9\libs\blenderplayer.pdb"
@@ -199,7 +199,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\..\..\bin\blenderplayer.lib ..\..\..\..\..\build\msvc_9\libs
MOVE /Y ..\..\..\..\bin\blenderplayer.exp ..\..\..\..\..\build\msvc_9\libs
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\..\..\lib\windows\python\lib\python31.dll ..\..\..\..\bin
XCOPY /Y ..\..\..\..\..\lib\windows\sdl\lib\SDL.dll ..\..\..\..\bin
XCOPY /Y ..\..\..\..\..\lib\windows\png\lib\libpng.dll ..\..\..\..\bin
XCOPY /Y ..\..\..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\..\bin
XCOPY /Y ..\..\..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\..\bin
ECHO Done
"
+ CommandLine="ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\python\lib\python31.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\release\python31.zip ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\..\..\install\msvc_9
ECHO Done
"
/>
</Configuration>
</Configurations>
@@ -235,6 +235,10 @@ >
</File>
<File
+ RelativePath="..\..\..\..\source\blenderplayer\bad_level_call_stubs\stubs.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\source\icons\winplayer.rc"
>
<FileConfiguration
diff --git a/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj b/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj index 56a86ab0a49..814db0bcb14 100644 --- a/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj +++ b/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj @@ -195,7 +195,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern"
- PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT"
+ PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -272,7 +272,7 @@ Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
@@ -348,7 +348,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern"
- PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT"
+ PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -424,7 +424,7 @@ Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
diff --git a/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj b/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj index f82b46413c9..1554248f192 100644 --- a/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj +++ b/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj @@ -43,8 +43,8 @@ <Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -118,7 +118,7 @@ <Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
StringPooling="true"
RuntimeLibrary="2"
@@ -194,8 +194,8 @@ Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
@@ -269,7 +269,7 @@ <Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -344,8 +344,8 @@ <Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -419,8 +419,8 @@ <Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
diff --git a/projectfiles_vc9/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj b/projectfiles_vc9/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj index 4d55bd0da37..0bd676a2a82 100644 --- a/projectfiles_vc9/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj +++ b/projectfiles_vc9/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj @@ -119,7 +119,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -270,7 +270,7 @@ Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
@@ -345,7 +345,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="true"
@@ -420,7 +420,7 @@ Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
diff --git a/release/VERSION b/release/VERSION index 8821853a13d..e1cbf32a280 100644 --- a/release/VERSION +++ b/release/VERSION @@ -1 +1 @@ -2.5-devel +2.5-alpha0 diff --git a/release/datafiles/blenderbuttons b/release/datafiles/blenderbuttons Binary files differindex 258e134675a..2bfb1d10219 100644 --- a/release/datafiles/blenderbuttons +++ b/release/datafiles/blenderbuttons diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png Binary files differindex e35a26a2c23..da4f1e1b2f1 100644 --- a/release/datafiles/splash.png +++ b/release/datafiles/splash.png diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index 014cf56f6a7..ddca6eb43dc 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -884,7 +884,7 @@ class RENDER_PT_povray_radiosity(RenderButtonsPanel): def draw_header(self, context): scene = context.scene - self.layout.itemR(scene, "pov_radio_enable", text="") + self.layout.prop(scene, "pov_radio_enable", text="") def draw(self, context): layout = self.layout @@ -897,34 +897,34 @@ class RENDER_PT_povray_radiosity(RenderButtonsPanel): split = layout.split() col = split.column() - col.itemR(scene, "pov_radio_count", text="Rays") - col.itemR(scene, "pov_radio_recursion_limit", text="Recursions") + col.prop(scene, "pov_radio_count", text="Rays") + col.prop(scene, "pov_radio_recursion_limit", text="Recursions") col = split.column() - col.itemR(scene, "pov_radio_error_bound", text="Error") + col.prop(scene, "pov_radio_error_bound", text="Error") - layout.itemR(scene, "pov_radio_display_advanced") + layout.prop(scene, "pov_radio_display_advanced") if scene.pov_radio_display_advanced: split = layout.split() col = split.column() - col.itemR(scene, "pov_radio_adc_bailout", slider=True) - col.itemR(scene, "pov_radio_gray_threshold", slider=True) - col.itemR(scene, "pov_radio_low_error_factor", slider=True) + col.prop(scene, "pov_radio_adc_bailout", slider=True) + col.prop(scene, "pov_radio_gray_threshold", slider=True) + col.prop(scene, "pov_radio_low_error_factor", slider=True) col = split.column() - col.itemR(scene, "pov_radio_brightness") - col.itemR(scene, "pov_radio_minimum_reuse", text="Min Reuse") - col.itemR(scene, "pov_radio_nearest_count") + col.prop(scene, "pov_radio_brightness") + col.prop(scene, "pov_radio_minimum_reuse", text="Min Reuse") + col.prop(scene, "pov_radio_nearest_count") split = layout.split() col = split.column() - col.itemL(text="Estimation Influence:") - col.itemR(scene, "pov_radio_media") - col.itemR(scene, "pov_radio_normal") + col.label(text="Estimation Influence:") + col.prop(scene, "pov_radio_media") + col.prop(scene, "pov_radio_normal") col = split.column() - col.itemR(scene, "pov_radio_always_sample") + col.prop(scene, "pov_radio_always_sample") bpy.types.register(RENDER_PT_povray_radiosity) diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 0d5827f6f18..5f585ac4336 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1132,7 +1132,6 @@ class Export3DS(bpy.types.Operator): return ('RUNNING_MODAL',) def poll(self, context): # Poll isnt working yet - print("Poll") return context.active_object != None bpy.ops.add(Export3DS) @@ -1142,6 +1141,6 @@ import dynamic_menu def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".3ds") - self.layout.item_stringO(Export3DS.bl_idname, "path", default_path, text="Autodesk 3DS...") + self.layout.operator(Export3DS.bl_idname, text="Autodesk 3DS...").path = default_path menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index b266d74fb57..e5bf01b0d9d 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -3466,7 +3466,7 @@ import dynamic_menu def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".fbx") - self.layout.item_stringO(ExportFBX.bl_idname, "path", default_path, text="Autodesk FBX...") + self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX...").path = default_path menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index 7d08b4f9d7a..c160b94e546 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -191,7 +191,7 @@ import dynamic_menu def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".mdd") - self.layout.item_stringO(ExportMDD.bl_idname, "path", default_path, text="Vertex Keyframe Animation (.mdd)...") + self.layout.operator(ExportMDD.bl_idname, text="Vertex Keyframe Animation (.mdd)...").path = default_path menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index feeb7cb1f34..94e8a365c0f 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -85,19 +85,6 @@ def fixName(name): else: return name.replace(' ', '_') - -# this used to be in BPySys module -# frankly, I don't understand how it works -def BPySys_cleanName(name): - - v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,58,59,60,61,62,63,64,91,92,93,94,96,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254] - - invalid = ''.join([chr(i) for i in v]) - - for ch in invalid: - name = name.replace(ch, '_') - return name - # A Dict of Materials # (material.name, image.name):matname_imagename # matname_imagename has gaps removed. MTL_DICT = {} @@ -884,7 +871,7 @@ def do_export(filename, context, orig_frame = scn.current_frame if EXPORT_ALL_SCENES: # Add scene name into the context_name - context_name[1] = '_%s' % BPySys_cleanName(scn.name) # WARNING, its possible that this could cause a collision. we could fix if were feeling parranoied. + context_name[1] = '_%s' % bpy.utils.clean_name(scn.name) # WARNING, its possible that this could cause a collision. we could fix if were feeling parranoied. # Export an animation? if EXPORT_ANIMATION: @@ -998,9 +985,9 @@ class ExportOBJ(bpy.types.Operator): wm.add_fileselect(self) return ('RUNNING_MODAL',) - def poll(self, context): # Poll isnt working yet - print("Poll") - return context.active_object != None + + + bpy.ops.add(ExportOBJ) @@ -1008,7 +995,7 @@ import dynamic_menu def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".obj") - self.layout.item_stringO(ExportOBJ.bl_idname, "path", default_path, text="Wavefront (.obj)...") + self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)...").path = default_path menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) @@ -1021,4 +1008,4 @@ if __name__ == "__main__": # - NURBS - needs API additions # - all scenes export # + normals calculation -# - get rid of cleanName somehow + diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index e97ca2155f0..f9720be4646 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -263,9 +263,9 @@ class ExportPLY(bpy.types.Operator): path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "") use_modifiers = BoolProperty(name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default= True) - use_normals = BoolProperty(name="Export Normals", description="Export Normals for smooth and hard shaded faces", default= True) - use_uvs = BoolProperty(name="Export UVs", description="Exort the active UV layer", default= True) - use_colors = BoolProperty(name="Export Vertex Colors", description="Exort the active vertex color layer", default= True) + use_normals = BoolProperty(name="Normals", description="Export Normals for smooth and hard shaded faces", default= True) + use_uvs = BoolProperty(name="UVs", description="Exort the active UV layer", default= True) + use_colors = BoolProperty(name="Vertex Colors", description="Exort the active vertex color layer", default= True) def poll(self, context): @@ -291,14 +291,25 @@ class ExportPLY(bpy.types.Operator): wm.add_fileselect(self) return ('RUNNING_MODAL',) + def draw(self, context): + layout = self.layout + props = self.properties + + row = layout.row() + row.prop(props, "use_modifiers") + row.prop(props, "use_normals") + row = layout.row() + row.prop(props, "use_uvs") + row.prop(props, "use_colors") + bpy.ops.add(ExportPLY) import dynamic_menu def menu_func(self, context): - default_path = bpy.data.filename.replace(".blend", ".ply") - self.layout.item_stringO(ExportPLY.bl_idname, "path", default_path, text="Stanford (.ply)...") + default_path = bpy.data.filename.replace(".blend", ".ply") + self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)...").path = default_path menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index 1fb43930208..8546d8619f4 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -1244,7 +1244,7 @@ import dynamic_menu def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".x3d") - self.layout.item_stringO(ExportX3D.bl_idname, "path", default_path, text="X3D Extensible 3D (.x3d)...") + self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)...").path = default_path menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index 364a16b00ea..9f7063b24cf 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -227,8 +227,6 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0): if ROT_STYLE != 'NATIVE': rx, ry, rz = eulerRotate(rx, ry, rz, bvh_node.rot_order) - #x,y,z = x/10.0, y/10.0, z/10.0 # For IPO's 36 is 360d - # Make interpolation not cross between 180d, thjis fixes sub frame interpolation and time scaling. # Will go from (355d to 365d) rather then to (355d to 5d) - inbetween these 2 there will now be a correct interpolation. @@ -337,7 +335,7 @@ def bvh_node_dict2objects(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOOP bvh_node.temp.rot= rx*DEG2RAD,ry*DEG2RAD,rz*DEG2RAD - bvh_node.temp.insertIpoKey(Blender.Object.IpoKeyTypes.LOCROT) + bvh_node.temp.insertIpoKey(Blender.Object.IpoKeyTypes.LOCROT) # XXX invalid scn.update(1) return objects @@ -487,7 +485,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO bpy.ops.pose.select_all_toggle() # set - bpy.ops.anim.insert_keyframe_menu(type=-4) # XXX - -4 ??? + bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ??? @@ -500,7 +498,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO #XXX action = Blender.Armature.NLA.NewAction("Action") #XXX action.setActive(arm_ob) - #bpy.ops.act.new() + #bpy.ops.action.new() #action = bpy.data.actions[-1] # arm_ob.animation_data.action = action @@ -540,6 +538,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO ''' # KEYFRAME METHOD, SLOW, USE IPOS DIRECT + # TODO: use f-point samples instead (Aligorith) # Animate the data, the last used bvh_node will do since they all have the same number of frames for current_frame in range(len(bvh_node.anim_data)-1): # skip the first frame (rest frame) @@ -618,7 +617,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO - # bpy.ops.anim.insert_keyframe_menu(type=-4) # XXX - -4 ??? + # bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ??? bpy.ops.screen.frame_offset(delta=1) # First time, set the IPO's to linear @@ -877,5 +876,5 @@ bpy.ops.add(BvhImporter) import dynamic_menu -menu_func = lambda self, context: self.layout.itemO(BvhImporter.bl_idname, text="Motion Capture (.bvh)...") +menu_func = lambda self, context: self.layout.operator(BvhImporter.bl_idname, text="Motion Capture (.bvh)...") menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func) diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index dd8c24398ae..57b93d3c683 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -1167,7 +1167,7 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator): bpy.ops.add(IMPORT_OT_autodesk_3ds) import dynamic_menu -menu_func = lambda self, context: self.layout.itemO(IMPORT_OT_autodesk_3ds.bl_idname, text="3D Studio (.3ds)...") +menu_func = lambda self, context: self.layout.operator(IMPORT_OT_autodesk_3ds.bl_idname, text="3D Studio (.3ds)...") menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func) # NOTES: diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index 2bce99ffb3e..a1996266674 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -807,7 +807,7 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l blender_tface.uv2= verts_tex[face_vert_tex_indicies[1]] blender_tface.uv3= verts_tex[face_vert_tex_indicies[2]] - if blender_face.verts[3] != 0: + if len(face_vert_loc_indicies)==4: blender_tface.uv4= verts_tex[face_vert_tex_indicies[3]] # for ii, uv in enumerate(blender_face.uv): @@ -1626,7 +1626,7 @@ bpy.ops.add(IMPORT_OT_obj) import dynamic_menu -menu_func = lambda self, context: self.layout.itemO(IMPORT_OT_obj.bl_idname, text="Wavefront (.obj)...") +menu_func = lambda self, context: self.layout.operator(IMPORT_OT_obj.bl_idname, text="Wavefront (.obj)...") menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func) diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py index e0273618900..081d9952871 100644 --- a/release/scripts/io/netrender/ui.py +++ b/release/scripts/io/netrender/ui.py @@ -63,15 +63,15 @@ class RENDER_PT_network_settings(RenderButtonsPanel): split = layout.split() col = split.column() - col.itemR(scene.network_render, "mode") - col.itemR(scene.network_render, "path") - col.itemR(scene.network_render, "server_address") - col.itemR(scene.network_render, "server_port") + col.prop(scene.network_render, "mode") + col.prop(scene.network_render, "path") + col.prop(scene.network_render, "server_address") + col.prop(scene.network_render, "server_port") if scene.network_render.mode == "RENDER_MASTER": - col.itemR(scene.network_render, "server_broadcast") + col.prop(scene.network_render, "server_broadcast") else: - col.itemO("render.netclientscan", icon="ICON_FILE_REFRESH", text="") + col.operator("render.netclientscan", icon="ICON_FILE_REFRESH", text="") @rnaType class RENDER_PT_network_job(RenderButtonsPanel): @@ -93,13 +93,13 @@ class RENDER_PT_network_job(RenderButtonsPanel): split = layout.split() col = split.column() - col.itemO("render.netclientanim", icon='ICON_RENDER_ANIMATION') - col.itemO("render.netclientsend", icon="ICON_FILE_BLEND") - col.itemO("render.netclientweb", icon="ICON_QUESTION") - col.itemR(scene.network_render, "job_name") + col.operator("render.netclientanim", icon='ICON_RENDER_ANIMATION') + col.operator("render.netclientsend", icon="ICON_FILE_BLEND") + col.operator("render.netclientweb", icon="ICON_QUESTION") + col.prop(scene.network_render, "job_name") row = col.row() - row.itemR(scene.network_render, "priority") - row.itemR(scene.network_render, "chunks") + row.prop(scene.network_render, "priority") + row.prop(scene.network_render, "chunks") @rnaType class RENDER_PT_network_slaves(RenderButtonsPanel): @@ -120,22 +120,22 @@ class RENDER_PT_network_slaves(RenderButtonsPanel): row.template_list(netsettings, "slaves", netsettings, "active_slave_index", rows=2) sub = row.column(align=True) - sub.itemO("render.netclientslaves", icon="ICON_FILE_REFRESH", text="") - sub.itemO("render.netclientblacklistslave", icon="ICON_ZOOMOUT", text="") + sub.operator("render.netclientslaves", icon="ICON_FILE_REFRESH", text="") + sub.operator("render.netclientblacklistslave", icon="ICON_ZOOMOUT", text="") if len(netrender.slaves) == 0 and len(netsettings.slaves) > 0: while(len(netsettings.slaves) > 0): netsettings.slaves.remove(0) if netsettings.active_slave_index >= 0 and len(netsettings.slaves) > 0: - layout.itemS() + layout.separator() slave = netrender.slaves[netsettings.active_slave_index] - layout.itemL(text="Name: " + slave.name) - layout.itemL(text="Address: " + slave.address[0]) - layout.itemL(text="Seen: " + time.ctime(slave.last_seen)) - layout.itemL(text="Stats: " + slave.stats) + layout.label(text="Name: " + slave.name) + layout.label(text="Address: " + slave.address[0]) + layout.label(text="Seen: " + time.ctime(slave.last_seen)) + layout.label(text="Stats: " + slave.stats) @rnaType class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): @@ -156,21 +156,21 @@ class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): row.template_list(netsettings, "slaves_blacklist", netsettings, "active_blacklisted_slave_index", rows=2) sub = row.column(align=True) - sub.itemO("render.netclientwhitelistslave", icon="ICON_ZOOMOUT", text="") + sub.operator("render.netclientwhitelistslave", icon="ICON_ZOOMOUT", text="") if len(netrender.blacklist) == 0 and len(netsettings.slaves_blacklist) > 0: while(len(netsettings.slaves_blacklist) > 0): netsettings.slaves_blacklist.remove(0) if netsettings.active_blacklisted_slave_index >= 0 and len(netsettings.slaves_blacklist) > 0: - layout.itemS() + layout.separator() slave = netrender.blacklist[netsettings.active_blacklisted_slave_index] - layout.itemL(text="Name: " + slave.name) - layout.itemL(text="Address: " + slave.address[0]) - layout.itemL(text="Seen: " + time.ctime(slave.last_seen)) - layout.itemL(text="Stats: " + slave.stats) + layout.label(text="Name: " + slave.name) + layout.label(text="Address: " + slave.address[0]) + layout.label(text="Seen: " + time.ctime(slave.last_seen)) + layout.label(text="Stats: " + slave.stats) @rnaType class RENDER_PT_network_jobs(RenderButtonsPanel): @@ -191,24 +191,24 @@ class RENDER_PT_network_jobs(RenderButtonsPanel): row.template_list(netsettings, "jobs", netsettings, "active_job_index", rows=2) sub = row.column(align=True) - sub.itemO("render.netclientstatus", icon="ICON_FILE_REFRESH", text="") - sub.itemO("render.netclientcancel", icon="ICON_ZOOMOUT", text="") - sub.itemO("render.netclientcancelall", icon="ICON_PANEL_CLOSE", text="") - sub.itemO("render.netclientdownload", icon='ICON_RENDER_ANIMATION', text="") + sub.operator("render.netclientstatus", icon="ICON_FILE_REFRESH", text="") + sub.operator("render.netclientcancel", icon="ICON_ZOOMOUT", text="") + sub.operator("render.netclientcancelall", icon="ICON_PANEL_CLOSE", text="") + sub.operator("render.netclientdownload", icon='ICON_RENDER_ANIMATION', text="") if len(netrender.jobs) == 0 and len(netsettings.jobs) > 0: while(len(netsettings.jobs) > 0): netsettings.jobs.remove(0) if netsettings.active_job_index >= 0 and len(netsettings.jobs) > 0: - layout.itemS() + layout.separator() job = netrender.jobs[netsettings.active_job_index] - layout.itemL(text="Name: %s" % job.name) - layout.itemL(text="Length: %04i" % len(job)) - layout.itemL(text="Done: %04i" % job.results[DONE]) - layout.itemL(text="Error: %04i" % job.results[ERROR]) + layout.label(text="Name: %s" % job.name) + layout.label(text="Length: %04i" % len(job)) + layout.label(text="Done: %04i" % job.results[DONE]) + layout.label(text="Error: %04i" % job.results[ERROR]) @rnaType class NetRenderSettings(bpy.types.IDPropertyGroup): diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py index bbda95837ad..39b8fd340ba 100644 --- a/release/scripts/modules/bpy/__init__.py +++ b/release/scripts/modules/bpy/__init__.py @@ -44,7 +44,6 @@ def load_scripts(reload_scripts=False): return None for base_path in utils.script_paths(): - print(base_path) for path_subdir in ("ui", "op", "io"): path = os.path.join(base_path, path_subdir) sys.path.insert(0, path) diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index a2c6f764e3b..a10c8bc4dd9 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -25,6 +25,33 @@ def expandpath(path): return path + +_unclean_chars = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, \ + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, \ + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 58, 59, 60, 61, 62, 63, \ + 64, 91, 92, 93, 94, 96, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, \ + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, \ + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, \ + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, \ + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, \ + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, \ + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, \ + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, \ + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, \ + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254] + +_unclean_chars = ''.join([chr(i) for i in _unclean_chars]) + +def clean_name(name, replace="_"): + ''' + All characters besides A-Z/a-z, 0-9 are replaced with "_" + or the replace argumet if defined. + ''' + for ch in _unclean_chars: + name = name.replace(ch, replace) + return name + + # base scripts _scripts = os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir) _scripts = (os.path.normpath(_scripts), ) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 8e05b9bb8bd..13d48f05d18 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -35,11 +35,92 @@ class Context(StructRNA): class Object(bpy_types.ID): - def _get_children(self): + @property + def children(self): import bpy return [child for child in bpy.data.objects if child.parent == self] - children = property(_get_children) + +class _GenericBone: + ''' + functions for bones, common between Armature/Pose/Edit bones. + internal subclassing use only. + ''' + def parent_index(self, parent_test): + ''' + The same as 'bone in other_bone.parent_recursive' but saved generating a list. + ''' + # use the name so different types can be tested. + name = parent_test.name + + parent = self.parent + i = 1 + while parent: + if parent.name == name: + return i + parent = parent.parent + i += 1 + + return 0 + + @property + def parent_recursive(self): + parent_list = [] + parent = self.parent + + while parent: + if parent: + parent_list.append(parent) + + parent = parent.parent + + return parent_list + + @property + def length(self): + return (self.head - self.tail).length + + @property + def children(self): + return [child for child in self._other_bones if child.parent == self] + + @property + def children_recursive(self): + bones_children = [] + for bone in self._other_bones: + index = bone.parent_index(self) + if index: + bones_children.append((index, bone)) + + # sort by distance to parent + bones_children.sort(key=lambda bone_pair: bone_pair[0]) + return [bone for index, bone in bones_children] + + @property + def _other_bones(self): + id_data = self.id_data + id_data_type = type(id_data) + + if id_data_type == bpy_types.Object: + bones = id_data.pose.bones + elif id_data_type == bpy_types.Armature: + bones = id_data.edit_bones + if not bones: # not in editmode + bones = id_data.bones + + return bones + + +class PoseBone(StructRNA, _GenericBone): + pass + + +class Bone(StructRNA, _GenericBone): + pass + + +class EditBone(StructRNA, _GenericBone): + pass def ord_ind(i1,i2): @@ -48,12 +129,12 @@ def ord_ind(i1,i2): class Mesh(bpy_types.ID): - def _get_edge_keys(self): + @property + def edge_keys(self): return [edge_key for face in self.faces for edge_key in face.edge_keys] - edge_keys = property(_get_edge_keys) - - def _get_edge_face_count_dict(self): + @property + def edge_face_count_dict(self): face_edge_keys = [face.edge_keys for face in self.faces] face_edge_count = {} for face_keys in face_edge_keys: @@ -65,34 +146,29 @@ class Mesh(bpy_types.ID): return face_edge_count - edge_face_count_dict = property(_get_edge_face_count_dict) - - def _get_edge_face_count(self): + @property + def edge_face_count(self): edge_face_count_dict = self.edge_face_count_dict return [edge_face_count_dict.get(ed.key, 0) for ed in mesh.edges] - edge_face_count = property(_get_edge_face_count) - class MeshEdge(StructRNA): - def _get_key(self): + @property + def key(self): return ord_ind(*tuple(self.verts)) - key = property(_get_key) - class MeshFace(StructRNA): - def _get_edge_keys(self): + @property + def edge_keys(self): verts = tuple(self.verts) if len(verts)==3: return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[0]) return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[3]), ord_ind(verts[3], verts[0]) - edge_keys = property(_get_edge_keys) - import collections class OrderedMeta(type): @@ -145,7 +221,7 @@ class Menu(StructRNA): if f.startswith("."): continue - layout.item_stringO(operator, "path", path, text=path_to_name(f)) + layout.operator(operator, text=path_to_name(f)).path = path def draw_preset(self, context): '''Define these on the subclass diff --git a/release/scripts/modules/rigify.py b/release/scripts/modules/rigify.py new file mode 100644 index 00000000000..3cdd2baa0dd --- /dev/null +++ b/release/scripts/modules/rigify.py @@ -0,0 +1,888 @@ +# ##### 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. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from functools import reduce +from Mathutils import Vector + +# TODO, have these in a more general module +from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get + +empty_layer = [False] * 16 + +def auto_class(slots, name="ContainerClass"): + return type(name, (object,), {"__slots__":tuple(slots)}) + +def auto_class_instance(slots, name="ContainerClass"): + return auto_class(slots, name)() + + + +def bone_class_instance(obj, slots, name="BoneContainer"): + for member in slots[:]: + slots.append(member + "_b") # bone bone + slots.append(member + "_p") # pose bone + slots.append(member + "_e") # edit bone + + slots.extend(["obj", "update"]) + + instance = auto_class_instance(slots, name) + + def update(): + ''' + Re-Assigns bones from the blender data + ''' + arm = obj.data + + bbones = arm.bones + pbones = obj.pose.bones + ebones = arm.edit_bones + + for member in slots: + + if member in ("update", "obj"): + continue + + if not member[-2] == "_": + name = getattr(instance, member, None) + if name is not None: + setattr(instance, member + "_b", bbones.get(name, None)) + setattr(instance, member + "_p", pbones.get(name, None)) + setattr(instance, member + "_e", ebones.get(name, None)) + + instance.update = update + + return instance + +def gen_none(obj, orig_bone_name): + pass + +def get_bone_data(obj, bone_name): + arm = obj.data + pbone = obj.pose.bones[bone_name] + if obj.mode == 'EDIT': + bone = arm.edit_bones[bone_name] + else: + bone = arm.bones[bone_name] + + return arm, pbone, bone + +def bone_basename(name): + return name.split(".")[0] + +def copy_bone_simple(arm, from_bone, name, parent=False): + ebone = arm.edit_bones[from_bone] + ebone_new = arm.edit_bones.new(name) + + if parent: + ebone_new.connected = ebone.connected + ebone_new.parent = ebone.parent + + ebone_new.head = ebone.head + ebone_new.tail = ebone.tail + ebone_new.roll = ebone.roll + return ebone_new + + +def add_stretch_to(obj, from_name, to_name, name): + ''' + Adds a bone that stretches from one to another + ''' + + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='EDIT') + + arm = obj.data + stretch_ebone = arm.edit_bones.new(name) + stretch_name = stretch_ebone.name + del name + + head = stretch_ebone.head = arm.edit_bones[from_name].head.copy() + #tail = stretch_ebone.tail = arm.edit_bones[to_name].head.copy() + + # annoying exception for zero length bones, since its using stretch_to the rest pose doesnt really matter + #if (head - tail).length < 0.1: + if 1: + tail = stretch_ebone.tail = arm.edit_bones[from_name].tail.copy() + + + # Now for the constraint + bpy.ops.object.mode_set(mode='OBJECT') + from_pbone = obj.pose.bones[from_name] + to_pbone = obj.pose.bones[to_name] + + stretch_pbone = obj.pose.bones[stretch_name] + + con = stretch_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = from_name + + con = stretch_pbone.constraints.new('STRETCH_TO') + con.target = obj + con.subtarget = to_name + con.original_length = (head - tail).length + con.keep_axis = 'PLANE_X' + con.volume = 'NO_VOLUME' + + bpy.ops.object.mode_set(mode=mode_orig) + + +def add_pole_target_bone(obj, base_name, name, mode='CROSS'): + ''' + Does not actually create a poll target, just the bone to use as a poll target + ''' + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='EDIT') + + arm = obj.data + + poll_ebone = arm.edit_bones.new(base_name + "_poll") + base_ebone = arm.edit_bones[base_name] + poll_name = poll_ebone.name + parent_ebone = base_ebone.parent + + base_head = base_ebone.head.copy() + base_tail = base_ebone.tail.copy() + base_dir = base_head - base_tail + + parent_head = parent_ebone.head.copy() + parent_tail = parent_ebone.tail.copy() + parent_dir = parent_head - parent_tail + + distance = (base_dir.length + parent_dir.length) + + if mode == 'CROSS': + offset = base_dir.copy().normalize() - parent_dir.copy().normalize() + offset.length = distance + else: + offset = Vector(0,0,0) + if mode[0]=="+": + val = distance + else: + val = -distance + + setattr(offset, mode[1].lower(), val) + + poll_ebone.head = base_head + offset + poll_ebone.tail = base_head + (offset * (1.0 - (1.0 / 4.0))) + + bpy.ops.object.mode_set(mode=mode_orig) + + return poll_name + + +def gen_finger(obj, orig_bone_name): + + # *** EDITMODE + + # get assosiated data + arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) + + obj.animation_data_create() # needed if its a new armature with no keys + + arm.layer[0] = arm.layer[8] = True + + children = orig_pbone.children_recursive + tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) + + base_name = bone_basename(orig_pbone.name) + + # first make a new bone at the location of the finger + control_ebone = arm.edit_bones.new(base_name) + control_bone_name = control_ebone.name # we dont know if we get the name requested + + control_ebone.connected = orig_ebone.connected + control_ebone.parent = orig_ebone.parent + + # Place the finger bone + head = orig_ebone.head.copy() + tail = orig_ebone.tail.copy() + + control_ebone.head = head + control_ebone.tail = head + ((tail - head).normalize() * tot_len) + control_ebone.roll = orig_ebone.roll + + # now add bones inbetween this and its children recursively + + # switching modes so store names only! + children = [pbone.name for pbone in children] + + # set an alternate layer for driver bones + other_layer = empty_layer[:] + other_layer[8] = True + + + driver_bone_pairs = [] + + for child_bone_name in children: + arm, pbone_child, child_ebone = get_bone_data(obj, child_bone_name) + + # finger.02 --> finger_driver.02 + driver_bone_name = child_bone_name.split('.') + driver_bone_name = driver_bone_name[0] + "_driver." + ".".join(driver_bone_name[1:]) + + driver_ebone = arm.edit_bones.new(driver_bone_name) + driver_bone_name = driver_ebone.name # cant be too sure! + driver_ebone.layer = other_layer + + new_len = pbone_child.bone.length / 2.0 + + head = child_ebone.head.copy() + tail = child_ebone.tail.copy() + + driver_ebone.head = head + driver_ebone.tail = head + ((tail - head).normalize() * new_len) + driver_ebone.roll = child_ebone.roll + + # Insert driver_ebone in the chain without connected parents + driver_ebone.connected = False + driver_ebone.parent = child_ebone.parent + + child_ebone.connected = False + child_ebone.parent = driver_ebone + + # Add the drivers to these when in posemode. + driver_bone_pairs.append((child_bone_name, driver_bone_name)) + + del control_ebone + + + # *** POSEMODE + bpy.ops.object.mode_set(mode='OBJECT') + + + arm, orig_pbone, orig_bone = get_bone_data(obj, orig_bone_name) + arm, control_pbone, control_bone= get_bone_data(obj, control_bone_name) + + + # only allow Y scale + control_pbone.lock_scale = (True, False, True) + + control_pbone["bend_ratio"] = 0.4 + prop = rna_idprop_ui_prop_get(control_pbone, "bend_ratio", create=True) + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + con = orig_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = control_bone_name + + con = orig_pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = control_bone_name + + + + # setup child drivers on each new smaller bone added. assume 2 for now. + + # drives the bones + controller_path = control_pbone.path_to_id() # 'pose.bones["%s"]' % control_bone_name + + i = 0 + for child_bone_name, driver_bone_name in driver_bone_pairs: + + # XXX - todo, any number + if i==2: + break + + arm, driver_pbone, driver_bone = get_bone_data(obj, driver_bone_name) + + driver_pbone.rotation_mode = 'YZX' + fcurve_driver = driver_pbone.driver_add("rotation_euler", 0) + + #obj.driver_add('pose.bones["%s"].scale', 1) + #obj.animation_data.drivers[-1] # XXX, WATCH THIS + driver = fcurve_driver.driver + + # scale target + tar = driver.targets.new() + tar.name = "scale" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '.scale[1]' + + # bend target + tar = driver.targets.new() + tar.name = "br" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["bend_ratio"]' + + # XXX - todo, any number + if i==0: + driver.expression = '(-scale+1.0)*pi*2.0*(1.0-br)' + elif i==1: + driver.expression = '(-scale+1.0)*pi*2.0*br' + + arm, child_pbone, child_bone = get_bone_data(obj, child_bone_name) + + # only allow X rotation + driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True) + + i += 1 + + +def gen_delta(obj, delta_name): + ''' + Use this bone to define a delta thats applied to its child in pose mode. + ''' + + arm = obj.data + + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='OBJECT') + + delta_pbone = obj.pose.bones[delta_name] + children = delta_pbone.children + + if len(children) != 1: + print("only 1 child supported for delta") + + child_name = children[0].name + arm, child_pbone, child_bone = get_bone_data(obj, child_name) + + delta_phead = delta_pbone.head.copy() + delta_ptail = delta_pbone.tail.copy() + delta_pmatrix = delta_pbone.matrix.copy() + + child_phead = child_pbone.head.copy() + child_ptail = child_pbone.tail.copy() + child_pmatrix = child_pbone.matrix.copy() + + + children = delta_pbone.children + + bpy.ops.object.mode_set(mode='EDIT') + + delta_ebone = arm.edit_bones[delta_name] + child_ebone = arm.edit_bones[child_name] + + delta_head = delta_ebone.head.copy() + delta_tail = delta_ebone.tail.copy() + + # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) + child_head = child_ebone.head.copy() + child_tail = child_ebone.tail.copy() + + arm.edit_bones.remove(delta_ebone) + del delta_ebone # cant use thz + + bpy.ops.object.mode_set(mode='OBJECT') + + + # Move the child bone to the deltas location + obj.animation_data_create() + child_pbone = obj.pose.bones[child_name] + + # ------------------- drivers + + child_pbone.rotation_mode = 'XYZ' + + rot = delta_pmatrix.invert().rotationPart() * child_pmatrix.rotationPart() + rot = rot.invert().toEuler() + + fcurve_drivers = child_pbone.driver_add("rotation_euler", -1) + for i, fcurve_driver in enumerate(fcurve_drivers): + driver = fcurve_driver.driver + driver.type = 'AVERAGE' + #mod = fcurve_driver.modifiers.new('GENERATOR') + mod = fcurve_driver.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = rot[i] + mod.coefficients[1] = 0.0 + + # tricky, find the transform to drive the bone to this location. + delta_head_offset = child_pmatrix.rotationPart() * (delta_phead - child_phead) + + fcurve_drivers = child_pbone.driver_add("location", -1) + for i, fcurve_driver in enumerate(fcurve_drivers): + driver = fcurve_driver.driver + driver.type = 'AVERAGE' + #mod = fcurve_driver.modifiers.new('GENERATOR') + mod = fcurve_driver.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = delta_head_offset[i] + mod.coefficients[1] = 0.0 + + + # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) + bpy.ops.object.mode_set(mode='EDIT') + + bpy.ops.object.mode_set(mode=mode_orig) + + +def gen_arm(obj, orig_bone_name): + """ + the bone with the 'arm' property is the upper arm, this assumes a chain as follows. + [shoulder, upper_arm, forearm, hand] + ...where this bone is 'upper_arm' + + there are 3 chains + - Original + - IK, MCH-%s_ik + - IKSwitch, MCH-%s () + """ + + # Since there are 3 chains, this gets confusing so divide into 3 chains + # Initialize container classes for convenience + mt = bone_class_instance(obj, ["shoulder", "arm", "forearm", "hand"]) # meta + ik = bone_class_instance(obj, ["arm", "forearm", "pole", "hand"]) # ik + sw = bone_class_instance(obj, ["socket", "shoulder", "arm", "forearm", "hand"]) # hinge + ex = bone_class_instance(obj, ["arm_hinge"]) # hinge & extras + + + def chain_init(): + ''' + Sanity check and return the arm as a list of bone names. + ''' + # do a sanity check + mt.arm = orig_bone_name + mt.update() + + mt.shoulder_p = mt.arm_p.parent + mt.shoulder = mt.shoulder_p.name + + if not mt.shoulder_p: + print("could not find 'arm' parent, skipping:", orig_bone_name) + return + + # We could have some bones attached, find the bone that has this as its 2nd parent + hands = [] + for pbone in obj.pose.bones: + index = pbone.parent_index(mt.arm_p) + if index == 2: + hands.append(pbone) + + if len(hands) > 1: + print("more then 1 hand found on:", orig_bone_name) + return + + # first add the 2 new bones + mt.hand_p = hands[0] + mt.hand = mt.hand_p.name + + mt.forearm_p = mt.hand_p.parent + mt.forearm = mt.forearm_p.name + + arm = obj.data + + + def chain_ik(prefix="MCH-%s_ik"): + + mt.update() + + # Add the edit bones + ik.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) + ik.hand = ik.hand_e.name + + ik.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) + ik.arm = ik.arm_e.name + + ik.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) + ik.forearm = ik.forearm_e.name + + ik.arm_e.parent = mt.arm_e.parent + ik.forearm_e.connected = mt.arm_e.connected + + ik.forearm_e.parent = ik.arm_e + ik.forearm_e.connected = True + + + # Add the bone used for the arms poll target + ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='+Z') + + bpy.ops.object.mode_set(mode='OBJECT') + + ik.update() + + con = ik.forearm_p.constraints.new('IK') + con.target = obj + con.subtarget = ik.hand + con.pole_target = obj + con.pole_subtarget = ik.pole + + con.use_tail = True + con.use_stretch = True + con.use_target = True + con.use_rotation = False + con.chain_length = 2 + con.pole_angle = -90.0 # XXX, RAD2DEG + + # ID Propery on the hand for IK/FK switch + + prop = rna_idprop_ui_prop_get(ik.hand_p, "ik", create=True) + ik.hand_p["ik"] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + bpy.ops.object.mode_set(mode='EDIT') + + ik.arm = ik.arm + ik.forearm = ik.forearm + ik.hand = ik.hand + ik.pole = ik.pole + + def chain_switch(prefix="MCH-%s"): + + sw.update() + mt.update() + + sw.shoulder_e = copy_bone_simple(arm, mt.shoulder, prefix % mt.shoulder) + sw.shoulder = sw.shoulder_e.name + sw.shoulder_e.parent = mt.shoulder_e.parent + sw.shoulder_e.connected = mt.shoulder_e.connected + + sw.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) + sw.arm = sw.arm_e.name + sw.arm_e.parent = sw.shoulder_e + sw.arm_e.connected = arm.edit_bones[mt.shoulder].connected + + sw.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) + sw.forearm = sw.forearm_e.name + sw.forearm_e.parent = sw.arm_e + sw.forearm_e.connected = arm.edit_bones[mt.forearm].connected + + sw.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) + sw.hand = sw.hand_e.name + sw.hand_e.parent = sw.forearm_e + sw.hand_e.connected = arm.edit_bones[mt.hand].connected + + # The sw.hand_e needs to own all the children on the metarig's hand + for child in mt.hand_e.children: + child.parent = sw.hand_e + + + # These are made the children of sw.shoulder_e + + + bpy.ops.object.mode_set(mode='OBJECT') + + # Add constraints + sw.update() + + #dummy, ik.arm, ik.forearm, ik.hand, ik.pole = ik_chain_tuple + + ik_driver_path = obj.pose.bones[ik.hand].path_to_id() + '["ik"]' + + + def ik_fk_driver(con): + ''' + 3 bones use this for ik/fk switching + ''' + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "ik" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = ik_driver_path + + # *********** + con = sw.arm_p.constraints.new('COPY_ROTATION') + con.name = "FK" + con.target = obj + con.subtarget = mt.arm + + con = sw.arm_p.constraints.new('COPY_ROTATION') + + con.target = obj + con.subtarget = ik.arm + con.influence = 0.5 + ik_fk_driver(con) + + # *********** + con = sw.forearm_p.constraints.new('COPY_ROTATION') + con.name = "FK" + con.target = obj + con.subtarget = mt.forearm + + con = sw.forearm_p.constraints.new('COPY_ROTATION') + con.name = "IK" + con.target = obj + con.subtarget = ik.forearm + con.influence = 0.5 + ik_fk_driver(con) + + # *********** + con = sw.hand_p.constraints.new('COPY_ROTATION') + con.name = "FK" + con.target = obj + con.subtarget = mt.hand + + con = sw.hand_p.constraints.new('COPY_ROTATION') + con.name = "IK" + con.target = obj + con.subtarget = ik.hand + con.influence = 0.5 + ik_fk_driver(con) + + + add_stretch_to(obj, sw.forearm, ik.pole, "VIS-elbow_ik_poll") + add_stretch_to(obj, sw.hand, ik.hand, "VIS-hand_ik") + + bpy.ops.object.mode_set(mode='EDIT') + + + def chain_shoulder(prefix="MCH-%s"): + + sw.socket_e = copy_bone_simple(arm, mt.arm, (prefix % mt.arm) + "_socket") + sw.socket = sw.socket_e.name + sw.socket_e.tail = arm.edit_bones[mt.shoulder].tail + + + # Set the shoulder as parent + ik.update() + sw.update() + mt.update() + + sw.socket_e.parent = sw.shoulder_e + ik.arm_e.parent = sw.shoulder_e + + + # ***** add the shoulder hinge + # yes this is correct, the shoulder copy gets the arm's name + ex.arm_hinge_e = copy_bone_simple(arm, mt.shoulder, (prefix % mt.arm) + "_hinge") + ex.arm_hinge = ex.arm_hinge_e.name + offset = ex.arm_hinge_e.length / 2.0 + + ex.arm_hinge_e.head.y += offset + ex.arm_hinge_e.tail.y += offset + + # Note: meta arm becomes child of hinge + mt.arm_e.parent = ex.arm_hinge_e + + + bpy.ops.object.mode_set(mode='OBJECT') + + ex.update() + + con = mt.arm_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = sw.socket + + + # Hinge constraint & driver + con = ex.arm_hinge_p.constraints.new('COPY_ROTATION') + con.name = "hinge" + con.target = obj + con.subtarget = sw.shoulder + driver_fcurve = con.driver_add("influence", 0) + driver = driver_fcurve.driver + + + controller_path = mt.arm_p.path_to_id() + # add custom prop + mt.arm_p["hinge"] = 0.0 + prop = rna_idprop_ui_prop_get(mt.arm_p, "hinge", create=True) + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + + # ***** + driver = driver_fcurve.driver + driver.type = 'AVERAGE' + + tar = driver.targets.new() + tar.name = "hinge" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["hinge"]' + + + bpy.ops.object.mode_set(mode='EDIT') + + # remove the shoulder and re-parent + + + + chain_init() + chain_ik() + chain_switch() + chain_shoulder() + + # Shoulder with its delta and hinge. + + + + + +def gen_palm(obj, orig_bone_name): + arm, palm_pbone, palm_ebone = get_bone_data(obj, orig_bone_name) + children = [ebone.name for ebone in palm_ebone.children] + children.sort() # simply assume the pinky has the lowest name + + # Make a copy of the pinky + pinky_ebone = arm.edit_bones[children[0]] + control_ebone = copy_bone_simple(arm, pinky_ebone.name, "palm_control", parent=True) + control_name = control_ebone.name + + offset = (arm.edit_bones[children[0]].head - arm.edit_bones[children[1]].head) + + control_ebone.head += offset + control_ebone.tail += offset + + bpy.ops.object.mode_set(mode='OBJECT') + + + arm, control_pbone, control_ebone = get_bone_data(obj, control_name) + arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0]) + + control_pbone.rotation_mode = 'YZX' + control_pbone.lock_rotation = False, True, True + + driver_fcurves = pinky_pbone.driver_add("rotation_euler") + + + controller_path = control_pbone.path_to_id() + + # add custom prop + control_pbone["spread"] = 0.0 + prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True) + prop["soft_min"] = -1.0 + prop["soft_max"] = 1.0 + + + # ***** + driver = driver_fcurves[0].driver + driver.type = 'AVERAGE' + + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + + # ***** + driver = driver_fcurves[1].driver + driver.expression = "-x/4.0" + + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + + # ***** + driver = driver_fcurves[2].driver + driver.expression = "(1.0-cos(x))-s" + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + tar = driver.targets.new() + tar.name = "s" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["spread"]' + + + for i, child_name in enumerate(children): + child_pbone = obj.pose.bones[child_name] + child_pbone.rotation_mode = 'YZX' + + if child_name != children[-1] and child_name != children[0]: + + # this is somewhat arbitrary but seems to look good + inf = i / (len(children)+1) + inf = 1.0 - inf + inf = ((inf * inf) + inf) / 2.0 + + # used for X/Y constraint + inf_minor = inf * inf + + con = child_pbone.constraints.new('COPY_ROTATION') + con.name = "Copy Z Rot" + con.target = obj + con.subtarget = children[0] # also pinky_pbone + con.owner_space = con.target_space = 'LOCAL' + con.use_x, con.use_y, con.use_z = False, False, True + con.influence = inf + + con = child_pbone.constraints.new('COPY_ROTATION') + con.name = "Copy XY Rot" + con.target = obj + con.subtarget = children[0] # also pinky_pbone + con.owner_space = con.target_space = 'LOCAL' + con.use_x, con.use_y, con.use_z = True, True, False + con.influence = inf_minor + + + child_pbone = obj.pose.bones[children[-1]] + child_pbone.rotation_mode = 'QUATERNION' + + +gen_table = { + "":gen_none, \ + "finger":gen_finger, \ + "delta":gen_delta, \ + "arm":gen_arm, \ + "palm":gen_palm, \ +} + +def generate_rig(context, ob): + + global_undo = context.user_preferences.edit.global_undo + context.user_preferences.edit.global_undo = False + + # add_stretch_to(ob, "a", "b", "c") + + bpy.ops.object.mode_set(mode='OBJECT') + + + # copy object and data + ob.selected = False + ob_new = ob.copy() + ob_new.data = ob.data.copy() + scene = context.scene + scene.objects.link(ob_new) + scene.objects.active = ob_new + ob_new.selected = True + + # enter armature editmode + + + for pbone_name in ob_new.pose.bones.keys(): + bone_type = ob_new.pose.bones[pbone_name].get("type", "") + + try: + func = gen_table[bone_type] + except KeyError: + print("\tunknown type '%s', bone '%s'" % (bone_type, pbone_name)) + + + # Toggle editmode so the pose data is always up to date + bpy.ops.object.mode_set(mode='EDIT') + func(ob_new, pbone_name) + bpy.ops.object.mode_set(mode='OBJECT') + + # needed to update driver deps + # context.scene.update() + + # Only for demo'ing + ob.restrict_view = True + ob_new.data.draw_axes = False + + context.user_preferences.edit.global_undo = global_undo + +if __name__ == "__main__": + generate_rig(bpy.context, bpy.context.object) diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index badd37db83e..d19449f9404 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -69,13 +69,17 @@ def draw(layout, context, context_member, use_edit = True): pass rna_item = eval("context." + context_member) + + # poll should really get this... + if not rna_item: + return items = rna_item.items() items.sort() if use_edit: row = layout.row() - props = row.itemO("wm.properties_add", properties=True, text="Add") + props = row.operator("wm.properties_add", text="Add") props.path = context_member del row @@ -102,20 +106,20 @@ def draw(layout, context, context_member, use_edit = True): else: row = box.row() - row.itemL(text=key) + row.label(text=key) # explicit exception for arrays if convert_to_pyobject and not hasattr(val_orig, "len"): - row.itemL(text=val_draw) + row.label(text=val_draw) else: - row.itemR(rna_item, '["%s"]' % key, text="") + row.prop(rna_item, '["%s"]' % key, text="") if use_edit: row = split.row(align=True) - prop = row.itemO("wm.properties_edit", properties=True, text="edit") + prop = row.operator("wm.properties_edit", text="edit") assign_props(prop, val_draw, key) - prop = row.itemO("wm.properties_remove", properties=True, text="", icon='ICON_ZOOMOUT') + prop = row.operator("wm.properties_remove", text="", icon='ICON_ZOOMOUT') assign_props(prop, val_draw, key) @@ -177,6 +181,7 @@ class WM_OT_properties_edit(bpy.types.Operator): exec_str = "item['%s'] = %s" % (prop, value_eval) # print(exec_str) exec(exec_str) + self._last_prop[:] = [prop] prop_type = type(item[prop]) diff --git a/release/scripts/op/add_mesh_torus.py b/release/scripts/op/add_mesh_torus.py index 33866de18bb..fe8feecf43d 100644 --- a/release/scripts/op/add_mesh_torus.py +++ b/release/scripts/op/add_mesh_torus.py @@ -130,7 +130,7 @@ bpy.ops.add(AddTorus) # Add to a menu import dynamic_menu -menu_func = (lambda self, context: self.layout.itemO(AddTorus.bl_idname, +menu_func = (lambda self, context: self.layout.operator(AddTorus.bl_idname, text="Torus", icon='ICON_MESH_DONUT')) menu_item = dynamic_menu.add(bpy.types.INFO_MT_mesh_add, menu_func) diff --git a/release/scripts/op/mesh_skin.py b/release/scripts/op/mesh_skin.py index 9416ee24e14..5cf526cc23e 100644 --- a/release/scripts/op/mesh_skin.py +++ b/release/scripts/op/mesh_skin.py @@ -4,12 +4,12 @@ # 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. @@ -29,620 +29,620 @@ from Mathutils import AngleBetweenVecs as _AngleBetweenVecs_ BIG_NUM = 1<<30 global CULL_METHOD -CULL_METHOD = 0 +CULL_METHOD = 0 def AngleBetweenVecs(a1,a2): - import math - try: - return math.degrees(_AngleBetweenVecs_(a1,a2)) - except: - return 180.0 + import math + try: + return math.degrees(_AngleBetweenVecs_(a1,a2)) + except: + return 180.0 class edge(object): - __slots__ = 'v1', 'v2', 'co1', 'co2', 'length', 'removed', 'match', 'cent', 'angle', 'next', 'prev', 'normal', 'fake' - def __init__(self, v1,v2): - self.v1 = v1 - self.v2 = v2 - co1, co2= v1.co, v2.co - self.co1= co1 - self.co2= co2 - - # uv1 uv2 vcol1 vcol2 # Add later - self.length = (co1 - co2).length - self.removed = 0 # Have we been culled from the eloop - self.match = None # The other edge were making a face with - - self.cent= MidpointVecs(co1, co2) - self.angle= 0.0 - self.fake= False + __slots__ = 'v1', 'v2', 'co1', 'co2', 'length', 'removed', 'match', 'cent', 'angle', 'next', 'prev', 'normal', 'fake' + def __init__(self, v1,v2): + self.v1 = v1 + self.v2 = v2 + co1, co2= v1.co, v2.co + self.co1= co1 + self.co2= co2 + + # uv1 uv2 vcol1 vcol2 # Add later + self.length = (co1 - co2).length + self.removed = 0 # Have we been culled from the eloop + self.match = None # The other edge were making a face with + + self.cent= MidpointVecs(co1, co2) + self.angle= 0.0 + self.fake= False class edgeLoop(object): - __slots__ = 'centre', 'edges', 'normal', 'closed', 'backup_edges' - def __init__(self, loop, me, closed): # Vert loop - # Use next and prev, nextDist, prevDist - - # Get Loops centre. - fac= len(loop) - verts = me.verts - self.centre= functools.reduce(lambda a,b: a+verts[b].co/fac, loop, Vector()) - - # Convert Vert loop to Edges. - self.edges = [edge(verts[loop[vIdx-1]], verts[loop[vIdx]]) for vIdx in range(len(loop))] - - if not closed: - self.edges[0].fake = True # fake edge option - - self.closed = closed - - - # Assign linked list - for eIdx in range(len(self.edges)-1): - self.edges[eIdx].next = self.edges[eIdx+1] - self.edges[eIdx].prev = self.edges[eIdx-1] - # Now last - self.edges[-1].next = self.edges[0] - self.edges[-1].prev = self.edges[-2] - - - - # GENERATE AN AVERAGE NORMAL FOR THE WHOLE LOOP. - self.normal = Vector() - for e in self.edges: - n = (self.centre-e.co1).cross(self.centre-e.co2) - # Do we realy need tot normalize? - n.normalize() - self.normal += n - - # Generate the angle - va= e.cent - e.prev.cent - vb= e.next.cent - e.cent - - e.angle= AngleBetweenVecs(va, vb) - - # Blur the angles - #for e in self.edges: - # e.angle= (e.angle+e.next.angle)/2 - - # Blur the angles - #for e in self.edges: - # e.angle= (e.angle+e.prev.angle)/2 - - self.normal.normalize() - - # Generate a normal for each edge. - for e in self.edges: - - n1 = e.co1 - n2 = e.co2 - n3 = e.prev.co1 - - a = n1-n2 - b = n1-n3 - normal1 = a.cross(b) - normal1.normalize() - - n1 = e.co2 - n3 = e.next.co2 - n2 = e.co1 - - a = n1-n2 - b = n1-n3 - - normal2 = a.cross(b) - normal2.normalize() - - # Reuse normal1 var - normal1 += normal1 + normal2 - normal1.normalize() - - e.normal = normal1 - #print e.normal - - - - def backup(self): - # Keep a backup of the edges - self.backup_edges = self.edges[:] - - def restore(self): - self.edges = self.backup_edges[:] - for e in self.edges: - e.removed = 0 - - def reverse(self): - self.edges.reverse() - self.normal.negate() - - for e in self.edges: - e.normal.negate() - e.v1, e.v2 = e.v2, e.v1 - e.co1, e.co2 = e.co2, e.co1 - e.next, e.prev = e.prev, e.next - - - def removeSmallest(self, cullNum, otherLoopLen): - ''' - Removes N Smallest edges and backs up the loop, - this is so we can loop between 2 loops as if they are the same length, - backing up and restoring incase the loop needs to be skinned with another loop of a different length. - ''' - global CULL_METHOD - if CULL_METHOD == 1: # Shortest edge - eloopCopy = self.edges[:] - - # Length sort, smallest first - try: eloopCopy.sort(key = lambda e1: e1.length) - except: eloopCopy.sort(lambda e1, e2: cmp(e1.length, e2.length )) - - # Dont use atm - #eloopCopy.sort(lambda e1, e2: cmp(e1.angle*e1.length, e2.angle*e2.length)) # Length sort, smallest first - #eloopCopy.sort(lambda e1, e2: cmp(e1.angle, e2.angle)) # Length sort, smallest first - - remNum = 0 - for i, e in enumerate(eloopCopy): - if not e.fake: - e.removed = 1 - self.edges.remove( e ) # Remove from own list, still in linked list. - remNum += 1 - - if not remNum < cullNum: - break - - else: # CULL METHOD is even - - culled = 0 - - step = int(otherLoopLen / float(cullNum)) * 2 - - currentEdge = self.edges[0] - while culled < cullNum: - - # Get the shortest face in the next STEP - step_count= 0 - bestAng= 360.0 - smallestEdge= None - while step_count<=step or smallestEdge==None: - step_count+=1 - if not currentEdge.removed: # 0 or -1 will not be accepted - if currentEdge.angle<bestAng and not currentEdge.fake: - smallestEdge= currentEdge - bestAng= currentEdge.angle - - currentEdge = currentEdge.next - - # In that stepping length we have the smallest edge.remove it - smallestEdge.removed = 1 - self.edges.remove(smallestEdge) - - # Start scanning from the edge we found? - result is over fanning- no good. - #currentEdge= smallestEdge.next - - culled+=1 - + __slots__ = 'centre', 'edges', 'normal', 'closed', 'backup_edges' + def __init__(self, loop, me, closed): # Vert loop + # Use next and prev, nextDist, prevDist + + # Get Loops centre. + fac= len(loop) + verts = me.verts + self.centre= functools.reduce(lambda a,b: a+verts[b].co/fac, loop, Vector()) + + # Convert Vert loop to Edges. + self.edges = [edge(verts[loop[vIdx-1]], verts[loop[vIdx]]) for vIdx in range(len(loop))] + + if not closed: + self.edges[0].fake = True # fake edge option + + self.closed = closed + + + # Assign linked list + for eIdx in range(len(self.edges)-1): + self.edges[eIdx].next = self.edges[eIdx+1] + self.edges[eIdx].prev = self.edges[eIdx-1] + # Now last + self.edges[-1].next = self.edges[0] + self.edges[-1].prev = self.edges[-2] + + + + # GENERATE AN AVERAGE NORMAL FOR THE WHOLE LOOP. + self.normal = Vector() + for e in self.edges: + n = (self.centre-e.co1).cross(self.centre-e.co2) + # Do we realy need tot normalize? + n.normalize() + self.normal += n + + # Generate the angle + va= e.cent - e.prev.cent + vb= e.next.cent - e.cent + + e.angle= AngleBetweenVecs(va, vb) + + # Blur the angles + #for e in self.edges: + # e.angle= (e.angle+e.next.angle)/2 + + # Blur the angles + #for e in self.edges: + # e.angle= (e.angle+e.prev.angle)/2 + + self.normal.normalize() + + # Generate a normal for each edge. + for e in self.edges: + + n1 = e.co1 + n2 = e.co2 + n3 = e.prev.co1 + + a = n1-n2 + b = n1-n3 + normal1 = a.cross(b) + normal1.normalize() + + n1 = e.co2 + n3 = e.next.co2 + n2 = e.co1 + + a = n1-n2 + b = n1-n3 + + normal2 = a.cross(b) + normal2.normalize() + + # Reuse normal1 var + normal1 += normal1 + normal2 + normal1.normalize() + + e.normal = normal1 + #print e.normal + + + + def backup(self): + # Keep a backup of the edges + self.backup_edges = self.edges[:] + + def restore(self): + self.edges = self.backup_edges[:] + for e in self.edges: + e.removed = 0 + + def reverse(self): + self.edges.reverse() + self.normal.negate() + + for e in self.edges: + e.normal.negate() + e.v1, e.v2 = e.v2, e.v1 + e.co1, e.co2 = e.co2, e.co1 + e.next, e.prev = e.prev, e.next + + + def removeSmallest(self, cullNum, otherLoopLen): + ''' + Removes N Smallest edges and backs up the loop, + this is so we can loop between 2 loops as if they are the same length, + backing up and restoring incase the loop needs to be skinned with another loop of a different length. + ''' + global CULL_METHOD + if CULL_METHOD == 1: # Shortest edge + eloopCopy = self.edges[:] + + # Length sort, smallest first + try: eloopCopy.sort(key = lambda e1: e1.length) + except: eloopCopy.sort(lambda e1, e2: cmp(e1.length, e2.length )) + + # Dont use atm + #eloopCopy.sort(lambda e1, e2: cmp(e1.angle*e1.length, e2.angle*e2.length)) # Length sort, smallest first + #eloopCopy.sort(lambda e1, e2: cmp(e1.angle, e2.angle)) # Length sort, smallest first + + remNum = 0 + for i, e in enumerate(eloopCopy): + if not e.fake: + e.removed = 1 + self.edges.remove( e ) # Remove from own list, still in linked list. + remNum += 1 + + if not remNum < cullNum: + break + + else: # CULL METHOD is even + + culled = 0 + + step = int(otherLoopLen / float(cullNum)) * 2 + + currentEdge = self.edges[0] + while culled < cullNum: + + # Get the shortest face in the next STEP + step_count= 0 + bestAng= 360.0 + smallestEdge= None + while step_count<=step or smallestEdge==None: + step_count+=1 + if not currentEdge.removed: # 0 or -1 will not be accepted + if currentEdge.angle<bestAng and not currentEdge.fake: + smallestEdge= currentEdge + bestAng= currentEdge.angle + + currentEdge = currentEdge.next + + # In that stepping length we have the smallest edge.remove it + smallestEdge.removed = 1 + self.edges.remove(smallestEdge) + + # Start scanning from the edge we found? - result is over fanning- no good. + #currentEdge= smallestEdge.next + + culled+=1 + # Returns face edges. # face must have edge data. - + def mesh_faces_extend(me, faces, mat_idx = 0): - orig_facetot = len(me.faces) - new_facetot = len(faces) - me.add_geometry(0, 0, new_facetot) - tot = orig_facetot+new_facetot - me_faces = me.faces - i= 0 - while i < new_facetot: - - f = [v.index for v in faces[i]] - if len(f)==4: - if f[3]==0: - f = f[1], f[2], f[3], f[0] - else: - f = f[0], f[1], f[2], 0 - - mf = me_faces[orig_facetot+i] - mf.verts_raw = f - mf.material_index = mat_idx - i+=1 + orig_facetot = len(me.faces) + new_facetot = len(faces) + me.add_geometry(0, 0, new_facetot) + tot = orig_facetot+new_facetot + me_faces = me.faces + i= 0 + while i < new_facetot: + + f = [v.index for v in faces[i]] + if len(f)==4: + if f[3]==0: + f = f[1], f[2], f[3], f[0] + else: + f = f[0], f[1], f[2], 0 + + mf = me_faces[orig_facetot+i] + mf.verts_raw = f + mf.material_index = mat_idx + i+=1 # end utils def getSelectedEdges(context, me, ob): - MESH_MODE= context.scene.tool_settings.mesh_selection_mode - - if MESH_MODE in ('EDGE', 'VERTEX'): - context.scene.tool_settings.mesh_selection_mode = 'EDGE' - edges= [ ed for ed in me.edges if ed.selected ] - # print len(edges), len(me.edges) - context.scene.tool_settings.mesh_selection_mode = MESH_MODE - return edges - - if MESH_MODE == 'FACE': - context.scene.tool_settings.mesh_selection_mode = 'EDGE' - # value is [edge, face_sel_user_in] - edge_dict= dict((ed.key, [ed, 0]) for ed in me.edges) - - for f in me.faces: - if f.selected: - for edkey in f.edge_keys: - edge_dict[edkey][1] += 1 - - context.scene.tool_settings.mesh_selection_mode = MESH_MODE - return [ ed_data[0] for ed_data in edge_dict.values() if ed_data[1] == 1 ] - - + MESH_MODE= context.scene.tool_settings.mesh_selection_mode + + if MESH_MODE in ('EDGE', 'VERTEX'): + context.scene.tool_settings.mesh_selection_mode = 'EDGE' + edges= [ ed for ed in me.edges if ed.selected ] + # print len(edges), len(me.edges) + context.scene.tool_settings.mesh_selection_mode = MESH_MODE + return edges + + if MESH_MODE == 'FACE': + context.scene.tool_settings.mesh_selection_mode = 'EDGE' + # value is [edge, face_sel_user_in] + edge_dict= dict((ed.key, [ed, 0]) for ed in me.edges) + + for f in me.faces: + if f.selected: + for edkey in f.edge_keys: + edge_dict[edkey][1] += 1 + + context.scene.tool_settings.mesh_selection_mode = MESH_MODE + return [ ed_data[0] for ed_data in edge_dict.values() if ed_data[1] == 1 ] + + def getVertLoops(selEdges, me): - ''' - return a list of vert loops, closed and open [(loop, closed)...] - ''' - - mainVertLoops = [] - # second method - tot = len(me.verts) - vert_siblings = [[] for i in range(tot)] - vert_used = [False] * tot - - for ed in selEdges: - i1, i2 = ed.key - vert_siblings[i1].append(i2) - vert_siblings[i2].append(i1) - - # find the first used vert and keep looping. - for i in range(tot): - if vert_siblings[i] and not vert_used[i]: - sbl = vert_siblings[i] # siblings - - if len(sbl) > 2: - return None - - vert_used[i] = True - - # do an edgeloop seek - if len(sbl) == 2: - contextVertLoop= [sbl[0], i, sbl[1]] # start the vert loop - vert_used[contextVertLoop[ 0]] = True - vert_used[contextVertLoop[-1]] = True - else: - contextVertLoop= [i, sbl[0]] - vert_used[contextVertLoop[ 1]] = True - - # Always seek up - ok = True - while ok: - ok = False - closed = False - sbl = vert_siblings[contextVertLoop[-1]] - if len(sbl) == 2: - next = sbl[not sbl.index( contextVertLoop[-2] )] - if vert_used[next]: - closed = True - # break - else: - contextVertLoop.append( next ) # get the vert that isnt the second last - vert_used[next] = True - ok = True - - # Seek down as long as the starting vert was not at the edge. - if not closed and len(vert_siblings[i]) == 2: - - ok = True - while ok: - ok = False - sbl = vert_siblings[contextVertLoop[0]] - if len(sbl) == 2: - next = sbl[not sbl.index( contextVertLoop[1] )] - if vert_used[next]: - closed = True - else: - contextVertLoop.insert(0, next) # get the vert that isnt the second last - vert_used[next] = True - ok = True - - mainVertLoops.append((contextVertLoop, closed)) - - - verts = me.verts - # convert from indicies to verts - # mainVertLoops = [([verts[i] for i in contextVertLoop], closed) for contextVertLoop, closed in mainVertLoops] - # print len(mainVertLoops) - return mainVertLoops - + ''' + return a list of vert loops, closed and open [(loop, closed)...] + ''' + + mainVertLoops = [] + # second method + tot = len(me.verts) + vert_siblings = [[] for i in range(tot)] + vert_used = [False] * tot + + for ed in selEdges: + i1, i2 = ed.key + vert_siblings[i1].append(i2) + vert_siblings[i2].append(i1) + + # find the first used vert and keep looping. + for i in range(tot): + if vert_siblings[i] and not vert_used[i]: + sbl = vert_siblings[i] # siblings + + if len(sbl) > 2: + return None + + vert_used[i] = True + + # do an edgeloop seek + if len(sbl) == 2: + contextVertLoop= [sbl[0], i, sbl[1]] # start the vert loop + vert_used[contextVertLoop[ 0]] = True + vert_used[contextVertLoop[-1]] = True + else: + contextVertLoop= [i, sbl[0]] + vert_used[contextVertLoop[ 1]] = True + + # Always seek up + ok = True + while ok: + ok = False + closed = False + sbl = vert_siblings[contextVertLoop[-1]] + if len(sbl) == 2: + next = sbl[not sbl.index( contextVertLoop[-2] )] + if vert_used[next]: + closed = True + # break + else: + contextVertLoop.append( next ) # get the vert that isnt the second last + vert_used[next] = True + ok = True + + # Seek down as long as the starting vert was not at the edge. + if not closed and len(vert_siblings[i]) == 2: + + ok = True + while ok: + ok = False + sbl = vert_siblings[contextVertLoop[0]] + if len(sbl) == 2: + next = sbl[not sbl.index( contextVertLoop[1] )] + if vert_used[next]: + closed = True + else: + contextVertLoop.insert(0, next) # get the vert that isnt the second last + vert_used[next] = True + ok = True + + mainVertLoops.append((contextVertLoop, closed)) + + + verts = me.verts + # convert from indicies to verts + # mainVertLoops = [([verts[i] for i in contextVertLoop], closed) for contextVertLoop, closed in mainVertLoops] + # print len(mainVertLoops) + return mainVertLoops + def skin2EdgeLoops(eloop1, eloop2, me, ob, MODE): - - new_faces= [] # - - # Make sure e1 loops is bigger then e2 - if len(eloop1.edges) != len(eloop2.edges): - if len(eloop1.edges) < len(eloop2.edges): - eloop1, eloop2 = eloop2, eloop1 - - eloop1.backup() # were about to cull faces - CULL_FACES = len(eloop1.edges) - len(eloop2.edges) - eloop1.removeSmallest(CULL_FACES, len(eloop1.edges)) - else: - CULL_FACES = 0 - # First make sure poly vert loops are in sync with eachother. - - # The vector allong which we are skinning. - skinVector = eloop1.centre - eloop2.centre - - loopDist = skinVector.length - - # IS THE LOOP FLIPPED, IF SO FLIP BACK. we keep it flipped, its ok, - if eloop1.closed or eloop2.closed: - angleBetweenLoopNormals = AngleBetweenVecs(eloop1.normal, eloop2.normal) - if angleBetweenLoopNormals > 90: - eloop2.reverse() - - - DIR= eloop1.centre - eloop2.centre - - # if eloop2.closed: - bestEloopDist = BIG_NUM - bestOffset = 0 - # Loop rotation offset to test.1 - eLoopIdxs = list(range(len(eloop1.edges))) - for offset in range(len(eloop1.edges)): - totEloopDist = 0 # Measure this total distance for thsi loop. - - offsetIndexLs = eLoopIdxs[offset:] + eLoopIdxs[:offset] # Make offset index list - - - # e1Idx is always from 0uu to N, e2Idx is offset. - for e1Idx, e2Idx in enumerate(offsetIndexLs): - e1= eloop1.edges[e1Idx] - e2= eloop2.edges[e2Idx] - - - # Include fan connections in the measurement. - OK= True - while OK or e1.removed: - OK= False - - # Measure the vloop distance =============== - diff= ((e1.cent - e2.cent).length) #/ nangle1 - - ed_dir= e1.cent-e2.cent - a_diff= AngleBetweenVecs(DIR, ed_dir)/18 # 0 t0 18 - - totEloopDist += (diff * (1+a_diff)) / (1+loopDist) - - # Premeture break if where no better off - if totEloopDist > bestEloopDist: - break - - e1=e1.next - - if totEloopDist < bestEloopDist: - bestOffset = offset - bestEloopDist = totEloopDist - - # Modify V2 LS for Best offset - eloop2.edges = eloop2.edges[bestOffset:] + eloop2.edges[:bestOffset] - - else: - # Both are open loops, easier to calculate. - - - # Make sure the fake edges are at the start. - for i, edloop in enumerate((eloop1, eloop2)): - # print "LOOPO" - if edloop.edges[0].fake: - # alredy at the start - #print "A" - pass - elif edloop.edges[-1].fake: - # put the end at the start - edloop.edges.insert(0, edloop.edges.pop()) - #print "B" - - else: - for j, ed in enumerate(edloop.edges): - if ed.fake: - #print "C" - edloop.edges = edloop.edges = edloop.edges[j:] + edloop.edges[:j] - break - # print "DONE" - ed1, ed2 = eloop1.edges[0], eloop2.edges[0] - - if not ed1.fake or not ed2.fake: - raise "Error" - - # Find the join that isnt flipped (juts like detecting a bow-tie face) - a1 = (ed1.co1 - ed2.co1).length + (ed1.co2 - ed2.co2).length - a2 = (ed1.co1 - ed2.co2).length + (ed1.co2 - ed2.co1).length - - if a1 > a2: - eloop2.reverse() - # make the first edge the start edge still - eloop2.edges.insert(0, eloop2.edges.pop()) - - - - - for loopIdx in range(len(eloop2.edges)): - e1 = eloop1.edges[loopIdx] - e2 = eloop2.edges[loopIdx] - - # Remember the pairs for fan filling culled edges. - e1.match = e2; e2.match = e1 - - if not (e1.fake or e2.fake): - new_faces.append([e1.v1, e1.v2, e2.v2, e2.v1]) - - # FAN FILL MISSING FACES. - if CULL_FACES: - # Culled edges will be in eloop1. - FAN_FILLED_FACES = 0 - - contextEdge = eloop1.edges[0] # The larger of teh 2 - while FAN_FILLED_FACES < CULL_FACES: - while contextEdge.next.removed == 0: - contextEdge = contextEdge.next - - vertFanPivot = contextEdge.match.v2 - - while contextEdge.next.removed == 1: - #if not contextEdge.next.fake: - new_faces.append([contextEdge.next.v1, contextEdge.next.v2, vertFanPivot]) - - # Should we use another var?, this will work for now. - contextEdge.next.removed = 1 - - contextEdge = contextEdge.next - FAN_FILLED_FACES += 1 - - # may need to fan fill backwards 1 for non closed loops. - - eloop1.restore() # Add culled back into the list. - - return new_faces + + new_faces= [] # + + # Make sure e1 loops is bigger then e2 + if len(eloop1.edges) != len(eloop2.edges): + if len(eloop1.edges) < len(eloop2.edges): + eloop1, eloop2 = eloop2, eloop1 + + eloop1.backup() # were about to cull faces + CULL_FACES = len(eloop1.edges) - len(eloop2.edges) + eloop1.removeSmallest(CULL_FACES, len(eloop1.edges)) + else: + CULL_FACES = 0 + # First make sure poly vert loops are in sync with eachother. + + # The vector allong which we are skinning. + skinVector = eloop1.centre - eloop2.centre + + loopDist = skinVector.length + + # IS THE LOOP FLIPPED, IF SO FLIP BACK. we keep it flipped, its ok, + if eloop1.closed or eloop2.closed: + angleBetweenLoopNormals = AngleBetweenVecs(eloop1.normal, eloop2.normal) + if angleBetweenLoopNormals > 90: + eloop2.reverse() + + + DIR= eloop1.centre - eloop2.centre + + # if eloop2.closed: + bestEloopDist = BIG_NUM + bestOffset = 0 + # Loop rotation offset to test.1 + eLoopIdxs = list(range(len(eloop1.edges))) + for offset in range(len(eloop1.edges)): + totEloopDist = 0 # Measure this total distance for thsi loop. + + offsetIndexLs = eLoopIdxs[offset:] + eLoopIdxs[:offset] # Make offset index list + + + # e1Idx is always from 0uu to N, e2Idx is offset. + for e1Idx, e2Idx in enumerate(offsetIndexLs): + e1= eloop1.edges[e1Idx] + e2= eloop2.edges[e2Idx] + + + # Include fan connections in the measurement. + OK= True + while OK or e1.removed: + OK= False + + # Measure the vloop distance =============== + diff= ((e1.cent - e2.cent).length) #/ nangle1 + + ed_dir= e1.cent-e2.cent + a_diff= AngleBetweenVecs(DIR, ed_dir)/18 # 0 t0 18 + + totEloopDist += (diff * (1+a_diff)) / (1+loopDist) + + # Premeture break if where no better off + if totEloopDist > bestEloopDist: + break + + e1=e1.next + + if totEloopDist < bestEloopDist: + bestOffset = offset + bestEloopDist = totEloopDist + + # Modify V2 LS for Best offset + eloop2.edges = eloop2.edges[bestOffset:] + eloop2.edges[:bestOffset] + + else: + # Both are open loops, easier to calculate. + + + # Make sure the fake edges are at the start. + for i, edloop in enumerate((eloop1, eloop2)): + # print "LOOPO" + if edloop.edges[0].fake: + # alredy at the start + #print "A" + pass + elif edloop.edges[-1].fake: + # put the end at the start + edloop.edges.insert(0, edloop.edges.pop()) + #print "B" + + else: + for j, ed in enumerate(edloop.edges): + if ed.fake: + #print "C" + edloop.edges = edloop.edges = edloop.edges[j:] + edloop.edges[:j] + break + # print "DONE" + ed1, ed2 = eloop1.edges[0], eloop2.edges[0] + + if not ed1.fake or not ed2.fake: + raise "Error" + + # Find the join that isnt flipped (juts like detecting a bow-tie face) + a1 = (ed1.co1 - ed2.co1).length + (ed1.co2 - ed2.co2).length + a2 = (ed1.co1 - ed2.co2).length + (ed1.co2 - ed2.co1).length + + if a1 > a2: + eloop2.reverse() + # make the first edge the start edge still + eloop2.edges.insert(0, eloop2.edges.pop()) + + + + + for loopIdx in range(len(eloop2.edges)): + e1 = eloop1.edges[loopIdx] + e2 = eloop2.edges[loopIdx] + + # Remember the pairs for fan filling culled edges. + e1.match = e2; e2.match = e1 + + if not (e1.fake or e2.fake): + new_faces.append([e1.v1, e1.v2, e2.v2, e2.v1]) + + # FAN FILL MISSING FACES. + if CULL_FACES: + # Culled edges will be in eloop1. + FAN_FILLED_FACES = 0 + + contextEdge = eloop1.edges[0] # The larger of teh 2 + while FAN_FILLED_FACES < CULL_FACES: + while contextEdge.next.removed == 0: + contextEdge = contextEdge.next + + vertFanPivot = contextEdge.match.v2 + + while contextEdge.next.removed == 1: + #if not contextEdge.next.fake: + new_faces.append([contextEdge.next.v1, contextEdge.next.v2, vertFanPivot]) + + # Should we use another var?, this will work for now. + contextEdge.next.removed = 1 + + contextEdge = contextEdge.next + FAN_FILLED_FACES += 1 + + # may need to fan fill backwards 1 for non closed loops. + + eloop1.restore() # Add culled back into the list. + + return new_faces def main(context): - global CULL_METHOD - - ob = context.object - - is_editmode = (ob.mode=='EDIT') - if is_editmode: bpy.ops.object.mode_set(mode='OBJECT', toggle=False) - if ob == None or ob.type != 'MESH': - raise Exception("BPyMessages.Error_NoMeshActive()") - return - - me = ob.data - - time1 = time.time() - selEdges = getSelectedEdges(context, me, ob) - vertLoops = getVertLoops(selEdges, me) # list of lists of edges. - if vertLoops == None: - raise Exception('Error%t|Selection includes verts that are a part of more then 1 loop') - if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) - return - # print len(vertLoops) - - - if len(vertLoops) > 2: - choice = PupMenu('Loft '+str(len(vertLoops))+' edge loops%t|loop|segment') - if choice == -1: - if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) - return - - elif len(vertLoops) < 2: - raise Exception('Error%t|No Vertloops found!') - if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) - return - else: - choice = 2 - - - # The line below checks if any of the vert loops are differenyt in length. - if False in [len(v[0]) == len(vertLoops[0][0]) for v in vertLoops]: + global CULL_METHOD + + ob = context.object + + is_editmode = (ob.mode=='EDIT') + if is_editmode: bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + if ob == None or ob.type != 'MESH': + raise Exception("BPyMessages.Error_NoMeshActive()") + return + + me = ob.data + + time1 = time.time() + selEdges = getSelectedEdges(context, me, ob) + vertLoops = getVertLoops(selEdges, me) # list of lists of edges. + if vertLoops == None: + raise Exception('Error%t|Selection includes verts that are a part of more then 1 loop') + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + return + # print len(vertLoops) + + + if len(vertLoops) > 2: + choice = PupMenu('Loft '+str(len(vertLoops))+' edge loops%t|loop|segment') + if choice == -1: + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + return + + elif len(vertLoops) < 2: + raise Exception('Error%t|No Vertloops found!') + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + return + else: + choice = 2 + + + # The line below checks if any of the vert loops are differenyt in length. + if False in [len(v[0]) == len(vertLoops[0][0]) for v in vertLoops]: #XXX CULL_METHOD = PupMenu('Small to large edge loop distrobution method%t|remove edges evenly|remove smallest edges') #XXX if CULL_METHOD == -1: #XXX if is_editmode: Window.EditMode(1) #XXX return - CULL_METHOD = 1 # XXX FIXME - - - - - if CULL_METHOD ==1: # RESET CULL_METHOD - CULL_METHOD = 0 # shortest - else: - CULL_METHOD = 1 # even - - - time1 = time.time() - # Convert to special edge data. - edgeLoops = [] - for vloop, closed in vertLoops: - edgeLoops.append(edgeLoop(vloop, me, closed)) - - - # VERT LOOP ORDERING CODE - # "Build a worm" list - grow from Both ends - edgeOrderedList = [edgeLoops.pop()] - - # Find the closest. - bestSoFar = BIG_NUM - bestIdxSoFar = None - for edLoopIdx, edLoop in enumerate(edgeLoops): - l =(edgeOrderedList[-1].centre - edLoop.centre).length - if l < bestSoFar: - bestIdxSoFar = edLoopIdx - bestSoFar = l - - edgeOrderedList.append( edgeLoops.pop(bestIdxSoFar) ) - - # Now we have the 2 closest, append to either end- - # Find the closest. - while edgeLoops: - bestSoFar = BIG_NUM - bestIdxSoFar = None - first_or_last = 0 # Zero is first - for edLoopIdx, edLoop in enumerate(edgeLoops): - l1 =(edgeOrderedList[-1].centre - edLoop.centre).length - - if l1 < bestSoFar: - bestIdxSoFar = edLoopIdx - bestSoFar = l1 - first_or_last = 1 # last - - l2 =(edgeOrderedList[0].centre - edLoop.centre).length - if l2 < bestSoFar: - bestIdxSoFar = edLoopIdx - bestSoFar = l2 - first_or_last = 0 # last - - if first_or_last: # add closest Last - edgeOrderedList.append( edgeLoops.pop(bestIdxSoFar) ) - else: # Add closest First - edgeOrderedList.insert(0, edgeLoops.pop(bestIdxSoFar) ) # First - - faces = [] - - for i in range(len(edgeOrderedList)-1): - faces.extend( skin2EdgeLoops(edgeOrderedList[i], edgeOrderedList[i+1], me, ob, 0) ) - if choice == 1 and len(edgeOrderedList) > 2: # Loop - faces.extend( skin2EdgeLoops(edgeOrderedList[0], edgeOrderedList[-1], me, ob, 0) ) - - # REMOVE SELECTED FACES. - MESH_MODE= ob.mode - if MESH_MODE == 'EDGE' or MESH_MODE == 'VERTEX': pass - elif MESH_MODE == 'FACE': - try: me.faces.delete(1, [ f for f in me.faces if f.sel ]) - except: pass - - if 1: # 2.5 - mesh_faces_extend(me, faces, ob.active_material_index) - me.update(calc_edges=True) - else: - me.faces.extend(faces, smooth = True) - - print('\nSkin done in %.4f sec.' % (time.time()-time1)) - - if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + CULL_METHOD = 1 # XXX FIXME + + + + + if CULL_METHOD ==1: # RESET CULL_METHOD + CULL_METHOD = 0 # shortest + else: + CULL_METHOD = 1 # even + + + time1 = time.time() + # Convert to special edge data. + edgeLoops = [] + for vloop, closed in vertLoops: + edgeLoops.append(edgeLoop(vloop, me, closed)) + + + # VERT LOOP ORDERING CODE + # "Build a worm" list - grow from Both ends + edgeOrderedList = [edgeLoops.pop()] + + # Find the closest. + bestSoFar = BIG_NUM + bestIdxSoFar = None + for edLoopIdx, edLoop in enumerate(edgeLoops): + l =(edgeOrderedList[-1].centre - edLoop.centre).length + if l < bestSoFar: + bestIdxSoFar = edLoopIdx + bestSoFar = l + + edgeOrderedList.append( edgeLoops.pop(bestIdxSoFar) ) + + # Now we have the 2 closest, append to either end- + # Find the closest. + while edgeLoops: + bestSoFar = BIG_NUM + bestIdxSoFar = None + first_or_last = 0 # Zero is first + for edLoopIdx, edLoop in enumerate(edgeLoops): + l1 =(edgeOrderedList[-1].centre - edLoop.centre).length + + if l1 < bestSoFar: + bestIdxSoFar = edLoopIdx + bestSoFar = l1 + first_or_last = 1 # last + + l2 =(edgeOrderedList[0].centre - edLoop.centre).length + if l2 < bestSoFar: + bestIdxSoFar = edLoopIdx + bestSoFar = l2 + first_or_last = 0 # last + + if first_or_last: # add closest Last + edgeOrderedList.append( edgeLoops.pop(bestIdxSoFar) ) + else: # Add closest First + edgeOrderedList.insert(0, edgeLoops.pop(bestIdxSoFar) ) # First + + faces = [] + + for i in range(len(edgeOrderedList)-1): + faces.extend( skin2EdgeLoops(edgeOrderedList[i], edgeOrderedList[i+1], me, ob, 0) ) + if choice == 1 and len(edgeOrderedList) > 2: # Loop + faces.extend( skin2EdgeLoops(edgeOrderedList[0], edgeOrderedList[-1], me, ob, 0) ) + + # REMOVE SELECTED FACES. + MESH_MODE= ob.mode + if MESH_MODE == 'EDGE' or MESH_MODE == 'VERTEX': pass + elif MESH_MODE == 'FACE': + try: me.faces.delete(1, [ f for f in me.faces if f.sel ]) + except: pass + + if 1: # 2.5 + mesh_faces_extend(me, faces, ob.active_material_index) + me.update(calc_edges=True) + else: + me.faces.extend(faces, smooth = True) + + print('\nSkin done in %.4f sec.' % (time.time()-time1)) + + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) class MESH_OT_skin(bpy.types.Operator): - '''Bridge face loops.''' - - bl_idname = "mesh.skin" - bl_label = "Add Torus" - bl_register = True - bl_undo = True - - ''' - loft_method = EnumProperty(attr="loft_method", items=[(), ()], description="", default= True) - - ''' - - def execute(self, context): - main(context) - return ('FINISHED',) + '''Bridge face loops.''' + + bl_idname = "mesh.skin" + bl_label = "Add Torus" + bl_register = True + bl_undo = True + + ''' + loft_method = EnumProperty(attr="loft_method", items=[(), ()], description="", default= True) + + ''' + + def execute(self, context): + main(context) + return ('FINISHED',) # Register the operator @@ -650,7 +650,7 @@ bpy.ops.add(MESH_OT_skin) # Add to a menu import dynamic_menu -menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_edit_mesh_faces, (lambda self, context: self.layout.itemO("mesh.skin", text="Bridge Faces")) ) +menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_edit_mesh_faces, (lambda self, context: self.layout.operator("mesh.skin", text="Bridge Faces")) ) if __name__ == "__main__": - bpy.ops.mesh.skin() + bpy.ops.mesh.skin() diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py new file mode 100644 index 00000000000..8823045e07d --- /dev/null +++ b/release/scripts/op/object.py @@ -0,0 +1,99 @@ +# ##### 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. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from bpy.props import * + + +class SelectPattern(bpy.types.Operator): + '''Select object matching a naming pattern.''' + bl_idname = "object.select_pattern" + bl_label = "Select Pattern" + bl_register = True + bl_undo = True + + pattern = StringProperty(name="Pattern", description="Name filter using '*' and '?' wildcard chars", maxlen=32, default="*") + case_sensitive = BoolProperty(name="Case Sensitive", description="Do a case sensitive compare", default=False) + extend = BoolProperty(name="Extend", description="Extend the existing selection", default=True) + + def execute(self, context): + + import fnmatch + + if self.properties.case_sensitive: + pattern_match = fnmatch.fnmatchcase + else: + pattern_match = lambda a, b: fnmatch.fnmatchcase(a.upper(), b.upper()) + + for ob in context.visible_objects: + if pattern_match(ob.name, self.properties.pattern): + ob.selected = True + elif not self.properties.extend: + ob.selected = False + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.invoke_props_popup(self, event) + return ('RUNNING_MODAL',) + + def draw(self, context): + print("WoW") + layout = self.layout + props = self.properties + + layout.prop(props, "pattern") + row = layout.row() + row.prop(props, "case_sensitive") + row.prop(props, "extend") + + + +class SubsurfSet(bpy.types.Operator): + '''Sets a Subdivision Surface Level (1-5)''' + + bl_idname = "object.subsurf_set" + bl_label = "Subsurf Set" + bl_register = True + bl_undo = True + + level = IntProperty(name="Level", + default=1, min=0, max=6) + + def poll(self, context): + ob = context.active_object + return (ob and ob.type == 'MESH') + + def execute(self, context): + level = self.properties.level + ob = context.active_object + for mod in ob.modifiers: + if mod.type == 'SUBSURF': + if mod.levels != level: + mod.levels = level + return ('FINISHED',) + + # adda new modifier + mod = ob.modifiers.new("Subsurf", 'SUBSURF') + mod.levels = level + return ('FINISHED',) + + +bpy.ops.add(SelectPattern) +bpy.ops.add(SubsurfSet) diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py index 64c709b08ae..84a60765fa4 100644 --- a/release/scripts/op/presets.py +++ b/release/scripts/op/presets.py @@ -4,12 +4,12 @@ # 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. @@ -19,7 +19,43 @@ import bpy import os -from wm import AddPresetBase +class AddPresetBase(bpy.types.Operator): + '''Base preset class, only for subclassing + subclasses must define + - preset_values + - preset_subdir ''' + bl_idname = "render.preset_add" + bl_label = "Add Render Preset" + + name = bpy.props.StringProperty(name="Name", description="Name of the preset, used to make the path name", maxlen= 64, default= "") + + def _as_filename(self, name): # could reuse for other presets + for char in " !@#$%^&*(){}:\";'[]<>,./?": + name = name.replace('.', '_') + return name.lower() + + def execute(self, context): + + if not self.properties.name: + return ('FINISHED',) + + filename = self._as_filename(self.properties.name) + ".py" + + target_path = bpy.utils.preset_paths(self.preset_subdir)[0] # we need some way to tell the user and system preset path + + file_preset = open(os.path.join(target_path, filename), 'w') + + for rna_path in self.preset_values: + file_preset.write("%s = %s\n" % (rna_path, eval(rna_path))) + + file_preset.close() + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.invoke_props_popup(self, event) + return ('RUNNING_MODAL',) class AddPresetRender(AddPresetBase): @@ -38,7 +74,7 @@ class AddPresetRender(AddPresetBase): "bpy.context.scene.render_data.resolution_percentage", ] - preset_path = os.path.join("presets", "render") + preset_subdir = "render" class AddPresetSSS(AddPresetBase): @@ -63,14 +99,14 @@ class AddPresetSSS(AddPresetBase): "bpy.context.material.subsurface_scattering.texture_factor", ] - preset_path = os.path.join("presets", "sss") - + preset_subdir = "sss" + class AddPresetCloth(AddPresetBase): '''Add a Cloth Preset.''' bl_idname = "cloth.preset_add" bl_label = "Add Cloth Preset" name = AddPresetBase.name - + preset_values = [ "bpy.context.cloth.settings.quality", "bpy.context.cloth.settings.mass", @@ -79,11 +115,10 @@ class AddPresetCloth(AddPresetBase): "bpy.context.cloth.settings.spring_damping", "bpy.context.cloth.settings.air_damping", ] - - preset_path = os.path.join("presets", "cloth") + + preset_subdir = "cloth" bpy.ops.add(AddPresetRender) bpy.ops.add(AddPresetSSS) bpy.ops.add(AddPresetCloth) - diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py index 23357bd1572..2da7174ed99 100644 --- a/release/scripts/op/uvcalc_smart_project.py +++ b/release/scripts/op/uvcalc_smart_project.py @@ -1,24 +1,24 @@ -# -------------------------------------------------------------------------- -# Smart Projection UV Projection Unwrapper v1.2 by Campbell Barton (AKA Ideasman) -# -------------------------------------------------------------------------- -# ***** 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. -# -# ***** END GPL LICENCE BLOCK ***** -# -------------------------------------------------------------------------- +# -------------------------------------------------------------------------- +# Smart Projection UV Projection Unwrapper v1.2 by Campbell Barton (AKA Ideasman) +# -------------------------------------------------------------------------- +# ***** 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. +# +# ***** END GPL LICENCE BLOCK ***** +# -------------------------------------------------------------------------- #from Blender import Object, Draw, Window, sys, Mesh, Geometry @@ -40,96 +40,96 @@ USER_FILL_HOLES_QUALITY = None dict_matrix = {} def pointInTri2D(v, v1, v2, v3): - global dict_matrix - - key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y - - # Commented because its slower to do teh bounds check, we should realy cache the bounds info for each face. - ''' - # BOUNDS CHECK - xmin= 1000000 - ymin= 1000000 - - xmax= -1000000 - ymax= -1000000 - - for i in (0,2,4): - x= key[i] - y= key[i+1] - - if xmax<x: xmax= x - if ymax<y: ymax= y - if xmin>x: xmin= x - if ymin>y: ymin= y - - x= v.x - y= v.y - - if x<xmin or x>xmax or y < ymin or y > ymax: - return False - # Done with bounds check - ''' - try: - mtx = dict_matrix[key] - if not mtx: - return False - except: - side1 = v2 - v1 - side2 = v3 - v1 - - nor = side1.cross(side2) - - l1 = [side1[0], side1[1], side1[2]] - l2 = [side2[0], side2[1], side2[2]] - l3 = [nor[0], nor[1], nor[2]] - - mtx = Matrix(l1, l2, l3) - - # Zero area 2d tri, even tho we throw away zerop area faces - # the projection UV can result in a zero area UV. - if not mtx.determinant(): - dict_matrix[key] = None - return False - - mtx.invert() - - dict_matrix[key] = mtx - - uvw = (v - v1) * mtx - return 0 <= uvw[0] and 0 <= uvw[1] and uvw[0] + uvw[1] <= 1 - - + global dict_matrix + + key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y + + # Commented because its slower to do teh bounds check, we should realy cache the bounds info for each face. + ''' + # BOUNDS CHECK + xmin= 1000000 + ymin= 1000000 + + xmax= -1000000 + ymax= -1000000 + + for i in (0,2,4): + x= key[i] + y= key[i+1] + + if xmax<x: xmax= x + if ymax<y: ymax= y + if xmin>x: xmin= x + if ymin>y: ymin= y + + x= v.x + y= v.y + + if x<xmin or x>xmax or y < ymin or y > ymax: + return False + # Done with bounds check + ''' + try: + mtx = dict_matrix[key] + if not mtx: + return False + except: + side1 = v2 - v1 + side2 = v3 - v1 + + nor = side1.cross(side2) + + l1 = [side1[0], side1[1], side1[2]] + l2 = [side2[0], side2[1], side2[2]] + l3 = [nor[0], nor[1], nor[2]] + + mtx = Matrix(l1, l2, l3) + + # Zero area 2d tri, even tho we throw away zerop area faces + # the projection UV can result in a zero area UV. + if not mtx.determinant(): + dict_matrix[key] = None + return False + + mtx.invert() + + dict_matrix[key] = mtx + + uvw = (v - v1) * mtx + return 0 <= uvw[0] and 0 <= uvw[1] and uvw[0] + uvw[1] <= 1 + + def boundsIsland(faces): - minx = maxx = faces[0].uv[0][0] # Set initial bounds. - miny = maxy = faces[0].uv[0][1] - # print len(faces), minx, maxx, miny , maxy - for f in faces: - for uv in f.uv: - x= uv.x - y= uv.y - if x<minx: minx= x - if y<miny: miny= y - if x>maxx: maxx= x - if y>maxy: maxy= y - - return minx, miny, maxx, maxy + minx = maxx = faces[0].uv[0][0] # Set initial bounds. + miny = maxy = faces[0].uv[0][1] + # print len(faces), minx, maxx, miny , maxy + for f in faces: + for uv in f.uv: + x= uv.x + y= uv.y + if x<minx: minx= x + if y<miny: miny= y + if x>maxx: maxx= x + if y>maxy: maxy= y + + return minx, miny, maxx, maxy """ def boundsEdgeLoop(edges): - minx = maxx = edges[0][0] # Set initial bounds. - miny = maxy = edges[0][1] - # print len(faces), minx, maxx, miny , maxy - for ed in edges: - for pt in ed: - print 'ass' - x= pt[0] - y= pt[1] - if x<minx: x= minx - if y<miny: y= miny - if x>maxx: x= maxx - if y>maxy: y= maxy - - return minx, miny, maxx, maxy + minx = maxx = edges[0][0] # Set initial bounds. + miny = maxy = edges[0][1] + # print len(faces), minx, maxx, miny , maxy + for ed in edges: + for pt in ed: + print 'ass' + x= pt[0] + y= pt[1] + if x<minx: x= minx + if y<miny: y= miny + if x>maxx: x= maxx + if y>maxy: y= maxy + + return minx, miny, maxx, maxy """ # Turns the islands into a list of unpordered edges (Non internal) @@ -137,44 +137,44 @@ def boundsEdgeLoop(edges): # only returns outline edges for intersection tests. and unique points. def island2Edge(island): - - # Vert index edges - edges = {} - - unique_points= {} - - for f in island: - f_uvkey= map(tuple, f.uv) - - - for vIdx, edkey in enumerate(f.edge_keys): - unique_points[f_uvkey[vIdx]] = f.uv[vIdx] - - if f.v[vIdx].index > f.v[vIdx-1].index: - i1= vIdx-1; i2= vIdx - else: - i1= vIdx; i2= vIdx-1 - - try: edges[ f_uvkey[i1], f_uvkey[i2] ] *= 0 # sets eny edge with more then 1 user to 0 are not returned. - except: edges[ f_uvkey[i1], f_uvkey[i2] ] = (f.uv[i1] - f.uv[i2]).length, - - # If 2 are the same then they will be together, but full [a,b] order is not correct. - - # Sort by length - - - length_sorted_edges = [(Vector(key[0]), Vector(key[1]), value) for key, value in edges.items() if value != 0] - - try: length_sorted_edges.sort(key = lambda A: -A[2]) # largest first - except: length_sorted_edges.sort(lambda A, B: cmp(B[2], A[2])) - - # Its okay to leave the length in there. - #for e in length_sorted_edges: - # e.pop(2) - - # return edges and unique points - return length_sorted_edges, [v.__copy__().resize3D() for v in unique_points.values()] - + + # Vert index edges + edges = {} + + unique_points= {} + + for f in island: + f_uvkey= map(tuple, f.uv) + + + for vIdx, edkey in enumerate(f.edge_keys): + unique_points[f_uvkey[vIdx]] = f.uv[vIdx] + + if f.v[vIdx].index > f.v[vIdx-1].index: + i1= vIdx-1; i2= vIdx + else: + i1= vIdx; i2= vIdx-1 + + try: edges[ f_uvkey[i1], f_uvkey[i2] ] *= 0 # sets eny edge with more then 1 user to 0 are not returned. + except: edges[ f_uvkey[i1], f_uvkey[i2] ] = (f.uv[i1] - f.uv[i2]).length, + + # If 2 are the same then they will be together, but full [a,b] order is not correct. + + # Sort by length + + + length_sorted_edges = [(Vector(key[0]), Vector(key[1]), value) for key, value in edges.items() if value != 0] + + try: length_sorted_edges.sort(key = lambda A: -A[2]) # largest first + except: length_sorted_edges.sort(lambda A, B: cmp(B[2], A[2])) + + # Its okay to leave the length in there. + #for e in length_sorted_edges: + # e.pop(2) + + # return edges and unique points + return length_sorted_edges, [v.__copy__().resize3D() for v in unique_points.values()] + # ========================= NOT WORKING???? # Find if a points inside an edge loop, un-orderd. # pt is and x/y @@ -182,97 +182,97 @@ def island2Edge(island): # #offsets are the edge x and y offset. """ def pointInEdges(pt, edges): - # - x1 = pt[0] - y1 = pt[1] - - # Point to the left of this line. - x2 = -100000 - y2 = -10000 - intersectCount = 0 - for ed in edges: - xi, yi = lineIntersection2D(x1,y1, x2,y2, ed[0][0], ed[0][1], ed[1][0], ed[1][1]) - if xi != None: # Is there an intersection. - intersectCount+=1 - - return intersectCount % 2 + # + x1 = pt[0] + y1 = pt[1] + + # Point to the left of this line. + x2 = -100000 + y2 = -10000 + intersectCount = 0 + for ed in edges: + xi, yi = lineIntersection2D(x1,y1, x2,y2, ed[0][0], ed[0][1], ed[1][0], ed[1][1]) + if xi != None: # Is there an intersection. + intersectCount+=1 + + return intersectCount % 2 """ def pointInIsland(pt, island): - vec1 = Vector(); vec2 = Vector(); vec3 = Vector() - for f in island: - vec1.x, vec1.y = f.uv[0] - vec2.x, vec2.y = f.uv[1] - vec3.x, vec3.y = f.uv[2] - - if pointInTri2D(pt, vec1, vec2, vec3): - return True - - if len(f.v) == 4: - vec1.x, vec1.y = f.uv[0] - vec2.x, vec2.y = f.uv[2] - vec3.x, vec3.y = f.uv[3] - if pointInTri2D(pt, vec1, vec2, vec3): - return True - return False + vec1 = Vector(); vec2 = Vector(); vec3 = Vector() + for f in island: + vec1.x, vec1.y = f.uv[0] + vec2.x, vec2.y = f.uv[1] + vec3.x, vec3.y = f.uv[2] + + if pointInTri2D(pt, vec1, vec2, vec3): + return True + + if len(f.v) == 4: + vec1.x, vec1.y = f.uv[0] + vec2.x, vec2.y = f.uv[2] + vec3.x, vec3.y = f.uv[3] + if pointInTri2D(pt, vec1, vec2, vec3): + return True + return False # box is (left,bottom, right, top) def islandIntersectUvIsland(source, target, SourceOffset): - # Is 1 point in the box, inside the vertLoops - edgeLoopsSource = source[6] # Pretend this is offset - edgeLoopsTarget = target[6] - - # Edge intersect test - for ed in edgeLoopsSource: - for seg in edgeLoopsTarget: - i = Geometry.LineIntersect2D(\ - seg[0], seg[1], SourceOffset+ed[0], SourceOffset+ed[1]) - if i: - return 1 # LINE INTERSECTION - - # 1 test for source being totally inside target - SourceOffset.resize3D() - for pv in source[7]: - if pointInIsland(pv+SourceOffset, target[0]): - return 2 # SOURCE INSIDE TARGET - - # 2 test for a part of the target being totaly inside the source. - for pv in target[7]: - if pointInIsland(pv-SourceOffset, source[0]): - return 3 # PART OF TARGET INSIDE SOURCE. - - return 0 # NO INTERSECTION + # Is 1 point in the box, inside the vertLoops + edgeLoopsSource = source[6] # Pretend this is offset + edgeLoopsTarget = target[6] + + # Edge intersect test + for ed in edgeLoopsSource: + for seg in edgeLoopsTarget: + i = Geometry.LineIntersect2D(\ + seg[0], seg[1], SourceOffset+ed[0], SourceOffset+ed[1]) + if i: + return 1 # LINE INTERSECTION + + # 1 test for source being totally inside target + SourceOffset.resize3D() + for pv in source[7]: + if pointInIsland(pv+SourceOffset, target[0]): + return 2 # SOURCE INSIDE TARGET + + # 2 test for a part of the target being totaly inside the source. + for pv in target[7]: + if pointInIsland(pv-SourceOffset, source[0]): + return 3 # PART OF TARGET INSIDE SOURCE. + + return 0 # NO INTERSECTION # Returns the X/y Bounds of a list of vectors. def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1): - - # UV's will never extend this far. - minx = miny = BIG_NUM - maxx = maxy = -BIG_NUM - - for i, v in enumerate(vecs): - - # Do this allong the way - if mat != -1: - v = vecs[i] = v*mat - x= v.x - y= v.y - if x<minx: minx= x - if y<miny: miny= y - if x>maxx: maxx= x - if y>maxy: maxy= y - - # Spesific to this algo, bail out if we get bigger then the current area - if bestAreaSoFar != -1 and (maxx-minx) * (maxy-miny) > bestAreaSoFar: - return (BIG_NUM, None), None - w = maxx-minx - h = maxy-miny - return (w*h, w,h), vecs # Area, vecs - + + # UV's will never extend this far. + minx = miny = BIG_NUM + maxx = maxy = -BIG_NUM + + for i, v in enumerate(vecs): + + # Do this allong the way + if mat != -1: + v = vecs[i] = v*mat + x= v.x + y= v.y + if x<minx: minx= x + if y<miny: miny= y + if x>maxx: maxx= x + if y>maxy: maxy= y + + # Spesific to this algo, bail out if we get bigger then the current area + if bestAreaSoFar != -1 and (maxx-minx) * (maxy-miny) > bestAreaSoFar: + return (BIG_NUM, None), None + w = maxx-minx + h = maxy-miny + return (w*h, w,h), vecs # Area, vecs + # Takes a list of faces that make up a UV island and rotate # until they optimally fit inside a square. ROTMAT_2D_POS_90D = RotationMatrix( radians(90.0), 2) @@ -281,866 +281,866 @@ ROTMAT_2D_POS_45D = RotationMatrix( radians(45.0), 2) RotMatStepRotation = [] rot_angle = 22.5 #45.0/2 while rot_angle > 0.1: - RotMatStepRotation.append([\ - RotationMatrix( radians(rot_angle), 2),\ - RotationMatrix( radians(-rot_angle), 2)]) - - rot_angle = rot_angle/2.0 - + RotMatStepRotation.append([\ + RotationMatrix( radians(rot_angle), 2),\ + RotationMatrix( radians(-rot_angle), 2)]) + + rot_angle = rot_angle/2.0 + def optiRotateUvIsland(faces): - global currentArea - - # Bestfit Rotation - def best2dRotation(uvVecs, MAT1, MAT2): - global currentArea - - newAreaPos, newfaceProjectionGroupListPos =\ - testNewVecLs2DRotIsBetter(uvVecs[:], MAT1, currentArea[0]) - - - # Why do I use newpos here? May as well give the best area to date for an early bailout - # some slight speed increase in this. - # If the new rotation is smaller then the existing, we can - # avoid copying a list and overwrite the old, crappy one. - - if newAreaPos[0] < currentArea[0]: - newAreaNeg, newfaceProjectionGroupListNeg =\ - testNewVecLs2DRotIsBetter(uvVecs, MAT2, newAreaPos[0]) # Reuse the old bigger list. - else: - newAreaNeg, newfaceProjectionGroupListNeg =\ - testNewVecLs2DRotIsBetter(uvVecs[:], MAT2, currentArea[0]) # Cant reuse, make a copy. - - - # Now from the 3 options we need to discover which to use - # we have cerrentArea/newAreaPos/newAreaNeg - bestArea = min(currentArea[0], newAreaPos[0], newAreaNeg[0]) - - if currentArea[0] == bestArea: - return uvVecs - elif newAreaPos[0] == bestArea: - uvVecs = newfaceProjectionGroupListPos - currentArea = newAreaPos - elif newAreaNeg[0] == bestArea: - uvVecs = newfaceProjectionGroupListNeg - currentArea = newAreaNeg - - return uvVecs - - - # Serialized UV coords to Vectors - uvVecs = [uv for f in faces for uv in f.uv] - - # Theres a small enough number of these to hard code it - # rather then a loop. - - # Will not modify anything - currentArea, dummy =\ - testNewVecLs2DRotIsBetter(uvVecs) - - - # Try a 45d rotation - newAreaPos, newfaceProjectionGroupListPos = testNewVecLs2DRotIsBetter(uvVecs[:], ROTMAT_2D_POS_45D, currentArea[0]) - - if newAreaPos[0] < currentArea[0]: - uvVecs = newfaceProjectionGroupListPos - currentArea = newAreaPos - # 45d done - - # Testcase different rotations and find the onfe that best fits in a square - for ROTMAT in RotMatStepRotation: - uvVecs = best2dRotation(uvVecs, ROTMAT[0], ROTMAT[1]) - - # Only if you want it, make faces verticle! - if currentArea[1] > currentArea[2]: - # Rotate 90d - # Work directly on the list, no need to return a value. - testNewVecLs2DRotIsBetter(uvVecs, ROTMAT_2D_POS_90D) - - - # Now write the vectors back to the face UV's - i = 0 # count the serialized uv/vectors - for f in faces: - #f.uv = [uv for uv in uvVecs[i:len(f)+i] ] - for j, k in enumerate(range(i, len(f.v)+i)): - f.uv[j][:] = uvVecs[k] - i += len(f.v) + global currentArea + + # Bestfit Rotation + def best2dRotation(uvVecs, MAT1, MAT2): + global currentArea + + newAreaPos, newfaceProjectionGroupListPos =\ + testNewVecLs2DRotIsBetter(uvVecs[:], MAT1, currentArea[0]) + + + # Why do I use newpos here? May as well give the best area to date for an early bailout + # some slight speed increase in this. + # If the new rotation is smaller then the existing, we can + # avoid copying a list and overwrite the old, crappy one. + + if newAreaPos[0] < currentArea[0]: + newAreaNeg, newfaceProjectionGroupListNeg =\ + testNewVecLs2DRotIsBetter(uvVecs, MAT2, newAreaPos[0]) # Reuse the old bigger list. + else: + newAreaNeg, newfaceProjectionGroupListNeg =\ + testNewVecLs2DRotIsBetter(uvVecs[:], MAT2, currentArea[0]) # Cant reuse, make a copy. + + + # Now from the 3 options we need to discover which to use + # we have cerrentArea/newAreaPos/newAreaNeg + bestArea = min(currentArea[0], newAreaPos[0], newAreaNeg[0]) + + if currentArea[0] == bestArea: + return uvVecs + elif newAreaPos[0] == bestArea: + uvVecs = newfaceProjectionGroupListPos + currentArea = newAreaPos + elif newAreaNeg[0] == bestArea: + uvVecs = newfaceProjectionGroupListNeg + currentArea = newAreaNeg + + return uvVecs + + + # Serialized UV coords to Vectors + uvVecs = [uv for f in faces for uv in f.uv] + + # Theres a small enough number of these to hard code it + # rather then a loop. + + # Will not modify anything + currentArea, dummy =\ + testNewVecLs2DRotIsBetter(uvVecs) + + + # Try a 45d rotation + newAreaPos, newfaceProjectionGroupListPos = testNewVecLs2DRotIsBetter(uvVecs[:], ROTMAT_2D_POS_45D, currentArea[0]) + + if newAreaPos[0] < currentArea[0]: + uvVecs = newfaceProjectionGroupListPos + currentArea = newAreaPos + # 45d done + + # Testcase different rotations and find the onfe that best fits in a square + for ROTMAT in RotMatStepRotation: + uvVecs = best2dRotation(uvVecs, ROTMAT[0], ROTMAT[1]) + + # Only if you want it, make faces verticle! + if currentArea[1] > currentArea[2]: + # Rotate 90d + # Work directly on the list, no need to return a value. + testNewVecLs2DRotIsBetter(uvVecs, ROTMAT_2D_POS_90D) + + + # Now write the vectors back to the face UV's + i = 0 # count the serialized uv/vectors + for f in faces: + #f.uv = [uv for uv in uvVecs[i:len(f)+i] ] + for j, k in enumerate(range(i, len(f.v)+i)): + f.uv[j][:] = uvVecs[k] + i += len(f.v) # Takes an island list and tries to find concave, hollow areas to pack smaller islands into. def mergeUvIslands(islandList): - global USER_FILL_HOLES - global USER_FILL_HOLES_QUALITY - - - # Pack islands to bottom LHS - # Sync with island - - #islandTotFaceArea = [] # A list of floats, each island area - #islandArea = [] # a list of tuples ( area, w,h) - - - decoratedIslandList = [] - - islandIdx = len(islandList) - while islandIdx: - islandIdx-=1 - minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx]) - w, h = maxx-minx, maxy-miny - - totFaceArea = 0 - offset= Vector(minx, miny) - for f in islandList[islandIdx]: - for uv in f.uv: - uv -= offset - - totFaceArea += f.area - - islandBoundsArea = w*h - efficiency = abs(islandBoundsArea - totFaceArea) - - # UV Edge list used for intersections as well as unique points. - edges, uniqueEdgePoints = island2Edge(islandList[islandIdx]) - - decoratedIslandList.append([islandList[islandIdx], totFaceArea, efficiency, islandBoundsArea, w,h, edges, uniqueEdgePoints]) - - - # Sort by island bounding box area, smallest face area first. - # no.. chance that to most simple edge loop first. - decoratedIslandListAreaSort =decoratedIslandList[:] - - decoratedIslandListAreaSort.sort(key = lambda A: A[3]) - - # sort by efficiency, Least Efficient first. - decoratedIslandListEfficSort = decoratedIslandList[:] - # decoratedIslandListEfficSort.sort(lambda A, B: cmp(B[2], A[2])) - - decoratedIslandListEfficSort.sort(key = lambda A: -A[2]) - - # ================================================== THESE CAN BE TWEAKED. - # This is a quality value for the number of tests. - # from 1 to 4, generic quality value is from 1 to 100 - USER_STEP_QUALITY = ((USER_FILL_HOLES_QUALITY - 1) / 25.0) + 1 - - # If 100 will test as long as there is enough free space. - # this is rarely enough, and testing takes a while, so lower quality speeds this up. - - # 1 means they have the same quality - USER_FREE_SPACE_TO_TEST_QUALITY = 1 + (((100 - USER_FILL_HOLES_QUALITY)/100.0) *5) - - #print 'USER_STEP_QUALITY', USER_STEP_QUALITY - #print 'USER_FREE_SPACE_TO_TEST_QUALITY', USER_FREE_SPACE_TO_TEST_QUALITY - - removedCount = 0 - - areaIslandIdx = 0 - ctrl = Window.Qual.CTRL - BREAK= False - while areaIslandIdx < len(decoratedIslandListAreaSort) and not BREAK: - sourceIsland = decoratedIslandListAreaSort[areaIslandIdx] - # Alredy packed? - if not sourceIsland[0]: - areaIslandIdx+=1 - else: - efficIslandIdx = 0 - while efficIslandIdx < len(decoratedIslandListEfficSort) and not BREAK: - - if Window.GetKeyQualifiers() & ctrl: - BREAK= True - break - - # Now we have 2 islands, is the efficience of the islands lowers theres an - # increasing likely hood that we can fit merge into the bigger UV island. - # this ensures a tight fit. - - # Just use figures we have about user/unused area to see if they might fit. - - targetIsland = decoratedIslandListEfficSort[efficIslandIdx] - - - if sourceIsland[0] == targetIsland[0] or\ - not targetIsland[0] or\ - not sourceIsland[0]: - pass - else: - - # ([island, totFaceArea, efficiency, islandArea, w,h]) - # Waisted space on target is greater then UV bounding island area. - - - # if targetIsland[3] > (sourceIsland[2]) and\ # - # print USER_FREE_SPACE_TO_TEST_QUALITY, 'ass' - if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\ - targetIsland[4] > sourceIsland[4] and\ - targetIsland[5] > sourceIsland[5]: - - # DEBUG # print '%.10f %.10f' % (targetIsland[3], sourceIsland[1]) - - # These enough spare space lets move the box until it fits - - # How many times does the source fit into the target x/y - blockTestXUnit = targetIsland[4]/sourceIsland[4] - blockTestYUnit = targetIsland[5]/sourceIsland[5] - - boxLeft = 0 - - - # Distllllance we can move between whilst staying inside the targets bounds. - testWidth = targetIsland[4] - sourceIsland[4] - testHeight = targetIsland[5] - sourceIsland[5] - - # Increment we move each test. x/y - xIncrement = (testWidth / (blockTestXUnit * ((USER_STEP_QUALITY/50)+0.1))) - yIncrement = (testHeight / (blockTestYUnit * ((USER_STEP_QUALITY/50)+0.1))) - - # Make sure were not moving less then a 3rg of our width/height - if xIncrement<sourceIsland[4]/3: - xIncrement= sourceIsland[4] - if yIncrement<sourceIsland[5]/3: - yIncrement= sourceIsland[5] - - - boxLeft = 0 # Start 1 back so we can jump into the loop. - boxBottom= 0 #-yIncrement - - ##testcount= 0 - - while boxBottom <= testHeight: - # Should we use this? - not needed for now. - #if Window.GetKeyQualifiers() & ctrl: - # BREAK= True - # break - - ##testcount+=1 - #print 'Testing intersect' - Intersect = islandIntersectUvIsland(sourceIsland, targetIsland, Vector(boxLeft, boxBottom)) - #print 'Done', Intersect - if Intersect == 1: # Line intersect, dont bother with this any more - pass - - if Intersect == 2: # Source inside target - ''' - We have an intersection, if we are inside the target - then move us 1 whole width accross, - Its possible this is a bad idea since 2 skinny Angular faces - could join without 1 whole move, but its a lot more optimal to speed this up - since we have alredy tested for it. - - It gives about 10% speedup with minimal errors. - ''' - #print 'ass' - # Move the test allong its width + SMALL_NUM - #boxLeft += sourceIsland[4] + SMALL_NUM - boxLeft += sourceIsland[4] - elif Intersect == 0: # No intersection?? Place it. - # Progress - removedCount +=1 + global USER_FILL_HOLES + global USER_FILL_HOLES_QUALITY + + + # Pack islands to bottom LHS + # Sync with island + + #islandTotFaceArea = [] # A list of floats, each island area + #islandArea = [] # a list of tuples ( area, w,h) + + + decoratedIslandList = [] + + islandIdx = len(islandList) + while islandIdx: + islandIdx-=1 + minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx]) + w, h = maxx-minx, maxy-miny + + totFaceArea = 0 + offset= Vector(minx, miny) + for f in islandList[islandIdx]: + for uv in f.uv: + uv -= offset + + totFaceArea += f.area + + islandBoundsArea = w*h + efficiency = abs(islandBoundsArea - totFaceArea) + + # UV Edge list used for intersections as well as unique points. + edges, uniqueEdgePoints = island2Edge(islandList[islandIdx]) + + decoratedIslandList.append([islandList[islandIdx], totFaceArea, efficiency, islandBoundsArea, w,h, edges, uniqueEdgePoints]) + + + # Sort by island bounding box area, smallest face area first. + # no.. chance that to most simple edge loop first. + decoratedIslandListAreaSort =decoratedIslandList[:] + + decoratedIslandListAreaSort.sort(key = lambda A: A[3]) + + # sort by efficiency, Least Efficient first. + decoratedIslandListEfficSort = decoratedIslandList[:] + # decoratedIslandListEfficSort.sort(lambda A, B: cmp(B[2], A[2])) + + decoratedIslandListEfficSort.sort(key = lambda A: -A[2]) + + # ================================================== THESE CAN BE TWEAKED. + # This is a quality value for the number of tests. + # from 1 to 4, generic quality value is from 1 to 100 + USER_STEP_QUALITY = ((USER_FILL_HOLES_QUALITY - 1) / 25.0) + 1 + + # If 100 will test as long as there is enough free space. + # this is rarely enough, and testing takes a while, so lower quality speeds this up. + + # 1 means they have the same quality + USER_FREE_SPACE_TO_TEST_QUALITY = 1 + (((100 - USER_FILL_HOLES_QUALITY)/100.0) *5) + + #print 'USER_STEP_QUALITY', USER_STEP_QUALITY + #print 'USER_FREE_SPACE_TO_TEST_QUALITY', USER_FREE_SPACE_TO_TEST_QUALITY + + removedCount = 0 + + areaIslandIdx = 0 + ctrl = Window.Qual.CTRL + BREAK= False + while areaIslandIdx < len(decoratedIslandListAreaSort) and not BREAK: + sourceIsland = decoratedIslandListAreaSort[areaIslandIdx] + # Alredy packed? + if not sourceIsland[0]: + areaIslandIdx+=1 + else: + efficIslandIdx = 0 + while efficIslandIdx < len(decoratedIslandListEfficSort) and not BREAK: + + if Window.GetKeyQualifiers() & ctrl: + BREAK= True + break + + # Now we have 2 islands, is the efficience of the islands lowers theres an + # increasing likely hood that we can fit merge into the bigger UV island. + # this ensures a tight fit. + + # Just use figures we have about user/unused area to see if they might fit. + + targetIsland = decoratedIslandListEfficSort[efficIslandIdx] + + + if sourceIsland[0] == targetIsland[0] or\ + not targetIsland[0] or\ + not sourceIsland[0]: + pass + else: + + # ([island, totFaceArea, efficiency, islandArea, w,h]) + # Waisted space on target is greater then UV bounding island area. + + + # if targetIsland[3] > (sourceIsland[2]) and\ # + # print USER_FREE_SPACE_TO_TEST_QUALITY, 'ass' + if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\ + targetIsland[4] > sourceIsland[4] and\ + targetIsland[5] > sourceIsland[5]: + + # DEBUG # print '%.10f %.10f' % (targetIsland[3], sourceIsland[1]) + + # These enough spare space lets move the box until it fits + + # How many times does the source fit into the target x/y + blockTestXUnit = targetIsland[4]/sourceIsland[4] + blockTestYUnit = targetIsland[5]/sourceIsland[5] + + boxLeft = 0 + + + # Distllllance we can move between whilst staying inside the targets bounds. + testWidth = targetIsland[4] - sourceIsland[4] + testHeight = targetIsland[5] - sourceIsland[5] + + # Increment we move each test. x/y + xIncrement = (testWidth / (blockTestXUnit * ((USER_STEP_QUALITY/50)+0.1))) + yIncrement = (testHeight / (blockTestYUnit * ((USER_STEP_QUALITY/50)+0.1))) + + # Make sure were not moving less then a 3rg of our width/height + if xIncrement<sourceIsland[4]/3: + xIncrement= sourceIsland[4] + if yIncrement<sourceIsland[5]/3: + yIncrement= sourceIsland[5] + + + boxLeft = 0 # Start 1 back so we can jump into the loop. + boxBottom= 0 #-yIncrement + + ##testcount= 0 + + while boxBottom <= testHeight: + # Should we use this? - not needed for now. + #if Window.GetKeyQualifiers() & ctrl: + # BREAK= True + # break + + ##testcount+=1 + #print 'Testing intersect' + Intersect = islandIntersectUvIsland(sourceIsland, targetIsland, Vector(boxLeft, boxBottom)) + #print 'Done', Intersect + if Intersect == 1: # Line intersect, dont bother with this any more + pass + + if Intersect == 2: # Source inside target + ''' + We have an intersection, if we are inside the target + then move us 1 whole width accross, + Its possible this is a bad idea since 2 skinny Angular faces + could join without 1 whole move, but its a lot more optimal to speed this up + since we have alredy tested for it. + + It gives about 10% speedup with minimal errors. + ''' + #print 'ass' + # Move the test allong its width + SMALL_NUM + #boxLeft += sourceIsland[4] + SMALL_NUM + boxLeft += sourceIsland[4] + elif Intersect == 0: # No intersection?? Place it. + # Progress + removedCount +=1 #XXX Window.DrawProgressBar(0.0, 'Merged: %i islands, Ctrl to finish early.' % removedCount) - - # Move faces into new island and offset - targetIsland[0].extend(sourceIsland[0]) - offset= Vector(boxLeft, boxBottom) - - for f in sourceIsland[0]: - for uv in f.uv: - uv+= offset - - sourceIsland[0][:] = [] # Empty - - - # Move edge loop into new and offset. - # targetIsland[6].extend(sourceIsland[6]) - #while sourceIsland[6]: - targetIsland[6].extend( [ (\ - (e[0]+offset, e[1]+offset, e[2])\ - ) for e in sourceIsland[6] ] ) - - sourceIsland[6][:] = [] # Empty - - # Sort by edge length, reverse so biggest are first. - - try: targetIsland[6].sort(key = lambda A: A[2]) - except: targetIsland[6].sort(lambda B,A: cmp(A[2], B[2] )) - - - targetIsland[7].extend(sourceIsland[7]) - offset= Vector(boxLeft, boxBottom, 0) - for p in sourceIsland[7]: - p+= offset - - sourceIsland[7][:] = [] - - - # Decrement the efficiency - targetIsland[1]+=sourceIsland[1] # Increment totFaceArea - targetIsland[2]-=sourceIsland[1] # Decrement efficiency - # IF we ever used these again, should set to 0, eg - sourceIsland[2] = 0 # No area if anyone wants to know - - break - - - # INCREMENR NEXT LOCATION - if boxLeft > testWidth: - boxBottom += yIncrement - boxLeft = 0.0 - else: - boxLeft += xIncrement - ##print testcount - - efficIslandIdx+=1 - areaIslandIdx+=1 - - # Remove empty islands - i = len(islandList) - while i: - i-=1 - if not islandList[i]: - del islandList[i] # Can increment islands removed here. + + # Move faces into new island and offset + targetIsland[0].extend(sourceIsland[0]) + offset= Vector(boxLeft, boxBottom) + + for f in sourceIsland[0]: + for uv in f.uv: + uv+= offset + + sourceIsland[0][:] = [] # Empty + + + # Move edge loop into new and offset. + # targetIsland[6].extend(sourceIsland[6]) + #while sourceIsland[6]: + targetIsland[6].extend( [ (\ + (e[0]+offset, e[1]+offset, e[2])\ + ) for e in sourceIsland[6] ] ) + + sourceIsland[6][:] = [] # Empty + + # Sort by edge length, reverse so biggest are first. + + try: targetIsland[6].sort(key = lambda A: A[2]) + except: targetIsland[6].sort(lambda B,A: cmp(A[2], B[2] )) + + + targetIsland[7].extend(sourceIsland[7]) + offset= Vector(boxLeft, boxBottom, 0) + for p in sourceIsland[7]: + p+= offset + + sourceIsland[7][:] = [] + + + # Decrement the efficiency + targetIsland[1]+=sourceIsland[1] # Increment totFaceArea + targetIsland[2]-=sourceIsland[1] # Decrement efficiency + # IF we ever used these again, should set to 0, eg + sourceIsland[2] = 0 # No area if anyone wants to know + + break + + + # INCREMENR NEXT LOCATION + if boxLeft > testWidth: + boxBottom += yIncrement + boxLeft = 0.0 + else: + boxLeft += xIncrement + ##print testcount + + efficIslandIdx+=1 + areaIslandIdx+=1 + + # Remove empty islands + i = len(islandList) + while i: + i-=1 + if not islandList[i]: + del islandList[i] # Can increment islands removed here. # Takes groups of faces. assumes face groups are UV groups. def getUvIslands(faceGroups, me): - - # Get seams so we dont cross over seams - edge_seams = {} # shoudl be a set - for ed in me.edges: - if ed.seam: - edge_seams[ed.key] = None # dummy var- use sets! - # Done finding seams - - - islandList = [] - + + # Get seams so we dont cross over seams + edge_seams = {} # shoudl be a set + for ed in me.edges: + if ed.seam: + edge_seams[ed.key] = None # dummy var- use sets! + # Done finding seams + + + islandList = [] + #XXX Window.DrawProgressBar(0.0, 'Splitting %d projection groups into UV islands:' % len(faceGroups)) - #print '\tSplitting %d projection groups into UV islands:' % len(faceGroups), - # Find grouped faces - - faceGroupIdx = len(faceGroups) - - while faceGroupIdx: - faceGroupIdx-=1 - faces = faceGroups[faceGroupIdx] - - if not faces: - continue - - # Build edge dict - edge_users = {} - - for i, f in enumerate(faces): - for ed_key in f.edge_keys: - if ed_key in edge_seams: # DELIMIT SEAMS! ;) - edge_users[ed_key] = [] # so as not to raise an error - else: - try: edge_users[ed_key].append(i) - except: edge_users[ed_key] = [i] - - # Modes - # 0 - face not yet touched. - # 1 - added to island list, and need to search - # 2 - touched and searched - dont touch again. - face_modes = [0] * len(faces) # initialize zero - untested. - - face_modes[0] = 1 # start the search with face 1 - - newIsland = [] - - newIsland.append(faces[0]) - - - ok = True - while ok: - - ok = True - while ok: - ok= False - for i in range(len(faces)): - if face_modes[i] == 1: # search - for ed_key in faces[i].edge_keys: - for ii in edge_users[ed_key]: - if i != ii and face_modes[ii] == 0: - face_modes[ii] = ok = 1 # mark as searched - newIsland.append(faces[ii]) - - # mark as searched, dont look again. - face_modes[i] = 2 - - islandList.append(newIsland) - - ok = False - for i in range(len(faces)): - if face_modes[i] == 0: - newIsland = [] - newIsland.append(faces[i]) - - face_modes[i] = ok = 1 - break - # if not ok will stop looping - + #print '\tSplitting %d projection groups into UV islands:' % len(faceGroups), + # Find grouped faces + + faceGroupIdx = len(faceGroups) + + while faceGroupIdx: + faceGroupIdx-=1 + faces = faceGroups[faceGroupIdx] + + if not faces: + continue + + # Build edge dict + edge_users = {} + + for i, f in enumerate(faces): + for ed_key in f.edge_keys: + if ed_key in edge_seams: # DELIMIT SEAMS! ;) + edge_users[ed_key] = [] # so as not to raise an error + else: + try: edge_users[ed_key].append(i) + except: edge_users[ed_key] = [i] + + # Modes + # 0 - face not yet touched. + # 1 - added to island list, and need to search + # 2 - touched and searched - dont touch again. + face_modes = [0] * len(faces) # initialize zero - untested. + + face_modes[0] = 1 # start the search with face 1 + + newIsland = [] + + newIsland.append(faces[0]) + + + ok = True + while ok: + + ok = True + while ok: + ok= False + for i in range(len(faces)): + if face_modes[i] == 1: # search + for ed_key in faces[i].edge_keys: + for ii in edge_users[ed_key]: + if i != ii and face_modes[ii] == 0: + face_modes[ii] = ok = 1 # mark as searched + newIsland.append(faces[ii]) + + # mark as searched, dont look again. + face_modes[i] = 2 + + islandList.append(newIsland) + + ok = False + for i in range(len(faces)): + if face_modes[i] == 0: + newIsland = [] + newIsland.append(faces[i]) + + face_modes[i] = ok = 1 + break + # if not ok will stop looping + #XXX Window.DrawProgressBar(0.1, 'Optimizing Rotation for %i UV Islands' % len(islandList)) - - for island in islandList: - optiRotateUvIsland(island) - - return islandList - + + for island in islandList: + optiRotateUvIsland(island) + + return islandList + def packIslands(islandList): - if USER_FILL_HOLES: + if USER_FILL_HOLES: #XXX Window.DrawProgressBar(0.1, 'Merging Islands (Ctrl: skip merge)...') - mergeUvIslands(islandList) # Modify in place - - - # Now we have UV islands, we need to pack them. - - # Make a synchronised list with the islands - # so we can box pak the islands. - packBoxes = [] - - # Keep a list of X/Y offset so we can save time by writing the - # uv's and packed data in one pass. - islandOffsetList = [] - - islandIdx = 0 - - while islandIdx < len(islandList): - minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx]) - - w, h = maxx-minx, maxy-miny - - if USER_ISLAND_MARGIN: - minx -= USER_ISLAND_MARGIN# *w - miny -= USER_ISLAND_MARGIN# *h - maxx += USER_ISLAND_MARGIN# *w - maxy += USER_ISLAND_MARGIN# *h - - # recalc width and height - w, h = maxx-minx, maxy-miny - - if w < 0.00001 or h < 0.00001: - del islandList[islandIdx] - islandIdx -=1 - continue - - '''Save the offset to be applied later, - we could apply to the UVs now and allign them to the bottom left hand area - of the UV coords like the box packer imagines they are - but, its quicker just to remember their offset and - apply the packing and offset in 1 pass ''' - islandOffsetList.append((minx, miny)) - - # Add to boxList. use the island idx for the BOX id. - packBoxes.append([0, 0, w, h]) - islandIdx+=1 - - # Now we have a list of boxes to pack that syncs - # with the islands. - - #print '\tPacking UV Islands...' + mergeUvIslands(islandList) # Modify in place + + + # Now we have UV islands, we need to pack them. + + # Make a synchronised list with the islands + # so we can box pak the islands. + packBoxes = [] + + # Keep a list of X/Y offset so we can save time by writing the + # uv's and packed data in one pass. + islandOffsetList = [] + + islandIdx = 0 + + while islandIdx < len(islandList): + minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx]) + + w, h = maxx-minx, maxy-miny + + if USER_ISLAND_MARGIN: + minx -= USER_ISLAND_MARGIN# *w + miny -= USER_ISLAND_MARGIN# *h + maxx += USER_ISLAND_MARGIN# *w + maxy += USER_ISLAND_MARGIN# *h + + # recalc width and height + w, h = maxx-minx, maxy-miny + + if w < 0.00001 or h < 0.00001: + del islandList[islandIdx] + islandIdx -=1 + continue + + '''Save the offset to be applied later, + we could apply to the UVs now and allign them to the bottom left hand area + of the UV coords like the box packer imagines they are + but, its quicker just to remember their offset and + apply the packing and offset in 1 pass ''' + islandOffsetList.append((minx, miny)) + + # Add to boxList. use the island idx for the BOX id. + packBoxes.append([0, 0, w, h]) + islandIdx+=1 + + # Now we have a list of boxes to pack that syncs + # with the islands. + + #print '\tPacking UV Islands...' #XXX Window.DrawProgressBar(0.7, 'Packing %i UV Islands...' % len(packBoxes) ) - - time1 = time.time() - packWidth, packHeight = Geometry.BoxPack2D(packBoxes) - - # print 'Box Packing Time:', time.time() - time1 - - #if len(pa ckedLs) != len(islandList): - # raise "Error packed boxes differes from original length" - - #print '\tWriting Packed Data to faces' + + time1 = time.time() + packWidth, packHeight = Geometry.BoxPack2D(packBoxes) + + # print 'Box Packing Time:', time.time() - time1 + + #if len(pa ckedLs) != len(islandList): + # raise "Error packed boxes differes from original length" + + #print '\tWriting Packed Data to faces' #XXX Window.DrawProgressBar(0.8, 'Writing Packed Data to faces') - - # Sort by ID, so there in sync again - islandIdx = len(islandList) - # Having these here avoids devide by 0 - if islandIdx: - - if USER_STRETCH_ASPECT: - # Maximize to uv area?? Will write a normalize function. - xfactor = 1.0 / packWidth - yfactor = 1.0 / packHeight - else: - # Keep proportions. - xfactor = yfactor = 1.0 / max(packWidth, packHeight) - - while islandIdx: - islandIdx -=1 - # Write the packed values to the UV's - - xoffset = packBoxes[islandIdx][0] - islandOffsetList[islandIdx][0] - yoffset = packBoxes[islandIdx][1] - islandOffsetList[islandIdx][1] - - for f in islandList[islandIdx]: # Offsetting the UV's so they fit in there packed box - for uv in f.uv: - uv.x= (uv.x+xoffset) * xfactor - uv.y= (uv.y+yoffset) * yfactor - - + + # Sort by ID, so there in sync again + islandIdx = len(islandList) + # Having these here avoids devide by 0 + if islandIdx: + + if USER_STRETCH_ASPECT: + # Maximize to uv area?? Will write a normalize function. + xfactor = 1.0 / packWidth + yfactor = 1.0 / packHeight + else: + # Keep proportions. + xfactor = yfactor = 1.0 / max(packWidth, packHeight) + + while islandIdx: + islandIdx -=1 + # Write the packed values to the UV's + + xoffset = packBoxes[islandIdx][0] - islandOffsetList[islandIdx][0] + yoffset = packBoxes[islandIdx][1] - islandOffsetList[islandIdx][1] + + for f in islandList[islandIdx]: # Offsetting the UV's so they fit in there packed box + for uv in f.uv: + uv.x= (uv.x+xoffset) * xfactor + uv.y= (uv.y+yoffset) * yfactor + + def VectoMat(vec): - a3 = vec.__copy__().normalize() - - up = Vector(0,0,1) - if abs(a3.dot(up)) == 1.0: - up = Vector(0,1,0) - - a1 = a3.cross(up).normalize() - a2 = a3.cross(a1) - return Matrix([a1[0], a1[1], a1[2]], [a2[0], a2[1], a2[2]], [a3[0], a3[1], a3[2]]) + a3 = vec.__copy__().normalize() + + up = Vector(0,0,1) + if abs(a3.dot(up)) == 1.0: + up = Vector(0,1,0) + + a1 = a3.cross(up).normalize() + a2 = a3.cross(a1) + return Matrix([a1[0], a1[1], a1[2]], [a2[0], a2[1], a2[2]], [a3[0], a3[1], a3[2]]) class thickface(object): - __slost__= 'v', 'uv', 'no', 'area', 'edge_keys' - def __init__(self, face, uvface, mesh_verts): - self.v = [mesh_verts[i] for i in face.verts] - if len(self.v)==4: - self.uv = uvface.uv1, uvface.uv2, uvface.uv3, uvface.uv4 - else: - self.uv = uvface.uv1, uvface.uv2, uvface.uv3 - - self.no = face.normal - self.area = face.area - self.edge_keys = face.edge_keys + __slost__= 'v', 'uv', 'no', 'area', 'edge_keys' + def __init__(self, face, uvface, mesh_verts): + self.v = [mesh_verts[i] for i in face.verts] + if len(self.v)==4: + self.uv = uvface.uv1, uvface.uv2, uvface.uv3, uvface.uv4 + else: + self.uv = uvface.uv1, uvface.uv2, uvface.uv3 + + self.no = face.normal + self.area = face.area + self.edge_keys = face.edge_keys global ob ob = None def main(context, island_margin, projection_limit): - global USER_FILL_HOLES - global USER_FILL_HOLES_QUALITY - global USER_STRETCH_ASPECT - global USER_ISLAND_MARGIN - + global USER_FILL_HOLES + global USER_FILL_HOLES_QUALITY + global USER_STRETCH_ASPECT + global USER_ISLAND_MARGIN + #XXX objects= bpy.data.scenes.active.objects - objects = context.selected_editable_objects - - - # we can will tag them later. - obList = [ob for ob in objects if ob.type == 'MESH'] - - # Face select object may not be selected. + objects = context.selected_editable_objects + + + # we can will tag them later. + obList = [ob for ob in objects if ob.type == 'MESH'] + + # Face select object may not be selected. #XXX ob = objects.active - ob= objects[0] - - if ob and ob.selected == 0 and ob.type == 'MESH': - # Add to the list - obList =[ob] - del objects - - if not obList: - raise('error, no selected mesh objects') - - # Create the variables. - USER_PROJECTION_LIMIT = projection_limit - USER_ONLY_SELECTED_FACES = (1) - USER_SHARE_SPACE = (1) # Only for hole filling. - USER_STRETCH_ASPECT = (1) # Only for hole filling. - USER_ISLAND_MARGIN = island_margin # Only for hole filling. - USER_FILL_HOLES = (0) - USER_FILL_HOLES_QUALITY = (50) # Only for hole filling. - USER_VIEW_INIT = (0) # Only for hole filling. - USER_AREA_WEIGHT = (1) # Only for hole filling. - - # Reuse variable - if len(obList) == 1: - ob = "Unwrap %i Selected Mesh" - else: - ob = "Unwrap %i Selected Meshes" - - # HACK, loop until mouse is lifted. - ''' - while Window.GetMouseButtons() != 0: - time.sleep(10) - ''' - + ob= objects[0] + + if ob and ob.selected == 0 and ob.type == 'MESH': + # Add to the list + obList =[ob] + del objects + + if not obList: + raise('error, no selected mesh objects') + + # Create the variables. + USER_PROJECTION_LIMIT = projection_limit + USER_ONLY_SELECTED_FACES = (1) + USER_SHARE_SPACE = (1) # Only for hole filling. + USER_STRETCH_ASPECT = (1) # Only for hole filling. + USER_ISLAND_MARGIN = island_margin # Only for hole filling. + USER_FILL_HOLES = (0) + USER_FILL_HOLES_QUALITY = (50) # Only for hole filling. + USER_VIEW_INIT = (0) # Only for hole filling. + USER_AREA_WEIGHT = (1) # Only for hole filling. + + # Reuse variable + if len(obList) == 1: + ob = "Unwrap %i Selected Mesh" + else: + ob = "Unwrap %i Selected Meshes" + + # HACK, loop until mouse is lifted. + ''' + while Window.GetMouseButtons() != 0: + time.sleep(10) + ''' + #XXX if not Draw.PupBlock(ob % len(obList), pup_block): #XXX return #XXX del ob - - # Convert from being button types - - USER_PROJECTION_LIMIT_CONVERTED = cos(USER_PROJECTION_LIMIT * DEG_TO_RAD) - USER_PROJECTION_LIMIT_HALF_CONVERTED = cos((USER_PROJECTION_LIMIT/2) * DEG_TO_RAD) - - - # Toggle Edit mode - is_editmode = (context.active_object.mode == 'EDIT') - if is_editmode: - bpy.ops.object.mode_set(mode='OBJECT') - # Assume face select mode! an annoying hack to toggle face select mode because Mesh dosent like faceSelectMode. - - if USER_SHARE_SPACE: - # Sort by data name so we get consistant results - obList.sort(key = lambda ob: ob.data.name) - collected_islandList= [] - + + # Convert from being button types + + USER_PROJECTION_LIMIT_CONVERTED = cos(USER_PROJECTION_LIMIT * DEG_TO_RAD) + USER_PROJECTION_LIMIT_HALF_CONVERTED = cos((USER_PROJECTION_LIMIT/2) * DEG_TO_RAD) + + + # Toggle Edit mode + is_editmode = (context.active_object.mode == 'EDIT') + if is_editmode: + bpy.ops.object.mode_set(mode='OBJECT') + # Assume face select mode! an annoying hack to toggle face select mode because Mesh dosent like faceSelectMode. + + if USER_SHARE_SPACE: + # Sort by data name so we get consistant results + obList.sort(key = lambda ob: ob.data.name) + collected_islandList= [] + #XXX Window.WaitCursor(1) - - time1 = time.time() - - # Tag as False se we dont operate on teh same mesh twice. -#XXX bpy.data.meshes.tag = False - for me in bpy.data.meshes: - me.tag = False - - - for ob in obList: - me = ob.data - - if me.tag or me.library: - continue - - # Tag as used - me.tag = True - - if len(me.uv_textures)==0: # Mesh has no UV Coords, dont bother. - me.add_uv_texture() - - uv_layer = me.active_uv_texture.data - me_verts = list(me.verts) - - if USER_ONLY_SELECTED_FACES: - meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces) if f.selected] - #else: - # meshFaces = map(thickface, me.faces) - - if not meshFaces: - continue - + + time1 = time.time() + + # Tag as False se we dont operate on teh same mesh twice. +#XXX bpy.data.meshes.tag = False + for me in bpy.data.meshes: + me.tag = False + + + for ob in obList: + me = ob.data + + if me.tag or me.library: + continue + + # Tag as used + me.tag = True + + if len(me.uv_textures)==0: # Mesh has no UV Coords, dont bother. + me.add_uv_texture() + + uv_layer = me.active_uv_texture.data + me_verts = list(me.verts) + + if USER_ONLY_SELECTED_FACES: + meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces) if f.selected] + #else: + # meshFaces = map(thickface, me.faces) + + if not meshFaces: + continue + #XXX Window.DrawProgressBar(0.1, 'SmartProj UV Unwrapper, mapping "%s", %i faces.' % (me.name, len(meshFaces))) - - # ======= - # Generate a projection list from face normals, this is ment to be smart :) - - # make a list of face props that are in sync with meshFaces - # Make a Face List that is sorted by area. - # meshFaces = [] - - # meshFaces.sort( lambda a, b: cmp(b.area , a.area) ) # Biggest first. - meshFaces.sort( key = lambda a: -a.area ) - - # remove all zero area faces - while meshFaces and meshFaces[-1].area <= SMALL_NUM: - # Set their UV's to 0,0 - for uv in meshFaces[-1].uv: - uv.zero() - meshFaces.pop() - - # Smallest first is slightly more efficient, but if the user cancels early then its better we work on the larger data. - - # Generate Projection Vecs - # 0d is 1.0 - # 180 IS -0.59846 - - - # Initialize projectVecs - if USER_VIEW_INIT: - # Generate Projection - projectVecs = [Vector(Window.GetViewVector()) * ob.matrixWorld.copy().invert().rotationPart()] # We add to this allong the way - else: - projectVecs = [] - - newProjectVec = meshFaces[0].no - newProjectMeshFaces = [] # Popping stuffs it up. - - - # Predent that the most unique angke is ages away to start the loop off - mostUniqueAngle = -1.0 - - # This is popped - tempMeshFaces = meshFaces[:] - - - - # This while only gathers projection vecs, faces are assigned later on. - while 1: - # If theres none there then start with the largest face - - # add all the faces that are close. - for fIdx in range(len(tempMeshFaces)-1, -1, -1): - # Use half the angle limit so we dont overweight faces towards this - # normal and hog all the faces. - if newProjectVec.dot(tempMeshFaces[fIdx].no) > USER_PROJECTION_LIMIT_HALF_CONVERTED: - newProjectMeshFaces.append(tempMeshFaces.pop(fIdx)) - - # Add the average of all these faces normals as a projectionVec - averageVec = Vector(0,0,0) - if USER_AREA_WEIGHT: - for fprop in newProjectMeshFaces: - averageVec += (fprop.no * fprop.area) - else: - for fprop in newProjectMeshFaces: - averageVec += fprop.no - - if averageVec.x != 0 or averageVec.y != 0 or averageVec.z != 0: # Avoid NAN - projectVecs.append(averageVec.normalize()) - - - # Get the next vec! - # Pick the face thats most different to all existing angles :) - mostUniqueAngle = 1.0 # 1.0 is 0d. no difference. - mostUniqueIndex = 0 # dummy - - for fIdx in range(len(tempMeshFaces)-1, -1, -1): - angleDifference = -1.0 # 180d difference. - - # Get the closest vec angle we are to. - for p in projectVecs: - temp_angle_diff= p.dot(tempMeshFaces[fIdx].no) - - if angleDifference < temp_angle_diff: - angleDifference= temp_angle_diff - - if angleDifference < mostUniqueAngle: - # We have a new most different angle - mostUniqueIndex = fIdx - mostUniqueAngle = angleDifference - - if mostUniqueAngle < USER_PROJECTION_LIMIT_CONVERTED: - #print 'adding', mostUniqueAngle, USER_PROJECTION_LIMIT, len(newProjectMeshFaces) - # Now weight the vector to all its faces, will give a more direct projection - # if the face its self was not representive of the normal from surrounding faces. - - newProjectVec = tempMeshFaces[mostUniqueIndex].no - newProjectMeshFaces = [tempMeshFaces.pop(mostUniqueIndex)] - - - else: - if len(projectVecs) >= 1: # Must have at least 2 projections - break - - - # If there are only zero area faces then its possible - # there are no projectionVecs - if not len(projectVecs): - Draw.PupMenu('error, no projection vecs where generated, 0 area faces can cause this.') - return - - faceProjectionGroupList =[[] for i in range(len(projectVecs)) ] - - # MAP and Arrange # We know there are 3 or 4 faces here - - for fIdx in range(len(meshFaces)-1, -1, -1): - fvec = meshFaces[fIdx].no - i = len(projectVecs) - - # Initialize first - bestAng = fvec.dot(projectVecs[0]) - bestAngIdx = 0 - - # Cycle through the remaining, first alredy done - while i-1: - i-=1 - - newAng = fvec.dot(projectVecs[i]) - if newAng > bestAng: # Reverse logic for dotvecs - bestAng = newAng - bestAngIdx = i - - # Store the area for later use. - faceProjectionGroupList[bestAngIdx].append(meshFaces[fIdx]) - - # Cull faceProjectionGroupList, - - - # Now faceProjectionGroupList is full of faces that face match the project Vecs list - for i in range(len(projectVecs)): - # Account for projectVecs having no faces. - if not faceProjectionGroupList[i]: - continue - - # Make a projection matrix from a unit length vector. - MatProj = VectoMat(projectVecs[i]) - - # Get the faces UV's from the projected vertex. - for f in faceProjectionGroupList[i]: - f_uv = f.uv - for j, v in enumerate(f.v): - # XXX - note, between Mathutils in 2.4 and 2.5 the order changed. - f_uv[j][:] = (v.co * MatProj)[:2] - - - if USER_SHARE_SPACE: - # Should we collect and pack later? - islandList = getUvIslands(faceProjectionGroupList, me) - collected_islandList.extend(islandList) - - else: - # Should we pack the islands for this 1 object? - islandList = getUvIslands(faceProjectionGroupList, me) - packIslands(islandList) - - - # update the mesh here if we need to. - - # We want to pack all in 1 go, so pack now - if USER_SHARE_SPACE: + + # ======= + # Generate a projection list from face normals, this is ment to be smart :) + + # make a list of face props that are in sync with meshFaces + # Make a Face List that is sorted by area. + # meshFaces = [] + + # meshFaces.sort( lambda a, b: cmp(b.area , a.area) ) # Biggest first. + meshFaces.sort( key = lambda a: -a.area ) + + # remove all zero area faces + while meshFaces and meshFaces[-1].area <= SMALL_NUM: + # Set their UV's to 0,0 + for uv in meshFaces[-1].uv: + uv.zero() + meshFaces.pop() + + # Smallest first is slightly more efficient, but if the user cancels early then its better we work on the larger data. + + # Generate Projection Vecs + # 0d is 1.0 + # 180 IS -0.59846 + + + # Initialize projectVecs + if USER_VIEW_INIT: + # Generate Projection + projectVecs = [Vector(Window.GetViewVector()) * ob.matrixWorld.copy().invert().rotationPart()] # We add to this allong the way + else: + projectVecs = [] + + newProjectVec = meshFaces[0].no + newProjectMeshFaces = [] # Popping stuffs it up. + + + # Predent that the most unique angke is ages away to start the loop off + mostUniqueAngle = -1.0 + + # This is popped + tempMeshFaces = meshFaces[:] + + + + # This while only gathers projection vecs, faces are assigned later on. + while 1: + # If theres none there then start with the largest face + + # add all the faces that are close. + for fIdx in range(len(tempMeshFaces)-1, -1, -1): + # Use half the angle limit so we dont overweight faces towards this + # normal and hog all the faces. + if newProjectVec.dot(tempMeshFaces[fIdx].no) > USER_PROJECTION_LIMIT_HALF_CONVERTED: + newProjectMeshFaces.append(tempMeshFaces.pop(fIdx)) + + # Add the average of all these faces normals as a projectionVec + averageVec = Vector(0,0,0) + if USER_AREA_WEIGHT: + for fprop in newProjectMeshFaces: + averageVec += (fprop.no * fprop.area) + else: + for fprop in newProjectMeshFaces: + averageVec += fprop.no + + if averageVec.x != 0 or averageVec.y != 0 or averageVec.z != 0: # Avoid NAN + projectVecs.append(averageVec.normalize()) + + + # Get the next vec! + # Pick the face thats most different to all existing angles :) + mostUniqueAngle = 1.0 # 1.0 is 0d. no difference. + mostUniqueIndex = 0 # dummy + + for fIdx in range(len(tempMeshFaces)-1, -1, -1): + angleDifference = -1.0 # 180d difference. + + # Get the closest vec angle we are to. + for p in projectVecs: + temp_angle_diff= p.dot(tempMeshFaces[fIdx].no) + + if angleDifference < temp_angle_diff: + angleDifference= temp_angle_diff + + if angleDifference < mostUniqueAngle: + # We have a new most different angle + mostUniqueIndex = fIdx + mostUniqueAngle = angleDifference + + if mostUniqueAngle < USER_PROJECTION_LIMIT_CONVERTED: + #print 'adding', mostUniqueAngle, USER_PROJECTION_LIMIT, len(newProjectMeshFaces) + # Now weight the vector to all its faces, will give a more direct projection + # if the face its self was not representive of the normal from surrounding faces. + + newProjectVec = tempMeshFaces[mostUniqueIndex].no + newProjectMeshFaces = [tempMeshFaces.pop(mostUniqueIndex)] + + + else: + if len(projectVecs) >= 1: # Must have at least 2 projections + break + + + # If there are only zero area faces then its possible + # there are no projectionVecs + if not len(projectVecs): + Draw.PupMenu('error, no projection vecs where generated, 0 area faces can cause this.') + return + + faceProjectionGroupList =[[] for i in range(len(projectVecs)) ] + + # MAP and Arrange # We know there are 3 or 4 faces here + + for fIdx in range(len(meshFaces)-1, -1, -1): + fvec = meshFaces[fIdx].no + i = len(projectVecs) + + # Initialize first + bestAng = fvec.dot(projectVecs[0]) + bestAngIdx = 0 + + # Cycle through the remaining, first alredy done + while i-1: + i-=1 + + newAng = fvec.dot(projectVecs[i]) + if newAng > bestAng: # Reverse logic for dotvecs + bestAng = newAng + bestAngIdx = i + + # Store the area for later use. + faceProjectionGroupList[bestAngIdx].append(meshFaces[fIdx]) + + # Cull faceProjectionGroupList, + + + # Now faceProjectionGroupList is full of faces that face match the project Vecs list + for i in range(len(projectVecs)): + # Account for projectVecs having no faces. + if not faceProjectionGroupList[i]: + continue + + # Make a projection matrix from a unit length vector. + MatProj = VectoMat(projectVecs[i]) + + # Get the faces UV's from the projected vertex. + for f in faceProjectionGroupList[i]: + f_uv = f.uv + for j, v in enumerate(f.v): + # XXX - note, between Mathutils in 2.4 and 2.5 the order changed. + f_uv[j][:] = (v.co * MatProj)[:2] + + + if USER_SHARE_SPACE: + # Should we collect and pack later? + islandList = getUvIslands(faceProjectionGroupList, me) + collected_islandList.extend(islandList) + + else: + # Should we pack the islands for this 1 object? + islandList = getUvIslands(faceProjectionGroupList, me) + packIslands(islandList) + + + # update the mesh here if we need to. + + # We want to pack all in 1 go, so pack now + if USER_SHARE_SPACE: #XXX Window.DrawProgressBar(0.9, "Box Packing for all objects...") - packIslands(collected_islandList) - - print("Smart Projection time: %.2f" % (time.time() - time1)) - # Window.DrawProgressBar(0.9, "Smart Projections done, time: %.2f sec." % (time.time() - time1)) - - if is_editmode: - bpy.ops.object.mode_set(mode='EDIT') - + packIslands(collected_islandList) + + print("Smart Projection time: %.2f" % (time.time() - time1)) + # Window.DrawProgressBar(0.9, "Smart Projections done, time: %.2f sec." % (time.time() - time1)) + + if is_editmode: + bpy.ops.object.mode_set(mode='EDIT') + #XXX Window.DrawProgressBar(1.0, "") #XXX Window.WaitCursor(0) #XXX Window.RedrawAll() """ - pup_block = [\ - 'Projection',\ + pup_block = [\ + 'Projection',\ * ('Angle Limit:', USER_PROJECTION_LIMIT, 1, 89, ''),\ - ('Selected Faces Only', USER_ONLY_SELECTED_FACES, 'Use only selected faces from all selected meshes.'),\ - ('Init from view', USER_VIEW_INIT, 'The first projection will be from the view vector.'),\ - ('Area Weight', USER_AREA_WEIGHT, 'Weight projections vector by face area.'),\ - '',\ - '',\ - '',\ - 'UV Layout',\ - ('Share Tex Space', USER_SHARE_SPACE, 'Objects Share texture space, map all objects into 1 uvmap.'),\ - ('Stretch to bounds', USER_STRETCH_ASPECT, 'Stretch the final output to texture bounds.'),\ + ('Selected Faces Only', USER_ONLY_SELECTED_FACES, 'Use only selected faces from all selected meshes.'),\ + ('Init from view', USER_VIEW_INIT, 'The first projection will be from the view vector.'),\ + ('Area Weight', USER_AREA_WEIGHT, 'Weight projections vector by face area.'),\ + '',\ + '',\ + '',\ + 'UV Layout',\ + ('Share Tex Space', USER_SHARE_SPACE, 'Objects Share texture space, map all objects into 1 uvmap.'),\ + ('Stretch to bounds', USER_STRETCH_ASPECT, 'Stretch the final output to texture bounds.'),\ * ('Island Margin:', USER_ISLAND_MARGIN, 0.0, 0.5, ''),\ - 'Fill in empty areas',\ - ('Fill Holes', USER_FILL_HOLES, 'Fill in empty areas reduced texture waistage (slow).'),\ - ('Fill Quality:', USER_FILL_HOLES_QUALITY, 1, 100, 'Depends on fill holes, how tightly to fill UV holes, (higher is slower)'),\ - ] + 'Fill in empty areas',\ + ('Fill Holes', USER_FILL_HOLES, 'Fill in empty areas reduced texture waistage (slow).'),\ + ('Fill Quality:', USER_FILL_HOLES_QUALITY, 1, 100, 'Depends on fill holes, how tightly to fill UV holes, (higher is slower)'),\ + ] """ from bpy.props import * class SmartProject(bpy.types.Operator): - '''This script projection unwraps the selected faces of a mesh. it operates on all selected mesh objects, and can be used unwrap selected faces, or all faces.''' - bl_idname = "uv.smart_project" - bl_label = "Smart UV Project" + '''This script projection unwraps the selected faces of a mesh. it operates on all selected mesh objects, and can be used unwrap selected faces, or all faces.''' + bl_idname = "uv.smart_project" + bl_label = "Smart UV Project" - bl_register = True - bl_undo = True + bl_register = True + bl_undo = True - angle_limit = FloatProperty(name="Angle Limit", - description="lower for more projection groups, higher for less distortion.", - default=66.0, min=1.0, max=89.0) + angle_limit = FloatProperty(name="Angle Limit", + description="lower for more projection groups, higher for less distortion.", + default=66.0, min=1.0, max=89.0) - island_margin = FloatProperty(name="Island Margin", - description="Margin to reduce bleed from adjacent islands.", - default=0.0, min=0.0, max=1.0) + island_margin = FloatProperty(name="Island Margin", + description="Margin to reduce bleed from adjacent islands.", + default=0.0, min=0.0, max=1.0) - def poll(self, context): - return context.active_object != None + def poll(self, context): + return context.active_object != None - def execute(self, context): - main(context, self.properties.island_margin, self.properties.angle_limit) - return ('FINISHED',) + def execute(self, context): + main(context, self.properties.island_margin, self.properties.angle_limit) + return ('FINISHED',) bpy.ops.add(SmartProject) # Add to a menu import dynamic_menu -menu_func = (lambda self, context: self.layout.itemO(SmartProject.bl_idname, - text="Smart Project")) +menu_func = (lambda self, context: self.layout.operator(SmartProject.bl_idname, + text="Smart Project")) menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_uv_map, menu_func) if __name__ == '__main__': - bpy.ops.uv.smart_project() + bpy.ops.uv.smart_project() diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index f6239e146b8..c5fc18964bf 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -33,6 +33,7 @@ class MESH_OT_delete_edgeloop(bpy.types.Operator): bpy.ops.tfm.edge_slide(value=1.0) bpy.ops.mesh.select_more() bpy.ops.mesh.remove_doubles() + return ('FINISHED',) rna_path_prop = StringProperty(name="Context Attributes", @@ -248,9 +249,9 @@ class WM_OT_context_cycle_enum(bpy.types.Operator): return ('FINISHED',) doc_id = StringProperty(name="Doc ID", - description="ID for the documentation", maxlen=1024, default="") + description="", maxlen=1024, default="", hidden=True) -doc_new = StringProperty(name="Doc New", +doc_new = StringProperty(name="Edit Description", description="", maxlen=1024, default="") @@ -392,53 +393,6 @@ class WM_OT_reload_scripts(bpy.types.Operator): ''' return ('FINISHED',) -class AddPresetBase(bpy.types.Operator): - '''Base preset class, only for subclassing - subclasses must define - - preset_values - - preset_path ''' - bl_idname = "render.preset_add" - bl_label = "Add Render Preset" - - name = bpy.props.StringProperty(name="Name", description="Name of the preset, used to make the path name", maxlen= 64, default= "New Preset") - - ''' - preset_values = [ - "bpy.context.scene.render_data.resolution_x", - "bpy.context.scene.render_data.resolution_y", - "bpy.context.scene.render_data.pixel_aspect_x", - "bpy.context.scene.render_data.pixel_aspect_y", - "bpy.context.scene.render_data.fps", - "bpy.context.scene.render_data.fps_base", - "bpy.context.scene.render_data.resolution_percentage", - ] - - preset_path = os.path.join("presets", "render") - ''' - - def _as_filename(self, name): # could reuse for other presets - for char in " !@#$%^&*(){}:\";'[]<>,./?": - name = name.replace('.', '_') - return name.lower() - - def execute(self, context): - filename = self._as_filename(self.properties.name) + ".py" - - target_path = os.path.join(os.path.dirname(__file__), os.path.pardir, self.preset_path, filename) - - file_preset = open(target_path, 'w') - - for rna_path in self.preset_values: - file_preset.write("%s = %s\n" % (rna_path, eval(rna_path))) - - file_preset.close() - - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.invoke_props_popup(self, event) - return ('RUNNING_MODAL',) bpy.ops.add(MESH_OT_delete_edgeloop) diff --git a/release/scripts/presets/render/HDTV_1080p.py b/release/scripts/presets/render/HDTV_1080p.py index 115abe37af4..a0297a200f3 100644 --- a/release/scripts/presets/render/HDTV_1080p.py +++ b/release/scripts/presets/render/HDTV_1080p.py @@ -2,4 +2,6 @@ bpy.context.scene.render_data.resolution_x = 1920 bpy.context.scene.render_data.resolution_y = 1080 bpy.context.scene.render_data.resolution_percentage = 100 bpy.context.scene.render_data.pixel_aspect_x = 1 -bpy.context.scene.render_data.pixel_aspect_y = 1
\ No newline at end of file +bpy.context.scene.render_data.pixel_aspect_y = 1 +bpy.context.scene.render_data.fps = 24 +bpy.context.scene.render_data.fps_base = 1
\ No newline at end of file diff --git a/release/scripts/presets/render/HDTV_720p.py b/release/scripts/presets/render/HDTV_720p.py index b8abeafdacf..4d34a928eb3 100644 --- a/release/scripts/presets/render/HDTV_720p.py +++ b/release/scripts/presets/render/HDTV_720p.py @@ -2,4 +2,6 @@ bpy.context.scene.render_data.resolution_x = 1280 bpy.context.scene.render_data.resolution_y = 720 bpy.context.scene.render_data.resolution_percentage = 100 bpy.context.scene.render_data.pixel_aspect_x = 1 -bpy.context.scene.render_data.pixel_aspect_y = 1
\ No newline at end of file +bpy.context.scene.render_data.pixel_aspect_y = 1 +bpy.context.scene.render_data.fps = 24 +bpy.context.scene.render_data.fps_base = 1
\ No newline at end of file diff --git a/release/scripts/presets/render/TV_PAL.py b/release/scripts/presets/render/TV_PAL.py index 5c98730ccd2..7044070fb0c 100644 --- a/release/scripts/presets/render/TV_PAL.py +++ b/release/scripts/presets/render/TV_PAL.py @@ -3,4 +3,5 @@ bpy.context.scene.render_data.resolution_y = 576 bpy.context.scene.render_data.resolution_percentage = 100 bpy.context.scene.render_data.pixel_aspect_x = 54 bpy.context.scene.render_data.pixel_aspect_y = 51 -bpy.context.scene.render_data.fps = 25
\ No newline at end of file +bpy.context.scene.render_data.fps = 25 +bpy.context.scene.render_data.fps_base = 1
\ No newline at end of file diff --git a/release/scripts/presets/render/TV_PAL_16_colon_9.py b/release/scripts/presets/render/TV_PAL_16_colon_9.py index 88993dfe727..756d34c8af3 100644 --- a/release/scripts/presets/render/TV_PAL_16_colon_9.py +++ b/release/scripts/presets/render/TV_PAL_16_colon_9.py @@ -3,4 +3,5 @@ bpy.context.scene.render_data.resolution_y = 576 bpy.context.scene.render_data.resolution_percentage = 100 bpy.context.scene.render_data.pixel_aspect_x = 64 bpy.context.scene.render_data.pixel_aspect_y = 45 -bpy.context.scene.render_data.fps = 25
\ No newline at end of file +bpy.context.scene.render_data.fps = 25 +bpy.context.scene.render_data.fps_base = 1
\ No newline at end of file diff --git a/release/scripts/presets/sss/Apple.py b/release/scripts/presets/sss/apple.py index 474769cd36f..474769cd36f 100644 --- a/release/scripts/presets/sss/Apple.py +++ b/release/scripts/presets/sss/apple.py diff --git a/release/scripts/presets/sss/Chicken.py b/release/scripts/presets/sss/chicken.py index 6253de09376..6253de09376 100644 --- a/release/scripts/presets/sss/Chicken.py +++ b/release/scripts/presets/sss/chicken.py diff --git a/release/scripts/presets/sss/Cream.py b/release/scripts/presets/sss/cream.py index f0a5292b85c..f0a5292b85c 100644 --- a/release/scripts/presets/sss/Cream.py +++ b/release/scripts/presets/sss/cream.py diff --git a/release/scripts/presets/sss/Ketchup.py b/release/scripts/presets/sss/ketchup.py index caece1ea7ca..caece1ea7ca 100644 --- a/release/scripts/presets/sss/Ketchup.py +++ b/release/scripts/presets/sss/ketchup.py diff --git a/release/scripts/presets/sss/Marble.py b/release/scripts/presets/sss/marble.py index ea894f69800..ea894f69800 100644 --- a/release/scripts/presets/sss/Marble.py +++ b/release/scripts/presets/sss/marble.py diff --git a/release/scripts/presets/sss/Potato.py b/release/scripts/presets/sss/potato.py index 89407dff427..89407dff427 100644 --- a/release/scripts/presets/sss/Potato.py +++ b/release/scripts/presets/sss/potato.py diff --git a/release/scripts/presets/sss/Skin_Milk.py b/release/scripts/presets/sss/skim_milk.py index 2e5b19d4f53..2e5b19d4f53 100644 --- a/release/scripts/presets/sss/Skin_Milk.py +++ b/release/scripts/presets/sss/skim_milk.py diff --git a/release/scripts/presets/sss/Skin1.py b/release/scripts/presets/sss/skin1.py index 42fb1fac43a..42fb1fac43a 100644 --- a/release/scripts/presets/sss/Skin1.py +++ b/release/scripts/presets/sss/skin1.py diff --git a/release/scripts/presets/sss/Skin2.py b/release/scripts/presets/sss/skin2.py index 52b649ecd8f..52b649ecd8f 100644 --- a/release/scripts/presets/sss/Skin2.py +++ b/release/scripts/presets/sss/skin2.py diff --git a/release/scripts/presets/sss/Whole_Milk.py b/release/scripts/presets/sss/whole_milk.py index 4cb6ccf3dcf..4cb6ccf3dcf 100644 --- a/release/scripts/presets/sss/Whole_Milk.py +++ b/release/scripts/presets/sss/whole_milk.py diff --git a/release/scripts/templates/operator.py b/release/scripts/templates/operator.py index dc46b66c96f..5e8a2f33cb7 100644 --- a/release/scripts/templates/operator.py +++ b/release/scripts/templates/operator.py @@ -51,7 +51,7 @@ bpy.ops.add(ExportSomeData) # Only needed if you want to add into a dynamic menu import dynamic_menu -menu_func = lambda self, context: self.layout.itemO("export.some_data", text="Example Exporter...") +menu_func = lambda self, context: self.layout.operator("export.some_data", text="Example Exporter...") menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) # Use for running this script directly diff --git a/release/scripts/ui/properties_data_armature.py b/release/scripts/ui/properties_data_armature.py index a5db2bbd1a3..1024ddc7836 100644 --- a/release/scripts/ui/properties_data_armature.py +++ b/release/scripts/ui/properties_data_armature.py @@ -47,10 +47,10 @@ class DATA_PT_context_arm(DataButtonsPanel): split = layout.split(percentage=0.65) if ob: split.template_ID(ob, "data") - split.itemS() + split.separator() elif arm: split.template_ID(space, "pin_id") - split.itemS() + split.separator() else: layout.template_ID(ob, "data") @@ -64,23 +64,23 @@ class DATA_PT_skeleton(DataButtonsPanel): arm = context.armature wide_ui = context.region.width > narrowui - layout.itemR(arm, "pose_position", expand=True) + layout.prop(arm, "pose_position", expand=True) split = layout.split() col = split.column() - col.itemL(text="Layers:") - col.itemR(arm, "layer", text="") - col.itemL(text="Protected Layers:") - col.itemR(arm, "layer_protection", text="") + col.label(text="Layers:") + col.prop(arm, "layer", text="") + col.label(text="Protected Layers:") + col.prop(arm, "layer_protection", text="") if wide_ui: col = split.column() - col.itemL(text="Deform:") - col.itemR(arm, "deform_vertexgroups", text="Vertex Groups") - col.itemR(arm, "deform_envelope", text="Envelopes") - col.itemR(arm, "deform_quaternion", text="Quaternion") - col.itemR(arm, "deform_bbone_rest", text="B-Bones Rest") + col.label(text="Deform:") + col.prop(arm, "deform_vertexgroups", text="Vertex Groups") + col.prop(arm, "deform_envelope", text="Envelopes") + col.prop(arm, "deform_quaternion", text="Quaternion") + col.prop(arm, "deform_bbone_rest", text="B-Bones Rest") class DATA_PT_display(DataButtonsPanel): @@ -93,21 +93,21 @@ class DATA_PT_display(DataButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.row().itemR(arm, "drawtype", expand=True) + layout.row().prop(arm, "drawtype", expand=True) else: - layout.row().itemR(arm, "drawtype", text="") + layout.row().prop(arm, "drawtype", text="") split = layout.split() col = split.column() - col.itemR(arm, "draw_names", text="Names") - col.itemR(arm, "draw_axes", text="Axes") - col.itemR(arm, "draw_custom_bone_shapes", text="Shapes") + col.prop(arm, "draw_names", text="Names") + col.prop(arm, "draw_axes", text="Axes") + col.prop(arm, "draw_custom_bone_shapes", text="Shapes") if wide_ui: col = split.column() - col.itemR(arm, "draw_group_colors", text="Colors") - col.itemR(arm, "delay_deform", text="Delay Refresh") + col.prop(arm, "draw_group_colors", text="Colors") + col.prop(arm, "delay_deform", text="Delay Refresh") class DATA_PT_bone_groups(DataButtonsPanel): @@ -127,33 +127,33 @@ class DATA_PT_bone_groups(DataButtonsPanel): row.template_list(pose, "bone_groups", pose, "active_bone_group_index", rows=2) col = row.column(align=True) - col.active = (ob.proxy == None) - col.itemO("pose.group_add", icon='ICON_ZOOMIN', text="") - col.itemO("pose.group_remove", icon='ICON_ZOOMOUT', text="") + col.active = (ob.proxy is None) + col.operator("pose.group_add", icon='ICON_ZOOMIN', text="") + col.operator("pose.group_remove", icon='ICON_ZOOMOUT', text="") group = pose.active_bone_group if group: col = layout.column() - col.active = (ob.proxy == None) - col.itemR(group, "name") + col.active = (ob.proxy is None) + col.prop(group, "name") split = layout.split() - split.active = (ob.proxy == None) + split.active = (ob.proxy is None) col = split.column() - col.itemR(group, "color_set") + col.prop(group, "color_set") if group.color_set: if wide_ui: col = split.column() col.template_triColorSet(group, "colors") row = layout.row(align=True) - row.active = (ob.proxy == None) + row.active = (ob.proxy is None) - row.itemO("pose.group_assign", text="Assign") - row.itemO("pose.group_remove", text="Remove") #row.itemO("pose.bone_group_remove_from", text="Remove") - #row.itemO("object.bone_group_select", text="Select") - #row.itemO("object.bone_group_deselect", text="Deselect") + row.operator("pose.group_assign", text="Assign") + row.operator("pose.group_remove", text="Remove") #row.operator("pose.bone_group_remove_from", text="Remove") + #row.operator("object.bone_group_select", text="Select") + #row.operator("object.bone_group_deselect", text="Deselect") class DATA_PT_paths(DataButtonsPanel): @@ -166,41 +166,41 @@ class DATA_PT_paths(DataButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(arm, "paths_type", expand=True) + layout.prop(arm, "paths_type", expand=True) else: - layout.itemR(arm, "paths_type", text="") + layout.prop(arm, "paths_type", text="") split = layout.split() col = split.column() sub = col.column(align=True) if (arm.paths_type == 'CURRENT_FRAME'): - sub.itemR(arm, "path_before_current", text="Before") - sub.itemR(arm, "path_after_current", text="After") + sub.prop(arm, "path_before_current", text="Before") + sub.prop(arm, "path_after_current", text="After") elif (arm.paths_type == 'RANGE'): - sub.itemR(arm, "path_start_frame", text="Start") - sub.itemR(arm, "path_end_frame", text="End") + sub.prop(arm, "path_start_frame", text="Start") + sub.prop(arm, "path_end_frame", text="End") - sub.itemR(arm, "path_size", text="Step") - col.row().itemR(arm, "paths_location", expand=True) + sub.prop(arm, "path_size", text="Step") + col.row().prop(arm, "paths_location", expand=True) if wide_ui: col = split.column() - col.itemL(text="Display:") - col.itemR(arm, "paths_show_frame_numbers", text="Frame Numbers") - col.itemR(arm, "paths_highlight_keyframes", text="Keyframes") - col.itemR(arm, "paths_show_keyframe_numbers", text="Keyframe Numbers") + col.label(text="Display:") + col.prop(arm, "paths_show_frame_numbers", text="Frame Numbers") + col.prop(arm, "paths_highlight_keyframes", text="Keyframes") + col.prop(arm, "paths_show_keyframe_numbers", text="Keyframe Numbers") - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemO("pose.paths_calculate", text="Calculate Paths") + col.operator("pose.paths_calculate", text="Calculate Paths") if wide_ui: col = split.column() - col.itemO("pose.paths_clear", text="Clear Paths") + col.operator("pose.paths_clear", text="Clear Paths") class DATA_PT_ghost(DataButtonsPanel): @@ -213,9 +213,9 @@ class DATA_PT_ghost(DataButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(arm, "ghost_type", expand=True) + layout.prop(arm, "ghost_type", expand=True) else: - layout.itemR(arm, "ghost_type", text="") + layout.prop(arm, "ghost_type", text="") split = layout.split() @@ -223,17 +223,17 @@ class DATA_PT_ghost(DataButtonsPanel): sub = col.column(align=True) if arm.ghost_type == 'RANGE': - sub.itemR(arm, "ghost_start_frame", text="Start") - sub.itemR(arm, "ghost_end_frame", text="End") - sub.itemR(arm, "ghost_size", text="Step") + sub.prop(arm, "ghost_start_frame", text="Start") + sub.prop(arm, "ghost_end_frame", text="End") + sub.prop(arm, "ghost_size", text="Step") elif arm.ghost_type == 'CURRENT_FRAME': - sub.itemR(arm, "ghost_step", text="Range") - sub.itemR(arm, "ghost_size", text="Step") + sub.prop(arm, "ghost_step", text="Range") + sub.prop(arm, "ghost_size", text="Step") if wide_ui: col = split.column() - col.itemL(text="Display:") - col.itemR(arm, "ghost_only_selected", text="Selected Only") + col.label(text="Display:") + col.prop(arm, "ghost_only_selected", text="Selected Only") bpy.types.register(DATA_PT_context_arm) bpy.types.register(DATA_PT_skeleton) diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index 0770942a6ea..4a10ff80a32 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -43,8 +43,8 @@ class BONE_PT_context_bone(BoneButtonsPanel): bone = context.edit_bone row = layout.row() - row.itemL(text="", icon='ICON_BONE_DATA') - row.itemR(bone, "name", text="") + row.label(text="", icon='ICON_BONE_DATA') + row.prop(bone, "name", text="") class BONE_PT_transform(BoneButtonsPanel): @@ -61,21 +61,21 @@ class BONE_PT_transform(BoneButtonsPanel): bone = context.edit_bone if wide_ui: row = layout.row() - row.column().itemR(bone, "head") - row.column().itemR(bone, "tail") + row.column().prop(bone, "head") + row.column().prop(bone, "tail") col = row.column() sub = col.column(align=True) - sub.itemL(text="Roll:") - sub.itemR(bone, "roll", text="") - sub.itemL() - sub.itemR(bone, "locked") + sub.label(text="Roll:") + sub.prop(bone, "roll", text="") + sub.label() + sub.prop(bone, "locked") else: col = layout.column() - col.itemR(bone, "head") - col.itemR(bone, "tail") - col.itemR(bone, "roll") - col.itemR(bone, "locked") + col.prop(bone, "head") + col.prop(bone, "tail") + col.prop(bone, "roll") + col.prop(bone, "locked") else: pchan = ob.pose.bones[context.bone.name] @@ -83,37 +83,37 @@ class BONE_PT_transform(BoneButtonsPanel): if wide_ui: row = layout.row() col = row.column() - col.itemR(pchan, "location") + col.prop(pchan, "location") col.active = not (bone.parent and bone.connected) col = row.column() if pchan.rotation_mode == 'QUATERNION': - col.itemR(pchan, "rotation_quaternion", text="Rotation") + col.prop(pchan, "rotation_quaternion", text="Rotation") elif pchan.rotation_mode == 'AXIS_ANGLE': - #col.itemL(text="Rotation") - #col.itemR(pchan, "rotation_angle", text="Angle") - #col.itemR(pchan, "rotation_axis", text="Axis") - col.itemR(pchan, "rotation_axis_angle", text="Rotation") + #col.label(text="Rotation") + #col.prop(pchan, "rotation_angle", text="Angle") + #col.prop(pchan, "rotation_axis", text="Axis") + col.prop(pchan, "rotation_axis_angle", text="Rotation") else: - col.itemR(pchan, "rotation_euler", text="Rotation") + col.prop(pchan, "rotation_euler", text="Rotation") - row.column().itemR(pchan, "scale") + row.column().prop(pchan, "scale") - layout.itemR(pchan, "rotation_mode") + layout.prop(pchan, "rotation_mode") else: col = layout.column() sub = col.column() sub.active = not (bone.parent and bone.connected) - sub.itemR(pchan, "location") - col.itemL(text="Rotation:") - col.itemR(pchan, "rotation_mode", text="") + sub.prop(pchan, "location") + col.label(text="Rotation:") + col.prop(pchan, "rotation_mode", text="") if pchan.rotation_mode == 'QUATERNION': - col.itemR(pchan, "rotation_quaternion", text="") + col.prop(pchan, "rotation_quaternion", text="") elif pchan.rotation_mode == 'AXIS_ANGLE': - col.itemR(pchan, "rotation_axis_angle", text="") + col.prop(pchan, "rotation_axis_angle", text="") else: - col.itemR(pchan, "rotation_euler", text="") - col.itemR(pchan, "scale") + col.prop(pchan, "rotation_euler", text="") + col.prop(pchan, "scale") class BONE_PT_transform_locks(BoneButtonsPanel): @@ -132,19 +132,19 @@ class BONE_PT_transform_locks(BoneButtonsPanel): row = layout.row() col = row.column() - col.itemR(pchan, "lock_location") + col.prop(pchan, "lock_location") col.active = not (bone.parent and bone.connected) col = row.column() if pchan.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'): - col.itemR(pchan, "lock_rotations_4d", text="Lock Rotation") + col.prop(pchan, "lock_rotations_4d", text="Lock Rotation") if pchan.lock_rotations_4d: - col.itemR(pchan, "lock_rotation_w", text="W") - col.itemR(pchan, "lock_rotation", text="") + col.prop(pchan, "lock_rotation_w", text="W") + col.prop(pchan, "lock_rotation", text="") else: - col.itemR(pchan, "lock_rotation", text="Rotation") + col.prop(pchan, "lock_rotation", text="Rotation") - row.column().itemR(pchan, "lock_scale") + row.column().prop(pchan, "lock_scale") class BONE_PT_relations(BoneButtonsPanel): @@ -167,28 +167,31 @@ class BONE_PT_relations(BoneButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Layers:") - col.itemR(bone, "layer", text="") + col.label(text="Layers:") + col.prop(bone, "layer", text="") - col.itemS() + col.separator() if ob and pchan: - col.itemL(text="Bone Group:") - col.item_pointerR(pchan, "bone_group", ob.pose, "bone_groups", text="") + col.label(text="Bone Group:") + col.prop_object(pchan, "bone_group", ob.pose, "bone_groups", text="") if wide_ui: col = split.column() - col.itemL(text="Parent:") + col.label(text="Parent:") if context.bone: - col.itemR(bone, "parent", text="") + col.prop(bone, "parent", text="") else: - col.item_pointerR(bone, "parent", arm, "edit_bones", text="") + col.prop_object(bone, "parent", arm, "edit_bones", text="") sub = col.column() - sub.active = bone.parent != None - sub.itemR(bone, "connected") - sub.itemR(bone, "hinge", text="Inherit Rotation") - sub.itemR(bone, "inherit_scale", text="Inherit Scale") + sub.active = (bone.parent is not None) + sub.prop(bone, "connected") + sub.prop(bone, "hinge", text="Inherit Rotation") + sub.prop(bone, "inherit_scale", text="Inherit Scale") + sub = col.column() + sub.active = (not bone.parent or not bone.connected) + sub.prop(bone, "local_location", text="Local Location") class BONE_PT_display(BoneButtonsPanel): @@ -215,13 +218,13 @@ class BONE_PT_display(BoneButtonsPanel): split = layout.split() col = split.column() - col.itemR(bone, "draw_wire", text="Wireframe") - col.itemR(bone, "hidden", text="Hide") + col.prop(bone, "draw_wire", text="Wireframe") + col.prop(bone, "hidden", text="Hide") if wide_ui: col = split.column() - col.itemL(text="Custom Shape:") - col.itemR(pchan, "custom_shape", text="") + col.label(text="Custom Shape:") + col.prop(pchan, "custom_shape", text="") class BONE_PT_deform(BoneButtonsPanel): @@ -234,7 +237,7 @@ class BONE_PT_deform(BoneButtonsPanel): if not bone: bone = context.edit_bone - self.layout.itemR(bone, "deform", text="") + self.layout.prop(bone, "deform", text="") def draw(self, context): layout = self.layout @@ -250,29 +253,29 @@ class BONE_PT_deform(BoneButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Envelope:") + col.label(text="Envelope:") sub = col.column(align=True) - sub.itemR(bone, "envelope_distance", text="Distance") - sub.itemR(bone, "envelope_weight", text="Weight") - col.itemR(bone, "multiply_vertexgroup_with_envelope", text="Multiply") + sub.prop(bone, "envelope_distance", text="Distance") + sub.prop(bone, "envelope_weight", text="Weight") + col.prop(bone, "multiply_vertexgroup_with_envelope", text="Multiply") sub = col.column(align=True) - sub.itemL(text="Radius:") - sub.itemR(bone, "head_radius", text="Head") - sub.itemR(bone, "tail_radius", text="Tail") + sub.label(text="Radius:") + sub.prop(bone, "head_radius", text="Head") + sub.prop(bone, "tail_radius", text="Tail") if wide_ui: col = split.column() - col.itemL(text="Curved Bones:") + col.label(text="Curved Bones:") sub = col.column(align=True) - sub.itemR(bone, "bbone_segments", text="Segments") - sub.itemR(bone, "bbone_in", text="Ease In") - sub.itemR(bone, "bbone_out", text="Ease Out") + sub.prop(bone, "bbone_segments", text="Segments") + sub.prop(bone, "bbone_in", text="Ease In") + sub.prop(bone, "bbone_out", text="Ease Out") - col.itemL(text="Offset:") - col.itemR(bone, "cyclic_offset") + col.label(text="Offset:") + col.prop(bone, "cyclic_offset") class BONE_PT_properties(BoneButtonsPanel): @@ -284,7 +287,7 @@ class BONE_PT_properties(BoneButtonsPanel): # reload(rna_prop_ui) obj = context.object if obj and obj.mode == 'POSE': - item = "active_pchan" + item = "active_pose_bone" else: item = "active_bone" diff --git a/release/scripts/ui/properties_data_camera.py b/release/scripts/ui/properties_data_camera.py index 3af875d6239..e8cba6be7df 100644 --- a/release/scripts/ui/properties_data_camera.py +++ b/release/scripts/ui/properties_data_camera.py @@ -47,10 +47,10 @@ class DATA_PT_context_camera(DataButtonsPanel): split = layout.split(percentage=0.65) if ob: split.template_ID(ob, "data") - split.itemS() + split.separator() elif cam: split.template_ID(space, "pin_id") - split.itemS() + split.separator() else: if ob: layout.template_ID(ob, "data") @@ -68,50 +68,50 @@ class DATA_PT_camera(DataButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(cam, "type", expand=True) + layout.prop(cam, "type", expand=True) else: - layout.itemR(cam, "type", text="") + layout.prop(cam, "type", text="") split = layout.split() col = split.column() if cam.type == 'PERSP': if cam.lens_unit == 'MILLIMETERS': - col.itemR(cam, "lens", text="Angle") + col.prop(cam, "lens", text="Angle") elif cam.lens_unit == 'DEGREES': - col.itemR(cam, "angle") + col.prop(cam, "angle") if wide_ui: col = split.column() - col.itemR(cam, "lens_unit", text="") + col.prop(cam, "lens_unit", text="") elif cam.type == 'ORTHO': - col.itemR(cam, "ortho_scale") + col.prop(cam, "ortho_scale") - layout.itemR(cam, "panorama") + layout.prop(cam, "panorama") split = layout.split() col = split.column(align=True) - col.itemL(text="Shift:") - col.itemR(cam, "shift_x", text="X") - col.itemR(cam, "shift_y", text="Y") + col.label(text="Shift:") + col.prop(cam, "shift_x", text="X") + col.prop(cam, "shift_y", text="Y") if wide_ui: col = split.column(align=True) - col.itemL(text="Clipping:") - col.itemR(cam, "clip_start", text="Start") - col.itemR(cam, "clip_end", text="End") + col.label(text="Clipping:") + col.prop(cam, "clip_start", text="Start") + col.prop(cam, "clip_end", text="End") - layout.itemL(text="Depth of Field:") + layout.label(text="Depth of Field:") split = layout.split() col = split.column() - col.itemR(cam, "dof_object", text="") + col.prop(cam, "dof_object", text="") if wide_ui: col = split.column() - col.itemR(cam, "dof_distance", text="Distance") + col.prop(cam, "dof_distance", text="Distance") class DATA_PT_camera_display(DataButtonsPanel): @@ -126,19 +126,19 @@ class DATA_PT_camera_display(DataButtonsPanel): split = layout.split() col = split.column() - col.itemR(cam, "show_limits", text="Limits") - col.itemR(cam, "show_mist", text="Mist") - col.itemR(cam, "show_title_safe", text="Title Safe") - col.itemR(cam, "show_name", text="Name") + col.prop(cam, "show_limits", text="Limits") + col.prop(cam, "show_mist", text="Mist") + col.prop(cam, "show_title_safe", text="Title Safe") + col.prop(cam, "show_name", text="Name") if wide_ui: col = split.column() - col.itemR(cam, "draw_size", text="Size") - col.itemS() - col.itemR(cam, "show_passepartout", text="Passepartout") + col.prop(cam, "draw_size", text="Size") + col.separator() + col.prop(cam, "show_passepartout", text="Passepartout") sub = col.column() sub.active = cam.show_passepartout - sub.itemR(cam, "passepartout_alpha", text="Alpha", slider=True) + sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True) bpy.types.register(DATA_PT_context_camera) bpy.types.register(DATA_PT_camera) diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index aa7e586da5d..9a7961cfa33 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -64,10 +64,10 @@ class DATA_PT_context_curve(DataButtonsPanel): if ob: split.template_ID(ob, "data") - split.itemS() + split.separator() elif curve: split.template_ID(space, "pin_id") - split.itemS() + split.separator() else: layout.template_ID(ob, "data") @@ -87,42 +87,42 @@ class DATA_PT_shape_curve(DataButtonsPanel): if is_curve: row = layout.row() - row.itemR(curve, "dimensions", expand=True) + row.prop(curve, "dimensions", expand=True) split = layout.split() col = split.column() - col.itemL(text="Resolution:") + col.label(text="Resolution:") sub = col.column(align=True) - sub.itemR(curve, "resolution_u", text="Preview U") - sub.itemR(curve, "render_resolution_u", text="Render U") + sub.prop(curve, "resolution_u", text="Preview U") + sub.prop(curve, "render_resolution_u", text="Render U") if is_curve: - col.itemL(text="Twisting:") - col.itemR(curve, "twist_mode", text="") - col.itemR(curve, "twist_smooth", text="Smooth") + col.label(text="Twisting:") + col.prop(curve, "twist_mode", text="") + col.prop(curve, "twist_smooth", text="Smooth") if is_text: - col.itemL(text="Display:") - col.itemR(curve, "fast", text="Fast Editing") + col.label(text="Display:") + col.prop(curve, "fast", text="Fast Editing") if wide_ui: col = split.column() if is_surf: sub = col.column(align=True) - sub.itemL(text="") - sub.itemR(curve, "resolution_v", text="Preview V") - sub.itemR(curve, "render_resolution_v", text="Render V") + sub.label(text="") + sub.prop(curve, "resolution_v", text="Preview V") + sub.prop(curve, "render_resolution_v", text="Render V") if is_curve or is_text: sub = col.column() sub.active = (curve.dimensions == '2D') - sub.itemL(text="Caps:") - sub.itemR(curve, "front") - sub.itemR(curve, "back") + sub.label(text="Caps:") + sub.prop(curve, "front") + sub.prop(curve, "back") - col.itemL(text="Textures:") -# col.itemR(curve, "uv_orco") - col.itemR(curve, "auto_texspace") + col.label(text="Textures:") +# col.prop(curve, "uv_orco") + col.prop(curve, "auto_texspace") class DATA_PT_geometry_curve(DataButtonsPanel): @@ -137,19 +137,19 @@ class DATA_PT_geometry_curve(DataButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Modification:") - col.itemR(curve, "width") - col.itemR(curve, "extrude") - col.itemL(text="Taper Object:") - col.itemR(curve, "taper_object", text="") + col.label(text="Modification:") + col.prop(curve, "width") + col.prop(curve, "extrude") + col.label(text="Taper Object:") + col.prop(curve, "taper_object", text="") if wide_ui: col = split.column() - col.itemL(text="Bevel:") - col.itemR(curve, "bevel_depth", text="Depth") - col.itemR(curve, "bevel_resolution", text="Resolution") - col.itemL(text="Bevel Object:") - col.itemR(curve, "bevel_object", text="") + col.label(text="Bevel:") + col.prop(curve, "bevel_depth", text="Depth") + col.prop(curve, "bevel_resolution", text="Resolution") + col.label(text="Bevel Object:") + col.prop(curve, "bevel_object", text="") class DATA_PT_pathanim(DataButtonsPanelCurve): @@ -158,7 +158,7 @@ class DATA_PT_pathanim(DataButtonsPanelCurve): def draw_header(self, context): curve = context.curve - self.layout.itemR(curve, "use_path", text="") + self.layout.prop(curve, "use_path", text="") def draw(self, context): layout = self.layout @@ -169,21 +169,21 @@ class DATA_PT_pathanim(DataButtonsPanelCurve): layout.active = curve.use_path row = layout.row() - layout.itemR(curve, "path_length", text="Frames") + layout.prop(curve, "path_length", text="Frames") if wide_ui: - row.itemL() + row.label() split = layout.split() col = split.column() - col.itemR(curve, "use_path_follow") - col.itemR(curve, "use_stretch") + col.prop(curve, "use_path_follow") + col.prop(curve, "use_stretch") if wide_ui: col = split.column() - col.itemR(curve, "use_radius") - col.itemR(curve, "use_time_offset", text="Offset Children") + col.prop(curve, "use_radius") + col.prop(curve, "use_time_offset", text="Offset Children") class DATA_PT_active_spline(DataButtonsPanelActive): @@ -204,57 +204,57 @@ class DATA_PT_active_spline(DataButtonsPanelActive): # These settings are below but its easier to have # poly's set aside since they use so few settings col = split.column() - col.itemL(text="Cyclic:") - col.itemR(act_spline, "smooth") + col.label(text="Cyclic:") + col.prop(act_spline, "smooth") col = split.column() - col.itemR(act_spline, "cyclic_u", text="U") + col.prop(act_spline, "cyclic_u", text="U") else: col = split.column() - col.itemL(text="Cyclic:") + col.label(text="Cyclic:") if act_spline.type == 'NURBS': - col.itemL(text="Bezier:") - col.itemL(text="Endpoint:") - col.itemL(text="Order:") + col.label(text="Bezier:") + col.label(text="Endpoint:") + col.label(text="Order:") - col.itemL(text="Resolution:") + col.label(text="Resolution:") col = split.column() - col.itemR(act_spline, "cyclic_u", text="U") + col.prop(act_spline, "cyclic_u", text="U") if act_spline.type == 'NURBS': sub = col.column() # sub.active = (not act_spline.cyclic_u) - sub.itemR(act_spline, "bezier_u", text="U") - sub.itemR(act_spline, "endpoint_u", text="U") + sub.prop(act_spline, "bezier_u", text="U") + sub.prop(act_spline, "endpoint_u", text="U") sub = col.column() - sub.itemR(act_spline, "order_u", text="U") - col.itemR(act_spline, "resolution_u", text="U") + sub.prop(act_spline, "order_u", text="U") + col.prop(act_spline, "resolution_u", text="U") if is_surf: col = split.column() - col.itemR(act_spline, "cyclic_v", text="V") + col.prop(act_spline, "cyclic_v", text="V") # its a surface, assume its a nurb. sub = col.column() sub.active = (not act_spline.cyclic_v) - sub.itemR(act_spline, "bezier_v", text="V") - sub.itemR(act_spline, "endpoint_v", text="V") + sub.prop(act_spline, "bezier_v", text="V") + sub.prop(act_spline, "endpoint_v", text="V") sub = col.column() - sub.itemR(act_spline, "order_v", text="V") - sub.itemR(act_spline, "resolution_v", text="V") + sub.prop(act_spline, "order_v", text="V") + sub.prop(act_spline, "resolution_v", text="V") if not is_surf: split = layout.split() col = split.column() col.active = (curve.dimensions == '3D') - col.itemL(text="Interpolation:") - col.itemR(act_spline, "tilt_interpolation", text="Tilt") - col.itemR(act_spline, "radius_interpolation", text="Radius") + col.label(text="Interpolation:") + col.prop(act_spline, "tilt_interpolation", text="Tilt") + col.prop(act_spline, "radius_interpolation", text="Radius") - layout.itemR(act_spline, "smooth") + layout.prop(act_spline, "smooth") class DATA_PT_font(DataButtonsPanel): @@ -271,44 +271,44 @@ class DATA_PT_font(DataButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(text, "font") + layout.prop(text, "font") else: - layout.itemR(text, "font", text="") + layout.prop(text, "font", text="") split = layout.split() col = split.column() - col.itemR(text, "text_size", text="Size") + col.prop(text, "text_size", text="Size") if wide_ui: col = split.column() - col.itemR(text, "shear") + col.prop(text, "shear") split = layout.split() col = split.column() - col.itemL(text="Object Font:") - col.itemR(text, "family", text="") + col.label(text="Object Font:") + col.prop(text, "family", text="") if wide_ui: col = split.column() - col.itemL(text="Text on Curve:") - col.itemR(text, "text_on_curve", text="") + col.label(text="Text on Curve:") + col.prop(text, "text_on_curve", text="") split = layout.split() col = split.column(align=True) - col.itemL(text="Underline:") - col.itemR(text, "ul_position", text="Position") - col.itemR(text, "ul_height", text="Thickness") + col.label(text="Underline:") + col.prop(text, "ul_position", text="Position") + col.prop(text, "ul_height", text="Thickness") if wide_ui: col = split.column() - col.itemL(text="Character:") - col.itemR(char, "bold") - col.itemR(char, "italic") - col.itemR(char, "underline") -# col.itemR(char, "style") -# col.itemR(char, "wrap") + col.label(text="Character:") + col.prop(char, "bold") + col.prop(char, "italic") + col.prop(char, "underline") +# col.prop(char, "style") +# col.prop(char, "wrap") class DATA_PT_paragraph(DataButtonsPanel): @@ -323,25 +323,25 @@ class DATA_PT_paragraph(DataButtonsPanel): text = context.curve wide_ui = context.region.width > narrowui - layout.itemL(text="Align:") + layout.label(text="Align:") if wide_ui: - layout.itemR(text, "spacemode", expand=True) + layout.prop(text, "spacemode", expand=True) else: - layout.itemR(text, "spacemode", text="") + layout.prop(text, "spacemode", text="") split = layout.split() col = split.column(align=True) - col.itemL(text="Spacing:") - col.itemR(text, "spacing", text="Character") - col.itemR(text, "word_spacing", text="Word") - col.itemR(text, "line_dist", text="Line") + col.label(text="Spacing:") + col.prop(text, "spacing", text="Character") + col.prop(text, "word_spacing", text="Word") + col.prop(text, "line_dist", text="Line") if wide_ui: col = split.column(align=True) - col.itemL(text="Offset:") - col.itemR(text, "offset_x", text="X") - col.itemR(text, "offset_y", text="Y") + col.label(text="Offset:") + col.prop(text, "offset_x", text="X") + col.prop(text, "offset_y", text="Y") class DATA_PT_textboxes(DataButtonsPanel): @@ -360,15 +360,15 @@ class DATA_PT_textboxes(DataButtonsPanel): split = layout.box().split() col = split.column(align=True) - col.itemL(text="Dimensions:") - col.itemR(box, "width", text="Width") - col.itemR(box, "height", text="Height") + col.label(text="Dimensions:") + col.prop(box, "width", text="Width") + col.prop(box, "height", text="Height") if wide_ui: col = split.column(align=True) - col.itemL(text="Offset:") - col.itemR(box, "x", text="X") - col.itemR(box, "y", text="Y") + col.label(text="Offset:") + col.prop(box, "x", text="X") + col.prop(box, "y", text="Y") bpy.types.register(DATA_PT_context_curve) bpy.types.register(DATA_PT_shape_curve) diff --git a/release/scripts/ui/properties_data_empty.py b/release/scripts/ui/properties_data_empty.py index eb84902b0bd..9f304d2dc1b 100644 --- a/release/scripts/ui/properties_data_empty.py +++ b/release/scripts/ui/properties_data_empty.py @@ -41,10 +41,10 @@ class DATA_PT_empty(DataButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(ob, "empty_draw_type", text="Display") + layout.prop(ob, "empty_draw_type", text="Display") else: - layout.itemR(ob, "empty_draw_type", text="") + layout.prop(ob, "empty_draw_type", text="") - layout.itemR(ob, "empty_draw_size", text="Size") + layout.prop(ob, "empty_draw_size", text="Size") bpy.types.register(DATA_PT_empty) diff --git a/release/scripts/ui/properties_data_lamp.py b/release/scripts/ui/properties_data_lamp.py index 9a3785415ac..d5025983ff3 100644 --- a/release/scripts/ui/properties_data_lamp.py +++ b/release/scripts/ui/properties_data_lamp.py @@ -54,10 +54,10 @@ class DATA_PT_context_lamp(DataButtonsPanel): split = layout.split(percentage=0.65) if ob: split.template_ID(ob, "data") - split.itemS() + split.separator() elif lamp: split.template_ID(space, "pin_id") - split.itemS() + split.separator() else: if ob: layout.template_ID(ob, "data") @@ -75,40 +75,40 @@ class DATA_PT_lamp(DataButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(lamp, "type", expand=True) + layout.prop(lamp, "type", expand=True) else: - layout.itemR(lamp, "type", text="") + layout.prop(lamp, "type", text="") split = layout.split() col = split.column() sub = col.column() - sub.itemR(lamp, "color", text="") - sub.itemR(lamp, "energy") + sub.prop(lamp, "color", text="") + sub.prop(lamp, "energy") if lamp.type in ('POINT', 'SPOT'): - sub.itemL(text="Falloff:") - sub.itemR(lamp, "falloff_type", text="") - sub.itemR(lamp, "distance") + sub.label(text="Falloff:") + sub.prop(lamp, "falloff_type", text="") + sub.prop(lamp, "distance") if lamp.falloff_type == 'LINEAR_QUADRATIC_WEIGHTED': - col.itemL(text="Attenuation Factors:") + col.label(text="Attenuation Factors:") sub = col.column(align=True) - sub.itemR(lamp, "linear_attenuation", slider=True, text="Linear") - sub.itemR(lamp, "quadratic_attenuation", slider=True, text="Quadratic") + sub.prop(lamp, "linear_attenuation", slider=True, text="Linear") + sub.prop(lamp, "quadratic_attenuation", slider=True, text="Quadratic") - col.itemR(lamp, "sphere") + col.prop(lamp, "sphere") if lamp.type == 'AREA': - col.itemR(lamp, "distance") - col.itemR(lamp, "gamma") + col.prop(lamp, "distance") + col.prop(lamp, "gamma") if wide_ui: col = split.column() - col.itemR(lamp, "negative") - col.itemR(lamp, "layer", text="This Layer Only") - col.itemR(lamp, "specular") - col.itemR(lamp, "diffuse") + col.prop(lamp, "negative") + col.prop(lamp, "layer", text="This Layer Only") + col.prop(lamp, "specular") + col.prop(lamp, "diffuse") class DATA_PT_sunsky(DataButtonsPanel): @@ -124,59 +124,59 @@ class DATA_PT_sunsky(DataButtonsPanel): lamp = context.lamp.sky wide_ui = context.region.width > narrowui - layout.itemR(lamp, "sky") + layout.prop(lamp, "sky") row = layout.row() row.active = lamp.sky or lamp.atmosphere - row.itemR(lamp, "atmosphere_turbidity", text="Turbidity") + row.prop(lamp, "atmosphere_turbidity", text="Turbidity") split = layout.split() col = split.column() col.active = lamp.sky - col.itemL(text="Blending:") + col.label(text="Blending:") sub = col.column() - sub.itemR(lamp, "sky_blend_type", text="") - sub.itemR(lamp, "sky_blend", text="Factor") + sub.prop(lamp, "sky_blend_type", text="") + sub.prop(lamp, "sky_blend", text="Factor") - col.itemL(text="Color Space:") + col.label(text="Color Space:") sub = col.column() - sub.row().itemR(lamp, "sky_color_space", expand=True) - sub.itemR(lamp, "sky_exposure", text="Exposure") + sub.row().prop(lamp, "sky_color_space", expand=True) + sub.prop(lamp, "sky_exposure", text="Exposure") if wide_ui: col = split.column() col.active = lamp.sky - col.itemL(text="Horizon:") + col.label(text="Horizon:") sub = col.column() - sub.itemR(lamp, "horizon_brightness", text="Brightness") - sub.itemR(lamp, "spread", text="Spread") + sub.prop(lamp, "horizon_brightness", text="Brightness") + sub.prop(lamp, "spread", text="Spread") - col.itemL(text="Sun:") + col.label(text="Sun:") sub = col.column() - sub.itemR(lamp, "sun_brightness", text="Brightness") - sub.itemR(lamp, "sun_size", text="Size") - sub.itemR(lamp, "backscattered_light", slider=True, text="Back Light") + sub.prop(lamp, "sun_brightness", text="Brightness") + sub.prop(lamp, "sun_size", text="Size") + sub.prop(lamp, "backscattered_light", slider=True, text="Back Light") - layout.itemS() + layout.separator() - layout.itemR(lamp, "atmosphere") + layout.prop(lamp, "atmosphere") split = layout.split() col = split.column() col.active = lamp.atmosphere - col.itemL(text="Intensity:") - col.itemR(lamp, "sun_intensity", text="Sun") - col.itemR(lamp, "atmosphere_distance_factor", text="Distance") + col.label(text="Intensity:") + col.prop(lamp, "sun_intensity", text="Sun") + col.prop(lamp, "atmosphere_distance_factor", text="Distance") if wide_ui: col = split.column() col.active = lamp.atmosphere - col.itemL(text="Scattering:") + col.label(text="Scattering:") sub = col.column(align=True) - sub.itemR(lamp, "atmosphere_inscattering", slider=True, text="Inscattering") - sub.itemR(lamp, "atmosphere_extinction", slider=True, text="Extinction") + sub.prop(lamp, "atmosphere_inscattering", slider=True, text="Inscattering") + sub.prop(lamp, "atmosphere_extinction", slider=True, text="Extinction") class DATA_PT_shadow(DataButtonsPanel): @@ -193,38 +193,38 @@ class DATA_PT_shadow(DataButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(lamp, "shadow_method", expand=True) + layout.prop(lamp, "shadow_method", expand=True) else: - layout.itemR(lamp, "shadow_method", text="") + layout.prop(lamp, "shadow_method", text="") if lamp.shadow_method != 'NOSHADOW': split = layout.split() col = split.column() - col.itemR(lamp, "shadow_color", text="") + col.prop(lamp, "shadow_color", text="") if wide_ui: col = split.column() - col.itemR(lamp, "shadow_layer", text="This Layer Only") - col.itemR(lamp, "only_shadow") + col.prop(lamp, "shadow_layer", text="This Layer Only") + col.prop(lamp, "only_shadow") if lamp.shadow_method == 'RAY_SHADOW': col = layout.column() - col.itemL(text="Sampling:") + col.label(text="Sampling:") if wide_ui: - col.row().itemR(lamp, "shadow_ray_sampling_method", expand=True) + col.row().prop(lamp, "shadow_ray_sampling_method", expand=True) else: - col.itemR(lamp, "shadow_ray_sampling_method", text="") + col.prop(lamp, "shadow_ray_sampling_method", text="") if lamp.type in ('POINT', 'SUN', 'SPOT'): split = layout.split() col = split.column() - col.itemR(lamp, "shadow_soft_size", text="Soft Size") + col.prop(lamp, "shadow_soft_size", text="Soft Size") - col.itemR(lamp, "shadow_ray_samples", text="Samples") + col.prop(lamp, "shadow_ray_samples", text="Samples") if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC': - col.itemR(lamp, "shadow_adaptive_threshold", text="Threshold") + col.prop(lamp, "shadow_adaptive_threshold", text="Threshold") if wide_ui: col = split.column() @@ -234,22 +234,22 @@ class DATA_PT_shadow(DataButtonsPanel): col = split.column() if lamp.shape == 'SQUARE': - col.itemR(lamp, "shadow_ray_samples_x", text="Samples") + col.prop(lamp, "shadow_ray_samples_x", text="Samples") elif lamp.shape == 'RECTANGLE': - col.itemR(lamp, "shadow_ray_samples_x", text="Samples X") - col.itemR(lamp, "shadow_ray_samples_y", text="Samples Y") + col.prop(lamp, "shadow_ray_samples_x", text="Samples X") + col.prop(lamp, "shadow_ray_samples_y", text="Samples Y") if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC': - col.itemR(lamp, "shadow_adaptive_threshold", text="Threshold") + col.prop(lamp, "shadow_adaptive_threshold", text="Threshold") if wide_ui: col = split.column() elif lamp.shadow_ray_sampling_method == 'CONSTANT_JITTERED': if wide_ui: col = split.column() - col.itemR(lamp, "umbra") - col.itemR(lamp, "dither") - col.itemR(lamp, "jitter") + col.prop(lamp, "umbra") + col.prop(lamp, "dither") + col.prop(lamp, "jitter") else: if wide_ui: col = split.column() @@ -257,49 +257,49 @@ class DATA_PT_shadow(DataButtonsPanel): elif lamp.shadow_method == 'BUFFER_SHADOW': col = layout.column() - col.itemL(text="Buffer Type:") + col.label(text="Buffer Type:") if wide_ui: - col.row().itemR(lamp, "shadow_buffer_type", expand=True) + col.row().prop(lamp, "shadow_buffer_type", expand=True) else: - col.row().itemR(lamp, "shadow_buffer_type", text="") + col.row().prop(lamp, "shadow_buffer_type", text="") if lamp.shadow_buffer_type in ('REGULAR', 'HALFWAY', 'DEEP'): split = layout.split() col = split.column() - col.itemL(text="Filter Type:") - col.itemR(lamp, "shadow_filter_type", text="") + col.label(text="Filter Type:") + col.prop(lamp, "shadow_filter_type", text="") sub = col.column(align=True) - sub.itemR(lamp, "shadow_buffer_soft", text="Soft") - sub.itemR(lamp, "shadow_buffer_bias", text="Bias") + sub.prop(lamp, "shadow_buffer_soft", text="Soft") + sub.prop(lamp, "shadow_buffer_bias", text="Bias") if wide_ui: col = split.column() - col.itemL(text="Sample Buffers:") - col.itemR(lamp, "shadow_sample_buffers", text="") + col.label(text="Sample Buffers:") + col.prop(lamp, "shadow_sample_buffers", text="") sub = col.column(align=True) - sub.itemR(lamp, "shadow_buffer_size", text="Size") - sub.itemR(lamp, "shadow_buffer_samples", text="Samples") + sub.prop(lamp, "shadow_buffer_size", text="Size") + sub.prop(lamp, "shadow_buffer_samples", text="Samples") if lamp.shadow_buffer_type == 'DEEP': - col.itemR(lamp, "compression_threshold") + col.prop(lamp, "compression_threshold") elif lamp.shadow_buffer_type == 'IRREGULAR': - layout.itemR(lamp, "shadow_buffer_bias", text="Bias") + layout.prop(lamp, "shadow_buffer_bias", text="Bias") split = layout.split() col = split.column() - col.itemR(lamp, "auto_clip_start", text="Autoclip Start") + col.prop(lamp, "auto_clip_start", text="Autoclip Start") sub = col.column() sub.active = not lamp.auto_clip_start - sub.itemR(lamp, "shadow_buffer_clip_start", text="Clip Start") + sub.prop(lamp, "shadow_buffer_clip_start", text="Clip Start") if wide_ui: col = split.column() - col.itemR(lamp, "auto_clip_end", text="Autoclip End") + col.prop(lamp, "auto_clip_end", text="Autoclip End") sub = col.column() sub.active = not lamp.auto_clip_end - sub.itemR(lamp, "shadow_buffer_clip_end", text=" Clip End") + sub.prop(lamp, "shadow_buffer_clip_end", text=" Clip End") class DATA_PT_area(DataButtonsPanel): @@ -317,14 +317,14 @@ class DATA_PT_area(DataButtonsPanel): split = layout.split() col = split.column() - col.row().itemR(lamp, "shape", expand=True) + col.row().prop(lamp, "shape", expand=True) sub = col.column(align=True) if (lamp.shape == 'SQUARE'): - sub.itemR(lamp, "size") + sub.prop(lamp, "size") elif (lamp.shape == 'RECTANGLE'): - sub.itemR(lamp, "size", text="Size X") - sub.itemR(lamp, "size_y", text="Size Y") + sub.prop(lamp, "size", text="Size X") + sub.prop(lamp, "size_y", text="Size Y") class DATA_PT_spot(DataButtonsPanel): @@ -344,20 +344,20 @@ class DATA_PT_spot(DataButtonsPanel): col = split.column() sub = col.column() - sub.itemR(lamp, "spot_size", text="Size") - sub.itemR(lamp, "spot_blend", text="Blend", slider=True) - col.itemR(lamp, "square") + sub.prop(lamp, "spot_size", text="Size") + sub.prop(lamp, "spot_blend", text="Blend", slider=True) + col.prop(lamp, "square") if wide_ui: col = split.column() else: - col.itemS() - col.itemR(lamp, "halo") + col.separator() + col.prop(lamp, "halo") sub = col.column(align=True) sub.active = lamp.halo - sub.itemR(lamp, "halo_intensity", text="Intensity") + sub.prop(lamp, "halo_intensity", text="Intensity") if lamp.shadow_method == 'BUFFER_SHADOW': - sub.itemR(lamp, "halo_step", text="Step") + sub.prop(lamp, "halo_step", text="Step") class DATA_PT_falloff_curve(DataButtonsPanel): diff --git a/release/scripts/ui/properties_data_lattice.py b/release/scripts/ui/properties_data_lattice.py index e8aeebcf208..640f625a7de 100644 --- a/release/scripts/ui/properties_data_lattice.py +++ b/release/scripts/ui/properties_data_lattice.py @@ -47,10 +47,10 @@ class DATA_PT_context_lattice(DataButtonsPanel): split = layout.split(percentage=0.65) if ob: split.template_ID(ob, "data") - split.itemS() + split.separator() elif lat: split.template_ID(space, "pin_id") - split.itemS() + split.separator() else: if ob: layout.template_ID(ob, "data") @@ -69,26 +69,26 @@ class DATA_PT_lattice(DataButtonsPanel): split = layout.split() col = split.column() - col.itemR(lat, "points_u") + col.prop(lat, "points_u") if wide_ui: col = split.column() - col.itemR(lat, "interpolation_type_u", text="") + col.prop(lat, "interpolation_type_u", text="") split = layout.split() col = split.column() - col.itemR(lat, "points_v") + col.prop(lat, "points_v") if wide_ui: col = split.column() - col.itemR(lat, "interpolation_type_v", text="") + col.prop(lat, "interpolation_type_v", text="") split = layout.split() col = split.column() - col.itemR(lat, "points_w") + col.prop(lat, "points_w") if wide_ui: col = split.column() - col.itemR(lat, "interpolation_type_w", text="") + col.prop(lat, "interpolation_type_w", text="") - layout.itemR(lat, "outside") + layout.prop(lat, "outside") bpy.types.register(DATA_PT_context_lattice) bpy.types.register(DATA_PT_lattice) diff --git a/release/scripts/ui/properties_data_mesh.py b/release/scripts/ui/properties_data_mesh.py index acbeb3552de..46866a89671 100644 --- a/release/scripts/ui/properties_data_mesh.py +++ b/release/scripts/ui/properties_data_mesh.py @@ -47,10 +47,10 @@ class DATA_PT_context_mesh(DataButtonsPanel): split = layout.split(percentage=0.65) if ob: split.template_ID(ob, "data") - split.itemS() + split.separator() elif mesh: split.template_ID(space, "pin_id") - split.itemS() + split.separator() else: if ob: layout.template_ID(ob, "data") @@ -70,17 +70,17 @@ class DATA_PT_normals(DataButtonsPanel): split = layout.split() col = split.column() - col.itemR(mesh, "autosmooth") + col.prop(mesh, "autosmooth") sub = col.column() sub.active = mesh.autosmooth - sub.itemR(mesh, "autosmooth_angle", text="Angle") + sub.prop(mesh, "autosmooth_angle", text="Angle") if wide_ui: col = split.column() else: - col.itemS() - col.itemR(mesh, "vertex_normal_flip") - col.itemR(mesh, "double_sided") + col.separator() + col.prop(mesh, "vertex_normal_flip") + col.prop(mesh, "double_sided") class DATA_PT_settings(DataButtonsPanel): @@ -91,7 +91,7 @@ class DATA_PT_settings(DataButtonsPanel): mesh = context.mesh - layout.itemR(mesh, "texture_mesh") + layout.prop(mesh, "texture_mesh") class DATA_PT_vertex_groups(DataButtonsPanel): @@ -114,29 +114,29 @@ class DATA_PT_vertex_groups(DataButtonsPanel): row.template_list(ob, "vertex_groups", ob, "active_vertex_group_index", rows=rows) col = row.column(align=True) - col.itemO("object.vertex_group_add", icon='ICON_ZOOMIN', text="") - col.itemO("object.vertex_group_remove", icon='ICON_ZOOMOUT', text="") + col.operator("object.vertex_group_add", icon='ICON_ZOOMIN', text="") + col.operator("object.vertex_group_remove", icon='ICON_ZOOMOUT', text="") - col.itemO("object.vertex_group_copy", icon='ICON_COPY_ID', text="") + col.operator("object.vertex_group_copy", icon='ICON_COPY_ID', text="") if ob.data.users > 1: - col.itemO("object.vertex_group_copy_to_linked", icon='ICON_LINK_AREA', text="") + col.operator("object.vertex_group_copy_to_linked", icon='ICON_LINK_AREA', text="") if group: row = layout.row() - row.itemR(group, "name") + row.prop(group, "name") if ob.mode == 'EDIT' and len(ob.vertex_groups) > 0: row = layout.row() sub = row.row(align=True) - sub.itemO("object.vertex_group_assign", text="Assign") - sub.itemO("object.vertex_group_remove_from", text="Remove") + sub.operator("object.vertex_group_assign", text="Assign") + sub.operator("object.vertex_group_remove_from", text="Remove") sub = row.row(align=True) - sub.itemO("object.vertex_group_select", text="Select") - sub.itemO("object.vertex_group_deselect", text="Deselect") + sub.operator("object.vertex_group_select", text="Select") + sub.operator("object.vertex_group_deselect", text="Deselect") - layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight") + layout.prop(context.tool_settings, "vertex_group_weight", text="Weight") class DATA_PT_shape_keys(DataButtonsPanel): @@ -156,7 +156,7 @@ class DATA_PT_shape_keys(DataButtonsPanel): enable_edit = ob.mode != 'EDIT' enable_edit_value = False - if ob.shape_key_lock == False: + if ob.shape_key_lock is False: if enable_edit or (ob.type == 'MESH' and ob.shape_key_edit_mode): enable_edit_value = True @@ -170,27 +170,27 @@ class DATA_PT_shape_keys(DataButtonsPanel): col = row.column() sub = col.column(align=True) - sub.itemO("object.shape_key_add", icon='ICON_ZOOMIN', text="") - sub.itemO("object.shape_key_remove", icon='ICON_ZOOMOUT', text="") + sub.operator("object.shape_key_add", icon='ICON_ZOOMIN', text="") + sub.operator("object.shape_key_remove", icon='ICON_ZOOMOUT', text="") if kb: - col.itemS() + col.separator() sub = col.column(align=True) - sub.item_enumO("object.shape_key_move", "type", 'UP', icon='ICON_TRIA_UP', text="") - sub.item_enumO("object.shape_key_move", "type", 'DOWN', icon='ICON_TRIA_DOWN', text="") + sub.operator("object.shape_key_move", icon='ICON_TRIA_UP', text="").type = 'UP' + sub.operator("object.shape_key_move", icon='ICON_TRIA_DOWN', text="").type = 'DOWN' split = layout.split(percentage=0.4) row = split.row() row.enabled = enable_edit if wide_ui: - row.itemR(key, "relative") + row.prop(key, "relative") row = split.row() row.alignment = 'RIGHT' if not wide_ui: - layout.itemR(key, "relative") + layout.prop(key, "relative") row = layout.row() @@ -198,48 +198,48 @@ class DATA_PT_shape_keys(DataButtonsPanel): subsub = sub.row(align=True) subsub.active = enable_edit_value if ob.shape_key_lock: - subsub.itemR(ob, "shape_key_lock", icon='ICON_PINNED', text="") + subsub.prop(ob, "shape_key_lock", icon='ICON_PINNED', text="") else: - subsub.itemR(ob, "shape_key_lock", icon='ICON_UNPINNED', text="") + subsub.prop(ob, "shape_key_lock", icon='ICON_UNPINNED', text="") if kb.mute: - subsub.itemR(kb, "mute", icon='ICON_MUTE_IPO_ON', text="") + subsub.prop(kb, "mute", icon='ICON_MUTE_IPO_ON', text="") else: - subsub.itemR(kb, "mute", icon='ICON_MUTE_IPO_OFF', text="") - sub.itemR(ob, "shape_key_edit_mode", text="") + subsub.prop(kb, "mute", icon='ICON_MUTE_IPO_OFF', text="") + sub.prop(ob, "shape_key_edit_mode", text="") sub = row.row(align=True) - sub.itemO("object.shape_key_mirror", icon='ICON_ARROW_LEFTRIGHT', text="") - sub.itemO("object.shape_key_clear", icon='ICON_X', text="") + sub.operator("object.shape_key_mirror", icon='ICON_ARROW_LEFTRIGHT', text="") + sub.operator("object.shape_key_clear", icon='ICON_X', text="") row = layout.row() - row.itemR(kb, "name") + row.prop(kb, "name") if key.relative: if ob.active_shape_key_index != 0: row = layout.row() row.active = enable_edit_value - row.itemR(kb, "value") + row.prop(kb, "value") split = layout.split() col = split.column(align=True) col.active = enable_edit_value - col.itemL(text="Range:") - col.itemR(kb, "slider_min", text="Min") - col.itemR(kb, "slider_max", text="Max") + col.label(text="Range:") + col.prop(kb, "slider_min", text="Min") + col.prop(kb, "slider_max", text="Max") if wide_ui: col = split.column(align=True) col.active = enable_edit_value - col.itemL(text="Blend:") - col.item_pointerR(kb, "vertex_group", ob, "vertex_groups", text="") - col.item_pointerR(kb, "relative_key", key, "keys", text="") + col.label(text="Blend:") + col.prop_object(kb, "vertex_group", ob, "vertex_groups", text="") + col.prop_object(kb, "relative_key", key, "keys", text="") else: row = layout.row() row.active = enable_edit_value - row.itemR(key, "slurph") + row.prop(key, "slurph") class DATA_PT_uv_texture(DataButtonsPanel): @@ -256,12 +256,12 @@ class DATA_PT_uv_texture(DataButtonsPanel): col.template_list(me, "uv_textures", me, "active_uv_texture_index", rows=2) col = row.column(align=True) - col.itemO("mesh.uv_texture_add", icon='ICON_ZOOMIN', text="") - col.itemO("mesh.uv_texture_remove", icon='ICON_ZOOMOUT', text="") + col.operator("mesh.uv_texture_add", icon='ICON_ZOOMIN', text="") + col.operator("mesh.uv_texture_remove", icon='ICON_ZOOMOUT', text="") lay = me.active_uv_texture if lay: - layout.itemR(lay, "name") + layout.prop(lay, "name") class DATA_PT_vertex_colors(DataButtonsPanel): @@ -278,12 +278,12 @@ class DATA_PT_vertex_colors(DataButtonsPanel): col.template_list(me, "vertex_colors", me, "active_vertex_color_index", rows=2) col = row.column(align=True) - col.itemO("mesh.vertex_color_add", icon='ICON_ZOOMIN', text="") - col.itemO("mesh.vertex_color_remove", icon='ICON_ZOOMOUT', text="") + col.operator("mesh.vertex_color_add", icon='ICON_ZOOMIN', text="") + col.operator("mesh.vertex_color_remove", icon='ICON_ZOOMOUT', text="") lay = me.active_vertex_color if lay: - layout.itemR(lay, "name") + layout.prop(lay, "name") bpy.types.register(DATA_PT_context_mesh) bpy.types.register(DATA_PT_normals) diff --git a/release/scripts/ui/properties_data_metaball.py b/release/scripts/ui/properties_data_metaball.py index 96bf7246d7e..e36bdc991e1 100644 --- a/release/scripts/ui/properties_data_metaball.py +++ b/release/scripts/ui/properties_data_metaball.py @@ -47,10 +47,10 @@ class DATA_PT_context_metaball(DataButtonsPanel): split = layout.split(percentage=0.65) if ob: split.template_ID(ob, "data") - split.itemS() + split.separator() elif mball: split.template_ID(space, "pin_id") - split.itemS() + split.separator() else: if ob: layout.template_ID(ob, "data") @@ -70,21 +70,21 @@ class DATA_PT_metaball(DataButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Resolution:") + col.label(text="Resolution:") sub = col.column(align=True) - sub.itemR(mball, "wire_size", text="View") - sub.itemR(mball, "render_size", text="Render") + sub.prop(mball, "wire_size", text="View") + sub.prop(mball, "render_size", text="Render") if wide_ui: col = split.column() - col.itemL(text="Settings:") - col.itemR(mball, "threshold", text="Threshold") + col.label(text="Settings:") + col.prop(mball, "threshold", text="Threshold") - layout.itemL(text="Update:") + layout.label(text="Update:") if wide_ui: - layout.itemR(mball, "flag", expand=True) + layout.prop(mball, "flag", expand=True) else: - layout.itemR(mball, "flag", text="") + layout.prop(mball, "flag", text="") class DATA_PT_metaball_element(DataButtonsPanel): @@ -100,35 +100,35 @@ class DATA_PT_metaball_element(DataButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(metaelem, "type") + layout.prop(metaelem, "type") else: - layout.itemR(metaelem, "type", text="") + layout.prop(metaelem, "type", text="") split = layout.split() col = split.column(align=True) - col.itemL(text="Settings:") - col.itemR(metaelem, "stiffness", text="Stiffness") - col.itemR(metaelem, "negative", text="Negative") - col.itemR(metaelem, "hide", text="Hide") + col.label(text="Settings:") + col.prop(metaelem, "stiffness", text="Stiffness") + col.prop(metaelem, "negative", text="Negative") + col.prop(metaelem, "hide", text="Hide") if wide_ui: col = split.column(align=True) if metaelem.type in ('CUBE', 'ELLIPSOID'): - col.itemL(text="Size:") - col.itemR(metaelem, "size_x", text="X") - col.itemR(metaelem, "size_y", text="Y") - col.itemR(metaelem, "size_z", text="Z") + col.label(text="Size:") + col.prop(metaelem, "size_x", text="X") + col.prop(metaelem, "size_y", text="Y") + col.prop(metaelem, "size_z", text="Z") elif metaelem.type == 'TUBE': - col.itemL(text="Size:") - col.itemR(metaelem, "size_x", text="X") + col.label(text="Size:") + col.prop(metaelem, "size_x", text="X") elif metaelem.type == 'PLANE': - col.itemL(text="Size:") - col.itemR(metaelem, "size_x", text="X") - col.itemR(metaelem, "size_y", text="Y") + col.label(text="Size:") + col.prop(metaelem, "size_x", text="X") + col.prop(metaelem, "size_y", text="Y") bpy.types.register(DATA_PT_context_metaball) bpy.types.register(DATA_PT_metaball) diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 63006b27d15..c43dbd9c90a 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -38,9 +38,9 @@ class DATA_PT_modifiers(DataButtonsPanel): wide_ui = context.region.width > narrowui row = layout.row() - row.item_menu_enumO("object.modifier_add", "type") + row.operator_menu_enum("object.modifier_add", "type") if wide_ui: - row.itemL() + row.label() for md in ob.modifiers: box = layout.template_modifier(md) @@ -56,447 +56,449 @@ class DATA_PT_modifiers(DataButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Object:") - col.itemR(md, "object", text="") + col.label(text="Object:") + col.prop(md, "object", text="") if wide_ui: col = split.column() - col.itemL(text="Vertex Group::") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.label(text="Vertex Group::") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") sub = col.column() - sub.active = md.vertex_group - sub.itemR(md, "invert") + sub.active = bool(md.vertex_group) + sub.prop(md, "invert") split = layout.split() col = split.column() - col.itemL(text="Bind To:") - col.itemR(md, "use_vertex_groups", text="Vertex Groups") - col.itemR(md, "use_bone_envelopes", text="Bone Envelopes") + col.label(text="Bind To:") + col.prop(md, "use_vertex_groups", text="Vertex Groups") + col.prop(md, "use_bone_envelopes", text="Bone Envelopes") if wide_ui: col = split.column() - col.itemL(text="Deformation:") - col.itemR(md, "quaternion") - col.itemR(md, "multi_modifier") + col.label(text="Deformation:") + col.prop(md, "quaternion") + col.prop(md, "multi_modifier") def ARRAY(self, layout, ob, md, wide_ui): if wide_ui: - layout.itemR(md, "fit_type") + layout.prop(md, "fit_type") else: - layout.itemR(md, "fit_type", text="") + layout.prop(md, "fit_type", text="") if md.fit_type == 'FIXED_COUNT': - layout.itemR(md, "count") + layout.prop(md, "count") elif md.fit_type == 'FIT_LENGTH': - layout.itemR(md, "length") + layout.prop(md, "length") elif md.fit_type == 'FIT_CURVE': - layout.itemR(md, "curve") + layout.prop(md, "curve") - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemR(md, "constant_offset") + col.prop(md, "constant_offset") sub = col.column() sub.active = md.constant_offset - sub.itemR(md, "constant_offset_displacement", text="") + sub.prop(md, "constant_offset_displacement", text="") - col.itemS() + col.separator() - col.itemR(md, "merge_adjacent_vertices", text="Merge") + col.prop(md, "merge_adjacent_vertices", text="Merge") sub = col.column() sub.active = md.merge_adjacent_vertices - sub.itemR(md, "merge_end_vertices", text="First Last") - sub.itemR(md, "merge_distance", text="Distance") + sub.prop(md, "merge_end_vertices", text="First Last") + sub.prop(md, "merge_distance", text="Distance") if wide_ui: col = split.column() - col.itemR(md, "relative_offset") + col.prop(md, "relative_offset") sub = col.column() sub.active = md.relative_offset - sub.itemR(md, "relative_offset_displacement", text="") + sub.prop(md, "relative_offset_displacement", text="") - col.itemS() + col.separator() - col.itemR(md, "add_offset_object") + col.prop(md, "add_offset_object") sub = col.column() sub.active = md.add_offset_object - sub.itemR(md, "offset_object", text="") + sub.prop(md, "offset_object", text="") - layout.itemS() + layout.separator() col = layout.column() - col.itemR(md, "start_cap") - col.itemR(md, "end_cap") + col.prop(md, "start_cap") + col.prop(md, "end_cap") def BEVEL(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemR(md, "width") + col.prop(md, "width") if wide_ui: col = split.column() - col.itemR(md, "only_vertices") + col.prop(md, "only_vertices") - layout.itemL(text="Limit Method:") - layout.row().itemR(md, "limit_method", expand=True) + layout.label(text="Limit Method:") + layout.row().prop(md, "limit_method", expand=True) if md.limit_method == 'ANGLE': - layout.itemR(md, "angle") + layout.prop(md, "angle") elif md.limit_method == 'WEIGHT': - layout.row().itemR(md, "edge_weight_method", expand=True) + layout.row().prop(md, "edge_weight_method", expand=True) def BOOLEAN(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Operation:") - col.itemR(md, "operation", text="") + col.label(text="Operation:") + col.prop(md, "operation", text="") if wide_ui: col = split.column() - col.itemL(text="Object:") - col.itemR(md, "object", text="") + col.label(text="Object:") + col.prop(md, "object", text="") def BUILD(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemR(md, "start") - col.itemR(md, "length") + col.prop(md, "start") + col.prop(md, "length") if wide_ui: col = split.column() - col.itemR(md, "randomize") + col.prop(md, "randomize") sub = col.column() sub.active = md.randomize - sub.itemR(md, "seed") + sub.prop(md, "seed") def CAST(self, layout, ob, md, wide_ui): split = layout.split(percentage=0.25) if wide_ui: - split.itemL(text="Cast Type:") - split.itemR(md, "cast_type", text="") + split.label(text="Cast Type:") + split.prop(md, "cast_type", text="") else: - layout.itemR(md, "cast_type", text="") + layout.prop(md, "cast_type", text="") split = layout.split(percentage=0.25) col = split.column() - col.itemR(md, "x") - col.itemR(md, "y") - col.itemR(md, "z") + col.prop(md, "x") + col.prop(md, "y") + col.prop(md, "z") col = split.column() - col.itemR(md, "factor") - col.itemR(md, "radius") - col.itemR(md, "size") - col.itemR(md, "from_radius") + col.prop(md, "factor") + col.prop(md, "radius") + col.prop(md, "size") + col.prop(md, "from_radius") split = layout.split() col = split.column() - col.itemL(text="Vertex Group:") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.label(text="Vertex Group:") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") if wide_ui: col = split.column() - col.itemL(text="Control Object:") - col.itemR(md, "object", text="") + col.label(text="Control Object:") + col.prop(md, "object", text="") if md.object: - col.itemR(md, "use_transform") + col.prop(md, "use_transform") def CLOTH(self, layout, ob, md, wide_ui): - layout.itemL(text="See Cloth panel.") + layout.label(text="See Cloth panel.") def COLLISION(self, layout, ob, md, wide_ui): - layout.itemL(text="See Collision panel.") + layout.label(text="See Collision panel.") def CURVE(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Object:") - col.itemR(md, "object", text="") + col.label(text="Object:") + col.prop(md, "object", text="") if wide_ui: col = split.column() - col.itemL(text="Vertex Group:") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") - layout.itemL(text="Deformation Axis:") - layout.row().itemR(md, "deform_axis", expand=True) + col.label(text="Vertex Group:") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") + layout.label(text="Deformation Axis:") + layout.row().prop(md, "deform_axis", expand=True) def DECIMATE(self, layout, ob, md, wide_ui): - layout.itemR(md, "ratio") - layout.itemR(md, "face_count") + layout.prop(md, "ratio") + layout.prop(md, "face_count") def DISPLACE(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Texture:") - col.itemR(md, "texture", text="") - col.itemL(text="Vertex Group:") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.label(text="Texture:") + col.prop(md, "texture", text="") + col.label(text="Vertex Group:") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") if wide_ui: col = split.column() - col.itemL(text="Direction:") - col.itemR(md, "direction", text="") - col.itemL(text="Texture Coordinates:") - col.itemR(md, "texture_coordinates", text="") + col.label(text="Direction:") + col.prop(md, "direction", text="") + col.label(text="Texture Coordinates:") + col.prop(md, "texture_coordinates", text="") if md.texture_coordinates == 'OBJECT': - layout.itemR(md, "texture_coordinate_object", text="Object") + layout.prop(md, "texture_coordinate_object", text="Object") elif md.texture_coordinates == 'UV' and ob.type == 'MESH': - layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures") + layout.prop_object(md, "uv_layer", ob.data, "uv_textures") - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemR(md, "midlevel") + col.prop(md, "midlevel") if wide_ui: col = split.column() - col.itemR(md, "strength") + col.prop(md, "strength") def EDGE_SPLIT(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemR(md, "use_edge_angle", text="Edge Angle") + col.prop(md, "use_edge_angle", text="Edge Angle") sub = col.column() sub.active = md.use_edge_angle - sub.itemR(md, "split_angle") + sub.prop(md, "split_angle") if wide_ui: col = split.column() - col.itemR(md, "use_sharp", text="Sharp Edges") + col.prop(md, "use_sharp", text="Sharp Edges") def EXPLODE(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Vertex group:") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.label(text="Vertex group:") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") sub = col.column() - sub.active = md.vertex_group - sub.itemR(md, "protect") + sub.active = bool(md.vertex_group) + sub.prop(md, "protect") if wide_ui: col = split.column() - col.itemR(md, "split_edges") - col.itemR(md, "unborn") - col.itemR(md, "alive") - col.itemR(md, "dead") + col.prop(md, "split_edges") + col.prop(md, "unborn") + col.prop(md, "alive") + col.prop(md, "dead") - layout.itemO("object.explode_refresh", text="Refresh") + layout.operator("object.explode_refresh", text="Refresh") def FLUID_SIMULATION(self, layout, ob, md, wide_ui): - layout.itemL(text="See Fluid panel.") + layout.label(text="See Fluid panel.") def HOOK(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Object:") - col.itemR(md, "object", text="") + col.label(text="Object:") + col.prop(md, "object", text="") if md.object and md.object.type == 'ARMATURE': - col.itemL(text="Bone:") - col.item_pointerR(md, "subtarget", md.object.data, "bones", text="") + col.label(text="Bone:") + col.prop_object(md, "subtarget", md.object.data, "bones", text="") if wide_ui: col = split.column() - col.itemL(text="Vertex Group:") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.label(text="Vertex Group:") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemR(md, "falloff") - col.itemR(md, "force", slider=True) + col.prop(md, "falloff") + col.prop(md, "force", slider=True) if wide_ui: col = split.column() else: - col.itemS() - col.itemO("object.hook_reset", text="Reset") - col.itemO("object.hook_recenter", text="Recenter") + col.separator() + col.operator("object.hook_reset", text="Reset") + col.operator("object.hook_recenter", text="Recenter") if ob.mode == 'EDIT': - layout.itemS() + layout.separator() row = layout.row() - row.itemO("object.hook_select", text="Select") - row.itemO("object.hook_assign", text="Assign") + row.operator("object.hook_select", text="Select") + row.operator("object.hook_assign", text="Assign") def LATTICE(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Object:") - col.itemR(md, "object", text="") + col.label(text="Object:") + col.prop(md, "object", text="") if wide_ui: col = split.column() - col.itemL(text="Vertex Group:") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.label(text="Vertex Group:") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") def MASK(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Mode:") - col.itemR(md, "mode", text="") + col.label(text="Mode:") + col.prop(md, "mode", text="") if wide_ui: col = split.column() - col.itemL(text="Vertex Group:") + col.label(text="Vertex Group:") if md.mode == 'ARMATURE': - col.itemR(md, "armature", text="") + col.prop(md, "armature", text="") elif md.mode == 'VERTEX_GROUP': - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") sub = col.column() - sub.active = md.vertex_group - sub.itemR(md, "invert") + sub.active = bool(md.vertex_group) + sub.prop(md, "invert") def MESH_DEFORM(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Object:") - col.itemR(md, "object", text="") - if md.object and md.object.type == 'ARMATURE': - col.itemL(text="Bone:") - col.item_pointerR(md, "subtarget", md.object.data, "bones", text="") + sub = col.column() + sub.label(text="Object:") + sub.prop(md, "object", text="") + sub.prop(md, "mode", text="") + sub.active = not md.is_bound if wide_ui: col = split.column() - col.itemL(text="Vertex Group:") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.label(text="Vertex Group:") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") sub = col.column() - sub.active = md.vertex_group - sub.itemR(md, "invert") + sub.active = bool(md.vertex_group) + sub.prop(md, "invert") - layout.itemS() + layout.separator() if md.is_bound: - layout.itemO("object.meshdeform_bind", text="Unbind") + layout.operator("object.meshdeform_bind", text="Unbind") else: - layout.itemO("object.meshdeform_bind", text="Bind") - split = layout.split() + layout.operator("object.meshdeform_bind", text="Bind") - col = split.column() - col.itemR(md, "precision") + if md.mode == 'VOLUME': + split = layout.split() - if wide_ui: col = split.column() - col.itemR(md, "dynamic") + col.prop(md, "precision") + + if wide_ui: + col = split.column() + col.prop(md, "dynamic") def MIRROR(self, layout, ob, md, wide_ui): - layout.itemR(md, "merge_limit") + layout.prop(md, "merge_limit") if wide_ui: split = layout.split(percentage=0.25) else: split = layout.split(percentage=0.4) col = split.column() - col.itemL(text="Axis:") - col.itemR(md, "x") - col.itemR(md, "y") - col.itemR(md, "z") + col.label(text="Axis:") + col.prop(md, "x") + col.prop(md, "y") + col.prop(md, "z") if wide_ui: col = split.column() else: subsplit = layout.split() col = subsplit.column() - col.itemL(text="Options:") - col.itemR(md, "clip", text="Clipping") - col.itemR(md, "mirror_vertex_groups", text="Vertex Groups") + col.label(text="Options:") + col.prop(md, "clip", text="Clipping") + col.prop(md, "mirror_vertex_groups", text="Vertex Groups") col = split.column() - col.itemL(text="Textures:") - col.itemR(md, "mirror_u", text="U") - col.itemR(md, "mirror_v", text="V") + col.label(text="Textures:") + col.prop(md, "mirror_u", text="U") + col.prop(md, "mirror_v", text="V") col = layout.column() - col.itemL(text="Mirror Object:") - col.itemR(md, "mirror_object", text="") + col.label(text="Mirror Object:") + col.prop(md, "mirror_object", text="") def MULTIRES(self, layout, ob, md, wide_ui): if wide_ui: - layout.row().itemR(md, "subdivision_type", expand=True) + layout.row().prop(md, "subdivision_type", expand=True) else: - layout.row().itemR(md, "subdivision_type", text="") - layout.itemR(md, "level") + layout.row().prop(md, "subdivision_type", text="") + layout.prop(md, "level") split = layout.split() col = split.column() - col.itemO("object.multires_subdivide", text="Subdivide") + col.operator("object.multires_subdivide", text="Subdivide") if wide_ui: col = split.column() - col.itemO("object.multires_higher_levels_delete", text="Delete Higher") + col.operator("object.multires_higher_levels_delete", text="Delete Higher") def PARTICLE_INSTANCE(self, layout, ob, md, wide_ui): - layout.itemR(md, "object") - layout.itemR(md, "particle_system_number", text="Particle System") + layout.prop(md, "object") + layout.prop(md, "particle_system_number", text="Particle System") split = layout.split() col = split.column() - col.itemL(text="Create From:") - col.itemR(md, "normal") - col.itemR(md, "children") - col.itemR(md, "size") + col.label(text="Create From:") + col.prop(md, "normal") + col.prop(md, "children") + col.prop(md, "size") if wide_ui: col = split.column() - col.itemL(text="Show Particles When:") - col.itemR(md, "alive") - col.itemR(md, "unborn") - col.itemR(md, "dead") + col.label(text="Show Particles When:") + col.prop(md, "alive") + col.prop(md, "unborn") + col.prop(md, "dead") - layout.itemS() + layout.separator() - layout.itemR(md, "path", text="Create Along Paths") + layout.prop(md, "path", text="Create Along Paths") split = layout.split() split.active = md.path col = split.column() - col.row().itemR(md, "axis", expand=True) - col.itemR(md, "keep_shape") + col.row().prop(md, "axis", expand=True) + col.prop(md, "keep_shape") if wide_ui: col = split.column() - col.itemR(md, "position", slider=True) - col.itemR(md, "random_position", text="Random", slider=True) + col.prop(md, "position", slider=True) + col.prop(md, "random_position", text="Random", slider=True) def PARTICLE_SYSTEM(self, layout, ob, md, wide_ui): - layout.itemL(text="See Particle panel.") + layout.label(text="See Particle panel.") def SHRINKWRAP(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Target:") - col.itemR(md, "target", text="") + col.label(text="Target:") + col.prop(md, "target", text="") if wide_ui: col = split.column() - col.itemL(text="Vertex Group:") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.label(text="Vertex Group:") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") split = layout.split() col = split.column() - col.itemR(md, "offset") - col.itemR(md, "subsurf_levels") + col.prop(md, "offset") + col.prop(md, "subsurf_levels") if wide_ui: col = split.column() - col.itemL(text="Mode:") - col.itemR(md, "mode", text="") + col.label(text="Mode:") + col.prop(md, "mode", text="") if wide_ui: split = layout.split(percentage=0.25) @@ -505,186 +507,186 @@ class DATA_PT_modifiers(DataButtonsPanel): col = split.column() if md.mode == 'PROJECT': - col.itemL(text="Axis:") - col.itemR(md, "x") - col.itemR(md, "y") - col.itemR(md, "z") + col.label(text="Axis:") + col.prop(md, "x") + col.prop(md, "y") + col.prop(md, "z") col = split.column() - col.itemL(text="Direction:") - col.itemR(md, "negative") - col.itemR(md, "positive") + col.label(text="Direction:") + col.prop(md, "negative") + col.prop(md, "positive") if wide_ui: col = split.column() else: subsplit = layout.split() col = subsplit.column() - col.itemL(text="Cull Faces:") - col.itemR(md, "cull_front_faces", text="Front") - col.itemR(md, "cull_back_faces", text="Back") + col.label(text="Cull Faces:") + col.prop(md, "cull_front_faces", text="Front") + col.prop(md, "cull_back_faces", text="Back") - layout.itemL(text="Auxiliary Target:") - layout.itemR(md, "auxiliary_target", text="") + layout.label(text="Auxiliary Target:") + layout.prop(md, "auxiliary_target", text="") elif md.mode == 'NEAREST_SURFACEPOINT': - layout.itemR(md, "keep_above_surface") + layout.prop(md, "keep_above_surface") def SIMPLE_DEFORM(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Mode:") - col.itemR(md, "mode", text="") + col.label(text="Mode:") + col.prop(md, "mode", text="") if wide_ui: col = split.column() - col.itemL(text="Vertex Group:") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.label(text="Vertex Group:") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") split = layout.split() col = split.column() - col.itemL(text="Origin:") - col.itemR(md, "origin", text="") + col.label(text="Origin:") + col.prop(md, "origin", text="") sub = col.column() - sub.active = md.origin - sub.itemR(md, "relative") + sub.active = (md.origin != "") + sub.prop(md, "relative") if wide_ui: col = split.column() - col.itemL(text="Deform:") - col.itemR(md, "factor") - col.itemR(md, "limits", slider=True) + col.label(text="Deform:") + col.prop(md, "factor") + col.prop(md, "limits", slider=True) if md.mode in ('TAPER', 'STRETCH'): - col.itemR(md, "lock_x_axis") - col.itemR(md, "lock_y_axis") + col.prop(md, "lock_x_axis") + col.prop(md, "lock_y_axis") def SMOKE(self, layout, ob, md, wide_ui): - layout.itemL(text="See Smoke panel.") + layout.label(text="See Smoke panel.") def SMOOTH(self, layout, ob, md, wide_ui): split = layout.split(percentage=0.25) col = split.column() - col.itemL(text="Axis:") - col.itemR(md, "x") - col.itemR(md, "y") - col.itemR(md, "z") + col.label(text="Axis:") + col.prop(md, "x") + col.prop(md, "y") + col.prop(md, "z") col = split.column() - col.itemR(md, "factor") - col.itemR(md, "repeat") - col.itemL(text="Vertex Group:") - col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + col.prop(md, "factor") + col.prop(md, "repeat") + col.label(text="Vertex Group:") + col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") def SOFT_BODY(self, layout, ob, md, wide_ui): - layout.itemL(text="See Soft Body panel.") + layout.label(text="See Soft Body panel.") def SUBSURF(self, layout, ob, md, wide_ui): if wide_ui: - layout.row().itemR(md, "subdivision_type", expand=True) + layout.row().prop(md, "subdivision_type", expand=True) else: - layout.row().itemR(md, "subdivision_type", text="") + layout.row().prop(md, "subdivision_type", text="") split = layout.split() col = split.column() - col.itemL(text="Subdivisions:") - col.itemR(md, "levels", text="View") - col.itemR(md, "render_levels", text="Render") + col.label(text="Subdivisions:") + col.prop(md, "levels", text="View") + col.prop(md, "render_levels", text="Render") if wide_ui: col = split.column() - col.itemL(text="Options:") - col.itemR(md, "optimal_draw", text="Optimal Display") - col.itemR(md, "subsurf_uv") + col.label(text="Options:") + col.prop(md, "optimal_draw", text="Optimal Display") + col.prop(md, "subsurf_uv") def SURFACE(self, layout, ob, md, wide_ui): - layout.itemL(text="See Fields panel.") + layout.label(text="See Fields panel.") def UV_PROJECT(self, layout, ob, md, wide_ui): if ob.type == 'MESH': split = layout.split() col = split.column() - col.itemL(text="UV Layer:") - col.item_pointerR(md, "uv_layer", ob.data, "uv_textures", text="") + col.label(text="UV Layer:") + col.prop_object(md, "uv_layer", ob.data, "uv_textures", text="") if wide_ui: col = split.column() - col.itemL(text="Image:") - col.itemR(md, "image", text="") + col.label(text="Image:") + col.prop(md, "image", text="") split = layout.split() col = split.column() - col.itemR(md, "override_image") - col.itemR(md, "num_projectors", text="Projectors") + col.prop(md, "override_image") + col.prop(md, "num_projectors", text="Projectors") for proj in md.projectors: - col.itemR(proj, "object", text="") + col.prop(proj, "object", text="") if wide_ui: col = split.column() sub = col.column(align=True) - sub.itemL(text="Aspect Ratio:") - sub.itemR(md, "horizontal_aspect_ratio", text="Horizontal") - sub.itemR(md, "vertical_aspect_ratio", text="Vertical") + sub.label(text="Aspect Ratio:") + sub.prop(md, "horizontal_aspect_ratio", text="Horizontal") + sub.prop(md, "vertical_aspect_ratio", text="Vertical") def WAVE(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.itemL(text="Motion:") - col.itemR(md, "x") - col.itemR(md, "y") - col.itemR(md, "cyclic") + col.label(text="Motion:") + col.prop(md, "x") + col.prop(md, "y") + col.prop(md, "cyclic") if wide_ui: col = split.column() - col.itemR(md, "normals") + col.prop(md, "normals") sub = col.column() sub.active = md.normals - sub.itemR(md, "x_normal", text="X") - sub.itemR(md, "y_normal", text="Y") - sub.itemR(md, "z_normal", text="Z") + sub.prop(md, "x_normal", text="X") + sub.prop(md, "y_normal", text="Y") + sub.prop(md, "z_normal", text="Z") split = layout.split() col = split.column() - col.itemL(text="Time:") + col.label(text="Time:") sub = col.column(align=True) - sub.itemR(md, "time_offset", text="Offset") - sub.itemR(md, "lifetime", text="Life") - col.itemR(md, "damping_time", text="Damping") + sub.prop(md, "time_offset", text="Offset") + sub.prop(md, "lifetime", text="Life") + col.prop(md, "damping_time", text="Damping") if wide_ui: col = split.column() - col.itemL(text="Position:") + col.label(text="Position:") sub = col.column(align=True) - sub.itemR(md, "start_position_x", text="X") - sub.itemR(md, "start_position_y", text="Y") - col.itemR(md, "falloff_radius", text="Falloff") + sub.prop(md, "start_position_x", text="X") + sub.prop(md, "start_position_y", text="Y") + col.prop(md, "falloff_radius", text="Falloff") - layout.itemS() + layout.separator() - layout.itemR(md, "start_position_object") - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - layout.itemR(md, "texture") - layout.itemR(md, "texture_coordinates") + layout.prop(md, "start_position_object") + layout.prop_object(md, "vertex_group", ob, "vertex_groups") + layout.prop(md, "texture") + layout.prop(md, "texture_coordinates") if md.texture_coordinates == 'MAP_UV' and ob.type == 'MESH': - layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures") + layout.prop_object(md, "uv_layer", ob.data, "uv_textures") elif md.texture_coordinates == 'OBJECT': - layout.itemR(md, "texture_coordinates_object") + layout.prop(md, "texture_coordinates_object") - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemR(md, "speed", slider=True) - col.itemR(md, "height", slider=True) + col.prop(md, "speed", slider=True) + col.prop(md, "height", slider=True) if wide_ui: col = split.column() - col.itemR(md, "width", slider=True) - col.itemR(md, "narrowness", slider=True) + col.prop(md, "width", slider=True) + col.prop(md, "narrowness", slider=True) bpy.types.register(DATA_PT_modifiers) diff --git a/release/scripts/ui/properties_game.py b/release/scripts/ui/properties_game.py index 150296af070..293c4786c7f 100644 --- a/release/scripts/ui/properties_game.py +++ b/release/scripts/ui/properties_game.py @@ -45,120 +45,120 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(game, "physics_type") + layout.prop(game, "physics_type") else: - layout.itemR(game, "physics_type", text="") - layout.itemS() + layout.prop(game, "physics_type", text="") + layout.separator() #if game.physics_type == 'DYNAMIC': if game.physics_type in ('DYNAMIC', 'RIGID_BODY'): split = layout.split() col = split.column() - col.itemR(game, "actor") - col.itemR(game, "ghost") - col.itemR(ob, "restrict_render", text="Invisible") # out of place but useful + col.prop(game, "actor") + col.prop(game, "ghost") + col.prop(ob, "restrict_render", text="Invisible") # out of place but useful if wide_ui: col = split.column() - col.itemR(game, "material_physics") - col.itemR(game, "rotate_from_normal") - col.itemR(game, "no_sleeping") + col.prop(game, "material_physics") + col.prop(game, "rotate_from_normal") + col.prop(game, "no_sleeping") - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemL(text="Attributes:") - col.itemR(game, "mass") - col.itemR(game, "radius") - col.itemR(game, "form_factor") + col.label(text="Attributes:") + col.prop(game, "mass") + col.prop(game, "radius") + col.prop(game, "form_factor") if wide_ui: col = split.column() sub = col.column() sub.active = (game.physics_type == 'RIGID_BODY') - sub.itemR(game, "anisotropic_friction") + sub.prop(game, "anisotropic_friction") subsub = sub.column() subsub.active = game.anisotropic_friction - subsub.itemR(game, "friction_coefficients", text="", slider=True) + subsub.prop(game, "friction_coefficients", text="", slider=True) split = layout.split() col = split.column() - col.itemL(text="Velocity:") + col.label(text="Velocity:") sub = col.column(align=True) - sub.itemR(game, "minimum_velocity", text="Minimum") - sub.itemR(game, "maximum_velocity", text="Maximum") + sub.prop(game, "minimum_velocity", text="Minimum") + sub.prop(game, "maximum_velocity", text="Maximum") if wide_ui: col = split.column() - col.itemL(text="Damping:") + col.label(text="Damping:") sub = col.column(align=True) - sub.itemR(game, "damping", text="Translation", slider=True) - sub.itemR(game, "rotation_damping", text="Rotation", slider=True) + sub.prop(game, "damping", text="Translation", slider=True) + sub.prop(game, "rotation_damping", text="Rotation", slider=True) - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemL(text="Lock Translation:") - col.itemR(game, "lock_x_axis", text="X") - col.itemR(game, "lock_y_axis", text="Y") - col.itemR(game, "lock_z_axis", text="Z") + col.label(text="Lock Translation:") + col.prop(game, "lock_x_axis", text="X") + col.prop(game, "lock_y_axis", text="Y") + col.prop(game, "lock_z_axis", text="Z") col = split.column() - col.itemL(text="Lock Rotation:") - col.itemR(game, "lock_x_rot_axis", text="X") - col.itemR(game, "lock_y_rot_axis", text="Y") - col.itemR(game, "lock_z_rot_axis", text="Z") + col.label(text="Lock Rotation:") + col.prop(game, "lock_x_rot_axis", text="X") + col.prop(game, "lock_y_rot_axis", text="Y") + col.prop(game, "lock_z_rot_axis", text="Z") elif game.physics_type == 'SOFT_BODY': col = layout.column() - col.itemR(game, "actor") - col.itemR(game, "ghost") - col.itemR(ob, "restrict_render", text="Invisible") + col.prop(game, "actor") + col.prop(game, "ghost") + col.prop(ob, "restrict_render", text="Invisible") - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemL(text="Attributes:") - col.itemR(game, "mass") - col.itemR(soft, "welding") - col.itemR(soft, "position_iterations") - col.itemR(soft, "linstiff", slider=True) - col.itemR(soft, "dynamic_friction", slider=True) - col.itemR(soft, "margin", slider=True) - col.itemR(soft, "bending_const", text="Bending Constraints") + col.label(text="Attributes:") + col.prop(game, "mass") + col.prop(soft, "welding") + col.prop(soft, "position_iterations") + col.prop(soft, "linstiff", slider=True) + col.prop(soft, "dynamic_friction", slider=True) + col.prop(soft, "margin", slider=True) + col.prop(soft, "bending_const", text="Bending Constraints") if wide_ui: col = split.column() - col.itemR(soft, "shape_match") + col.prop(soft, "shape_match") sub = col.column() sub.active = soft.shape_match - sub.itemR(soft, "threshold", slider=True) + sub.prop(soft, "threshold", slider=True) - col.itemS() + col.separator() - col.itemL(text="Cluster Collision:") - col.itemR(soft, "cluster_rigid_to_softbody") - col.itemR(soft, "cluster_soft_to_softbody") + col.label(text="Cluster Collision:") + col.prop(soft, "cluster_rigid_to_softbody") + col.prop(soft, "cluster_soft_to_softbody") sub = col.column() sub.active = (soft.cluster_rigid_to_softbody or soft.cluster_soft_to_softbody) - sub.itemR(soft, "cluster_iterations", text="Iterations") + sub.prop(soft, "cluster_iterations", text="Iterations") elif game.physics_type == 'STATIC': col = layout.column() - col.itemR(game, "actor") - col.itemR(game, "ghost") - col.itemR(ob, "restrict_render", text="Invisible") + col.prop(game, "actor") + col.prop(game, "ghost") + col.prop(ob, "restrict_render", text="Invisible") elif game.physics_type in ('SENSOR', 'INVISIBLE', 'NO_COLLISION', 'OCCLUDE'): - layout.itemR(ob, "restrict_render", text="Invisible") + layout.prop(ob, "restrict_render", text="Invisible") class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel): @@ -172,7 +172,7 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel): def draw_header(self, context): game = context.active_object.game - self.layout.itemR(game, "use_collision_bounds", text="") + self.layout.prop(game, "use_collision_bounds", text="") def draw(self, context): layout = self.layout @@ -182,18 +182,18 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel): layout.active = game.use_collision_bounds if wide_ui: - layout.itemR(game, "collision_bounds", text="Bounds") + layout.prop(game, "collision_bounds", text="Bounds") else: - layout.itemR(game, "collision_bounds", text="") + layout.prop(game, "collision_bounds", text="") split = layout.split() col = split.column() - col.itemR(game, "collision_margin", text="Margin", slider=True) + col.prop(game, "collision_margin", text="Margin", slider=True) if wide_ui: col = split.column() - col.itemR(game, "collision_compound", text="Compound") + col.prop(game, "collision_compound", text="Compound") bpy.types.register(PHYSICS_PT_game_physics) @@ -217,8 +217,8 @@ class RENDER_PT_game(RenderButtonsPanel): layout = self.layout row = layout.row() - row.itemO("view3d.game_start", text="Start") - row.itemL() + row.operator("view3d.game_start", text="Start") + row.label() class RENDER_PT_game_player(RenderButtonsPanel): @@ -230,32 +230,32 @@ class RENDER_PT_game_player(RenderButtonsPanel): gs = context.scene.game_data wide_ui = context.region.width > narrowui - layout.itemR(gs, "fullscreen") + layout.prop(gs, "fullscreen") split = layout.split() col = split.column() - col.itemL(text="Resolution:") + col.label(text="Resolution:") sub = col.column(align=True) - sub.itemR(gs, "resolution_x", slider=False, text="X") - sub.itemR(gs, "resolution_y", slider=False, text="Y") + sub.prop(gs, "resolution_x", slider=False, text="X") + sub.prop(gs, "resolution_y", slider=False, text="Y") if wide_ui: col = split.column() - col.itemL(text="Quality:") + col.label(text="Quality:") sub = col.column(align=True) - sub.itemR(gs, "depth", text="Bit Depth", slider=False) - sub.itemR(gs, "frequency", text="FPS", slider=False) + sub.prop(gs, "depth", text="Bit Depth", slider=False) + sub.prop(gs, "frequency", text="FPS", slider=False) # framing: col = layout.column() - col.itemL(text="Framing:") + col.label(text="Framing:") if wide_ui: - col.row().itemR(gs, "framing_type", expand=True) + col.row().prop(gs, "framing_type", expand=True) else: - col.itemR(gs, "framing_type", text="") + col.prop(gs, "framing_type", text="") if gs.framing_type == 'LETTERBOX': - col.itemR(gs, "framing_color", text="") + col.prop(gs, "framing_color", text="") class RENDER_PT_game_stereo(RenderButtonsPanel): @@ -269,20 +269,20 @@ class RENDER_PT_game_stereo(RenderButtonsPanel): wide_ui = context.region.width > narrowui # stereo options: - layout.itemR(gs, "stereo", expand=True) + layout.prop(gs, "stereo", expand=True) # stereo: if stereo_mode == 'STEREO': - layout.itemR(gs, "stereo_mode") - layout.itemL(text="To do: Focal Length") - layout.itemL(text="To do: Eye Separation") + layout.prop(gs, "stereo_mode") + # layout.label(text="To do: Focal Length") # to be done after 2.5alpha0 is out + # layout.label(text="To do: Eye Separation") # to be done after 2.5alpha0 is out # dome: elif stereo_mode == 'DOME': if wide_ui: - layout.itemR(gs, "dome_mode", text="Dome Type") + layout.prop(gs, "dome_mode", text="Dome Type") else: - layout.itemR(gs, "dome_mode", text="") + layout.prop(gs, "dome_mode", text="") dome_type = gs.dome_mode @@ -293,29 +293,29 @@ class RENDER_PT_game_stereo(RenderButtonsPanel): dome_type == 'TRUNCATED_FRONT': col = split.column() - col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True) - col.itemR(gs, "dome_angle", slider=True) + col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True) + col.prop(gs, "dome_angle", slider=True) if wide_ui: col = split.column() - col.itemR(gs, "dome_tesselation", text="Tesselation") - col.itemR(gs, "dome_tilt") + col.prop(gs, "dome_tesselation", text="Tesselation") + col.prop(gs, "dome_tilt") elif dome_type == 'PANORAM_SPH': col = split.column() - col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True) + col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True) if wide_ui: col = split.column() - col.itemR(gs, "dome_tesselation", text="Tesselation") + col.prop(gs, "dome_tesselation", text="Tesselation") else: # cube map col = split.column() - col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True) + col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True) if wide_ui: col = split.column() - layout.itemR(gs, "dome_text") + layout.prop(gs, "dome_text") class RENDER_PT_game_shading(RenderButtonsPanel): @@ -328,22 +328,22 @@ class RENDER_PT_game_shading(RenderButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(gs, "material_mode", expand=True) + layout.prop(gs, "material_mode", expand=True) else: - layout.itemR(gs, "material_mode", text="") + layout.prop(gs, "material_mode", text="") if gs.material_mode == 'GLSL': split = layout.split() col = split.column() - col.itemR(gs, "glsl_lights", text="Lights") - col.itemR(gs, "glsl_shaders", text="Shaders") - col.itemR(gs, "glsl_shadows", text="Shadows") + col.prop(gs, "glsl_lights", text="Lights") + col.prop(gs, "glsl_shaders", text="Shaders") + col.prop(gs, "glsl_shadows", text="Shadows") col = split.column() - col.itemR(gs, "glsl_ramps", text="Ramps") - col.itemR(gs, "glsl_nodes", text="Nodes") - col.itemR(gs, "glsl_extra_textures", text="Extra Textures") + col.prop(gs, "glsl_ramps", text="Ramps") + col.prop(gs, "glsl_nodes", text="Nodes") + col.prop(gs, "glsl_extra_textures", text="Extra Textures") class RENDER_PT_game_performance(RenderButtonsPanel): @@ -358,17 +358,17 @@ class RENDER_PT_game_performance(RenderButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Show:") - col.itemR(gs, "show_debug_properties", text="Debug Properties") - col.itemR(gs, "show_framerate_profile", text="Framerate and Profile") - col.itemR(gs, "show_physics_visualization", text="Physics Visualization") - col.itemR(gs, "deprecation_warnings") + col.label(text="Show:") + col.prop(gs, "show_debug_properties", text="Debug Properties") + col.prop(gs, "show_framerate_profile", text="Framerate and Profile") + col.prop(gs, "show_physics_visualization", text="Physics Visualization") + col.prop(gs, "deprecation_warnings") if wide_ui: col = split.column() - col.itemL(text="Render:") - col.itemR(gs, "all_frames") - col.itemR(gs, "display_lists") + col.label(text="Render:") + col.prop(gs, "all_frames") + col.prop(gs, "display_lists") class RENDER_PT_game_sound(RenderButtonsPanel): @@ -381,11 +381,11 @@ class RENDER_PT_game_sound(RenderButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(scene, "distance_model") + layout.prop(scene, "distance_model") else: - layout.itemR(scene, "distance_model", text="") - layout.itemR(scene, "speed_of_sound", text="Speed") - layout.itemR(scene, "doppler_factor") + layout.prop(scene, "distance_model", text="") + layout.prop(scene, "speed_of_sound", text="Speed") + layout.prop(scene, "doppler_factor") bpy.types.register(RENDER_PT_game) bpy.types.register(RENDER_PT_game_player) @@ -446,11 +446,11 @@ class WORLD_PT_game_world(WorldButtonsPanel): split = layout.split() col = split.column() - col.itemR(world, "horizon_color") + col.prop(world, "horizon_color") if wide_ui: col = split.column() - col.itemR(world, "ambient_color") + col.prop(world, "ambient_color") class WORLD_PT_game_mist(WorldButtonsPanel): @@ -459,7 +459,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel): def draw_header(self, context): world = context.world - self.layout.itemR(world.mist, "enabled", text="") + self.layout.prop(world.mist, "enabled", text="") def draw(self, context): layout = self.layout @@ -471,11 +471,11 @@ class WORLD_PT_game_mist(WorldButtonsPanel): split = layout.split() col = split.column() - col.itemR(world.mist, "start") + col.prop(world.mist, "start") if wide_ui: col = split.column() - col.itemR(world.mist, "depth") + col.prop(world.mist, "depth") class WORLD_PT_game_physics(WorldButtonsPanel): @@ -487,40 +487,40 @@ class WORLD_PT_game_physics(WorldButtonsPanel): gs = context.scene.game_data wide_ui = context.region.width > narrowui - layout.itemR(gs, "physics_engine") + layout.prop(gs, "physics_engine") if gs.physics_engine != 'NONE': - layout.itemR(gs, "physics_gravity", text="Gravity") + layout.prop(gs, "physics_gravity", text="Gravity") split = layout.split() col = split.column() - col.itemL(text="Physics Steps:") + col.label(text="Physics Steps:") sub = col.column(align=True) - sub.itemR(gs, "physics_step_max", text="Max") - sub.itemR(gs, "physics_step_sub", text="Substeps") - col.itemR(gs, "fps", text="FPS") + sub.prop(gs, "physics_step_max", text="Max") + sub.prop(gs, "physics_step_sub", text="Substeps") + col.prop(gs, "fps", text="FPS") if wide_ui: col = split.column() - col.itemL(text="Logic Steps:") - col.itemR(gs, "logic_step_max", text="Max") + col.label(text="Logic Steps:") + col.prop(gs, "logic_step_max", text="Max") col = layout.column() - col.itemR(gs, "use_occlusion_culling", text="Occlusion Culling") + col.prop(gs, "use_occlusion_culling", text="Occlusion Culling") sub = col.column() sub.active = gs.use_occlusion_culling - sub.itemR(gs, "occlusion_culling_resolution", text="Resolution") + sub.prop(gs, "occlusion_culling_resolution", text="Resolution") else: split = layout.split() col = split.column() - col.itemL(text="Physics Steps:") - col.itemR(gs, "fps", text="FPS") + col.label(text="Physics Steps:") + col.prop(gs, "fps", text="FPS") col = split.column() - col.itemL(text="Logic Steps:") - col.itemR(gs, "logic_step_max", text="Max") + col.label(text="Logic Steps:") + col.prop(gs, "logic_step_max", text="Max") bpy.types.register(WORLD_PT_game_context_world) bpy.types.register(WORLD_PT_game_world) diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py index f9e3eebfb8f..eb2a73d1790 100644 --- a/release/scripts/ui/properties_material.py +++ b/release/scripts/ui/properties_material.py @@ -89,15 +89,15 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel): row.template_list(ob, "materials", ob, "active_material_index", rows=2) col = row.column(align=True) - col.itemO("object.material_slot_add", icon='ICON_ZOOMIN', text="") - col.itemO("object.material_slot_remove", icon='ICON_ZOOMOUT', text="") - col.itemO("object.material_slot_copy", icon='ICON_COPY_ID', text="") + col.operator("object.material_slot_add", icon='ICON_ZOOMIN', text="") + col.operator("object.material_slot_remove", icon='ICON_ZOOMOUT', text="") + col.operator("object.material_slot_copy", icon='ICON_COPY_ID', text="") if ob.mode == 'EDIT': row = layout.row(align=True) - row.itemO("object.material_slot_assign", text="Assign") - row.itemO("object.material_slot_select", text="Select") - row.itemO("object.material_slot_deselect", text="Deselect") + row.operator("object.material_slot_assign", text="Assign") + row.operator("object.material_slot_select", text="Select") + row.operator("object.material_slot_deselect", text="Deselect") if wide_ui: split = layout.split(percentage=0.65) @@ -106,12 +106,12 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel): split.template_ID(ob, "active_material", new="material.new") row = split.row() if slot: - row.itemR(slot, "link", text="") + row.prop(slot, "link", text="") else: - row.itemL() + row.label() elif mat: split.template_ID(space, "pin_id") - split.itemS() + split.separator() else: if ob: layout.template_ID(ob, "active_material", new="material.new") @@ -120,9 +120,9 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel): if mat: if wide_ui: - layout.itemR(mat, "type", expand=True) + layout.prop(mat, "type", expand=True) else: - layout.itemR(mat, "type", text="") + layout.prop(mat, "type", text="") class MATERIAL_PT_shading(MaterialButtonsPanel): @@ -146,21 +146,21 @@ class MATERIAL_PT_shading(MaterialButtonsPanel): col = split.column() sub = col.column() sub.active = not mat.shadeless - sub.itemR(mat, "emit") - sub.itemR(mat, "ambient") + sub.prop(mat, "emit") + sub.prop(mat, "ambient") sub = col.column() - sub.itemR(mat, "translucency") + sub.prop(mat, "translucency") if wide_ui: col = split.column() - col.itemR(mat, "shadeless") + col.prop(mat, "shadeless") sub = col.column() sub.active = not mat.shadeless - sub.itemR(mat, "tangent_shading") - sub.itemR(mat, "cubic") + sub.prop(mat, "tangent_shading") + sub.prop(mat, "cubic") elif mat.type == 'HALO': - layout.itemR(mat, "alpha") + layout.prop(mat, "alpha") class MATERIAL_PT_strand(MaterialButtonsPanel): @@ -184,32 +184,32 @@ class MATERIAL_PT_strand(MaterialButtonsPanel): col = split.column() sub = col.column(align=True) - sub.itemL(text="Size:") - sub.itemR(tan, "root_size", text="Root") - sub.itemR(tan, "tip_size", text="Tip") - sub.itemR(tan, "min_size", text="Minimum") - sub.itemR(tan, "blender_units") + sub.label(text="Size:") + sub.prop(tan, "root_size", text="Root") + sub.prop(tan, "tip_size", text="Tip") + sub.prop(tan, "min_size", text="Minimum") + sub.prop(tan, "blender_units") sub = col.column() sub.active = (not mat.shadeless) - sub.itemR(tan, "tangent_shading") - col.itemR(tan, "shape") + sub.prop(tan, "tangent_shading") + col.prop(tan, "shape") if wide_ui: col = split.column() - col.itemL(text="Shading:") - col.itemR(tan, "width_fade") + col.label(text="Shading:") + col.prop(tan, "width_fade") ob = context.object if ob and ob.type == 'MESH': - col.item_pointerR(tan, "uv_layer", ob.data, "uv_textures", text="") + col.prop_object(tan, "uv_layer", ob.data, "uv_textures", text="") else: - col.itemR(tan, "uv_layer", text="") - col.itemS() + col.prop(tan, "uv_layer", text="") + col.separator() sub = col.column() sub.active = (not mat.shadeless) - sub.itemR(tan, "surface_diffuse") + sub.prop(tan, "surface_diffuse") sub = col.column() sub.active = tan.surface_diffuse - sub.itemR(tan, "blend_distance", text="Distance") + sub.prop(tan, "blend_distance", text="Distance") class MATERIAL_PT_physics(MaterialButtonsPanel): @@ -225,15 +225,15 @@ class MATERIAL_PT_physics(MaterialButtonsPanel): split = layout.split() col = split.column() - col.itemR(phys, "distance") - col.itemR(phys, "friction") - col.itemR(phys, "align_to_normal") + col.prop(phys, "distance") + col.prop(phys, "friction") + col.prop(phys, "align_to_normal") if wide_ui: col = split.column() - col.itemR(phys, "force", slider=True) - col.itemR(phys, "elasticity", slider=True) - col.itemR(phys, "damp", slider=True) + col.prop(phys, "force", slider=True) + col.prop(phys, "elasticity", slider=True) + col.prop(phys, "damp", slider=True) class MATERIAL_PT_options(MaterialButtonsPanel): @@ -254,31 +254,31 @@ class MATERIAL_PT_options(MaterialButtonsPanel): split = layout.split() col = split.column() - col.itemR(mat, "traceable") - col.itemR(mat, "full_oversampling") - col.itemR(mat, "sky") - col.itemR(mat, "exclude_mist") - col.itemR(mat, "invert_z") + col.prop(mat, "traceable") + col.prop(mat, "full_oversampling") + col.prop(mat, "sky") + col.prop(mat, "exclude_mist") + col.prop(mat, "invert_z") sub = col.row() - sub.itemR(mat, "z_offset") + sub.prop(mat, "z_offset") sub.active = mat.transparency and mat.transparency_method == 'Z_TRANSPARENCY' sub = col.column(align=True) - sub.itemL(text="Light Group:") - sub.itemR(mat, "light_group", text="") + sub.label(text="Light Group:") + sub.prop(mat, "light_group", text="") row = sub.row() - row.active = mat.light_group - row.itemR(mat, "light_group_exclusive", text="Exclusive") + row.active = bool(mat.light_group) + row.prop(mat, "light_group_exclusive", text="Exclusive") if wide_ui: col = split.column() - col.itemR(mat, "face_texture") + col.prop(mat, "face_texture") sub = col.column() sub.active = mat.face_texture - sub.itemR(mat, "face_texture_alpha") - col.itemS() - col.itemR(mat, "vertex_color_paint") - col.itemR(mat, "vertex_color_light") - col.itemR(mat, "object_color") + sub.prop(mat, "face_texture_alpha") + col.separator() + col.prop(mat, "vertex_color_paint") + col.prop(mat, "vertex_color_light") + col.prop(mat, "object_color") class MATERIAL_PT_shadow(MaterialButtonsPanel): @@ -300,22 +300,22 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel): split = layout.split() col = split.column() - col.itemR(mat, "shadows", text="Receive") - col.itemR(mat, "receive_transparent_shadows", text="Receive Transparent") - col.itemR(mat, "only_shadow", text="Shadows Only") - col.itemR(mat, "cast_shadows_only", text="Cast Only") - col.itemR(mat, "shadow_casting_alpha", text="Casting Alpha") + col.prop(mat, "shadows", text="Receive") + col.prop(mat, "receive_transparent_shadows", text="Receive Transparent") + col.prop(mat, "only_shadow", text="Shadows Only") + col.prop(mat, "cast_shadows_only", text="Cast Only") + col.prop(mat, "shadow_casting_alpha", text="Casting Alpha") if wide_ui: col = split.column() - col.itemR(mat, "cast_buffer_shadows") + col.prop(mat, "cast_buffer_shadows") sub = col.column() sub.active = mat.cast_buffer_shadows - sub.itemR(mat, "shadow_buffer_bias", text="Buffer Bias") - col.itemR(mat, "ray_shadow_bias", text="Auto Ray Bias") + sub.prop(mat, "shadow_buffer_bias", text="Buffer Bias") + col.prop(mat, "ray_shadow_bias", text="Auto Ray Bias") sub = col.column() sub.active = (not mat.ray_shadow_bias) - sub.itemR(mat, "shadow_ray_bias", text="Ray Bias") + sub.prop(mat, "shadow_ray_bias", text="Ray Bias") class MATERIAL_PT_diffuse(MaterialButtonsPanel): @@ -336,57 +336,57 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel): split = layout.split() col = split.column() - col.itemR(mat, "diffuse_color", text="") + col.prop(mat, "diffuse_color", text="") sub = col.column() sub.active = (not mat.shadeless) - sub.itemR(mat, "diffuse_intensity", text="Intensity") + sub.prop(mat, "diffuse_intensity", text="Intensity") if wide_ui: col = split.column() col.active = (not mat.shadeless) - col.itemR(mat, "diffuse_shader", text="") - col.itemR(mat, "use_diffuse_ramp", text="Ramp") + col.prop(mat, "diffuse_shader", text="") + col.prop(mat, "use_diffuse_ramp", text="Ramp") col = layout.column() col.active = (not mat.shadeless) if mat.diffuse_shader == 'OREN_NAYAR': - col.itemR(mat, "roughness") + col.prop(mat, "roughness") elif mat.diffuse_shader == 'MINNAERT': - col.itemR(mat, "darkness") + col.prop(mat, "darkness") elif mat.diffuse_shader == 'TOON': split = col.split() col = split.column() - col.itemR(mat, "diffuse_toon_size", text="Size") + col.prop(mat, "diffuse_toon_size", text="Size") if wide_ui: col = split.column() - col.itemR(mat, "diffuse_toon_smooth", text="Smooth") + col.prop(mat, "diffuse_toon_smooth", text="Smooth") elif mat.diffuse_shader == 'FRESNEL': split = col.split() col = split.column() - col.itemR(mat, "diffuse_fresnel", text="Fresnel") + col.prop(mat, "diffuse_fresnel", text="Fresnel") if wide_ui: col = split.column() - col.itemR(mat, "diffuse_fresnel_factor", text="Factor") + col.prop(mat, "diffuse_fresnel_factor", text="Factor") if mat.use_diffuse_ramp: - layout.itemS() + layout.separator() layout.template_color_ramp(mat, "diffuse_ramp", expand=True) - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemR(mat, "diffuse_ramp_input", text="Input") + col.prop(mat, "diffuse_ramp_input", text="Input") if wide_ui: col = split.column() - col.itemR(mat, "diffuse_ramp_blend", text="Blend") + col.prop(mat, "diffuse_ramp_blend", text="Blend") row = layout.row() - row.itemR(mat, "diffuse_ramp_factor", text="Factor") + row.prop(mat, "diffuse_ramp_factor", text="Factor") class MATERIAL_PT_specular(MaterialButtonsPanel): @@ -409,53 +409,53 @@ class MATERIAL_PT_specular(MaterialButtonsPanel): split = layout.split() col = split.column() - col.itemR(mat, "specular_color", text="") - col.itemR(mat, "specular_intensity", text="Intensity") + col.prop(mat, "specular_color", text="") + col.prop(mat, "specular_intensity", text="Intensity") if wide_ui: col = split.column() - col.itemR(mat, "specular_shader", text="") - col.itemR(mat, "use_specular_ramp", text="Ramp") + col.prop(mat, "specular_shader", text="") + col.prop(mat, "use_specular_ramp", text="Ramp") col = layout.column() if mat.specular_shader in ('COOKTORR', 'PHONG'): - col.itemR(mat, "specular_hardness", text="Hardness") + col.prop(mat, "specular_hardness", text="Hardness") elif mat.specular_shader == 'BLINN': split = layout.split() col = split.column() - col.itemR(mat, "specular_hardness", text="Hardness") + col.prop(mat, "specular_hardness", text="Hardness") if wide_ui: col = split.column() - col.itemR(mat, "specular_ior", text="IOR") + col.prop(mat, "specular_ior", text="IOR") elif mat.specular_shader == 'WARDISO': - col.itemR(mat, "specular_slope", text="Slope") + col.prop(mat, "specular_slope", text="Slope") elif mat.specular_shader == 'TOON': split = layout.split() col = split.column() - col.itemR(mat, "specular_toon_size", text="Size") + col.prop(mat, "specular_toon_size", text="Size") if wide_ui: col = split.column() - col.itemR(mat, "specular_toon_smooth", text="Smooth") + col.prop(mat, "specular_toon_smooth", text="Smooth") if mat.use_specular_ramp: - layout.itemS() + layout.separator() layout.template_color_ramp(mat, "specular_ramp", expand=True) - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemR(mat, "specular_ramp_input", text="Input") + col.prop(mat, "specular_ramp_input", text="Input") if wide_ui: col = split.column() - col.itemR(mat, "specular_ramp_blend", text="Blend") + col.prop(mat, "specular_ramp_blend", text="Blend") row = layout.row() - row.itemR(mat, "specular_ramp_factor", text="Factor") + row.prop(mat, "specular_ramp_factor", text="Factor") class MATERIAL_PT_sss(MaterialButtonsPanel): @@ -473,7 +473,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel): sss = mat.subsurface_scattering self.layout.active = (not mat.shadeless) - self.layout.itemR(sss, "enabled", text="") + self.layout.prop(sss, "enabled", text="") def draw(self, context): layout = self.layout @@ -481,33 +481,33 @@ class MATERIAL_PT_sss(MaterialButtonsPanel): mat = active_node_mat(context.material) sss = mat.subsurface_scattering wide_ui = context.region.width > narrowui - + layout.active = (sss.enabled) and (not mat.shadeless) row = layout.row().split() sub = row.row(align=True).split(percentage=0.75) - sub.itemM("MATERIAL_MT_sss_presets", text="Presets") - sub.itemO("material.sss_preset_add", text="Add") + sub.menu("MATERIAL_MT_sss_presets", text="Presets") + sub.operator("material.sss_preset_add", text="Add") split = layout.split() col = split.column() - col.itemR(sss, "ior") - col.itemR(sss, "scale") - col.itemR(sss, "color", text="") - col.itemR(sss, "radius", text="RGB Radius") + col.prop(sss, "ior") + col.prop(sss, "scale") + col.prop(sss, "color", text="") + col.prop(sss, "radius", text="RGB Radius") if wide_ui: col = split.column() sub = col.column(align=True) - sub.itemL(text="Blend:") - sub.itemR(sss, "color_factor", text="Color") - sub.itemR(sss, "texture_factor", text="Texture") - sub.itemL(text="Scattering Weight:") - sub.itemR(sss, "front") - sub.itemR(sss, "back") - col.itemS() - col.itemR(sss, "error_tolerance", text="Error") + sub.label(text="Blend:") + sub.prop(sss, "color_factor", text="Color") + sub.prop(sss, "texture_factor", text="Texture") + sub.label(text="Scattering Weight:") + sub.prop(sss, "front") + sub.prop(sss, "back") + col.separator() + col.prop(sss, "error_tolerance", text="Error") class MATERIAL_PT_mirror(MaterialButtonsPanel): @@ -523,7 +523,7 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel): def draw_header(self, context): raym = active_node_mat(context.material).raytrace_mirror - self.layout.itemR(raym, "enabled", text="") + self.layout.prop(raym, "enabled", text="") def draw(self, context): layout = self.layout @@ -537,36 +537,36 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel): split = layout.split() col = split.column() - col.itemR(raym, "reflect_factor") - col.itemR(mat, "mirror_color", text="") + col.prop(raym, "reflect_factor") + col.prop(mat, "mirror_color", text="") if wide_ui: col = split.column() - col.itemR(raym, "fresnel") + col.prop(raym, "fresnel") sub = col.column() sub.active = raym.fresnel > 0 - sub.itemR(raym, "fresnel_factor", text="Blend") + sub.prop(raym, "fresnel_factor", text="Blend") split = layout.split() col = split.column() - col.itemS() - col.itemR(raym, "distance", text="Max Dist") - col.itemR(raym, "depth") - col.itemS() + col.separator() + col.prop(raym, "distance", text="Max Dist") + col.prop(raym, "depth") + col.separator() sub = col.split(percentage=0.4) - sub.itemL(text="Fade To:") - sub.itemR(raym, "fade_to", text="") + sub.label(text="Fade To:") + sub.prop(raym, "fade_to", text="") if wide_ui: col = split.column() - col.itemL(text="Gloss:") - col.itemR(raym, "gloss_factor", text="Amount") + col.label(text="Gloss:") + col.prop(raym, "gloss_factor", text="Amount") sub = col.column() sub.active = raym.gloss_factor < 1.0 - sub.itemR(raym, "gloss_threshold", text="Threshold") - sub.itemR(raym, "gloss_samples", text="Samples") - sub.itemR(raym, "gloss_anisotropic", text="Anisotropic") + sub.prop(raym, "gloss_threshold", text="Threshold") + sub.prop(raym, "gloss_samples", text="Samples") + sub.prop(raym, "gloss_anisotropic", text="Anisotropic") class MATERIAL_PT_transp(MaterialButtonsPanel): @@ -582,7 +582,7 @@ class MATERIAL_PT_transp(MaterialButtonsPanel): def draw_header(self, context): mat = active_node_mat(context.material) - self.layout.itemR(mat, "transparency", text="") + self.layout.prop(mat, "transparency", text="") def draw(self, context): layout = self.layout @@ -594,46 +594,46 @@ class MATERIAL_PT_transp(MaterialButtonsPanel): row = layout.row() row.active = mat.transparency and (not mat.shadeless) if wide_ui: - row.itemR(mat, "transparency_method", expand=True) + row.prop(mat, "transparency_method", expand=True) else: - row.itemR(mat, "transparency_method", text="") + row.prop(mat, "transparency_method", text="") split = layout.split() col = split.column() - col.itemR(mat, "alpha") + col.prop(mat, "alpha") row = col.row() row.active = mat.transparency and (not mat.shadeless) - row.itemR(mat, "specular_alpha", text="Specular") + row.prop(mat, "specular_alpha", text="Specular") if wide_ui: col = split.column() col.active = (not mat.shadeless) - col.itemR(rayt, "fresnel") + col.prop(rayt, "fresnel") sub = col.column() sub.active = rayt.fresnel > 0 - sub.itemR(rayt, "fresnel_factor", text="Blend") + sub.prop(rayt, "fresnel_factor", text="Blend") if mat.transparency_method == 'RAYTRACE': - layout.itemS() + layout.separator() split = layout.split() split.active = mat.transparency col = split.column() - col.itemR(rayt, "ior") - col.itemR(rayt, "filter") - col.itemR(rayt, "falloff") - col.itemR(rayt, "limit") - col.itemR(rayt, "depth") + col.prop(rayt, "ior") + col.prop(rayt, "filter") + col.prop(rayt, "falloff") + col.prop(rayt, "limit") + col.prop(rayt, "depth") if wide_ui: col = split.column() - col.itemL(text="Gloss:") - col.itemR(rayt, "gloss_factor", text="Amount") + col.label(text="Gloss:") + col.prop(rayt, "gloss_factor", text="Amount") sub = col.column() sub.active = rayt.gloss_factor < 1.0 - sub.itemR(rayt, "gloss_threshold", text="Threshold") - sub.itemR(rayt, "gloss_samples", text="Samples") + sub.prop(rayt, "gloss_threshold", text="Threshold") + sub.prop(rayt, "gloss_samples", text="Samples") class MATERIAL_PT_halo(MaterialButtonsPanel): @@ -655,35 +655,35 @@ class MATERIAL_PT_halo(MaterialButtonsPanel): split = layout.split() col = split.column() - col.itemR(mat, "diffuse_color", text="") - col.itemR(halo, "size") - col.itemR(halo, "hardness") - col.itemR(halo, "add") - col.itemL(text="Options:") - col.itemR(halo, "texture") - col.itemR(halo, "vertex_normal") - col.itemR(halo, "xalpha") - col.itemR(halo, "shaded") - col.itemR(halo, "soft") + col.prop(mat, "diffuse_color", text="") + col.prop(halo, "size") + col.prop(halo, "hardness") + col.prop(halo, "add") + col.label(text="Options:") + col.prop(halo, "texture") + col.prop(halo, "vertex_normal") + col.prop(halo, "xalpha") + col.prop(halo, "shaded") + col.prop(halo, "soft") if wide_ui: col = split.column() - col.itemR(halo, "ring") + col.prop(halo, "ring") sub = col.column() sub.active = halo.ring - sub.itemR(halo, "rings") - sub.itemR(mat, "mirror_color", text="") - col.itemS() - col.itemR(halo, "lines") + sub.prop(halo, "rings") + sub.prop(mat, "mirror_color", text="") + col.separator() + col.prop(halo, "lines") sub = col.column() sub.active = halo.lines - sub.itemR(halo, "line_number", text="Lines") - sub.itemR(mat, "specular_color", text="") - col.itemS() - col.itemR(halo, "star") + sub.prop(halo, "line_number", text="Lines") + sub.prop(mat, "specular_color", text="") + col.separator() + col.prop(halo, "star") sub = col.column() sub.active = halo.star - sub.itemR(halo, "star_tips") + sub.prop(halo, "star_tips") class MATERIAL_PT_flare(MaterialButtonsPanel): @@ -698,7 +698,7 @@ class MATERIAL_PT_flare(MaterialButtonsPanel): def draw_header(self, context): halo = context.material.halo - self.layout.itemR(halo, "flare_mode", text="") + self.layout.prop(halo, "flare_mode", text="") def draw(self, context): layout = self.layout @@ -712,13 +712,13 @@ class MATERIAL_PT_flare(MaterialButtonsPanel): split = layout.split() col = split.column() - col.itemR(halo, "flare_size", text="Size") - col.itemR(halo, "flare_boost", text="Boost") - col.itemR(halo, "flare_seed", text="Seed") + col.prop(halo, "flare_size", text="Size") + col.prop(halo, "flare_boost", text="Boost") + col.prop(halo, "flare_seed", text="Seed") if wide_ui: col = split.column() - col.itemR(halo, "flares_sub", text="Subflares") - col.itemR(halo, "flare_subsize", text="Subsize") + col.prop(halo, "flares_sub", text="Subflares") + col.prop(halo, "flare_subsize", text="Subsize") bpy.types.register(MATERIAL_PT_context_material) bpy.types.register(MATERIAL_PT_preview) @@ -760,11 +760,11 @@ class MATERIAL_PT_volume_density(VolumeButtonsPanel): split = layout.split() col = split.column() - col.itemR(vol, "density") + col.prop(vol, "density") if wide_ui: col = split.column() - col.itemR(vol, "density_scale") + col.prop(vol, "density_scale") class MATERIAL_PT_volume_shading(VolumeButtonsPanel): @@ -781,18 +781,18 @@ class MATERIAL_PT_volume_shading(VolumeButtonsPanel): split = layout.split() col = split.column() - col.itemR(vol, "scattering") - col.itemR(vol, "asymmetry") - col.itemR(vol, "transmission_color") + col.prop(vol, "scattering") + col.prop(vol, "asymmetry") + col.prop(vol, "transmission_color") if wide_ui: col = split.column() sub = col.column(align=True) - sub.itemR(vol, "emission") - sub.itemR(vol, "emission_color", text="") + sub.prop(vol, "emission") + sub.prop(vol, "emission_color", text="") sub = col.column(align=True) - sub.itemR(vol, "reflection") - sub.itemR(vol, "reflection_color", text="") + sub.prop(vol, "reflection") + sub.prop(vol, "reflection_color", text="") class MATERIAL_PT_volume_lighting(VolumeButtonsPanel): @@ -809,28 +809,28 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel): split = layout.split() col = split.column() - col.itemR(vol, "lighting_mode", text="") + col.prop(vol, "lighting_mode", text="") if wide_ui: col = split.column() if vol.lighting_mode == 'SHADED': - col.itemR(vol, "external_shadows") - col.itemR(vol, "light_cache") + col.prop(vol, "external_shadows") + col.prop(vol, "light_cache") sub = col.column() sub.active = vol.light_cache - sub.itemR(vol, "cache_resolution") + sub.prop(vol, "cache_resolution") elif vol.lighting_mode in ('MULTIPLE_SCATTERING', 'SHADED_PLUS_MULTIPLE_SCATTERING'): sub = col.column() sub.enabled = True sub.active = False - sub.itemR(vol, "light_cache") - col.itemR(vol, "cache_resolution") + sub.prop(vol, "light_cache") + col.prop(vol, "cache_resolution") sub = col.column(align=True) - sub.itemR(vol, "ms_diffusion") - sub.itemR(vol, "ms_spread") - sub.itemR(vol, "ms_intensity") + sub.prop(vol, "ms_diffusion") + sub.prop(vol, "ms_spread") + sub.prop(vol, "ms_intensity") class MATERIAL_PT_volume_transp(VolumeButtonsPanel): @@ -844,9 +844,9 @@ class MATERIAL_PT_volume_transp(VolumeButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(mat, "transparency_method", expand=True) + layout.prop(mat, "transparency_method", expand=True) else: - layout.itemR(mat, "transparency_method", text="") + layout.prop(mat, "transparency_method", text="") class MATERIAL_PT_volume_integration(VolumeButtonsPanel): @@ -863,15 +863,15 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Step Calculation:") - col.itemR(vol, "step_calculation", text="") + col.label(text="Step Calculation:") + col.prop(vol, "step_calculation", text="") col = col.column(align=True) - col.itemR(vol, "step_size") + col.prop(vol, "step_size") if wide_ui: col = split.column() - col.itemL() - col.itemR(vol, "depth_cutoff") + col.label() + col.prop(vol, "depth_cutoff") bpy.types.register(MATERIAL_MT_sss_presets) diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index a1e3edba8ee..c7c1ce24d59 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -38,8 +38,8 @@ class OBJECT_PT_context_object(ObjectButtonsPanel): ob = context.object row = layout.row() - row.itemL(text="", icon='ICON_OBJECT_DATA') - row.itemR(ob, "name", text="") + row.label(text="", icon='ICON_OBJECT_DATA') + row.prop(ob, "name", text="") class OBJECT_PT_transform(ObjectButtonsPanel): @@ -54,32 +54,32 @@ class OBJECT_PT_transform(ObjectButtonsPanel): if wide_ui: row = layout.row() - row.column().itemR(ob, "location") + row.column().prop(ob, "location") if ob.rotation_mode == 'QUATERNION': - row.column().itemR(ob, "rotation_quaternion", text="Rotation") + row.column().prop(ob, "rotation_quaternion", text="Rotation") elif ob.rotation_mode == 'AXIS_ANGLE': - #row.column().itemL(text="Rotation") - #row.column().itemR(pchan, "rotation_angle", text="Angle") - #row.column().itemR(pchan, "rotation_axis", text="Axis") - row.column().itemR(ob, "rotation_axis_angle", text="Rotation") + #row.column().label(text="Rotation") + #row.column().prop(pchan, "rotation_angle", text="Angle") + #row.column().prop(pchan, "rotation_axis", text="Axis") + row.column().prop(ob, "rotation_axis_angle", text="Rotation") else: - row.column().itemR(ob, "rotation_euler", text="Rotation") + row.column().prop(ob, "rotation_euler", text="Rotation") - row.column().itemR(ob, "scale") + row.column().prop(ob, "scale") - layout.itemR(ob, "rotation_mode") + layout.prop(ob, "rotation_mode") else: col = layout.column() - col.itemR(ob, "location") - col.itemL(text="Rotation:") - col.itemR(ob, "rotation_mode", text="") + col.prop(ob, "location") + col.label(text="Rotation:") + col.prop(ob, "rotation_mode", text="") if ob.rotation_mode == 'QUATERNION': - col.itemR(ob, "rotation_quaternion", text="") + col.prop(ob, "rotation_quaternion", text="") elif ob.rotation_mode == 'AXIS_ANGLE': - col.itemR(ob, "rotation_axis_angle", text="") + col.prop(ob, "rotation_axis_angle", text="") else: - col.itemR(ob, "rotation_euler", text="") - col.itemR(ob, "scale") + col.prop(ob, "rotation_euler", text="") + col.prop(ob, "scale") class OBJECT_PT_transform_locks(ObjectButtonsPanel): @@ -95,18 +95,18 @@ class OBJECT_PT_transform_locks(ObjectButtonsPanel): row = layout.row() col = row.column() - col.itemR(ob, "lock_location", text="Location") + col.prop(ob, "lock_location", text="Location") col = row.column() if ob.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'): - col.itemR(ob, "lock_rotations_4d", text="Rotation") + col.prop(ob, "lock_rotations_4d", text="Rotation") if ob.lock_rotations_4d: - col.itemR(ob, "lock_rotation_w", text="W") - col.itemR(ob, "lock_rotation", text="") + col.prop(ob, "lock_rotation_w", text="W") + col.prop(ob, "lock_rotation", text="") else: - col.itemR(ob, "lock_rotation", text="Rotation") + col.prop(ob, "lock_rotation", text="Rotation") - row.column().itemR(ob, "lock_scale", text="Scale") + row.column().prop(ob, "lock_scale", text="Scale") class OBJECT_PT_relations(ObjectButtonsPanel): @@ -121,21 +121,21 @@ class OBJECT_PT_relations(ObjectButtonsPanel): split = layout.split() col = split.column() - col.itemR(ob, "layers") - col.itemS() - col.itemR(ob, "pass_index") + col.prop(ob, "layers") + col.separator() + col.prop(ob, "pass_index") if wide_ui: col = split.column() - col.itemL(text="Parent:") - col.itemR(ob, "parent", text="") + col.label(text="Parent:") + col.prop(ob, "parent", text="") sub = col.column() - sub.itemR(ob, "parent_type", text="") + sub.prop(ob, "parent_type", text="") parent = ob.parent if parent and ob.parent_type == 'BONE' and parent.type == 'ARMATURE': - sub.item_pointerR(ob, "parent_bone", parent.data, "bones", text="") - sub.active = parent != None + sub.prop_object(ob, "parent_bone", parent.data, "bones", text="") + sub.active = (parent is not None) class OBJECT_PT_groups(ObjectButtonsPanel): @@ -149,10 +149,10 @@ class OBJECT_PT_groups(ObjectButtonsPanel): if wide_ui: split = layout.split() - split.item_menu_enumO("object.group_add", "group", text="Add to Group") - split.itemL() + split.operator_menu_enum("object.group_add", "group", text="Add to Group") + split.label() else: - layout.item_menu_enumO("object.group_add", "group", text="Add to Group") + layout.operator_menu_enum("object.group_add", "group", text="Add to Group") for group in bpy.data.groups: if ob.name in group.objects: @@ -161,17 +161,17 @@ class OBJECT_PT_groups(ObjectButtonsPanel): col.set_context_pointer("group", group) row = col.box().row() - row.itemR(group, "name", text="") - row.itemO("object.group_remove", text="", icon='VICON_X') + row.prop(group, "name", text="") + row.operator("object.group_remove", text="", icon='ICON_X') split = col.box().split() col = split.column() - col.itemR(group, "layer", text="Dupli") + col.prop(group, "layer", text="Dupli") if wide_ui: col = split.column() - col.itemR(group, "dupli_offset", text="") + col.prop(group, "dupli_offset", text="") class OBJECT_PT_display(ObjectButtonsPanel): @@ -185,28 +185,28 @@ class OBJECT_PT_display(ObjectButtonsPanel): split = layout.split() col = split.column() - col.itemR(ob, "max_draw_type", text="Type") + col.prop(ob, "max_draw_type", text="Type") if wide_ui: col = split.column() row = col.row() - row.itemR(ob, "draw_bounds", text="Bounds") + row.prop(ob, "draw_bounds", text="Bounds") sub = row.row() sub.active = ob.draw_bounds - sub.itemR(ob, "draw_bounds_type", text="") + sub.prop(ob, "draw_bounds_type", text="") split = layout.split() col = split.column() - col.itemR(ob, "draw_name", text="Name") - col.itemR(ob, "draw_axis", text="Axis") - col.itemR(ob, "draw_wire", text="Wire") + col.prop(ob, "draw_name", text="Name") + col.prop(ob, "draw_axis", text="Axis") + col.prop(ob, "draw_wire", text="Wire") if wide_ui: col = split.column() - col.itemR(ob, "draw_texture_space", text="Texture Space") - col.itemR(ob, "x_ray", text="X-Ray") - col.itemR(ob, "draw_transparent", text="Transparency") + col.prop(ob, "draw_texture_space", text="Texture Space") + col.prop(ob, "x_ray", text="X-Ray") + col.prop(ob, "draw_transparent", text="Transparency") class OBJECT_PT_duplication(ObjectButtonsPanel): @@ -219,42 +219,42 @@ class OBJECT_PT_duplication(ObjectButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(ob, "dupli_type", expand=True) + layout.prop(ob, "dupli_type", expand=True) else: - layout.itemR(ob, "dupli_type", text="") + layout.prop(ob, "dupli_type", text="") if ob.dupli_type == 'FRAMES': split = layout.split() col = split.column(align=True) - col.itemR(ob, "dupli_frames_start", text="Start") - col.itemR(ob, "dupli_frames_end", text="End") + col.prop(ob, "dupli_frames_start", text="Start") + col.prop(ob, "dupli_frames_end", text="End") if wide_ui: col = split.column(align=True) - col.itemR(ob, "dupli_frames_on", text="On") - col.itemR(ob, "dupli_frames_off", text="Off") + col.prop(ob, "dupli_frames_on", text="On") + col.prop(ob, "dupli_frames_off", text="Off") - layout.itemR(ob, "dupli_frames_no_speed", text="No Speed") + layout.prop(ob, "dupli_frames_no_speed", text="No Speed") elif ob.dupli_type == 'VERTS': - layout.itemR(ob, "dupli_verts_rotation", text="Rotation") + layout.prop(ob, "dupli_verts_rotation", text="Rotation") elif ob.dupli_type == 'FACES': split = layout.split() col = split.column() - col.itemR(ob, "dupli_faces_scale", text="Scale") + col.prop(ob, "dupli_faces_scale", text="Scale") if wide_ui: col = split.column() - col.itemR(ob, "dupli_faces_inherit_scale", text="Inherit Scale") + col.prop(ob, "dupli_faces_inherit_scale", text="Inherit Scale") elif ob.dupli_type == 'GROUP': if wide_ui: - layout.itemR(ob, "dupli_group", text="Group") + layout.prop(ob, "dupli_group", text="Group") else: - layout.itemR(ob, "dupli_group", text="") + layout.prop(ob, "dupli_group", text="") class OBJECT_PT_animation(ObjectButtonsPanel): @@ -269,28 +269,28 @@ class OBJECT_PT_animation(ObjectButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Time Offset:") - col.itemR(ob, "time_offset_edit", text="Edit") + col.label(text="Time Offset:") + col.prop(ob, "time_offset_edit", text="Edit") row = col.row() - row.itemR(ob, "time_offset_particle", text="Particle") + row.prop(ob, "time_offset_particle", text="Particle") row.active = len(ob.particle_systems) != 0 row = col.row() - row.itemR(ob, "time_offset_parent", text="Parent") - row.active = ob.parent != None + row.prop(ob, "time_offset_parent", text="Parent") + row.active = (ob.parent is not None) row = col.row() - row.itemR(ob, "slow_parent") - row.active = ob.parent != None - col.itemR(ob, "time_offset", text="Offset") + row.prop(ob, "slow_parent") + row.active = (ob.parent is not None) + col.prop(ob, "time_offset", text="Offset") if wide_ui: col = split.column() - col.itemL(text="Track:") - col.itemR(ob, "track", text="") - col.itemR(ob, "track_axis", text="Axis") - col.itemR(ob, "up_axis", text="Up Axis") + col.label(text="Track:") + col.prop(ob, "track", text="") + col.prop(ob, "track_axis", text="Axis") + col.prop(ob, "up_axis", text="Up Axis") row = col.row() - row.itemR(ob, "track_override_parent", text="Override Parent") - row.active = ob.parent != None + row.prop(ob, "track_override_parent", text="Override Parent") + row.active = (ob.parent is not None) class OBJECT_PT_properties(ObjectButtonsPanel): diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index 007f9762872..d6552585191 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -21,6 +21,7 @@ import bpy narrowui = 180 + class ConstraintButtonsPanel(bpy.types.Panel): bl_space_type = 'PROPERTIES' bl_region_type = 'WINDOW' @@ -39,7 +40,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): # show/key buttons here are most likely obsolete now, with # keyframing functionality being part of every button if con.type not in ('RIGID_BODY_JOINT', 'SPLINE_IK', 'NULL'): - box.itemR(con, "influence") + box.prop(con, "influence") def space_template(self, layout, con, wide_ui, target=True, owner=True): if target or owner: @@ -47,63 +48,63 @@ class ConstraintButtonsPanel(bpy.types.Panel): split = layout.split(percentage=0.2) if wide_ui: - split.itemL(text="Space:") + split.label(text="Space:") row = split.row() else: row = layout.row() if target: - row.itemR(con, "target_space", text="") + row.prop(con, "target_space", text="") if wide_ui: if target and owner: - row.itemL(icon='ICON_ARROW_LEFTRIGHT') + row.label(icon='ICON_ARROW_LEFTRIGHT') else: row = layout.row() if owner: - row.itemR(con, "owner_space", text="") + row.prop(con, "owner_space", text="") def target_template(self, layout, con, wide_ui, subtargets=True): if wide_ui: - layout.itemR(con, "target") # XXX limiting settings for only 'curves' or some type of object + layout.prop(con, "target") # XXX limiting settings for only 'curves' or some type of object else: - layout.itemR(con, "target", text="") + layout.prop(con, "target", text="") if con.target and subtargets: if con.target.type == 'ARMATURE': if wide_ui: - layout.item_pointerR(con, "subtarget", con.target.data, "bones", text="Bone") + layout.prop_object(con, "subtarget", con.target.data, "bones", text="Bone") else: - layout.item_pointerR(con, "subtarget", con.target.data, "bones", text="") + layout.prop_object(con, "subtarget", con.target.data, "bones", text="") - if con.type == 'COPY_LOCATION': + if con.type in ('COPY_LOCATION', 'STRETCH_TO', 'TRACK_TO'): row = layout.row() - row.itemL(text="Head/Tail:") - row.itemR(con, "head_tail", text="") + row.label(text="Head/Tail:") + row.prop(con, "head_tail", text="") elif con.target.type in ('MESH', 'LATTICE'): - layout.item_pointerR(con, "subtarget", con.target, "vertex_groups", text="Vertex Group") + layout.prop_object(con, "subtarget", con.target, "vertex_groups", text="Vertex Group") def ik_template(self, layout, con, wide_ui): # only used for iTaSC - layout.itemR(con, "pole_target") + layout.prop(con, "pole_target") if con.pole_target and con.pole_target.type == 'ARMATURE': - layout.item_pointerR(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone") + layout.prop_object(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone") if con.pole_target: row = layout.row() - row.itemL() - row.itemR(con, "pole_angle") + row.label() + row.prop(con, "pole_angle") split = layout.split(percentage=0.33) col = split.column() - col.itemR(con, "tail") - col.itemR(con, "stretch") + col.prop(con, "tail") + col.prop(con, "stretch") col = split.column() - col.itemR(con, "chain_length") - col.itemR(con, "targetless") + col.prop(con, "chain_length") + col.prop(con, "targetless") def CHILD_OF(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) @@ -111,136 +112,136 @@ class ConstraintButtonsPanel(bpy.types.Panel): split = layout.split() col = split.column() - col.itemL(text="Location:") - col.itemR(con, "locationx", text="X") - col.itemR(con, "locationy", text="Y") - col.itemR(con, "locationz", text="Z") + col.label(text="Location:") + col.prop(con, "use_location_x", text="X") + col.prop(con, "use_location_y", text="Y") + col.prop(con, "use_location_z", text="Z") col = split.column() - col.itemL(text="Rotation:") - col.itemR(con, "rotationx", text="X") - col.itemR(con, "rotationy", text="Y") - col.itemR(con, "rotationz", text="Z") + col.label(text="Rotation:") + col.prop(con, "use_rotation_x", text="X") + col.prop(con, "use_rotation_y", text="Y") + col.prop(con, "use_rotation_z", text="Z") col = split.column() - col.itemL(text="Scale:") - col.itemR(con, "sizex", text="X") - col.itemR(con, "sizey", text="Y") - col.itemR(con, "sizez", text="Z") + col.label(text="Scale:") + col.prop(con, "use_scale_x", text="X") + col.prop(con, "use_scale_y", text="Y") + col.prop(con, "use_scale_z", text="Z") split = layout.split() col = split.column() - col.itemO("constraint.childof_set_inverse") + col.operator("constraint.childof_set_inverse") if wide_ui: col = split.column() - col.itemO("constraint.childof_clear_inverse") + col.operator("constraint.childof_clear_inverse") def TRACK_TO(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) row = layout.row() if wide_ui: - row.itemL(text="To:") - row.itemR(con, "track", expand=True) + row.label(text="To:") + row.prop(con, "track", expand=True) split = layout.split() col = split.column() - col.itemR(con, "up", text="Up") + col.prop(con, "up", text="Up") if wide_ui: col = split.column() - col.itemR(con, "target_z") + col.prop(con, "target_z") self.space_template(layout, con, wide_ui) def IK(self, context, layout, con, wide_ui): if context.object.pose.ik_solver == "ITASC": - layout.itemR(con, "ik_type") - getattr(self, 'IK_' + con.ik_type)(context, layout, con) + layout.prop(con, "ik_type") + getattr(self, 'IK_' + con.ik_type)(context, layout, con, wide_ui) else: # Legacy IK constraint self.target_template(layout, con, wide_ui) if wide_ui: - layout.itemR(con, "pole_target") + layout.prop(con, "pole_target") else: - layout.itemR(con, "pole_target", text="") + layout.prop(con, "pole_target", text="") if con.pole_target and con.pole_target.type == 'ARMATURE': if wide_ui: - layout.item_pointerR(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone") + layout.prop_object(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone") else: - layout.item_pointerR(con, "pole_subtarget", con.pole_target.data, "bones", text="") + layout.prop_object(con, "pole_subtarget", con.pole_target.data, "bones", text="") if con.pole_target: row = layout.row() - row.itemR(con, "pole_angle") + row.prop(con, "pole_angle") if wide_ui: - row.itemL() + row.label() split = layout.split() col = split.column() - col.itemR(con, "iterations") - col.itemR(con, "chain_length") + col.prop(con, "iterations") + col.prop(con, "chain_length") - col.itemL(text="Weight:") - col.itemR(con, "weight", text="Position", slider=True) + col.label(text="Weight:") + col.prop(con, "weight", text="Position", slider=True) sub = col.column() - sub.active = con.rotation - sub.itemR(con, "orient_weight", text="Rotation", slider=True) + sub.active = con.use_rotation + sub.prop(con, "orient_weight", text="Rotation", slider=True) if wide_ui: col = split.column() - col.itemR(con, "tail") - col.itemR(con, "stretch") - col.itemS() - col.itemR(con, "targetless") - col.itemR(con, "rotation") + col.prop(con, "use_tail") + col.prop(con, "use_stretch") + col.separator() + col.prop(con, "use_target") + col.prop(con, "use_rotation") def IK_COPY_POSE(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) self.ik_template(layout, con, wide_ui) row = layout.row() - row.itemL(text="Axis Ref:") - row.itemR(con, "axis_reference", expand=True) + row.label(text="Axis Ref:") + row.prop(con, "axis_reference", expand=True) split = layout.split(percentage=0.33) - split.row().itemR(con, "position") + split.row().prop(con, "position") row = split.row() - row.itemR(con, "weight", text="Weight", slider=True) + row.prop(con, "weight", text="Weight", slider=True) row.active = con.position split = layout.split(percentage=0.33) row = split.row() - row.itemL(text="Lock:") + row.label(text="Lock:") row = split.row() - row.itemR(con, "pos_lock_x", text="X") - row.itemR(con, "pos_lock_y", text="Y") - row.itemR(con, "pos_lock_z", text="Z") - split.active = con.position + row.prop(con, "pos_lock_x", text="X") + row.prop(con, "pos_lock_y", text="Y") + row.prop(con, "pos_lock_z", text="Z") + split.active = con.use_position split = layout.split(percentage=0.33) - split.row().itemR(con, "rotation") + split.row().prop(con, "rotation") row = split.row() - row.itemR(con, "orient_weight", text="Weight", slider=True) - row.active = con.rotation + row.prop(con, "orient_weight", text="Weight", slider=True) + row.active = con.use_rotation split = layout.split(percentage=0.33) row = split.row() - row.itemL(text="Lock:") + row.label(text="Lock:") row = split.row() - row.itemR(con, "rot_lock_x", text="X") - row.itemR(con, "rot_lock_y", text="Y") - row.itemR(con, "rot_lock_z", text="Z") - split.active = con.rotation + row.prop(con, "rot_lock_x", text="X") + row.prop(con, "rot_lock_y", text="Y") + row.prop(con, "rot_lock_z", text="Z") + split.active = con.use_rotation def IK_DISTANCE(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) self.ik_template(layout, con, wide_ui) - layout.itemR(con, "limit_mode") + layout.prop(con, "limit_mode") row = layout.row() - row.itemR(con, "weight", text="Weight", slider=True) - row.itemR(con, "distance", text="Distance", slider=True) + row.prop(con, "weight", text="Weight", slider=True) + row.prop(con, "distance", text="Distance", slider=True) def FOLLOW_PATH(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) @@ -248,153 +249,153 @@ class ConstraintButtonsPanel(bpy.types.Panel): split = layout.split() col = split.column() - col.itemR(con, "use_curve_follow") - col.itemR(con, "use_curve_radius") + col.prop(con, "use_curve_follow") + col.prop(con, "use_curve_radius") if wide_ui: col = split.column() - col.itemR(con, "use_fixed_position") + col.prop(con, "use_fixed_position") if con.use_fixed_position: - col.itemR(con, "offset_factor", text="Offset") + col.prop(con, "offset_factor", text="Offset") else: - col.itemR(con, "offset") + col.prop(con, "offset") row = layout.row() if wide_ui: - row.itemL(text="Forward:") - row.itemR(con, "forward", expand=True) + row.label(text="Forward:") + row.prop(con, "forward", expand=True) row = layout.row() - row.itemR(con, "up", text="Up") + row.prop(con, "up", text="Up") if wide_ui: - row.itemL() + row.label() def LIMIT_ROTATION(self, context, layout, con, wide_ui): split = layout.split() col = split.column(align=True) - col.itemR(con, "use_limit_x") + col.prop(con, "use_limit_x") sub = col.column() sub.active = con.use_limit_x - sub.itemR(con, "minimum_x", text="Min") - sub.itemR(con, "maximum_x", text="Max") + sub.prop(con, "minimum_x", text="Min") + sub.prop(con, "maximum_x", text="Max") if wide_ui: col = split.column(align=True) - col.itemR(con, "use_limit_y") + col.prop(con, "use_limit_y") sub = col.column() sub.active = con.use_limit_y - sub.itemR(con, "minimum_y", text="Min") - sub.itemR(con, "maximum_y", text="Max") + sub.prop(con, "minimum_y", text="Min") + sub.prop(con, "maximum_y", text="Max") if wide_ui: col = split.column(align=True) - col.itemR(con, "use_limit_z") + col.prop(con, "use_limit_z") sub = col.column() sub.active = con.use_limit_z - sub.itemR(con, "minimum_z", text="Min") - sub.itemR(con, "maximum_z", text="Max") + sub.prop(con, "minimum_z", text="Min") + sub.prop(con, "maximum_z", text="Max") row = layout.row() - row.itemR(con, "limit_transform") + row.prop(con, "limit_transform") if wide_ui: - row.itemL() + row.label() row = layout.row() if wide_ui: - row.itemL(text="Convert:") - row.itemR(con, "owner_space", text="") + row.label(text="Convert:") + row.prop(con, "owner_space", text="") def LIMIT_LOCATION(self, context, layout, con, wide_ui): split = layout.split() col = split.column() - col.itemR(con, "use_minimum_x") + col.prop(con, "use_minimum_x") sub = col.column() sub.active = con.use_minimum_x - sub.itemR(con, "minimum_x", text="") - col.itemR(con, "use_maximum_x") + sub.prop(con, "minimum_x", text="") + col.prop(con, "use_maximum_x") sub = col.column() sub.active = con.use_maximum_x - sub.itemR(con, "maximum_x", text="") + sub.prop(con, "maximum_x", text="") if wide_ui: col = split.column() - col.itemR(con, "use_minimum_y") + col.prop(con, "use_minimum_y") sub = col.column() sub.active = con.use_minimum_y - sub.itemR(con, "minimum_y", text="") - col.itemR(con, "use_maximum_y") + sub.prop(con, "minimum_y", text="") + col.prop(con, "use_maximum_y") sub = col.column() sub.active = con.use_maximum_y - sub.itemR(con, "maximum_y", text="") + sub.prop(con, "maximum_y", text="") if wide_ui: col = split.column() - col.itemR(con, "use_minimum_z") + col.prop(con, "use_minimum_z") sub = col.column() sub.active = con.use_minimum_z - sub.itemR(con, "minimum_z", text="") - col.itemR(con, "use_maximum_z") + sub.prop(con, "minimum_z", text="") + col.prop(con, "use_maximum_z") sub = col.column() sub.active = con.use_maximum_z - sub.itemR(con, "maximum_z", text="") + sub.prop(con, "maximum_z", text="") row = layout.row() - row.itemR(con, "limit_transform") + row.prop(con, "limit_transform") if wide_ui: - row.itemL() + row.label() row = layout.row() if wide_ui: - row.itemL(text="Convert:") - row.itemR(con, "owner_space", text="") + row.label(text="Convert:") + row.prop(con, "owner_space", text="") def LIMIT_SCALE(self, context, layout, con, wide_ui): split = layout.split() col = split.column() - col.itemR(con, "use_minimum_x") + col.prop(con, "use_minimum_x") sub = col.column() sub.active = con.use_minimum_x - sub.itemR(con, "minimum_x", text="") - col.itemR(con, "use_maximum_x") + sub.prop(con, "minimum_x", text="") + col.prop(con, "use_maximum_x") sub = col.column() sub.active = con.use_maximum_x - sub.itemR(con, "maximum_x", text="") + sub.prop(con, "maximum_x", text="") if wide_ui: col = split.column() - col.itemR(con, "use_minimum_y") + col.prop(con, "use_minimum_y") sub = col.column() sub.active = con.use_minimum_y - sub.itemR(con, "minimum_y", text="") - col.itemR(con, "use_maximum_y") + sub.prop(con, "minimum_y", text="") + col.prop(con, "use_maximum_y") sub = col.column() sub.active = con.use_maximum_y - sub.itemR(con, "maximum_y", text="") + sub.prop(con, "maximum_y", text="") if wide_ui: col = split.column() - col.itemR(con, "use_minimum_z") + col.prop(con, "use_minimum_z") sub = col.column() sub.active = con.use_minimum_z - sub.itemR(con, "minimum_z", text="") - col.itemR(con, "use_maximum_z") + sub.prop(con, "minimum_z", text="") + col.prop(con, "use_maximum_z") sub = col.column() sub.active = con.use_maximum_z - sub.itemR(con, "maximum_z", text="") + sub.prop(con, "maximum_z", text="") row = layout.row() - row.itemR(con, "limit_transform") + row.prop(con, "limit_transform") if wide_ui: - row.itemL() + row.label() row = layout.row() if wide_ui: - row.itemL(text="Convert:") - row.itemR(con, "owner_space", text="") + row.label(text="Convert:") + row.prop(con, "owner_space", text="") def COPY_ROTATION(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) @@ -402,24 +403,24 @@ class ConstraintButtonsPanel(bpy.types.Panel): split = layout.split() col = split.column() - col.itemR(con, "rotate_like_x", text="X") + col.prop(con, "use_x", text="X") sub = col.column() - sub.active = con.rotate_like_x - sub.itemR(con, "invert_x", text="Invert") + sub.active = con.use_x + sub.prop(con, "invert_x", text="Invert") col = split.column() - col.itemR(con, "rotate_like_y", text="Y") + col.prop(con, "use_y", text="Y") sub = col.column() - sub.active = con.rotate_like_y - sub.itemR(con, "invert_y", text="Invert") + sub.active = con.use_y + sub.prop(con, "invert_y", text="Invert") col = split.column() - col.itemR(con, "rotate_like_z", text="Z") + col.prop(con, "use_z", text="Z") sub = col.column() - sub.active = con.rotate_like_z - sub.itemR(con, "invert_z", text="Invert") + sub.active = con.use_z + sub.prop(con, "invert_z", text="Invert") - layout.itemR(con, "offset") + layout.prop(con, "use_offset") self.space_template(layout, con, wide_ui) @@ -429,24 +430,24 @@ class ConstraintButtonsPanel(bpy.types.Panel): split = layout.split() col = split.column() - col.itemR(con, "locate_like_x", text="X") + col.prop(con, "use_x", text="X") sub = col.column() - sub.active = con.locate_like_x - sub.itemR(con, "invert_x", text="Invert") + sub.active = con.use_x + sub.prop(con, "invert_x", text="Invert") col = split.column() - col.itemR(con, "locate_like_y", text="Y") + col.prop(con, "use_y", text="Y") sub = col.column() - sub.active = con.locate_like_y - sub.itemR(con, "invert_y", text="Invert") + sub.active = con.use_y + sub.prop(con, "invert_y", text="Invert") col = split.column() - col.itemR(con, "locate_like_z", text="Z") + col.prop(con, "use_z", text="Z") sub = col.column() - sub.active = con.locate_like_z - sub.itemR(con, "invert_z", text="Invert") + sub.active = con.use_z + sub.prop(con, "invert_z", text="Invert") - layout.itemR(con, "offset") + layout.prop(con, "use_offset") self.space_template(layout, con, wide_ui) @@ -454,11 +455,11 @@ class ConstraintButtonsPanel(bpy.types.Panel): self.target_template(layout, con, wide_ui) row = layout.row(align=True) - row.itemR(con, "size_like_x", text="X") - row.itemR(con, "size_like_y", text="Y") - row.itemR(con, "size_like_z", text="Z") + row.prop(con, "use_x", text="X") + row.prop(con, "use_y", text="Y") + row.prop(con, "use_z", text="Z") - layout.itemR(con, "offset") + layout.prop(con, "use_offset") self.space_template(layout, con, wide_ui) @@ -468,56 +469,56 @@ class ConstraintButtonsPanel(bpy.types.Panel): self.target_template(layout, con, wide_ui) if wide_ui: - layout.itemR(con, "action") + layout.prop(con, "action") else: - layout.itemR(con, "action", text="") + layout.prop(con, "action", text="") if wide_ui: - layout.itemR(con, "transform_channel") + layout.prop(con, "transform_channel") else: - layout.itemR(con, "transform_channel", text="") + layout.prop(con, "transform_channel", text="") split = layout.split() col = split.column(align=True) - col.itemL(text="Action Length:") - col.itemR(con, "start_frame", text="Start") - col.itemR(con, "end_frame", text="End") + col.label(text="Action Length:") + col.prop(con, "start_frame", text="Start") + col.prop(con, "end_frame", text="End") if wide_ui: col = split.column(align=True) - col.itemL(text="Target Range:") - col.itemR(con, "minimum", text="Min") - col.itemR(con, "maximum", text="Max") + col.label(text="Target Range:") + col.prop(con, "minimum", text="Min") + col.prop(con, "maximum", text="Max") row = layout.row() if wide_ui: - row.itemL(text="Convert:") - row.itemR(con, "target_space", text="") + row.label(text="Convert:") + row.prop(con, "target_space", text="") def LOCKED_TRACK(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) row = layout.row() if wide_ui: - row.itemL(text="To:") - row.itemR(con, "track", expand=True) + row.label(text="To:") + row.prop(con, "track", expand=True) row = layout.row() if wide_ui: - row.itemL(text="Lock:") - row.itemR(con, "locked", expand=True) + row.label(text="Lock:") + row.prop(con, "locked", expand=True) def LIMIT_DISTANCE(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) col = layout.column(align=True) - col.itemR(con, "distance") - col.itemO("constraint.limitdistance_reset") + col.prop(con, "distance") + col.operator("constraint.limitdistance_reset") row = layout.row() - row.itemL(text="Clamp Region:") - row.itemR(con, "limit_mode", text="") + row.label(text="Clamp Region:") + row.prop(con, "limit_mode", text="") def STRETCH_TO(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) @@ -525,23 +526,23 @@ class ConstraintButtonsPanel(bpy.types.Panel): split = layout.split() col = split.column() - col.itemR(con, "original_length", text="Rest Length") + col.prop(con, "original_length", text="Rest Length") if wide_ui: col = split.column() - col.itemO("constraint.stretchto_reset", text="Reset") + col.operator("constraint.stretchto_reset", text="Reset") col = layout.column() - col.itemR(con, "bulge", text="Volume Variation") + col.prop(con, "bulge", text="Volume Variation") row = layout.row() if wide_ui: - row.itemL(text="Volume:") - row.itemR(con, "volume", expand=True) + row.label(text="Volume:") + row.prop(con, "volume", expand=True) if not wide_ui: row = layout.row() - row.itemL(text="Plane:") - row.itemR(con, "keep_axis", expand=True) + row.label(text="Plane:") + row.prop(con, "keep_axis", expand=True) def FLOOR(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) @@ -549,54 +550,54 @@ class ConstraintButtonsPanel(bpy.types.Panel): split = layout.split() col = split.column() - col.itemR(con, "sticky") + col.prop(con, "sticky") if wide_ui: col = split.column() - col.itemR(con, "use_rotation") + col.prop(con, "use_rotation") - layout.itemR(con, "offset") + layout.prop(con, "offset") row = layout.row() if wide_ui: - row.itemL(text="Min/Max:") - row.itemR(con, "floor_location", expand=True) + row.label(text="Min/Max:") + row.prop(con, "floor_location", expand=True) def RIGID_BODY_JOINT(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) if wide_ui: - layout.itemR(con, "pivot_type") + layout.prop(con, "pivot_type") else: - layout.itemR(con, "pivot_type", text="") + layout.prop(con, "pivot_type", text="") if wide_ui: - layout.itemR(con, "child") + layout.prop(con, "child") else: - layout.itemR(con, "child", text="") + layout.prop(con, "child", text="") split = layout.split() col = split.column() - col.itemR(con, "disable_linked_collision", text="No Collision") + col.prop(con, "disable_linked_collision", text="No Collision") if wide_ui: col = split.column() - col.itemR(con, "draw_pivot", text="Display Pivot") + col.prop(con, "draw_pivot", text="Display Pivot") split = layout.split() col = split.column(align=True) - col.itemL(text="Pivot:") - col.itemR(con, "pivot_x", text="X") - col.itemR(con, "pivot_y", text="Y") - col.itemR(con, "pivot_z", text="Z") + col.label(text="Pivot:") + col.prop(con, "pivot_x", text="X") + col.prop(con, "pivot_y", text="Y") + col.prop(con, "pivot_z", text="Z") if wide_ui: col = split.column(align=True) - col.itemL(text="Axis:") - col.itemR(con, "axis_x", text="X") - col.itemR(con, "axis_y", text="Y") - col.itemR(con, "axis_z", text="Z") + col.label(text="Axis:") + col.prop(con, "axis_x", text="X") + col.prop(con, "axis_y", text="Y") + col.prop(con, "axis_z", text="Z") #Missing: Limit arrays (not wrapped in RNA yet) @@ -605,112 +606,113 @@ class ConstraintButtonsPanel(bpy.types.Panel): row = layout.row() if wide_ui: - row.itemL(text="Main Axis:") - row.itemR(con, "main_axis", expand=True) + row.label(text="Main Axis:") + row.prop(con, "main_axis", expand=True) row = layout.row() - row.itemR(con, "cyclic") + row.prop(con, "cyclic") def TRANSFORM(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) - layout.itemR(con, "extrapolate_motion", text="Extrapolate") + layout.prop(con, "extrapolate_motion", text="Extrapolate") col = layout.column() - col.row().itemL(text="Source:") - col.row().itemR(con, "map_from", expand=True) + col.row().label(text="Source:") + col.row().prop(con, "map_from", expand=True) split = layout.split() sub = split.column(align=True) - sub.itemL(text="X:") - sub.itemR(con, "from_min_x", text="Min") - sub.itemR(con, "from_max_x", text="Max") + sub.label(text="X:") + sub.prop(con, "from_min_x", text="Min") + sub.prop(con, "from_max_x", text="Max") if wide_ui: sub = split.column(align=True) - sub.itemL(text="Y:") - sub.itemR(con, "from_min_y", text="Min") - sub.itemR(con, "from_max_y", text="Max") + sub.label(text="Y:") + sub.prop(con, "from_min_y", text="Min") + sub.prop(con, "from_max_y", text="Max") if wide_ui: sub = split.column(align=True) - sub.itemL(text="Z:") - sub.itemR(con, "from_min_z", text="Min") - sub.itemR(con, "from_max_z", text="Max") + sub.label(text="Z:") + sub.prop(con, "from_min_z", text="Min") + sub.prop(con, "from_max_z", text="Max") split = layout.split() col = split.column() - col.itemL(text="Destination:") - col.row().itemR(con, "map_to", expand=True) + col.label(text="Destination:") + col.row().prop(con, "map_to", expand=True) split = layout.split() col = split.column() - col.itemL(text="X:") - col.row().itemR(con, "map_to_x_from", expand=True) + col.label(text="X:") + col.row().prop(con, "map_to_x_from", expand=True) sub = col.column(align=True) - sub.itemR(con, "to_min_x", text="Min") - sub.itemR(con, "to_max_x", text="Max") + sub.prop(con, "to_min_x", text="Min") + sub.prop(con, "to_max_x", text="Max") if wide_ui: col = split.column() - col.itemL(text="Y:") - col.row().itemR(con, "map_to_y_from", expand=True) + col.label(text="Y:") + col.row().prop(con, "map_to_y_from", expand=True) sub = col.column(align=True) - sub.itemR(con, "to_min_y", text="Min") - sub.itemR(con, "to_max_y", text="Max") + sub.prop(con, "to_min_y", text="Min") + sub.prop(con, "to_max_y", text="Max") if wide_ui: col = split.column() - col.itemL(text="Z:") - col.row().itemR(con, "map_to_z_from", expand=True) + col.label(text="Z:") + col.row().prop(con, "map_to_z_from", expand=True) sub = col.column(align=True) - sub.itemR(con, "to_min_z", text="Min") - sub.itemR(con, "to_max_z", text="Max") + sub.prop(con, "to_min_z", text="Min") + sub.prop(con, "to_max_z", text="Max") self.space_template(layout, con, wide_ui) def SHRINKWRAP(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) - layout.itemR(con, "distance") - layout.itemR(con, "shrinkwrap_type") + layout.prop(con, "distance") + layout.prop(con, "shrinkwrap_type") if con.shrinkwrap_type == 'PROJECT': row = layout.row(align=True) - row.itemR(con, "axis_x") - row.itemR(con, "axis_y") - row.itemR(con, "axis_z") + row.prop(con, "use_x") + row.prop(con, "use_y") + row.prop(con, "use_z") def DAMPED_TRACK(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) row = layout.row() if wide_ui: - row.itemL(text="To:") - row.itemR(con, "track", expand=True) + row.label(text="To:") + row.prop(con, "track", expand=True) def SPLINE_IK(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) col = layout.column() - col.itemL(text="Spline Fitting:") - col.itemR(con, "chain_length") - col.itemR(con, "even_divisions") - col.itemR(con, "chain_offset") + col.label(text="Spline Fitting:") + col.prop(con, "chain_length") + col.prop(con, "even_divisions") + col.prop(con, "chain_offset") col = layout.column() - col.itemL(text="Chain Scaling:") - col.itemR(con, "y_scaling") + col.label(text="Chain Scaling:") + col.prop(con, "y_stretch") if wide_ui: - col.itemR(con, "xz_scaling_mode") + col.prop(con, "xz_scaling_mode") else: - col.itemR(con, "xz_scaling_mode", text="") + col.prop(con, "xz_scaling_mode", text="") + col.prop(con, "use_curve_radius") class OBJECT_PT_constraints(ConstraintButtonsPanel): @@ -726,9 +728,9 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel): wide_ui = context.region.width > narrowui row = layout.row() - row.item_menu_enumO("object.constraint_add", "type") + row.operator_menu_enum("object.constraint_add", "type") if wide_ui: - row.itemL() + row.label() for con in ob.constraints: self.draw_constraint(context, con) @@ -758,12 +760,12 @@ class BONE_PT_inverse_kinematics(ConstraintButtonsPanel): wide_ui = context.region.width > narrowui row = layout.row() - row.itemR(ob.pose, "ik_solver") + row.prop(ob.pose, "ik_solver") split = layout.split(percentage=0.25) - split.itemR(pchan, "ik_dof_x", text="X") + split.prop(pchan, "ik_dof_x", text="X") row = split.row() - row.itemR(pchan, "ik_stiffness_x", text="Stiffness", slider=True) + row.prop(pchan, "ik_stiffness_x", text="Stiffness", slider=True) row.active = pchan.ik_dof_x if wide_ui: @@ -771,18 +773,18 @@ class BONE_PT_inverse_kinematics(ConstraintButtonsPanel): sub = split.row() else: sub = layout.column(align=True) - sub.itemR(pchan, "ik_limit_x", text="Limit") + sub.prop(pchan, "ik_limit_x", text="Limit") sub.active = pchan.ik_dof_x if wide_ui: sub = split.row(align=True) - sub.itemR(pchan, "ik_min_x", text="") - sub.itemR(pchan, "ik_max_x", text="") + sub.prop(pchan, "ik_min_x", text="") + sub.prop(pchan, "ik_max_x", text="") sub.active = pchan.ik_dof_x and pchan.ik_limit_x split = layout.split(percentage=0.25) - split.itemR(pchan, "ik_dof_y", text="Y") + split.prop(pchan, "ik_dof_y", text="Y") row = split.row() - row.itemR(pchan, "ik_stiffness_y", text="Stiffness", slider=True) + row.prop(pchan, "ik_stiffness_y", text="Stiffness", slider=True) row.active = pchan.ik_dof_y if wide_ui: @@ -790,18 +792,18 @@ class BONE_PT_inverse_kinematics(ConstraintButtonsPanel): sub = split.row() else: sub = layout.column(align=True) - sub.itemR(pchan, "ik_limit_y", text="Limit") + sub.prop(pchan, "ik_limit_y", text="Limit") sub.active = pchan.ik_dof_y if wide_ui: sub = split.row(align=True) - sub.itemR(pchan, "ik_min_y", text="") - sub.itemR(pchan, "ik_max_y", text="") + sub.prop(pchan, "ik_min_y", text="") + sub.prop(pchan, "ik_max_y", text="") sub.active = pchan.ik_dof_y and pchan.ik_limit_y split = layout.split(percentage=0.25) - split.itemR(pchan, "ik_dof_z", text="Z") + split.prop(pchan, "ik_dof_z", text="Z") sub = split.row() - sub.itemR(pchan, "ik_stiffness_z", text="Stiffness", slider=True) + sub.prop(pchan, "ik_stiffness_z", text="Stiffness", slider=True) sub.active = pchan.ik_dof_z if wide_ui: @@ -809,29 +811,29 @@ class BONE_PT_inverse_kinematics(ConstraintButtonsPanel): sub = split.row() else: sub = layout.column(align=True) - sub.itemR(pchan, "ik_limit_z", text="Limit") + sub.prop(pchan, "ik_limit_z", text="Limit") sub.active = pchan.ik_dof_z if wide_ui: sub = split.row(align=True) - sub.itemR(pchan, "ik_min_z", text="") - sub.itemR(pchan, "ik_max_z", text="") + sub.prop(pchan, "ik_min_z", text="") + sub.prop(pchan, "ik_max_z", text="") sub.active = pchan.ik_dof_z and pchan.ik_limit_z split = layout.split() - split.itemR(pchan, "ik_stretch", text="Stretch", slider=True) + split.prop(pchan, "ik_stretch", text="Stretch", slider=True) if wide_ui: - split.itemL() + split.label() if ob.pose.ik_solver == 'ITASC': split = layout.split() col = split.column() - col.itemR(pchan, "ik_rot_control", text="Control Rotation") + col.prop(pchan, "ik_rot_control", text="Control Rotation") if wide_ui: col = split.column() - col.itemR(pchan, "ik_rot_weight", text="Weight", slider=True) + col.prop(pchan, "ik_rot_weight", text="Weight", slider=True) # not supported yet #row = layout.row() - #row.itemR(pchan, "ik_lin_control", text="Joint Size") - #row.itemR(pchan, "ik_lin_weight", text="Weight", slider=True) + #row.prop(pchan, "ik_lin_control", text="Joint Size") + #row.prop(pchan, "ik_lin_weight", text="Weight", slider=True) class BONE_PT_iksolver_itasc(ConstraintButtonsPanel): @@ -856,39 +858,39 @@ class BONE_PT_iksolver_itasc(ConstraintButtonsPanel): itasc = ob.pose.ik_param wide_ui = context.region.width > narrowui - layout.itemR(itasc, "mode", expand=True) + layout.prop(itasc, "mode", expand=True) simulation = itasc.mode == 'SIMULATION' if simulation: - layout.itemL(text="Reiteration:") - layout.itemR(itasc, "reiteration", expand=True) + layout.label(text="Reiteration:") + layout.prop(itasc, "reiteration", expand=True) split = layout.split() split.active = not simulation or itasc.reiteration != 'NEVER' col = split.column() - col.itemR(itasc, "precision") + col.prop(itasc, "precision") if wide_ui: col = split.column() - col.itemR(itasc, "num_iter") + col.prop(itasc, "num_iter") if simulation: - layout.itemR(itasc, "auto_step") + layout.prop(itasc, "auto_step") row = layout.row() if itasc.auto_step: - row.itemR(itasc, "min_step", text="Min") - row.itemR(itasc, "max_step", text="Max") + row.prop(itasc, "min_step", text="Min") + row.prop(itasc, "max_step", text="Max") else: - row.itemR(itasc, "num_step") + row.prop(itasc, "num_step") - layout.itemR(itasc, "solver") + layout.prop(itasc, "solver") if simulation: - layout.itemR(itasc, "feedback") - layout.itemR(itasc, "max_velocity") + layout.prop(itasc, "feedback") + layout.prop(itasc, "max_velocity") if itasc.solver == 'DLS': row = layout.row() - row.itemR(itasc, "dampmax", text="Damp", slider=True) - row.itemR(itasc, "dampeps", text="Eps", slider=True) + row.prop(itasc, "dampmax", text="Damp", slider=True) + row.prop(itasc, "dampeps", text="Eps", slider=True) class BONE_PT_constraints(ConstraintButtonsPanel): @@ -907,9 +909,9 @@ class BONE_PT_constraints(ConstraintButtonsPanel): wide_ui = context.region.width > narrowui row = layout.row() - row.item_menu_enumO("pose.constraint_add", "type") + row.operator_menu_enum("pose.constraint_add", "type") if wide_ui: - row.itemL() + row.label() for con in pchan.constraints: self.draw_constraint(context, con) diff --git a/release/scripts/ui/properties_particle.py b/release/scripts/ui/properties_particle.py index 840ba549d87..d95455f7c10 100644 --- a/release/scripts/ui/properties_particle.py +++ b/release/scripts/ui/properties_particle.py @@ -26,14 +26,14 @@ from properties_physics_common import basic_force_field_falloff_ui def particle_panel_enabled(context, psys): - return psys.point_cache.baked == False and psys.edited == False and (not context.particle_system_editable) + return (psys.point_cache.baked is False) and (not psys.edited) and (not context.particle_system_editable) def particle_panel_poll(context): psys = context.particle_system - if psys == None: + if psys is None: return False - if psys.settings == None: + if psys.settings is None: return False return psys.settings.type in ('EMITTER', 'REACTOR', 'HAIR') @@ -66,68 +66,68 @@ class PARTICLE_PT_particles(ParticleButtonsPanel): row.template_list(ob, "particle_systems", ob, "active_particle_system_index", rows=2) col = row.column(align=True) - col.itemO("object.particle_system_add", icon='ICON_ZOOMIN', text="") - col.itemO("object.particle_system_remove", icon='ICON_ZOOMOUT', text="") + col.operator("object.particle_system_add", icon='ICON_ZOOMIN', text="") + col.operator("object.particle_system_remove", icon='ICON_ZOOMOUT', text="") if psys and not psys.settings: split = layout.split(percentage=0.32) col = split.column() - col.itemL(text="Name:") - col.itemL(text="Settings:") + col.label(text="Name:") + col.label(text="Settings:") col = split.column() - col.itemR(psys, "name", text="") + col.prop(psys, "name", text="") col.template_ID(psys, "settings", new="particle.new") elif psys: part = psys.settings split = layout.split(percentage=0.32) col = split.column() - col.itemL(text="Name:") + col.label(text="Name:") if part.type in ('EMITTER', 'REACTOR', 'HAIR'): - col.itemL(text="Settings:") - col.itemL(text="Type:") + col.label(text="Settings:") + col.label(text="Type:") col = split.column() - col.itemR(psys, "name", text="") + col.prop(psys, "name", text="") if part.type in ('EMITTER', 'REACTOR', 'HAIR'): col.template_ID(psys, "settings", new="particle.new") #row = layout.row() - #row.itemL(text="Viewport") - #row.itemL(text="Render") + #row.label(text="Viewport") + #row.label(text="Render") if part: if part.type not in ('EMITTER', 'REACTOR', 'HAIR'): - layout.itemL(text="No settings for fluid particles") + layout.label(text="No settings for fluid particles") return row = col.row() row.enabled = particle_panel_enabled(context, psys) - row.itemR(part, "type", text="") - row.itemR(psys, "seed") + row.prop(part, "type", text="") + row.prop(psys, "seed") split = layout.split(percentage=0.65) if part.type == 'HAIR': - if psys.edited == True: - split.itemO("particle.edited_clear", text="Free Edit") + if psys.edited: + split.operator("particle.edited_clear", text="Free Edit") else: - split.itemL(text="") + split.label(text="") row = split.row() row.enabled = particle_panel_enabled(context, psys) - row.itemR(part, "hair_step") - if psys.edited == True: + row.prop(part, "hair_step") + if psys.edited: if psys.global_hair: - layout.itemO("particle.connect_hair") - layout.itemL(text="Hair is disconnected.") + layout.operator("particle.connect_hair") + layout.label(text="Hair is disconnected.") else: - layout.itemO("particle.disconnect_hair") - layout.itemL(text="") + layout.operator("particle.disconnect_hair") + layout.label(text="") elif part.type == 'REACTOR': split.enabled = particle_panel_enabled(context, psys) - split.itemR(psys, "reactor_target_object") - split.itemR(psys, "reactor_target_particle_system", text="Particle System") + split.prop(psys, "reactor_target_object") + split.prop(psys, "reactor_target_particle_system", text="Particle System") class PARTICLE_PT_emission(ParticleButtonsPanel): @@ -149,39 +149,39 @@ class PARTICLE_PT_emission(ParticleButtonsPanel): row = layout.row() row.active = part.distribution != 'GRID' - row.itemR(part, "amount") + row.prop(part, "amount") if part.type != 'HAIR': split = layout.split() col = split.column(align=True) - col.itemR(part, "start") - col.itemR(part, "end") + col.prop(part, "start") + col.prop(part, "end") col = split.column(align=True) - col.itemR(part, "lifetime") - col.itemR(part, "random_lifetime", slider=True) + col.prop(part, "lifetime") + col.prop(part, "random_lifetime", slider=True) - layout.row().itemL(text="Emit From:") + layout.row().label(text="Emit From:") row = layout.row() - row.itemR(part, "emit_from", expand=True) + row.prop(part, "emit_from", expand=True) row = layout.row() - row.itemR(part, "trand") + row.prop(part, "trand") if part.distribution != 'GRID': - row.itemR(part, "even_distribution") + row.prop(part, "even_distribution") if part.emit_from == 'FACE' or part.emit_from == 'VOLUME': row = layout.row() - row.itemR(part, "distribution", expand=True) + row.prop(part, "distribution", expand=True) row = layout.row() if part.distribution == 'JIT': - row.itemR(part, "userjit", text="Particles/Face") - row.itemR(part, "jitter_factor", text="Jittering Amount", slider=True) + row.prop(part, "userjit", text="Particles/Face") + row.prop(part, "jitter_factor", text="Jittering Amount", slider=True) elif part.distribution == 'GRID': - row.itemR(part, "grid_resolution") + row.prop(part, "grid_resolution") class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel): @@ -190,9 +190,9 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel): def poll(self, context): psys = context.particle_system - if psys == None: + if psys is None: return False - if psys.settings == None: + if psys.settings is None: return False return psys.settings.type == 'HAIR' @@ -200,9 +200,9 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel): #cloth = context.cloth.collision_settings #self.layout.active = cloth_panel_enabled(context.cloth) - #self.layout.itemR(cloth, "enable_collision", text="") + #self.layout.prop(cloth, "enable_collision", text="") psys = context.particle_system - self.layout.itemR(psys, "hair_dynamics", text="") + self.layout.prop(psys, "hair_dynamics", text="") def draw(self, context): layout = self.layout @@ -216,22 +216,22 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Material:") + col.label(text="Material:") sub = col.column(align=True) - sub.itemR(cloth, "pin_stiffness", text="Stiffness") - sub.itemR(cloth, "mass") - sub.itemR(cloth, "bending_stiffness", text="Bending") - sub.itemR(cloth, "internal_friction", slider="True") + sub.prop(cloth, "pin_stiffness", text="Stiffness") + sub.prop(cloth, "mass") + sub.prop(cloth, "bending_stiffness", text="Bending") + sub.prop(cloth, "internal_friction", slider=True) col = split.column() - col.itemL(text="Damping:") + col.label(text="Damping:") sub = col.column(align=True) - sub.itemR(cloth, "spring_damping", text="Spring") - sub.itemR(cloth, "air_damping", text="Air") + sub.prop(cloth, "spring_damping", text="Spring") + sub.prop(cloth, "air_damping", text="Air") - col.itemL(text="Quality:") - col.itemR(cloth, "quality", text="Steps", slider=True) + col.label(text="Quality:") + col.prop(cloth, "quality", text="Steps", slider=True) class PARTICLE_PT_cache(ParticleButtonsPanel): @@ -240,9 +240,9 @@ class PARTICLE_PT_cache(ParticleButtonsPanel): def poll(self, context): psys = context.particle_system - if psys == None: + if psys is None: return False - if psys.settings == None: + if psys.settings is None: return False phystype = psys.settings.physics_type if phystype == 'NO' or phystype == 'KEYED': @@ -277,29 +277,29 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel): split = layout.split() sub = split.column() - sub.itemL(text="Emitter Geometry:") - sub.itemR(part, "normal_factor") + sub.label(text="Emitter Geometry:") + sub.prop(part, "normal_factor") subsub = sub.column(align=True) - subsub.itemR(part, "tangent_factor") - subsub.itemR(part, "tangent_phase", slider=True) + subsub.prop(part, "tangent_factor") + subsub.prop(part, "tangent_phase", slider=True) sub = split.column() - sub.itemL(text="Emitter Object") - sub.itemR(part, "object_aligned_factor", text="") + sub.label(text="Emitter Object") + sub.prop(part, "object_aligned_factor", text="") - layout.row().itemL(text="Other:") + layout.row().label(text="Other:") split = layout.split() sub = split.column() if part.emit_from == 'PARTICLE': - sub.itemR(part, "particle_factor") + sub.prop(part, "particle_factor") else: - sub.itemR(part, "object_factor", slider=True) + sub.prop(part, "object_factor", slider=True) sub = split.column() - sub.itemR(part, "random_factor") + sub.prop(part, "random_factor") #if part.type=='REACTOR': - # sub.itemR(part, "reactor_factor") - # sub.itemR(part, "reaction_shape", slider=True) + # sub.prop(part, "reactor_factor") + # sub.prop(part, "reaction_shape", slider=True) class PARTICLE_PT_rotation(ParticleButtonsPanel): @@ -321,25 +321,25 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel): layout.enabled = particle_panel_enabled(context, psys) split = layout.split() - split.itemL(text="Initial Rotation:") - split.itemR(part, "rotation_dynamic") + split.label(text="Initial Rotation:") + split.prop(part, "rotation_dynamic") split = layout.split() sub = split.column(align=True) - sub.itemR(part, "rotation_mode", text="") - sub.itemR(part, "random_rotation_factor", slider=True, text="Random") + sub.prop(part, "rotation_mode", text="") + sub.prop(part, "random_rotation_factor", slider=True, text="Random") sub = split.column(align=True) - sub.itemR(part, "phase_factor", slider=True) - sub.itemR(part, "random_phase_factor", text="Random", slider=True) + sub.prop(part, "phase_factor", slider=True) + sub.prop(part, "random_phase_factor", text="Random", slider=True) - layout.row().itemL(text="Angular Velocity:") - layout.row().itemR(part, "angular_velocity_mode", expand=True) + layout.row().label(text="Angular Velocity:") + layout.row().prop(part, "angular_velocity_mode", expand=True) split = layout.split() sub = split.column() - sub.itemR(part, "angular_velocity_factor", text="") + sub.prop(part, "angular_velocity_factor", text="") class PARTICLE_PT_physics(ParticleButtonsPanel): @@ -360,29 +360,29 @@ class PARTICLE_PT_physics(ParticleButtonsPanel): layout.enabled = particle_panel_enabled(context, psys) row = layout.row() - row.itemR(part, "physics_type", expand=True) + row.prop(part, "physics_type", expand=True) if part.physics_type != 'NO': row = layout.row() col = row.column(align=True) - col.itemR(part, "particle_size") - col.itemR(part, "random_size", slider=True) + col.prop(part, "particle_size") + col.prop(part, "random_size", slider=True) col = row.column(align=True) - col.itemR(part, "mass") - col.itemR(part, "sizemass", text="Multiply mass with size") + col.prop(part, "mass") + col.prop(part, "sizemass", text="Multiply mass with size") if part.physics_type == 'NEWTON': split = layout.split() sub = split.column() - sub.itemL(text="Forces:") - sub.itemR(part, "brownian_factor") - sub.itemR(part, "drag_factor", slider=True) - sub.itemR(part, "damp_factor", slider=True) + sub.label(text="Forces:") + sub.prop(part, "brownian_factor") + sub.prop(part, "drag_factor", slider=True) + sub.prop(part, "damp_factor", slider=True) sub = split.column() - sub.itemR(part, "size_deflect") - sub.itemR(part, "die_on_collision") - sub.itemR(part, "integrator") - sub.itemR(part, "time_tweak") + sub.prop(part, "size_deflect") + sub.prop(part, "die_on_collision") + sub.prop(part, "integrator") + sub.prop(part, "time_tweak") elif part.physics_type == 'KEYED': split = layout.split() @@ -391,61 +391,61 @@ class PARTICLE_PT_physics(ParticleButtonsPanel): row = layout.row() col = row.column() col.active = not psys.keyed_timing - col.itemR(part, "keyed_loops", text="Loops") - row.itemR(psys, "keyed_timing", text="Use Timing") + col.prop(part, "keyed_loops", text="Loops") + row.prop(psys, "keyed_timing", text="Use Timing") - layout.itemL(text="Keys:") + layout.label(text="Keys:") elif part.physics_type == 'BOIDS': boids = part.boids row = layout.row() - row.itemR(boids, "allow_flight") - row.itemR(boids, "allow_land") - row.itemR(boids, "allow_climb") + row.prop(boids, "allow_flight") + row.prop(boids, "allow_land") + row.prop(boids, "allow_climb") split = layout.split() sub = split.column() col = sub.column(align=True) col.active = boids.allow_flight - col.itemR(boids, "air_max_speed") - col.itemR(boids, "air_min_speed", slider="True") - col.itemR(boids, "air_max_acc", slider="True") - col.itemR(boids, "air_max_ave", slider="True") - col.itemR(boids, "air_personal_space") + col.prop(boids, "air_max_speed") + col.prop(boids, "air_min_speed", slider=True) + col.prop(boids, "air_max_acc", slider=True) + col.prop(boids, "air_max_ave", slider=True) + col.prop(boids, "air_personal_space") row = col.row() row.active = (boids.allow_land or boids.allow_climb) and boids.allow_flight - row.itemR(boids, "landing_smoothness") + row.prop(boids, "landing_smoothness") sub = split.column() col = sub.column(align=True) col.active = boids.allow_land or boids.allow_climb - col.itemR(boids, "land_max_speed") - col.itemR(boids, "land_jump_speed") - col.itemR(boids, "land_max_acc", slider="True") - col.itemR(boids, "land_max_ave", slider="True") - col.itemR(boids, "land_personal_space") - col.itemR(boids, "land_stick_force") + col.prop(boids, "land_max_speed") + col.prop(boids, "land_jump_speed") + col.prop(boids, "land_max_acc", slider=True) + col.prop(boids, "land_max_ave", slider=True) + col.prop(boids, "land_personal_space") + col.prop(boids, "land_stick_force") row = layout.row() col = row.column(align=True) - col.itemL(text="Battle:") - col.itemR(boids, "health") - col.itemR(boids, "strength") - col.itemR(boids, "aggression") - col.itemR(boids, "accuracy") - col.itemR(boids, "range") + col.label(text="Battle:") + col.prop(boids, "health") + col.prop(boids, "strength") + col.prop(boids, "aggression") + col.prop(boids, "accuracy") + col.prop(boids, "range") col = row.column() - col.itemL(text="Misc:") - col.itemR(boids, "banking", slider=True) - col.itemR(boids, "height", slider=True) + col.label(text="Misc:") + col.prop(boids, "banking", slider=True) + col.prop(boids, "height", slider=True) if part.physics_type == 'KEYED' or part.physics_type == 'BOIDS': if part.physics_type == 'BOIDS': - layout.itemL(text="Relations:") + layout.label(text="Relations:") row = layout.row() row.template_list(psys, "targets", psys, "active_particle_target_index") @@ -453,12 +453,12 @@ class PARTICLE_PT_physics(ParticleButtonsPanel): col = row.column() sub = col.row() subsub = sub.column(align=True) - subsub.itemO("particle.new_target", icon='ICON_ZOOMIN', text="") - subsub.itemO("particle.remove_target", icon='ICON_ZOOMOUT', text="") + subsub.operator("particle.new_target", icon='ICON_ZOOMIN', text="") + subsub.operator("particle.target_remove", icon='ICON_ZOOMOUT', text="") sub = col.row() subsub = sub.column(align=True) - subsub.itemO("particle.target_move_up", icon='VICON_MOVE_UP', text="") - subsub.itemO("particle.target_move_down", icon='VICON_MOVE_DOWN', text="") + subsub.operator("particle.target_move_up", icon='VICON_MOVE_UP', text="") + subsub.operator("particle.target_move_down", icon='VICON_MOVE_DOWN', text="") key = psys.active_particle_target if key: @@ -467,20 +467,20 @@ class PARTICLE_PT_physics(ParticleButtonsPanel): col = row.column() #doesn't work yet #col.red_alert = key.valid - col.itemR(key, "object", text="") - col.itemR(key, "system", text="System") + col.prop(key, "object", text="") + col.prop(key, "system", text="System") col = row.column() col.active = psys.keyed_timing - col.itemR(key, "time") - col.itemR(key, "duration") + col.prop(key, "time") + col.prop(key, "duration") else: sub = row.row() #doesn't work yet #sub.red_alert = key.valid - sub.itemR(key, "object", text="") - sub.itemR(key, "system", text="System") + sub.prop(key, "object", text="") + sub.prop(key, "system", text="System") - layout.itemR(key, "mode", expand=True) + layout.prop(key, "mode", expand=True) class PARTICLE_PT_boidbrain(ParticleButtonsPanel): @@ -488,9 +488,9 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel): def poll(self, context): psys = context.particle_system - if psys == None: + if psys is None: return False - if psys.settings == None: + if psys.settings is None: return False if psys.point_cache.external: return False @@ -508,22 +508,22 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel): #row.template_list(boids, "states", boids, "active_boid_state_index", compact="True") #col = row.row() #sub = col.row(align=True) - #sub.itemO("boid.state_add", icon='ICON_ZOOMIN', text="") - #sub.itemO("boid.state_del", icon='ICON_ZOOMOUT', text="") + #sub.operator("boid.state_add", icon='ICON_ZOOMIN', text="") + #sub.operator("boid.state_del", icon='ICON_ZOOMOUT', text="") #sub = row.row(align=True) - #sub.itemO("boid.state_move_up", icon='VICON_MOVE_UP', text="") - #sub.itemO("boid.state_move_down", icon='VICON_MOVE_DOWN', text="") + #sub.operator("boid.state_move_up", icon='VICON_MOVE_UP', text="") + #sub.operator("boid.state_move_down", icon='VICON_MOVE_DOWN', text="") state = boids.active_boid_state - #layout.itemR(state, "name", text="State name") + #layout.prop(state, "name", text="State name") row = layout.row() - row.itemR(state, "ruleset_type") + row.prop(state, "ruleset_type") if state.ruleset_type == 'FUZZY': - row.itemR(state, "rule_fuzziness", slider=True) + row.prop(state, "rule_fuzziness", slider=True) else: - row.itemL(text="") + row.label(text="") row = layout.row() row.template_list(state, "rules", state, "active_boid_rule_index") @@ -531,54 +531,54 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel): col = row.column() sub = col.row() subsub = sub.column(align=True) - subsub.item_menu_enumO("boid.rule_add", "type", icon='ICON_ZOOMIN', text="") - subsub.itemO("boid.rule_del", icon='ICON_ZOOMOUT', text="") + subsub.operator_menu_enum("boid.rule_add", "type", icon='ICON_ZOOMIN', text="") + subsub.operator("boid.rule_del", icon='ICON_ZOOMOUT', text="") sub = col.row() subsub = sub.column(align=True) - subsub.itemO("boid.rule_move_up", icon='VICON_MOVE_UP', text="") - subsub.itemO("boid.rule_move_down", icon='VICON_MOVE_DOWN', text="") + subsub.operator("boid.rule_move_up", icon='VICON_MOVE_UP', text="") + subsub.operator("boid.rule_move_down", icon='VICON_MOVE_DOWN', text="") rule = state.active_boid_rule if rule: row = layout.row() - row.itemR(rule, "name", text="") + row.prop(rule, "name", text="") #somebody make nice icons for boids here please! -jahka - row.itemR(rule, "in_air", icon='VICON_MOVE_UP', text="") - row.itemR(rule, "on_land", icon='VICON_MOVE_DOWN', text="") + row.prop(rule, "in_air", icon='VICON_MOVE_UP', text="") + row.prop(rule, "on_land", icon='VICON_MOVE_DOWN', text="") row = layout.row() if rule.type == 'GOAL': - row.itemR(rule, "object") + row.prop(rule, "object") row = layout.row() - row.itemR(rule, "predict") + row.prop(rule, "predict") elif rule.type == 'AVOID': - row.itemR(rule, "object") + row.prop(rule, "object") row = layout.row() - row.itemR(rule, "predict") - row.itemR(rule, "fear_factor") + row.prop(rule, "predict") + row.prop(rule, "fear_factor") elif rule.type == 'FOLLOW_PATH': - row.itemL(text="Not yet functional.") + row.label(text="Not yet functional.") elif rule.type == 'AVOID_COLLISION': - row.itemR(rule, "boids") - row.itemR(rule, "deflectors") - row.itemR(rule, "look_ahead") + row.prop(rule, "boids") + row.prop(rule, "deflectors") + row.prop(rule, "look_ahead") elif rule.type == 'FOLLOW_LEADER': - row.itemR(rule, "object", text="") - row.itemR(rule, "distance") + row.prop(rule, "object", text="") + row.prop(rule, "distance") row = layout.row() - row.itemR(rule, "line") + row.prop(rule, "line") sub = row.row() sub.active = rule.line - sub.itemR(rule, "queue_size") + sub.prop(rule, "queue_size") elif rule.type == 'AVERAGE_SPEED': - row.itemR(rule, "speed", slider=True) - row.itemR(rule, "wander", slider=True) - row.itemR(rule, "level", slider=True) + row.prop(rule, "speed", slider=True) + row.prop(rule, "wander", slider=True) + row.prop(rule, "level", slider=True) elif rule.type == 'FIGHT': - row.itemR(rule, "distance") - row.itemR(rule, "flee_distance") + row.prop(rule, "distance") + row.prop(rule, "flee_distance") class PARTICLE_PT_render(ParticleButtonsPanel): @@ -586,9 +586,9 @@ class PARTICLE_PT_render(ParticleButtonsPanel): def poll(self, context): psys = context.particle_system - if psys == None: + if psys is None: return False - if psys.settings == None: + if psys.settings is None: return False return True @@ -599,90 +599,90 @@ class PARTICLE_PT_render(ParticleButtonsPanel): part = psys.settings row = layout.row() - row.itemR(part, "material") - row.itemR(psys, "parent") + row.prop(part, "material") + row.prop(psys, "parent") split = layout.split() sub = split.column() - sub.itemR(part, "emitter") - sub.itemR(part, "parent") + sub.prop(part, "emitter") + sub.prop(part, "parent") sub = split.column() - sub.itemR(part, "unborn") - sub.itemR(part, "died") + sub.prop(part, "unborn") + sub.prop(part, "died") row = layout.row() - row.itemR(part, "ren_as", expand=True) + row.prop(part, "ren_as", expand=True) split = layout.split() sub = split.column() if part.ren_as == 'LINE': - sub.itemR(part, "line_length_tail") - sub.itemR(part, "line_length_head") + sub.prop(part, "line_length_tail") + sub.prop(part, "line_length_head") sub = split.column() - sub.itemR(part, "velocity_length") + sub.prop(part, "velocity_length") elif part.ren_as == 'PATH': - if part.type != 'HAIR' and part.physics_type != 'KEYED' and psys.point_cache.baked == False: + if part.type != 'HAIR' and part.physics_type != 'KEYED' and (psys.point_cache.baked is False): box = layout.box() - box.itemL(text="Baked or keyed particles needed for correct rendering.") + box.label(text="Baked or keyed particles needed for correct rendering.") return - sub.itemR(part, "render_strand") + sub.prop(part, "render_strand") subsub = sub.column() - subsub.active = part.render_strand == False - subsub.itemR(part, "render_adaptive") + subsub.active = (part.render_strand is False) + subsub.prop(part, "render_adaptive") subsub = sub.column() subsub.active = part.render_adaptive or part.render_strand == True - subsub.itemR(part, "adaptive_angle") + subsub.prop(part, "adaptive_angle") subsub = sub.column() - subsub.active = part.render_adaptive == True and part.render_strand == False - subsub.itemR(part, "adaptive_pix") - sub.itemR(part, "hair_bspline") - sub.itemR(part, "render_step", text="Steps") + subsub.active = (part.render_adaptive is True and part.render_strand is False) + subsub.prop(part, "adaptive_pix") + sub.prop(part, "hair_bspline") + sub.prop(part, "render_step", text="Steps") 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) + sub.label(text="Timing:") + sub.prop(part, "abs_path_time") + sub.prop(part, "path_start", text="Start", slider=not part.abs_path_time) + sub.prop(part, "path_end", text="End", slider=not part.abs_path_time) + sub.prop(part, "random_length", text="Random", slider=True) row = layout.row() col = row.column() if part.type == 'HAIR' and part.render_strand == True and part.child_type == 'FACES': - layout.itemR(part, "enable_simplify") + layout.prop(part, "enable_simplify") if part.enable_simplify == True: row = layout.row() - row.itemR(part, "simplify_refsize") - row.itemR(part, "simplify_rate") - row.itemR(part, "simplify_transition") + row.prop(part, "simplify_refsize") + row.prop(part, "simplify_rate") + row.prop(part, "simplify_transition") row = layout.row() - row.itemR(part, "viewport") + row.prop(part, "viewport") sub = row.row() sub.active = part.viewport == True - sub.itemR(part, "simplify_viewport") + sub.prop(part, "simplify_viewport") elif part.ren_as == 'OBJECT': - sub.itemR(part, "dupli_object") - sub.itemR(part, "use_global_dupli") + sub.prop(part, "dupli_object") + sub.prop(part, "use_global_dupli") elif part.ren_as == 'GROUP': - sub.itemR(part, "dupli_group") + sub.prop(part, "dupli_group") split = layout.split() sub = split.column() - sub.itemR(part, "whole_group") + sub.prop(part, "whole_group") subsub = sub.column() - subsub.active = part.whole_group == False - subsub.itemR(part, "use_group_count") + subsub.active = (part.whole_group is False) + subsub.prop(part, "use_group_count") sub = split.column() subsub = sub.column() - subsub.active = part.whole_group == False - subsub.itemR(part, "use_global_dupli") - subsub.itemR(part, "rand_group") + subsub.active = (part.whole_group is False) + subsub.prop(part, "use_global_dupli") + subsub.prop(part, "rand_group") if part.use_group_count and not part.whole_group: row = layout.row() @@ -691,61 +691,61 @@ class PARTICLE_PT_render(ParticleButtonsPanel): col = row.column() sub = col.row() subsub = sub.column(align=True) - subsub.itemO("particle.dupliob_copy", icon='ICON_ZOOMIN', text="") - subsub.itemO("particle.dupliob_remove", icon='ICON_ZOOMOUT', text="") - subsub.itemO("particle.dupliob_move_up", icon='VICON_MOVE_UP', text="") - subsub.itemO("particle.dupliob_move_down", icon='VICON_MOVE_DOWN', text="") + subsub.operator("particle.dupliob_copy", icon='ICON_ZOOMIN', text="") + subsub.operator("particle.dupliob_remove", icon='ICON_ZOOMOUT', text="") + subsub.operator("particle.dupliob_move_up", icon='VICON_MOVE_UP', text="") + subsub.operator("particle.dupliob_move_down", icon='VICON_MOVE_DOWN', text="") weight = part.active_dupliweight if weight: row = layout.row() - row.itemR(weight, "count") + row.prop(weight, "count") elif part.ren_as == 'BILLBOARD': - sub.itemL(text="Align:") + sub.label(text="Align:") row = layout.row() - row.itemR(part, "billboard_align", expand=True) - row.itemR(part, "billboard_lock", text="Lock") + row.prop(part, "billboard_align", expand=True) + row.prop(part, "billboard_lock", text="Lock") row = layout.row() - row.itemR(part, "billboard_object") + row.prop(part, "billboard_object") row = layout.row() col = row.column(align=True) - col.itemL(text="Tilt:") - col.itemR(part, "billboard_tilt", text="Angle", slider=True) - col.itemR(part, "billboard_random_tilt", slider=True) + col.label(text="Tilt:") + col.prop(part, "billboard_tilt", text="Angle", slider=True) + col.prop(part, "billboard_random_tilt", slider=True) col = row.column() - col.itemR(part, "billboard_offset") + col.prop(part, "billboard_offset") row = layout.row() - row.itemR(psys, "billboard_normal_uv") + row.prop(psys, "billboard_normal_uv") row = layout.row() - row.itemR(psys, "billboard_time_index_uv") + row.prop(psys, "billboard_time_index_uv") row = layout.row() - row.itemL(text="Split uv's:") - row.itemR(part, "billboard_uv_split", text="Number of splits") + row.label(text="Split uv's:") + row.prop(part, "billboard_uv_split", text="Number of splits") row = layout.row() - row.itemR(psys, "billboard_split_uv") + row.prop(psys, "billboard_split_uv") row = layout.row() - row.itemL(text="Animate:") - row.itemR(part, "billboard_animation", expand=True) - row.itemL(text="Offset:") - row.itemR(part, "billboard_split_offset", expand=True) + row.label(text="Animate:") + row.prop(part, "billboard_animation", expand=True) + row.label(text="Offset:") + row.prop(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") + col.prop(part, "trail_count") if part.trail_count > 1: - col.itemR(part, "abs_path_time", text="Length in frames") + col.prop(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) + col.prop(part, "path_end", text="Length", slider=not part.abs_path_time) + col.prop(part, "random_length", text="Random", slider=True) else: col = row.column() - col.itemL(text="") + col.label(text="") class PARTICLE_PT_draw(ParticleButtonsPanel): @@ -754,9 +754,9 @@ class PARTICLE_PT_draw(ParticleButtonsPanel): def poll(self, context): psys = context.particle_system - if psys == None: + if psys is None: return False - if psys.settings == None: + if psys.settings is None: return False return True @@ -767,43 +767,43 @@ class PARTICLE_PT_draw(ParticleButtonsPanel): part = psys.settings row = layout.row() - row.itemR(part, "draw_as", expand=True) + row.prop(part, "draw_as", expand=True) if part.draw_as == 'NONE' or (part.ren_as == 'NONE' and part.draw_as == 'RENDER'): return path = (part.ren_as == 'PATH' and part.draw_as == 'RENDER') or part.draw_as == 'PATH' - if path and part.type != 'HAIR' and part.physics_type != 'KEYED' and psys.point_cache.baked == False: + if path and part.type != 'HAIR' and part.physics_type != 'KEYED' and psys.point_cache.baked is False: box = layout.box() - box.itemL(text="Baked or keyed particles needed for correct drawing.") + box.label(text="Baked or keyed particles needed for correct drawing.") return row = layout.row() - row.itemR(part, "display", slider=True) + row.prop(part, "display", slider=True) if part.draw_as != 'RENDER' or part.ren_as == 'HALO': - row.itemR(part, "draw_size") + row.prop(part, "draw_size") else: - row.itemL(text="") + row.label(text="") row = layout.row() col = row.column() - col.itemR(part, "show_size") - col.itemR(part, "velocity") - col.itemR(part, "num") + col.prop(part, "show_size") + col.prop(part, "velocity") + col.prop(part, "num") if part.physics_type == 'BOIDS': - col.itemR(part, "draw_health") + col.prop(part, "draw_health") col = row.column() - col.itemR(part, "material_color", text="Use material color") + col.prop(part, "material_color", text="Use material color") if (path): - col.itemR(part, "draw_step") + col.prop(part, "draw_step") else: sub = col.column() - sub.active = part.material_color == False - #sub.itemL(text="color") - #sub.itemL(text="Override material color") + sub.active = (part.material_color is False) + #sub.label(text="color") + #sub.label(text="Override material color") class PARTICLE_PT_children(ParticleButtonsPanel): @@ -816,7 +816,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel): psys = context.particle_system part = psys.settings - layout.row().itemR(part, "child_type", expand=True) + layout.row().prop(part, "child_type", expand=True) if part.child_type == 'NONE': return @@ -824,63 +824,63 @@ class PARTICLE_PT_children(ParticleButtonsPanel): row = layout.row() col = row.column(align=True) - col.itemR(part, "child_nbr", text="Display") - col.itemR(part, "rendered_child_nbr", text="Render") + col.prop(part, "child_nbr", text="Display") + col.prop(part, "rendered_child_nbr", text="Render") col = row.column(align=True) if part.child_type == 'FACES': - col.itemR(part, "virtual_parents", slider=True) + col.prop(part, "virtual_parents", slider=True) else: - col.itemR(part, "child_radius", text="Radius") - col.itemR(part, "child_roundness", text="Roundness", slider=True) + col.prop(part, "child_radius", text="Radius") + col.prop(part, "child_roundness", text="Roundness", slider=True) col = row.column(align=True) - col.itemR(part, "child_size", text="Size") - col.itemR(part, "child_random_size", text="Random") + col.prop(part, "child_size", text="Size") + col.prop(part, "child_random_size", text="Random") - layout.row().itemL(text="Effects:") + layout.row().label(text="Effects:") row = layout.row() col = row.column(align=True) - col.itemR(part, "clump_factor", slider=True) - col.itemR(part, "clumppow", slider=True) + col.prop(part, "clump_factor", slider=True) + col.prop(part, "clumppow", slider=True) col = row.column(align=True) - col.itemR(part, "rough_endpoint") - col.itemR(part, "rough_end_shape") + col.prop(part, "rough_endpoint") + col.prop(part, "rough_end_shape") row = layout.row() col = row.column(align=True) - col.itemR(part, "rough1") - col.itemR(part, "rough1_size") + col.prop(part, "rough1") + col.prop(part, "rough1_size") col = row.column(align=True) - col.itemR(part, "rough2") - col.itemR(part, "rough2_size") - col.itemR(part, "rough2_thres", slider=True) + col.prop(part, "rough2") + col.prop(part, "rough2_size") + col.prop(part, "rough2_thres", slider=True) row = layout.row() col = row.column(align=True) - col.itemR(part, "child_length", slider=True) - col.itemR(part, "child_length_thres", slider=True) + col.prop(part, "child_length", slider=True) + col.prop(part, "child_length_thres", slider=True) col = row.column(align=True) - col.itemL(text="Space reserved for") - col.itemL(text="hair parting controls") + col.label(text="Space reserved for") + col.label(text="hair parting controls") - layout.row().itemL(text="Kink:") - layout.row().itemR(part, "kink", expand=True) + layout.row().label(text="Kink:") + layout.row().prop(part, "kink", expand=True) split = layout.split() col = split.column() - col.itemR(part, "kink_amplitude") - col.itemR(part, "kink_frequency") + col.prop(part, "kink_amplitude") + col.prop(part, "kink_frequency") col = split.column() - col.itemR(part, "kink_shape", slider=True) + col.prop(part, "kink_shape", slider=True) class PARTICLE_PT_field_weights(ParticleButtonsPanel): @@ -892,7 +892,7 @@ class PARTICLE_PT_field_weights(ParticleButtonsPanel): effector_weights_ui(self, context, part.effector_weights) if part.type == 'HAIR': - self.layout.itemR(part.effector_weights, "do_growing_hair") + self.layout.prop(part.effector_weights, "do_growing_hair") class PARTICLE_PT_force_fields(ParticleButtonsPanel): @@ -904,20 +904,20 @@ class PARTICLE_PT_force_fields(ParticleButtonsPanel): part = context.particle_system.settings - layout.itemR(part, "self_effect") + layout.prop(part, "self_effect") split = layout.split(percentage=0.2) - split.itemL(text="Type 1:") - split.itemR(part.force_field_1, "type", text="") + split.label(text="Type 1:") + split.prop(part.force_field_1, "type", text="") basic_force_field_settings_ui(self, context, part.force_field_1) basic_force_field_falloff_ui(self, context, part.force_field_1) if part.force_field_1.type != 'NONE': - layout.itemL(text="") + layout.label(text="") split = layout.split(percentage=0.2) - split.itemL(text="Type 2:") - split.itemR(part.force_field_2, "type", text="") + split.label(text="Type 2:") + split.prop(part.force_field_2, "type", text="") basic_force_field_settings_ui(self, context, part.force_field_2) basic_force_field_falloff_ui(self, context, part.force_field_2) @@ -933,60 +933,60 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel): psys = context.particle_system # part = psys.settings - # layout.itemL(text="Nothing here yet.") + # layout.label(text="Nothing here yet.") row = layout.row() - row.itemL(text="Vertex Group") - row.itemL(text="Negate") + row.label(text="Vertex Group") + row.label(text="Negate") row = layout.row() - row.item_pointerR(psys, "vertex_group_density", ob, "vertex_groups", text="Density") - row.itemR(psys, "vertex_group_density_negate", text="") + row.prop_object(psys, "vertex_group_density", ob, "vertex_groups", text="Density") + row.prop(psys, "vertex_group_density_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_velocity", ob, "vertex_groups", text="Velocity") - row.itemR(psys, "vertex_group_velocity_negate", text="") + row.prop_object(psys, "vertex_group_velocity", ob, "vertex_groups", text="Velocity") + row.prop(psys, "vertex_group_velocity_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_length", ob, "vertex_groups", text="Length") - row.itemR(psys, "vertex_group_length_negate", text="") + row.prop_object(psys, "vertex_group_length", ob, "vertex_groups", text="Length") + row.prop(psys, "vertex_group_length_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump") - row.itemR(psys, "vertex_group_clump_negate", text="") + row.prop_object(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump") + row.prop(psys, "vertex_group_clump_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink") - row.itemR(psys, "vertex_group_kink_negate", text="") + row.prop_object(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink") + row.prop(psys, "vertex_group_kink_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_roughness1", ob, "vertex_groups", text="Roughness 1") - row.itemR(psys, "vertex_group_roughness1_negate", text="") + row.prop_object(psys, "vertex_group_roughness1", ob, "vertex_groups", text="Roughness 1") + row.prop(psys, "vertex_group_roughness1_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_roughness2", ob, "vertex_groups", text="Roughness 2") - row.itemR(psys, "vertex_group_roughness2_negate", text="") + row.prop_object(psys, "vertex_group_roughness2", ob, "vertex_groups", text="Roughness 2") + row.prop(psys, "vertex_group_roughness2_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End") - row.itemR(psys, "vertex_group_roughness_end_negate", text="") + row.prop_object(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End") + row.prop(psys, "vertex_group_roughness_end_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_size", ob, "vertex_groups", text="Size") - row.itemR(psys, "vertex_group_size_negate", text="") + row.prop_object(psys, "vertex_group_size", ob, "vertex_groups", text="Size") + row.prop(psys, "vertex_group_size_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_tangent", ob, "vertex_groups", text="Tangent") - row.itemR(psys, "vertex_group_tangent_negate", text="") + row.prop_object(psys, "vertex_group_tangent", ob, "vertex_groups", text="Tangent") + row.prop(psys, "vertex_group_tangent_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_rotation", ob, "vertex_groups", text="Rotation") - row.itemR(psys, "vertex_group_rotation_negate", text="") + row.prop_object(psys, "vertex_group_rotation", ob, "vertex_groups", text="Rotation") + row.prop(psys, "vertex_group_rotation_negate", text="") row = layout.row() - row.item_pointerR(psys, "vertex_group_field", ob, "vertex_groups", text="Field") - row.itemR(psys, "vertex_group_field_negate", text="") + row.prop_object(psys, "vertex_group_field", ob, "vertex_groups", text="Field") + row.prop(psys, "vertex_group_field_negate", text="") bpy.types.register(PARTICLE_PT_particles) bpy.types.register(PARTICLE_PT_hair_dynamics) diff --git a/release/scripts/ui/properties_physics_cloth.py b/release/scripts/ui/properties_physics_cloth.py index 600841e4775..0829b533c81 100644 --- a/release/scripts/ui/properties_physics_cloth.py +++ b/release/scripts/ui/properties_physics_cloth.py @@ -27,8 +27,8 @@ from properties_physics_common import effector_weights_ui def cloth_panel_enabled(md): - return md.point_cache.baked == False - + return md.point_cache.baked is False + class CLOTH_MT_presets(bpy.types.Menu): ''' @@ -67,17 +67,19 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel): if md: # remove modifier + settings split.set_context_pointer("modifier", md) - split.itemO("object.modifier_remove", text="Remove") + split.operator("object.modifier_remove", text="Remove") row = split.row(align=True) - row.itemR(md, "render", text="") - row.itemR(md, "realtime", text="") + row.prop(md, "render", text="") + row.prop(md, "realtime", text="") else: # add modifier - split.item_enumO("object.modifier_add", "type", 'CLOTH', text="Add") + split.operator("object.modifier_add", text="Add").type = 'CLOTH' if wide_ui: split.column() + split.operator_context = 'INVOKE_DEFAULT' + if md: cloth = md.settings @@ -87,44 +89,44 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel): col = split.column() - col.itemL(text="Presets:") + col.label(text="Presets:") sub = col.row(align=True).split(percentage=0.75) - sub.itemM("CLOTH_MT_presets", text="Presets") - sub.itemO("cloth.preset_add", text="Add") + sub.menu("CLOTH_MT_presets", text="Presets") + sub.operator("cloth.preset_add", text="Add") - col.itemL(text="Quality:") - col.itemR(cloth, "quality", text="Steps", slider=True) + col.label(text="Quality:") + col.prop(cloth, "quality", text="Steps", slider=True) - col.itemL(text="Material:") - col.itemR(cloth, "mass") - col.itemR(cloth, "structural_stiffness", text="Structural") - col.itemR(cloth, "bending_stiffness", text="Bending") + col.label(text="Material:") + col.prop(cloth, "mass") + col.prop(cloth, "structural_stiffness", text="Structural") + col.prop(cloth, "bending_stiffness", text="Bending") if wide_ui: col = split.column() - col.itemL(text="Damping:") - col.itemR(cloth, "spring_damping", text="Spring") - col.itemR(cloth, "air_damping", text="Air") + col.label(text="Damping:") + col.prop(cloth, "spring_damping", text="Spring") + col.prop(cloth, "air_damping", text="Air") - col.itemR(cloth, "pin_cloth", text="Pinning") + col.prop(cloth, "pin_cloth", text="Pinning") sub = col.column() sub.active = cloth.pin_cloth - sub.item_pointerR(cloth, "mass_vertex_group", ob, "vertex_groups", text="") - sub.itemR(cloth, "pin_stiffness", text="Stiffness") + sub.prop_object(cloth, "mass_vertex_group", ob, "vertex_groups", text="") + sub.prop(cloth, "pin_stiffness", text="Stiffness") - col.itemL(text="Pre roll:") - col.itemR(cloth, "pre_roll", text="Frame") + col.label(text="Pre roll:") + col.prop(cloth, "pre_roll", text="Frame") # Disabled for now """ if cloth.mass_vertex_group: - layout.itemL(text="Goal:") + layout.label(text="Goal:") col = layout.column_flow() - col.itemR(cloth, "goal_default", text="Default") - col.itemR(cloth, "goal_spring", text="Stiffness") - col.itemR(cloth, "goal_friction", text="Friction") + col.prop(cloth, "goal_default", text="Default") + col.prop(cloth, "goal_spring", text="Stiffness") + col.prop(cloth, "goal_friction", text="Friction") """ @@ -151,7 +153,7 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel): cloth = context.cloth.collision_settings self.layout.active = cloth_panel_enabled(context.cloth) - self.layout.itemR(cloth, "enable_collision", text="") + self.layout.prop(cloth, "enable_collision", text="") def draw(self, context): layout = self.layout @@ -165,17 +167,17 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemR(cloth, "collision_quality", slider=True, text="Quality") - col.itemR(cloth, "min_distance", slider=True, text="Distance") - col.itemR(cloth, "friction") + col.prop(cloth, "collision_quality", slider=True, text="Quality") + col.prop(cloth, "min_distance", slider=True, text="Distance") + col.prop(cloth, "friction") if wide_ui: col = split.column() - col.itemR(cloth, "enable_self_collision", text="Self Collision") + col.prop(cloth, "enable_self_collision", text="Self Collision") sub = col.column() sub.active = cloth.enable_self_collision - sub.itemR(cloth, "self_collision_quality", slider=True, text="Quality") - sub.itemR(cloth, "self_min_distance", slider=True, text="Distance") + sub.prop(cloth, "self_collision_quality", slider=True, text="Quality") + sub.prop(cloth, "self_min_distance", slider=True, text="Distance") class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel): @@ -189,7 +191,7 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel): cloth = context.cloth.settings self.layout.active = cloth_panel_enabled(context.cloth) - self.layout.itemR(cloth, "stiffness_scaling", text="") + self.layout.prop(cloth, "stiffness_scaling", text="") def draw(self, context): layout = self.layout @@ -204,15 +206,15 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Structural Stiffness:") - col.item_pointerR(cloth, "structural_stiffness_vertex_group", ob, "vertex_groups", text="") - col.itemR(cloth, "structural_stiffness_max", text="Max") + col.label(text="Structural Stiffness:") + col.prop_object(cloth, "structural_stiffness_vertex_group", ob, "vertex_groups", text="") + col.prop(cloth, "structural_stiffness_max", text="Max") if wide_ui: col = split.column() - col.itemL(text="Bending Stiffness:") - col.item_pointerR(cloth, "bending_vertex_group", ob, "vertex_groups", text="") - col.itemR(cloth, "bending_stiffness_max", text="Max") + col.label(text="Bending Stiffness:") + col.prop_object(cloth, "bending_vertex_group", ob, "vertex_groups", text="") + col.prop(cloth, "bending_stiffness_max", text="Max") class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel): @@ -225,7 +227,7 @@ class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel): def draw(self, context): cloth = context.cloth.settings effector_weights_ui(self, context, cloth.effector_weights) - + bpy.types.register(CLOTH_MT_presets) bpy.types.register(PHYSICS_PT_cloth) diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py index 2486c5c2b6c..7c1d71302ec 100644 --- a/release/scripts/ui/properties_physics_common.py +++ b/release/scripts/ui/properties_physics_common.py @@ -30,64 +30,64 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke): row = layout.row() row.template_list(cache, "point_cache_list", cache, "active_point_cache_index", rows=2) col = row.column(align=True) - col.itemO("ptcache.add_new", icon='ICON_ZOOMIN', text="") - col.itemO("ptcache.remove", icon='ICON_ZOOMOUT', text="") + col.operator("ptcache.add", icon='ICON_ZOOMIN', text="") + col.operator("ptcache.remove", icon='ICON_ZOOMOUT', text="") row = layout.row() - row.itemL(text="File Name:") + row.label(text="File Name:") if particles: - row.itemR(cache, "external") + row.prop(cache, "external") if cache.external: split = layout.split(percentage=0.80) - split.itemR(cache, "name", text="") - split.itemR(cache, "index", text="") + split.prop(cache, "name", text="") + split.prop(cache, "index", text="") - layout.itemL(text="File Path:") - layout.itemR(cache, "filepath", text="") + layout.label(text="File Path:") + layout.prop(cache, "filepath", text="") - layout.itemL(text=cache.info) + layout.label(text=cache.info) else: - layout.itemR(cache, "name", text="") + layout.prop(cache, "name", text="") if not particles: row = layout.row() row.enabled = enabled - row.itemR(cache, "start_frame") - row.itemR(cache, "end_frame") + row.prop(cache, "start_frame") + row.prop(cache, "end_frame") row = layout.row() if cache.baked == True: - row.itemO("ptcache.free_bake", text="Free Bake") + row.operator("ptcache.free_bake", text="Free Bake") else: - row.item_booleanO("ptcache.bake", "bake", True, text="Bake") + row.operator("ptcache.bake", text="Bake").bake = True sub = row.row() sub.enabled = (cache.frames_skipped or cache.outdated) and enabled - sub.itemO("ptcache.bake", "bake", False, text="Calculate to Current Frame") + sub.operator("ptcache.bake", "bake", False, text="Calculate to Current Frame") row = layout.row() row.enabled = enabled - row.itemO("ptcache.bake_from_cache", text="Current Cache to Bake") + row.operator("ptcache.bake_from_cache", text="Current Cache to Bake") if not smoke: - row.itemR(cache, "step") + row.prop(cache, "step") if not smoke: row = layout.row() sub = row.row() sub.enabled = enabled - sub.itemR(cache, "quick_cache") - row.itemR(cache, "disk_cache") + sub.prop(cache, "quick_cache") + row.prop(cache, "disk_cache") - layout.itemL(text=cache.info) + layout.label(text=cache.info) - layout.itemS() + layout.separator() row = layout.row() - row.item_booleanO("ptcache.bake_all", "bake", True, text="Bake All Dynamics") - row.itemO("ptcache.free_bake_all", text="Free All Bakes") - layout.itemO("ptcache.bake_all", "bake", False, text="Update All Dynamics to current frame") + row.operator("ptcache.bake_all", text="Bake All Dynamics").bake = True + row.operator("ptcache.free_bake_all", text="Free All Bakes") + layout.operator("ptcache.bake_all", "bake", False, text="Update All Dynamics to current frame") def effector_weights_ui(self, context, weights): @@ -95,37 +95,37 @@ def effector_weights_ui(self, context, weights): wide_ui = context.region.width > narrowui - layout.itemR(weights, "group") + layout.prop(weights, "group") split = layout.split() col = split.column() - col.itemR(weights, "gravity", slider=True) + col.prop(weights, "gravity", slider=True) if wide_ui: col = split.column() - col.itemR(weights, "all", slider=True) + col.prop(weights, "all", slider=True) - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemR(weights, "force", slider=True) - col.itemR(weights, "vortex", slider=True) - col.itemR(weights, "magnetic", slider=True) - col.itemR(weights, "wind", slider=True) - col.itemR(weights, "curveguide", slider=True) - col.itemR(weights, "texture", slider=True) + col.prop(weights, "force", slider=True) + col.prop(weights, "vortex", slider=True) + col.prop(weights, "magnetic", slider=True) + col.prop(weights, "wind", slider=True) + col.prop(weights, "curveguide", slider=True) + col.prop(weights, "texture", slider=True) if wide_ui: col = split.column() - col.itemR(weights, "harmonic", slider=True) - col.itemR(weights, "charge", slider=True) - col.itemR(weights, "lennardjones", slider=True) - col.itemR(weights, "turbulence", slider=True) - col.itemR(weights, "drag", slider=True) - col.itemR(weights, "boid", slider=True) + col.prop(weights, "harmonic", slider=True) + col.prop(weights, "charge", slider=True) + col.prop(weights, "lennardjones", slider=True) + col.prop(weights, "turbulence", slider=True) + col.prop(weights, "drag", slider=True) + col.prop(weights, "boid", slider=True) def basic_force_field_settings_ui(self, context, field): @@ -141,40 +141,40 @@ def basic_force_field_settings_ui(self, context, field): col = split.column() if field.type == 'DRAG': - col.itemR(field, "linear_drag", text="Linear") + col.prop(field, "linear_drag", text="Linear") else: - col.itemR(field, "strength") + col.prop(field, "strength") if field.type == 'TURBULENCE': - col.itemR(field, "size") - col.itemR(field, "flow") + col.prop(field, "size") + col.prop(field, "flow") elif field.type == 'HARMONIC': - col.itemR(field, "harmonic_damping", text="Damping") + col.prop(field, "harmonic_damping", text="Damping") elif field.type == 'VORTEX' and field.shape != 'POINT': - col.itemR(field, "inflow") + col.prop(field, "inflow") elif field.type == 'DRAG': - col.itemR(field, "quadratic_drag", text="Quadratic") + col.prop(field, "quadratic_drag", text="Quadratic") else: - col.itemR(field, "flow") + col.prop(field, "flow") if wide_ui: col = split.column() - col.itemR(field, "noise") - col.itemR(field, "seed") + col.prop(field, "noise") + col.prop(field, "seed") if field.type == 'TURBULENCE': - col.itemR(field, "global_coordinates", text="Global") + col.prop(field, "global_coordinates", text="Global") split = layout.split() col = split.column() - col.itemL(text="Effect point:") - col.itemR(field, "do_location") - col.itemR(field, "do_rotation") + col.label(text="Effect point:") + col.prop(field, "do_location") + col.prop(field, "do_rotation") if wide_ui: col = split.column() - col.itemL(text="Collision:") - col.itemR(field, "do_absorption") + col.label(text="Collision:") + col.prop(field, "do_absorption") def basic_force_field_falloff_ui(self, context, field): @@ -192,18 +192,18 @@ def basic_force_field_falloff_ui(self, context, field): return col = split.column() - col.itemR(field, "z_direction", text="") - col.itemR(field, "use_min_distance", text="Use Minimum") - col.itemR(field, "use_max_distance", text="Use Maximum") + col.prop(field, "z_direction", text="") + col.prop(field, "use_min_distance", text="Use Minimum") + col.prop(field, "use_max_distance", text="Use Maximum") if wide_ui: col = split.column() - col.itemR(field, "falloff_power", text="Power") + col.prop(field, "falloff_power", text="Power") sub = col.column() sub.active = field.use_min_distance - sub.itemR(field, "minimum_distance", text="Distance") + sub.prop(field, "minimum_distance", text="Distance") sub = col.column() sub.active = field.use_max_distance - sub.itemR(field, "maximum_distance", text="Distance") + sub.prop(field, "maximum_distance", text="Distance") diff --git a/release/scripts/ui/properties_physics_field.py b/release/scripts/ui/properties_physics_field.py index 9f895c1a487..c2f1703a912 100644 --- a/release/scripts/ui/properties_physics_field.py +++ b/release/scripts/ui/properties_physics_field.py @@ -48,19 +48,19 @@ class PHYSICS_PT_field(PhysicButtonsPanel): if wide_ui: split = layout.split(percentage=0.2) - split.itemL(text="Type:") + split.label(text="Type:") else: split = layout.split() - split.itemR(field, "type", text="") + split.prop(field, "type", text="") if field.type not in ('NONE', 'GUIDE', 'TEXTURE'): if wide_ui: split = layout.split(percentage=0.2) - split.itemL(text="Shape:") + split.label(text="Shape:") else: split = layout.split() - split.itemR(field, "shape", text="") + split.prop(field, "shape", text="") split = layout.split() @@ -68,104 +68,104 @@ class PHYSICS_PT_field(PhysicButtonsPanel): return # nothing to draw elif field.type == 'GUIDE': col = split.column() - col.itemR(field, "guide_minimum") - col.itemR(field, "guide_free") - col.itemR(field, "falloff_power") - col.itemR(field, "guide_path_add") + col.prop(field, "guide_minimum") + col.prop(field, "guide_free") + col.prop(field, "falloff_power") + col.prop(field, "guide_path_add") if wide_ui: col = split.column() - col.itemL(text="Clumping:") - col.itemR(field, "guide_clump_amount") - col.itemR(field, "guide_clump_shape") + col.label(text="Clumping:") + col.prop(field, "guide_clump_amount") + col.prop(field, "guide_clump_shape") row = layout.row() - row.itemR(field, "use_max_distance") + row.prop(field, "use_max_distance") sub = row.row() sub.active = field.use_max_distance - sub.itemR(field, "maximum_distance") + sub.prop(field, "maximum_distance") - layout.itemS() + layout.separator() - layout.itemR(field, "guide_kink_type") + layout.prop(field, "guide_kink_type") if (field.guide_kink_type != 'NONE'): - layout.itemR(field, "guide_kink_axis") + layout.prop(field, "guide_kink_axis") split = layout.split() col = split.column() - col.itemR(field, "guide_kink_frequency") - col.itemR(field, "guide_kink_shape") + col.prop(field, "guide_kink_frequency") + col.prop(field, "guide_kink_shape") if wide_ui: col = split.column() - col.itemR(field, "guide_kink_amplitude") + col.prop(field, "guide_kink_amplitude") elif field.type == 'TEXTURE': col = split.column() - col.itemR(field, "strength") - col.itemR(field, "texture", text="") - col.itemR(field, "texture_mode", text="") - col.itemR(field, "texture_nabla") + col.prop(field, "strength") + col.prop(field, "texture", text="") + col.prop(field, "texture_mode", text="") + col.prop(field, "texture_nabla") if wide_ui: col = split.column() - col.itemR(field, "use_coordinates") - col.itemR(field, "root_coordinates") - col.itemR(field, "force_2d") + col.prop(field, "use_coordinates") + col.prop(field, "root_coordinates") + col.prop(field, "force_2d") else: basic_force_field_settings_ui(self, context, field) if field.type not in ('NONE', 'GUIDE'): - layout.itemL(text="Falloff:") - layout.itemR(field, "falloff_type", expand=True) + layout.label(text="Falloff:") + layout.prop(field, "falloff_type", expand=True) basic_force_field_falloff_ui(self, context, field) if field.falloff_type == 'CONE': - layout.itemS() + layout.separator() split = layout.split(percentage=0.35) col = split.column() - col.itemL(text="Angular:") - col.itemR(field, "use_radial_min", text="Use Minimum") - col.itemR(field, "use_radial_max", text="Use Maximum") + col.label(text="Angular:") + col.prop(field, "use_radial_min", text="Use Minimum") + col.prop(field, "use_radial_max", text="Use Maximum") if wide_ui: col = split.column() - col.itemR(field, "radial_falloff", text="Power") + col.prop(field, "radial_falloff", text="Power") sub = col.column() sub.active = field.use_radial_min - sub.itemR(field, "radial_minimum", text="Angle") + sub.prop(field, "radial_minimum", text="Angle") sub = col.column() sub.active = field.use_radial_max - sub.itemR(field, "radial_maximum", text="Angle") + sub.prop(field, "radial_maximum", text="Angle") elif field.falloff_type == 'TUBE': - layout.itemS() + layout.separator() split = layout.split(percentage=0.35) col = split.column() - col.itemL(text="Radial:") - col.itemR(field, "use_radial_min", text="Use Minimum") - col.itemR(field, "use_radial_max", text="Use Maximum") + col.label(text="Radial:") + col.prop(field, "use_radial_min", text="Use Minimum") + col.prop(field, "use_radial_max", text="Use Maximum") if wide_ui: col = split.column() - col.itemR(field, "radial_falloff", text="Power") + col.prop(field, "radial_falloff", text="Power") sub = col.column() sub.active = field.use_radial_min - sub.itemR(field, "radial_minimum", text="Distance") + sub.prop(field, "radial_minimum", text="Distance") sub = col.column() sub.active = field.use_radial_max - sub.itemR(field, "radial_maximum", text="Distance") + sub.prop(field, "radial_maximum", text="Distance") class PHYSICS_PT_collision(PhysicButtonsPanel): @@ -189,21 +189,21 @@ class PHYSICS_PT_collision(PhysicButtonsPanel): if md: # remove modifier + settings split.set_context_pointer("modifier", md) - split.itemO("object.modifier_remove", text="Remove") + split.operator("object.modifier_remove", text="Remove") if wide_ui: col = split.column() #row = split.row(align=True) - #row.itemR(md, "render", text="") - #row.itemR(md, "realtime", text="") + #row.prop(md, "render", text="") + #row.prop(md, "realtime", text="") coll = md.settings else: # add modifier - split.item_enumO("object.modifier_add", "type", 'COLLISION', text="Add") + split.operator("object.modifier_add", text="Add").type = 'COLLISION' if wide_ui: - split.itemL() + split.label() coll = None @@ -215,31 +215,31 @@ class PHYSICS_PT_collision(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Particle:") - col.itemR(settings, "permeability", slider=True) - col.itemR(settings, "kill_particles") - col.itemL(text="Particle Damping:") + col.label(text="Particle:") + col.prop(settings, "permeability", slider=True) + col.prop(settings, "kill_particles") + col.label(text="Particle Damping:") sub = col.column(align=True) - sub.itemR(settings, "damping_factor", text="Factor", slider=True) - sub.itemR(settings, "random_damping", text="Random", slider=True) + sub.prop(settings, "damping_factor", text="Factor", slider=True) + sub.prop(settings, "random_damping", text="Random", slider=True) - col.itemL(text="Particle Friction:") + col.label(text="Particle Friction:") sub = col.column(align=True) - sub.itemR(settings, "friction_factor", text="Factor", slider=True) - sub.itemR(settings, "random_friction", text="Random", slider=True) + sub.prop(settings, "friction_factor", text="Factor", slider=True) + sub.prop(settings, "random_friction", text="Random", slider=True) if wide_ui: col = split.column() - col.itemL(text="Soft Body and Cloth:") + col.label(text="Soft Body and Cloth:") sub = col.column(align=True) - sub.itemR(settings, "outer_thickness", text="Outer", slider=True) - sub.itemR(settings, "inner_thickness", text="Inner", slider=True) + sub.prop(settings, "outer_thickness", text="Outer", slider=True) + sub.prop(settings, "inner_thickness", text="Inner", slider=True) - col.itemL(text="Soft Body Damping:") - col.itemR(settings, "damping", text="Factor", slider=True) + col.label(text="Soft Body Damping:") + col.prop(settings, "damping", text="Factor", slider=True) - col.itemL(text="Force Fields:") - col.itemR(settings, "absorption", text="Absorption") + col.label(text="Force Fields:") + col.prop(settings, "absorption", text="Absorption") bpy.types.register(PHYSICS_PT_field) bpy.types.register(PHYSICS_PT_collision) diff --git a/release/scripts/ui/properties_physics_fluid.py b/release/scripts/ui/properties_physics_fluid.py index 88fb4c974fb..a126002c211 100644 --- a/release/scripts/ui/properties_physics_fluid.py +++ b/release/scripts/ui/properties_physics_fluid.py @@ -48,114 +48,114 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel): if md: # remove modifier + settings split.set_context_pointer("modifier", md) - split.itemO("object.modifier_remove", text="Remove") + split.operator("object.modifier_remove", text="Remove") row = split.row(align=True) - row.itemR(md, "render", text="") - row.itemR(md, "realtime", text="") + row.prop(md, "render", text="") + row.prop(md, "realtime", text="") fluid = md.settings else: # add modifier - split.item_enumO("object.modifier_add", "type", 'FLUID_SIMULATION', text="Add") + split.operator("object.modifier_add", text="Add").type = 'FLUID_SIMULATION' if wide_ui: - split.itemL() + split.label() fluid = None if fluid: if wide_ui: - layout.itemR(fluid, "type") + layout.prop(fluid, "type") else: - layout.itemR(fluid, "type", text="") + layout.prop(fluid, "type", text="") if fluid.type == 'DOMAIN': - layout.itemO("fluid.bake", text="Bake Fluid Simulation", icon='ICON_MOD_FLUIDSIM') + layout.operator("fluid.bake", text="Bake Fluid Simulation", icon='ICON_MOD_FLUIDSIM') split = layout.split() col = split.column() - col.itemL(text="Resolution:") - col.itemR(fluid, "resolution", text="Final") - col.itemL(text="Render Display:") - col.itemR(fluid, "render_display_mode", text="") + col.label(text="Resolution:") + col.prop(fluid, "resolution", text="Final") + col.label(text="Render Display:") + col.prop(fluid, "render_display_mode", text="") if wide_ui: col = split.column() - col.itemL(text="Required Memory: " + fluid.memory_estimate) - col.itemR(fluid, "preview_resolution", text="Preview") - col.itemL(text="Viewport Display:") - col.itemR(fluid, "viewport_display_mode", text="") + col.label(text="Required Memory: " + fluid.memory_estimate) + col.prop(fluid, "preview_resolution", text="Preview") + col.label(text="Viewport Display:") + col.prop(fluid, "viewport_display_mode", text="") split = layout.split() col = split.column() - col.itemL(text="Time:") + col.label(text="Time:") sub = col.column(align=True) - sub.itemR(fluid, "start_time", text="Start") - sub.itemR(fluid, "end_time", text="End") + sub.prop(fluid, "start_time", text="Start") + sub.prop(fluid, "end_time", text="End") if wide_ui: col = split.column() - col.itemL() - col.itemR(fluid, "generate_speed_vectors") - col.itemR(fluid, "reverse_frames") + col.label() + col.prop(fluid, "generate_speed_vectors") + col.prop(fluid, "reverse_frames") - layout.itemR(fluid, "path", text="") + layout.prop(fluid, "path", text="") elif fluid.type == 'FLUID': split = layout.split() col = split.column() - col.itemL(text="Volume Initialization:") - col.itemR(fluid, "volume_initialization", text="") - col.itemR(fluid, "export_animated_mesh") + col.label(text="Volume Initialization:") + col.prop(fluid, "volume_initialization", text="") + col.prop(fluid, "export_animated_mesh") if wide_ui: col = split.column() - col.itemL(text="Initial Velocity:") - col.itemR(fluid, "initial_velocity", text="") + col.label(text="Initial Velocity:") + col.prop(fluid, "initial_velocity", text="") elif fluid.type == 'OBSTACLE': split = layout.split() col = split.column() - col.itemL(text="Volume Initialization:") - col.itemR(fluid, "volume_initialization", text="") - col.itemR(fluid, "export_animated_mesh") + col.label(text="Volume Initialization:") + col.prop(fluid, "volume_initialization", text="") + col.prop(fluid, "export_animated_mesh") if wide_ui: col = split.column() - col.itemL(text="Slip Type:") - col.itemR(fluid, "slip_type", text="") + col.label(text="Slip Type:") + col.prop(fluid, "slip_type", text="") if fluid.slip_type == 'PARTIALSLIP': - col.itemR(fluid, "partial_slip_factor", slider=True, text="Amount") + col.prop(fluid, "partial_slip_factor", slider=True, text="Amount") - col.itemL(text="Impact:") - col.itemR(fluid, "impact_factor", text="Factor") + col.label(text="Impact:") + col.prop(fluid, "impact_factor", text="Factor") elif fluid.type == 'INFLOW': split = layout.split() col = split.column() - col.itemL(text="Volume Initialization:") - col.itemR(fluid, "volume_initialization", text="") - col.itemR(fluid, "export_animated_mesh") - col.itemR(fluid, "local_coordinates") + col.label(text="Volume Initialization:") + col.prop(fluid, "volume_initialization", text="") + col.prop(fluid, "export_animated_mesh") + col.prop(fluid, "local_coordinates") if wide_ui: col = split.column() - col.itemL(text="Inflow Velocity:") - col.itemR(fluid, "inflow_velocity", text="") + col.label(text="Inflow Velocity:") + col.prop(fluid, "inflow_velocity", text="") elif fluid.type == 'OUTFLOW': split = layout.split() col = split.column() - col.itemL(text="Volume Initialization:") - col.itemR(fluid, "volume_initialization", text="") - col.itemR(fluid, "export_animated_mesh") + col.label(text="Volume Initialization:") + col.prop(fluid, "volume_initialization", text="") + col.prop(fluid, "export_animated_mesh") if wide_ui: split.column() @@ -164,48 +164,48 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Influence:") - col.itemR(fluid, "particle_influence", text="Size") - col.itemR(fluid, "alpha_influence", text="Alpha") + col.label(text="Influence:") + col.prop(fluid, "particle_influence", text="Size") + col.prop(fluid, "alpha_influence", text="Alpha") if wide_ui: col = split.column() - col.itemL(text="Type:") - col.itemR(fluid, "drops") - col.itemR(fluid, "floats") - col.itemR(fluid, "tracer") + col.label(text="Type:") + col.prop(fluid, "drops") + col.prop(fluid, "floats") + col.prop(fluid, "tracer") - layout.itemR(fluid, "path", text="") + layout.prop(fluid, "path", text="") elif fluid.type == 'CONTROL': split = layout.split() col = split.column() - col.itemL(text="") - col.itemR(fluid, "quality", slider=True) - col.itemR(fluid, "reverse_frames") + col.label(text="") + col.prop(fluid, "quality", slider=True) + col.prop(fluid, "reverse_frames") if wide_ui: col = split.column() - col.itemL(text="Time:") + col.label(text="Time:") sub = col.column(align=True) - sub.itemR(fluid, "start_time", text="Start") - sub.itemR(fluid, "end_time", text="End") + sub.prop(fluid, "start_time", text="Start") + sub.prop(fluid, "end_time", text="End") split = layout.split() col = split.column() - col.itemL(text="Attraction Force:") + col.label(text="Attraction Force:") sub = col.column(align=True) - sub.itemR(fluid, "attraction_strength", text="Strength") - sub.itemR(fluid, "attraction_radius", text="Radius") + sub.prop(fluid, "attraction_strength", text="Strength") + sub.prop(fluid, "attraction_radius", text="Radius") if wide_ui: col = split.column() - col.itemL(text="Velocity Force:") + col.label(text="Velocity Force:") sub = col.column(align=True) - sub.itemR(fluid, "velocity_strength", text="Strength") - sub.itemR(fluid, "velocity_radius", text="Radius") + sub.prop(fluid, "velocity_strength", text="Strength") + sub.prop(fluid, "velocity_radius", text="Radius") class PHYSICS_PT_domain_gravity(PhysicButtonsPanel): @@ -225,24 +225,24 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Gravity:") - col.itemR(fluid, "gravity", text="") - col.itemL(text="Real World Size:") - col.itemR(fluid, "real_world_size", text="Metres") + col.label(text="Gravity:") + col.prop(fluid, "gravity", text="") + col.label(text="Real World Size:") + col.prop(fluid, "real_world_size", text="Metres") if wide_ui: col = split.column() - col.itemL(text="Viscosity Presets:") + col.label(text="Viscosity Presets:") sub = col.column(align=True) - sub.itemR(fluid, "viscosity_preset", text="") + sub.prop(fluid, "viscosity_preset", text="") if fluid.viscosity_preset == 'MANUAL': - sub.itemR(fluid, "viscosity_base", text="Base") - sub.itemR(fluid, "viscosity_exponent", text="Exponent", slider=True) + sub.prop(fluid, "viscosity_base", text="Base") + sub.prop(fluid, "viscosity_exponent", text="Exponent", slider=True) - col.itemL(text="Optimization:") - col.itemR(fluid, "grid_levels", slider=True) - col.itemR(fluid, "compressibility", slider=True) + col.label(text="Optimization:") + col.prop(fluid, "grid_levels", slider=True) + col.prop(fluid, "compressibility", slider=True) class PHYSICS_PT_domain_boundary(PhysicButtonsPanel): @@ -262,16 +262,16 @@ class PHYSICS_PT_domain_boundary(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Slip Type:") - col.itemR(fluid, "slip_type", text="") + col.label(text="Slip Type:") + col.prop(fluid, "slip_type", text="") if fluid.slip_type == 'PARTIALSLIP': - col.itemR(fluid, "partial_slip_factor", slider=True, text="Amount") + col.prop(fluid, "partial_slip_factor", slider=True, text="Amount") if wide_ui: col = split.column() - col.itemL(text="Surface:") - col.itemR(fluid, "surface_smoothing", text="Smoothing") - col.itemR(fluid, "surface_subdivisions", text="Subdivisions") + col.label(text="Surface:") + col.prop(fluid, "surface_smoothing", text="Smoothing") + col.prop(fluid, "surface_subdivisions", text="Subdivisions") class PHYSICS_PT_domain_particles(PhysicButtonsPanel): @@ -288,8 +288,8 @@ class PHYSICS_PT_domain_particles(PhysicButtonsPanel): fluid = context.fluid.settings col = layout.column(align=True) - col.itemR(fluid, "tracer_particles") - col.itemR(fluid, "generate_particles") + col.prop(fluid, "tracer_particles") + col.prop(fluid, "generate_particles") bpy.types.register(PHYSICS_PT_fluid) bpy.types.register(PHYSICS_PT_domain_gravity) diff --git a/release/scripts/ui/properties_physics_smoke.py b/release/scripts/ui/properties_physics_smoke.py index 631c91a5487..b390b32cadc 100644 --- a/release/scripts/ui/properties_physics_smoke.py +++ b/release/scripts/ui/properties_physics_smoke.py @@ -53,23 +53,23 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel): if md: # remove modifier + settings split.set_context_pointer("modifier", md) - split.itemO("object.modifier_remove", text="Remove") + split.operator("object.modifier_remove", text="Remove") row = split.row(align=True) - row.itemR(md, "render", text="") - row.itemR(md, "realtime", text="") + row.prop(md, "render", text="") + row.prop(md, "realtime", text="") else: # add modifier - split.item_enumO("object.modifier_add", "type", 'SMOKE', text="Add") + split.operator("object.modifier_add", text="Add").type = 'SMOKE' if wide_ui: - split.itemL() + split.label() if md: if wide_ui: - layout.itemR(md, "smoke_type", expand=True) + layout.prop(md, "smoke_type", expand=True) else: - layout.itemR(md, "smoke_type", text="") + layout.prop(md, "smoke_type", text="") if md.smoke_type == 'TYPE_DOMAIN': @@ -78,19 +78,19 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Resolution:") - col.itemR(domain, "maxres", text="Divisions") + col.label(text="Resolution:") + col.prop(domain, "maxres", text="Divisions") if wide_ui: col = split.column() - col.itemL(text="Behavior:") - col.itemR(domain, "alpha") - col.itemR(domain, "beta") - col.itemR(domain, "dissolve_smoke", text="Dissolve") + col.label(text="Behavior:") + col.prop(domain, "alpha") + col.prop(domain, "beta") + col.prop(domain, "dissolve_smoke", text="Dissolve") sub = col.column() sub.active = domain.dissolve_smoke - sub.itemR(domain, "dissolve_speed", text="Time") - sub.itemR(domain, "dissolve_smoke_log", text="Slow") + sub.prop(domain, "dissolve_speed", text="Time") + sub.prop(domain, "dissolve_smoke_log", text="Slow") elif md.smoke_type == 'TYPE_FLOW': @@ -99,9 +99,9 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemR(flow, "outflow") - col.itemL(text="Particle System:") - col.item_pointerR(flow, "psys", ob, "particle_systems", text="") + col.prop(flow, "outflow") + col.label(text="Particle System:") + col.prop_object(flow, "psys", ob, "particle_systems", text="") if md.flow_settings.outflow: if wide_ui: @@ -109,12 +109,12 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel): else: if wide_ui: col = split.column() - col.itemL(text="Behavior:") - col.itemR(flow, "temperature") - col.itemR(flow, "density") + col.label(text="Behavior:") + col.prop(flow, "temperature") + col.prop(flow, "density") #elif md.smoke_type == 'TYPE_COLL': - # layout.itemS() + # layout.separator() class PHYSICS_PT_smoke_groups(PhysicButtonsPanel): @@ -134,16 +134,16 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Flow Group:") - col.itemR(group, "fluid_group", text="") + col.label(text="Flow Group:") + col.prop(group, "fluid_group", text="") - #col.itemL(text="Effector Group:") - #col.itemR(group, "eff_group", text="") + #col.label(text="Effector Group:") + #col.prop(group, "eff_group", text="") if wide_ui: col = split.column() - col.itemL(text="Collision Group:") - col.itemR(group, "coll_group", text="") + col.label(text="Collision Group:") + col.prop(group, "coll_group", text="") class PHYSICS_PT_smoke_cache(PhysicButtonsPanel): @@ -158,7 +158,7 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel): md = context.smoke.domain_settings cache = md.point_cache_low - point_cache_ui(self, context, cache, cache.baked == False, 0, 1) + point_cache_ui(self, context, cache, (cache.baked is False), 0, 1) class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): @@ -172,7 +172,7 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): def draw_header(self, context): high = context.smoke.domain_settings - self.layout.itemR(high, "highres", text="") + self.layout.prop(high, "highres", text="") def draw(self, context): layout = self.layout @@ -183,15 +183,15 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Resolution:") - col.itemR(md, "amplify", text="Divisions") - col.itemR(md, "viewhighres") + col.label(text="Resolution:") + col.prop(md, "amplify", text="Divisions") + col.prop(md, "viewhighres") if wide_ui: col = split.column() - col.itemL(text="Noise Method:") - col.row().itemR(md, "noise_type", text="") - col.itemR(md, "strength") + col.label(text="Noise Method:") + col.row().prop(md, "noise_type", text="") + col.prop(md, "strength") class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel): @@ -206,7 +206,7 @@ class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel): md = context.smoke.domain_settings cache = md.point_cache_high - point_cache_ui(self, context, cache, cache.baked == False, 0, 1) + point_cache_ui(self, context, cache, (cache.baked is False), 0, 1) class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel): diff --git a/release/scripts/ui/properties_physics_softbody.py b/release/scripts/ui/properties_physics_softbody.py index 02244ef71ab..60b9c08ee58 100644 --- a/release/scripts/ui/properties_physics_softbody.py +++ b/release/scripts/ui/properties_physics_softbody.py @@ -27,7 +27,7 @@ from properties_physics_common import effector_weights_ui def softbody_panel_enabled(md): - return md.point_cache.baked == False + return (md.point_cache.baked is False) class PhysicButtonsPanel(bpy.types.Panel): @@ -57,14 +57,14 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel): if md: # remove modifier + settings split.set_context_pointer("modifier", md) - split.itemO("object.modifier_remove", text="Remove") + split.operator("object.modifier_remove", text="Remove") row = split.row(align=True) - row.itemR(md, "render", text="") - row.itemR(md, "realtime", text="") + row.prop(md, "render", text="") + row.prop(md, "realtime", text="") else: # add modifier - split.item_enumO("object.modifier_add", "type", 'SOFT_BODY', text="Add") + split.operator("object.modifier_add", text="Add").type = 'SOFT_BODY' if wide_ui: split.column() @@ -76,15 +76,15 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel): split.enabled = softbody_panel_enabled(md) col = split.column() - col.itemL(text="Object:") - col.itemR(softbody, "friction") - col.itemR(softbody, "mass") - col.item_pointerR(softbody, "mass_vertex_group", ob, "vertex_groups", text="Mass:") + col.label(text="Object:") + col.prop(softbody, "friction") + col.prop(softbody, "mass") + col.prop_object(softbody, "mass_vertex_group", ob, "vertex_groups", text="Mass:") if wide_ui: col = split.column() - col.itemL(text="Simulation:") - col.itemR(softbody, "speed") + col.label(text="Simulation:") + col.prop(softbody, "speed") class PHYSICS_PT_softbody_cache(PhysicButtonsPanel): @@ -110,7 +110,7 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel): softbody = context.soft_body.settings self.layout.active = softbody_panel_enabled(context.soft_body) - self.layout.itemR(softbody, "use_goal", text="") + self.layout.prop(softbody, "use_goal", text="") def draw(self, context): layout = self.layout @@ -128,19 +128,19 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Goal Strengths:") - col.itemR(softbody, "goal_default", text="Default") + col.label(text="Goal Strengths:") + col.prop(softbody, "goal_default", text="Default") sub = col.column(align=True) - sub.itemR(softbody, "goal_min", text="Minimum") - sub.itemR(softbody, "goal_max", text="Maximum") + sub.prop(softbody, "goal_min", text="Minimum") + sub.prop(softbody, "goal_max", text="Maximum") if wide_ui: col = split.column() - col.itemL(text="Goal Settings:") - col.itemR(softbody, "goal_spring", text="Stiffness") - col.itemR(softbody, "goal_friction", text="Damping") + col.label(text="Goal Settings:") + col.prop(softbody, "goal_spring", text="Stiffness") + col.prop(softbody, "goal_friction", text="Damping") - layout.item_pointerR(softbody, "goal_vertex_group", ob, "vertex_groups", text="Vertex Group") + layout.prop_object(softbody, "goal_vertex_group", ob, "vertex_groups", text="Vertex Group") class PHYSICS_PT_softbody_edge(PhysicButtonsPanel): @@ -154,7 +154,7 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel): softbody = context.soft_body.settings self.layout.active = softbody_panel_enabled(context.soft_body) - self.layout.itemR(softbody, "use_edges", text="") + self.layout.prop(softbody, "use_edges", text="") def draw(self, context): layout = self.layout @@ -169,30 +169,30 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel): 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.item_pointerR(softbody, "spring_vertex_group", ob, "vertex_groups", text="Springs:") + col.label(text="Springs:") + col.prop(softbody, "pull") + col.prop(softbody, "push") + col.prop(softbody, "damp") + col.prop(softbody, "plastic") + col.prop(softbody, "bending") + col.prop(softbody, "spring_length", text="Length") + col.prop_object(softbody, "spring_vertex_group", ob, "vertex_groups", text="Springs:") if wide_ui: col = split.column() - col.itemR(softbody, "stiff_quads") + col.prop(softbody, "stiff_quads") sub = col.column() sub.active = softbody.stiff_quads - sub.itemR(softbody, "shear") + sub.prop(softbody, "shear") - col.itemR(softbody, "new_aero", text="Aero") + col.prop(softbody, "new_aero", text="Aero") sub = col.column() sub.enabled = softbody.new_aero - sub.itemR(softbody, "aero", text="Factor") + sub.prop(softbody, "aero", text="Factor") - col.itemL(text="Collision:") - col.itemR(softbody, "edge_collision", text="Edge") - col.itemR(softbody, "face_collision", text="Face") + col.label(text="Collision:") + col.prop(softbody, "edge_collision", text="Edge") + col.prop(softbody, "face_collision", text="Face") class PHYSICS_PT_softbody_collision(PhysicButtonsPanel): @@ -206,7 +206,7 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel): softbody = context.soft_body.settings self.layout.active = softbody_panel_enabled(context.soft_body) - self.layout.itemR(softbody, "self_collision", text="") + self.layout.prop(softbody, "self_collision", text="") def draw(self, context): layout = self.layout @@ -217,17 +217,17 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel): layout.active = softbody.self_collision and softbody_panel_enabled(md) - layout.itemL(text="Collision Type:") + layout.label(text="Collision Type:") if wide_ui: - layout.itemR(softbody, "collision_type", expand=True) + layout.prop(softbody, "collision_type", expand=True) else: - layout.itemR(softbody, "collision_type", text="") + layout.prop(softbody, "collision_type", text="") 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") + col.label(text="Ball:") + col.prop(softbody, "ball_size", text="Size") + col.prop(softbody, "ball_stiff", text="Stiffness") + col.prop(softbody, "ball_damp", text="Dampening") class PHYSICS_PT_softbody_solver(PhysicButtonsPanel): @@ -250,20 +250,20 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel): 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.label(text="Step Size:") + col.prop(softbody, "minstep") + col.prop(softbody, "maxstep") + col.prop(softbody, "auto_step", text="Auto-Step") if wide_ui: col = split.column() - col.itemR(softbody, "error_limit") - col.itemL(text="Helpers:") - col.itemR(softbody, "choke") - col.itemR(softbody, "fuzzy") + col.prop(softbody, "error_limit") + col.label(text="Helpers:") + col.prop(softbody, "choke") + col.prop(softbody, "fuzzy") - layout.itemL(text="Diagnostics:") - layout.itemR(softbody, "diagnose") + layout.label(text="Diagnostics:") + layout.prop(softbody, "diagnose") class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel): diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index 4894dfafe4a..35f52552e6b 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -37,7 +37,7 @@ class RenderButtonsPanel(bpy.types.Panel): def poll(self, context): rd = context.scene.render_data - return (context.scene and rd.use_game_engine == False) and (rd.engine in self.COMPAT_ENGINES) + return (context.scene and rd.use_game_engine is False) and (rd.engine in self.COMPAT_ENGINES) class RENDER_PT_render(RenderButtonsPanel): @@ -53,13 +53,13 @@ class RENDER_PT_render(RenderButtonsPanel): split = layout.split() col = split.column() - col.itemO("screen.render", text="Image", icon='ICON_RENDER_STILL') + col.operator("screen.render", text="Image", icon='ICON_RENDER_STILL') if wide_ui: col = split.column() - col.item_booleanO("screen.render", "animation", True, text="Animation", icon='ICON_RENDER_ANIMATION') + col.operator("screen.render", text="Animation", icon='ICON_RENDER_ANIMATION').animation = True - layout.itemR(rd, "display_mode", text="Display") + layout.prop(rd, "display_mode", text="Display") class RENDER_PT_layers(RenderButtonsPanel): @@ -78,86 +78,86 @@ class RENDER_PT_layers(RenderButtonsPanel): row.template_list(rd, "layers", rd, "active_layer_index", rows=2) col = row.column(align=True) - col.itemO("scene.render_layer_add", icon='ICON_ZOOMIN', text="") - col.itemO("scene.render_layer_remove", icon='ICON_ZOOMOUT', text="") + col.operator("scene.render_layer_add", icon='ICON_ZOOMIN', text="") + col.operator("scene.render_layer_remove", icon='ICON_ZOOMOUT', text="") rl = rd.layers[rd.active_layer_index] if rl: - layout.itemR(rl, "name") + layout.prop(rl, "name") split = layout.split() col = split.column() - col.itemR(scene, "visible_layers", text="Scene") + col.prop(scene, "visible_layers", text="Scene") if wide_ui: col = split.column() - col.itemR(rl, "visible_layers", text="Layer") + col.prop(rl, "visible_layers", text="Layer") - layout.itemR(rl, "light_override", text="Light") - layout.itemR(rl, "material_override", text="Material") + layout.prop(rl, "light_override", text="Light") + layout.prop(rl, "material_override", text="Material") - layout.itemS() - layout.itemL(text="Include:") + layout.separator() + layout.label(text="Include:") split = layout.split() col = split.column() - col.itemR(rl, "zmask") + col.prop(rl, "zmask") row = col.row() - row.itemR(rl, "zmask_negate", text="Negate") + row.prop(rl, "zmask_negate", text="Negate") row.active = rl.zmask - col.itemR(rl, "all_z") + col.prop(rl, "all_z") col = split.column() - col.itemR(rl, "solid") - col.itemR(rl, "halo") - col.itemR(rl, "ztransp") + col.prop(rl, "solid") + col.prop(rl, "halo") + col.prop(rl, "ztransp") col = split.column() - col.itemR(rl, "sky") - col.itemR(rl, "edge") - col.itemR(rl, "strand") + col.prop(rl, "sky") + col.prop(rl, "edge") + col.prop(rl, "strand") if rl.zmask: split = layout.split() - split.itemL(text="Zmask Layers:") - split.column().itemR(rl, "zmask_layers", text="") + split.label(text="Zmask Layers:") + split.column().prop(rl, "zmask_layers", text="") - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemL(text="Passes:") - col.itemR(rl, "pass_combined") - col.itemR(rl, "pass_z") - col.itemR(rl, "pass_vector") - col.itemR(rl, "pass_normal") - col.itemR(rl, "pass_uv") - col.itemR(rl, "pass_mist") - col.itemR(rl, "pass_object_index") + col.label(text="Passes:") + col.prop(rl, "pass_combined") + col.prop(rl, "pass_z") + col.prop(rl, "pass_vector") + col.prop(rl, "pass_normal") + col.prop(rl, "pass_uv") + col.prop(rl, "pass_mist") + col.prop(rl, "pass_object_index") if wide_ui: col = split.column() - col.itemL() - col.itemR(rl, "pass_color") - col.itemR(rl, "pass_diffuse") + col.label() + col.prop(rl, "pass_color") + col.prop(rl, "pass_diffuse") row = col.row() - row.itemR(rl, "pass_specular") - row.itemR(rl, "pass_specular_exclude", text="", icon='ICON_X') + row.prop(rl, "pass_specular") + row.prop(rl, "pass_specular_exclude", text="", icon='ICON_X') row = col.row() - row.itemR(rl, "pass_shadow") - row.itemR(rl, "pass_shadow_exclude", text="", icon='ICON_X') + row.prop(rl, "pass_shadow") + row.prop(rl, "pass_shadow_exclude", text="", icon='ICON_X') row = col.row() - row.itemR(rl, "pass_ao") - row.itemR(rl, "pass_ao_exclude", text="", icon='ICON_X') + row.prop(rl, "pass_ao") + row.prop(rl, "pass_ao_exclude", text="", icon='ICON_X') row = col.row() - row.itemR(rl, "pass_reflection") - row.itemR(rl, "pass_reflection_exclude", text="", icon='ICON_X') + row.prop(rl, "pass_reflection") + row.prop(rl, "pass_reflection_exclude", text="", icon='ICON_X') row = col.row() - row.itemR(rl, "pass_refraction") - row.itemR(rl, "pass_refraction_exclude", text="", icon='ICON_X') + row.prop(rl, "pass_refraction") + row.prop(rl, "pass_refraction_exclude", text="", icon='ICON_X') class RENDER_PT_shading(RenderButtonsPanel): @@ -173,16 +173,16 @@ class RENDER_PT_shading(RenderButtonsPanel): split = layout.split() col = split.column() - col.itemR(rd, "render_textures", text="Textures") - col.itemR(rd, "render_shadows", text="Shadows") - col.itemR(rd, "render_sss", text="Subsurface Scattering") - col.itemR(rd, "render_envmaps", text="Environment Map") + col.prop(rd, "render_textures", text="Textures") + col.prop(rd, "render_shadows", text="Shadows") + col.prop(rd, "render_sss", text="Subsurface Scattering") + col.prop(rd, "render_envmaps", text="Environment Map") if wide_ui: col = split.column() - col.itemR(rd, "render_raytracing", text="Ray Tracing") - col.itemR(rd, "color_management") - col.itemR(rd, "alpha_mode", text="Alpha") + col.prop(rd, "render_raytracing", text="Ray Tracing") + col.prop(rd, "color_management") + col.prop(rd, "alpha_mode", text="Alpha") class RENDER_PT_performance(RenderButtonsPanel): @@ -199,34 +199,34 @@ class RENDER_PT_performance(RenderButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Threads:") - col.row().itemR(rd, "threads_mode", expand=True) + col.label(text="Threads:") + col.row().prop(rd, "threads_mode", expand=True) sub = col.column() sub.enabled = rd.threads_mode == 'THREADS_FIXED' - sub.itemR(rd, "threads") + sub.prop(rd, "threads") sub = col.column(align=True) - sub.itemL(text="Tiles:") - sub.itemR(rd, "parts_x", text="X") - sub.itemR(rd, "parts_y", text="Y") + sub.label(text="Tiles:") + sub.prop(rd, "parts_x", text="X") + sub.prop(rd, "parts_y", text="Y") if wide_ui: col = split.column() - col.itemL(text="Memory:") + col.label(text="Memory:") sub = col.column() - sub.itemR(rd, "save_buffers") + sub.prop(rd, "save_buffers") sub.enabled = not rd.full_sample sub = col.column() sub.active = rd.use_compositing - sub.itemR(rd, "free_image_textures") + sub.prop(rd, "free_image_textures") sub = col.column() sub.active = rd.render_raytracing - sub.itemL(text="Acceleration structure:") - sub.itemR(rd, "raytrace_structure", text="") + sub.label(text="Acceleration structure:") + sub.prop(rd, "raytrace_structure", text="") if rd.raytrace_structure == 'OCTREE': - sub.itemR(rd, "octree_resolution", text="Resolution") + sub.prop(rd, "octree_resolution", text="Resolution") else: - sub.itemR(rd, "use_instances", text="Instances") - sub.itemR(rd, "use_local_coords", text="Local Coordinates") + sub.prop(rd, "use_instances", text="Instances") + sub.prop(rd, "use_local_coords", text="Local Coordinates") class RENDER_PT_post_processing(RenderButtonsPanel): @@ -243,34 +243,34 @@ class RENDER_PT_post_processing(RenderButtonsPanel): split = layout.split() col = split.column() - col.itemR(rd, "use_compositing") - col.itemR(rd, "use_sequencer") + col.prop(rd, "use_compositing") + col.prop(rd, "use_sequencer") if wide_ui: col = split.column() - col.itemR(rd, "dither_intensity", text="Dither", slider=True) + col.prop(rd, "dither_intensity", text="Dither", slider=True) - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemR(rd, "fields", text="Fields") + col.prop(rd, "fields", text="Fields") sub = col.column() sub.active = rd.fields - sub.row().itemR(rd, "field_order", expand=True) - sub.itemR(rd, "fields_still", text="Still") + sub.row().prop(rd, "field_order", expand=True) + sub.prop(rd, "fields_still", text="Still") if wide_ui: col = split.column() else: - col.itemS() - col.itemR(rd, "edge") + col.separator() + col.prop(rd, "edge") sub = col.column() sub.active = rd.edge - sub.itemR(rd, "edge_threshold", text="Threshold", slider=True) - sub.itemR(rd, "edge_color", text="") + sub.prop(rd, "edge_threshold", text="Threshold", slider=True) + sub.prop(rd, "edge_color", text="") class RENDER_PT_output(RenderButtonsPanel): @@ -283,91 +283,72 @@ class RENDER_PT_output(RenderButtonsPanel): rd = context.scene.render_data wide_ui = context.region.width > narrowui - layout.itemR(rd, "output_path", text="") + layout.prop(rd, "output_path", text="") split = layout.split() col = split.column() - col.itemR(rd, "file_format", text="") - col.row().itemR(rd, "color_mode", text="Color", expand=True) + col.prop(rd, "file_format", text="") + col.row().prop(rd, "color_mode", text="Color", expand=True) if wide_ui: col = split.column() - col.itemR(rd, "file_extensions") - col.itemR(rd, "use_overwrite") - col.itemR(rd, "use_placeholder") + col.prop(rd, "file_extensions") + col.prop(rd, "use_overwrite") + col.prop(rd, "use_placeholder") if rd.file_format in ('AVIJPEG', 'JPEG'): split = layout.split() - split.itemR(rd, "quality", slider=True) + split.prop(rd, "quality", slider=True) elif rd.file_format == 'OPENEXR': split = layout.split() col = split.column() - col.itemL(text="Codec:") - col.itemR(rd, "exr_codec", text="") + col.label(text="Codec:") + col.prop(rd, "exr_codec", text="") if wide_ui: subsplit = split.split() col = subsplit.column() - col.itemR(rd, "exr_half") - col.itemR(rd, "exr_zbuf") + col.prop(rd, "exr_half") + col.prop(rd, "exr_zbuf") if wide_ui: col = subsplit.column() - col.itemR(rd, "exr_preview") + col.prop(rd, "exr_preview") elif rd.file_format == 'JPEG2000': split = layout.split() col = split.column() - col.itemL(text="Depth:") - col.row().itemR(rd, "jpeg2k_depth", expand=True) + col.label(text="Depth:") + col.row().prop(rd, "jpeg2k_depth", expand=True) if wide_ui: col = split.column() - col.itemR(rd, "jpeg2k_preset", text="") - col.itemR(rd, "jpeg2k_ycc") + col.prop(rd, "jpeg2k_preset", text="") + col.prop(rd, "jpeg2k_ycc") elif rd.file_format in ('CINEON', 'DPX'): split = layout.split() col = split.column() - col.itemR(rd, "cineon_log", text="Convert to Log") + col.prop(rd, "cineon_log", text="Convert to Log") if wide_ui: col = split.column(align=True) col.active = rd.cineon_log - col.itemR(rd, "cineon_black", text="Black") - col.itemR(rd, "cineon_white", text="White") - col.itemR(rd, "cineon_gamma", text="Gamma") + col.prop(rd, "cineon_black", text="Black") + col.prop(rd, "cineon_white", text="White") + col.prop(rd, "cineon_gamma", text="Gamma") elif rd.file_format == 'TIFF': split = layout.split() - split.itemR(rd, "tiff_bit") + split.prop(rd, "tiff_bit") - -class RENDER_PT_QTencoding(RenderButtonsPanel): - bl_label = "Encoding" - bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def poll(self, context): - rd = context.scene.render_data - return rd.file_format in ('QUICKTIME_QTKIT') # QUICKTIME will be added later - - def draw(self, context): - layout = self.layout - - rd = context.scene.render_data - wide_ui = context.region.width > narrowui - - split = layout.split() - - split.itemR(rd, "quicktime_codec_type") - - split = layout.split() - - if rd.file_format == 'QUICKTIME_QTKIT': - split.itemR(rd, "quicktime_codec_spatial_quality", text="Quality", slider=True) + elif rd.file_format == 'QUICKTIME_QTKIT': + split = layout.split() + col = split.column() + col.prop(rd, "quicktime_codec_type") + col.prop(rd, "quicktime_codec_spatial_quality", text="Quality") class RENDER_PT_encoding(RenderButtonsPanel): @@ -388,54 +369,56 @@ class RENDER_PT_encoding(RenderButtonsPanel): split = layout.split() col = split.column() - col.itemR(rd, "ffmpeg_format") + col.prop(rd, "ffmpeg_format") if rd.ffmpeg_format in ('AVI', 'QUICKTIME', 'MKV', 'OGG'): if wide_ui: col = split.column() - col.itemR(rd, "ffmpeg_codec") + col.prop(rd, "ffmpeg_codec") else: if wide_ui: - split.itemL() + split.label() split = layout.split() col = split.column() - col.itemR(rd, "ffmpeg_video_bitrate") + col.prop(rd, "ffmpeg_video_bitrate") if wide_ui: col = split.column() - col.itemR(rd, "ffmpeg_gopsize") + col.prop(rd, "ffmpeg_gopsize") split = layout.split() col = split.column() - col.itemL(text="Rate:") - col.itemR(rd, "ffmpeg_minrate", text="Minimum") - col.itemR(rd, "ffmpeg_maxrate", text="Maximum") - col.itemR(rd, "ffmpeg_buffersize", text="Buffer") + col.label(text="Rate:") + col.prop(rd, "ffmpeg_minrate", text="Minimum") + col.prop(rd, "ffmpeg_maxrate", text="Maximum") + col.prop(rd, "ffmpeg_buffersize", text="Buffer") if wide_ui: col = split.column() - col.itemR(rd, "ffmpeg_autosplit") - col.itemL(text="Mux:") - col.itemR(rd, "ffmpeg_muxrate", text="Rate") - col.itemR(rd, "ffmpeg_packetsize", text="Packet Size") + col.prop(rd, "ffmpeg_autosplit") + col.label(text="Mux:") + col.prop(rd, "ffmpeg_muxrate", text="Rate") + col.prop(rd, "ffmpeg_packetsize", text="Packet Size") - row = layout.row() - row.itemL(text="Audio:") - row = layout.row() - row.itemR(rd, "ffmpeg_audio_codec", text="Codec") + # Audio: + layout.prop(rd, "ffmpeg_multiplex_audio", text="Audio") - split = layout.split() + sub = layout.column() + sub.active = rd.ffmpeg_multiplex_audio + sub.prop(rd, "ffmpeg_audio_codec", text="Codec") + sub.separator() + + split = sub.split() col = split.column() - col.itemR(rd, "ffmpeg_audio_bitrate") - col.itemR(rd, "ffmpeg_audio_mixrate") + col.prop(rd, "ffmpeg_audio_bitrate") + col.prop(rd, "ffmpeg_audio_mixrate") if wide_ui: col = split.column() - col.itemR(rd, "ffmpeg_multiplex_audio") - col.itemR(rd, "ffmpeg_audio_volume", slider=True) + col.prop(rd, "ffmpeg_audio_volume", slider=True) class RENDER_PT_antialiasing(RenderButtonsPanel): @@ -445,7 +428,7 @@ class RENDER_PT_antialiasing(RenderButtonsPanel): def draw_header(self, context): rd = context.scene.render_data - self.layout.itemR(rd, "antialiasing", text="") + self.layout.prop(rd, "antialiasing", text="") def draw(self, context): layout = self.layout @@ -457,13 +440,13 @@ class RENDER_PT_antialiasing(RenderButtonsPanel): split = layout.split() col = split.column() - col.row().itemR(rd, "antialiasing_samples", expand=True) - col.itemR(rd, "full_sample") + col.row().prop(rd, "antialiasing_samples", expand=True) + col.prop(rd, "full_sample") if wide_ui: col = split.column() - col.itemR(rd, "pixel_filter", text="") - col.itemR(rd, "filter_size", text="Size", slider=True) + col.prop(rd, "pixel_filter", text="") + col.prop(rd, "filter_size", text="Size") class RENDER_PT_dimensions(RenderButtonsPanel): @@ -476,42 +459,42 @@ class RENDER_PT_dimensions(RenderButtonsPanel): scene = context.scene rd = scene.render_data wide_ui = context.region.width > narrowui - + row = layout.row().split() sub = row.row(align=True).split(percentage=0.75) - sub.itemM("RENDER_MT_presets", text="Presets") - sub.itemO("render.preset_add", text="Add") + sub.menu("RENDER_MT_presets", text="Presets") + sub.operator("render.preset_add", text="Add") split = layout.split() col = split.column() sub = col.column(align=True) - sub.itemL(text="Resolution:") - sub.itemR(rd, "resolution_x", text="X") - sub.itemR(rd, "resolution_y", text="Y") - sub.itemR(rd, "resolution_percentage", text="") + sub.label(text="Resolution:") + sub.prop(rd, "resolution_x", text="X") + sub.prop(rd, "resolution_y", text="Y") + sub.prop(rd, "resolution_percentage", text="") - sub.itemL(text="Aspect Ratio:") - sub.itemR(rd, "pixel_aspect_x", text="X") - sub.itemR(rd, "pixel_aspect_y", text="Y") + sub.label(text="Aspect Ratio:") + sub.prop(rd, "pixel_aspect_x", text="X") + sub.prop(rd, "pixel_aspect_y", text="Y") row = col.row() - row.itemR(rd, "use_border", text="Border") + row.prop(rd, "use_border", text="Border") sub = row.row() sub.active = rd.use_border - sub.itemR(rd, "crop_to_border", text="Crop") + sub.prop(rd, "crop_to_border", text="Crop") if wide_ui: col = split.column() sub = col.column(align=True) - sub.itemL(text="Frame Range:") - sub.itemR(scene, "start_frame", text="Start") - sub.itemR(scene, "end_frame", text="End") - sub.itemR(scene, "frame_step", text="Step") + sub.label(text="Frame Range:") + sub.prop(scene, "start_frame", text="Start") + sub.prop(scene, "end_frame", text="End") + sub.prop(scene, "frame_step", text="Step") - sub.itemL(text="Frame Rate:") - sub.itemR(rd, "fps") - sub.itemR(rd, "fps_base", text="/") + sub.label(text="Frame Rate:") + sub.prop(rd, "fps") + sub.prop(rd, "fps_base", text="/") class RENDER_PT_stamp(RenderButtonsPanel): @@ -522,7 +505,7 @@ class RENDER_PT_stamp(RenderButtonsPanel): def draw_header(self, context): rd = context.scene.render_data - self.layout.itemR(rd, "render_stamp", text="") + self.layout.prop(rd, "render_stamp", text="") def draw(self, context): layout = self.layout @@ -535,29 +518,29 @@ class RENDER_PT_stamp(RenderButtonsPanel): split = layout.split() col = split.column() - col.itemR(rd, "stamp_time", text="Time") - col.itemR(rd, "stamp_date", text="Date") - col.itemR(rd, "stamp_render_time", text="RenderTime") - col.itemR(rd, "stamp_frame", text="Frame") - col.itemR(rd, "stamp_scene", text="Scene") - col.itemR(rd, "stamp_camera", text="Camera") - col.itemR(rd, "stamp_filename", text="Filename") - col.itemR(rd, "stamp_marker", text="Marker") - col.itemR(rd, "stamp_sequence_strip", text="Seq. Strip") + col.prop(rd, "stamp_time", text="Time") + col.prop(rd, "stamp_date", text="Date") + col.prop(rd, "stamp_render_time", text="RenderTime") + col.prop(rd, "stamp_frame", text="Frame") + col.prop(rd, "stamp_scene", text="Scene") + col.prop(rd, "stamp_camera", text="Camera") + col.prop(rd, "stamp_filename", text="Filename") + col.prop(rd, "stamp_marker", text="Marker") + col.prop(rd, "stamp_sequence_strip", text="Seq. Strip") if wide_ui: col = split.column() col.active = rd.render_stamp - col.itemR(rd, "stamp_foreground", slider=True) - col.itemR(rd, "stamp_background", slider=True) - col.itemS() - col.itemR(rd, "stamp_font_size", text="Font Size") + col.prop(rd, "stamp_foreground", slider=True) + col.prop(rd, "stamp_background", slider=True) + col.separator() + col.prop(rd, "stamp_font_size", text="Font Size") row = layout.split(percentage=0.2) - row.itemR(rd, "stamp_note", text="Note") + row.prop(rd, "stamp_note", text="Note") sub = row.row() sub.active = rd.stamp_note - sub.itemR(rd, "stamp_note_text", text="") + sub.prop(rd, "stamp_note_text", text="") bpy.types.register(RENDER_MT_presets) @@ -568,7 +551,6 @@ 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_QTencoding) bpy.types.register(RENDER_PT_encoding) bpy.types.register(RENDER_PT_performance) bpy.types.register(RENDER_PT_post_processing) diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py index 3c1fbf01ad6..8325889e644 100644 --- a/release/scripts/ui/properties_scene.py +++ b/release/scripts/ui/properties_scene.py @@ -41,11 +41,11 @@ class SCENE_PT_scene(SceneButtonsPanel): scene = context.scene if wide_ui: - layout.itemR(scene, "camera") - layout.itemR(scene, "set", text="Background") + layout.prop(scene, "camera") + layout.prop(scene, "set", text="Background") else: - layout.itemR(scene, "camera", text="") - layout.itemR(scene, "set", text="") + layout.prop(scene, "camera", text="") + layout.prop(scene, "set", text="") class SCENE_PT_unit(SceneButtonsPanel): @@ -58,17 +58,17 @@ class SCENE_PT_unit(SceneButtonsPanel): unit = context.scene.unit_settings col = layout.column() - col.row().itemR(unit, "system", expand=True) + col.row().prop(unit, "system", expand=True) split = layout.split() split.active = (unit.system != 'NONE') col = split.column() - col.itemR(unit, "scale_length", text="Scale") + col.prop(unit, "scale_length", text="Scale") if wide_ui: col = split.column() - col.itemR(unit, "use_separate") + col.prop(unit, "use_separate") class SCENE_PT_keying_sets(SceneButtonsPanel): @@ -85,29 +85,29 @@ class SCENE_PT_keying_sets(SceneButtonsPanel): col.template_list(scene, "keying_sets", scene, "active_keying_set_index", rows=2) col = row.column(align=True) - col.itemO("anim.keying_set_add", icon='ICON_ZOOMIN', text="") - col.itemO("anim.keying_set_remove", icon='ICON_ZOOMOUT', text="") + col.operator("anim.keying_set_add", icon='ICON_ZOOMIN', text="") + col.operator("anim.keying_set_remove", icon='ICON_ZOOMOUT', text="") ks = scene.active_keying_set if ks: row = layout.row() col = row.column() - col.itemR(ks, "name") - col.itemR(ks, "absolute") + col.prop(ks, "name") + col.prop(ks, "absolute") if wide_ui: col = row.column() - col.itemL(text="Keyframing Settings:") - col.itemR(ks, "insertkey_needed", text="Needed") - col.itemR(ks, "insertkey_visual", text="Visual") + col.label(text="Keyframing Settings:") + col.prop(ks, "insertkey_needed", text="Needed") + col.prop(ks, "insertkey_visual", text="Visual") class SCENE_PT_keying_set_paths(SceneButtonsPanel): bl_label = "Active Keying Set" def poll(self, context): - return (context.scene != None) and (context.scene.active_keying_set != None) + return (context.scene.active_keying_set is not None) def draw(self, context): layout = self.layout @@ -117,7 +117,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel): wide_ui = context.region.width > narrowui row = layout.row() - row.itemL(text="Paths:") + row.label(text="Paths:") row = layout.row() @@ -125,13 +125,13 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel): col.template_list(ks, "paths", ks, "active_path_index", rows=2) col = row.column(align=True) - col.itemO("anim.keying_set_path_add", icon='ICON_ZOOMIN', text="") - col.itemO("anim.keying_set_path_remove", icon='ICON_ZOOMOUT', text="") + col.operator("anim.keying_set_path_add", icon='ICON_ZOOMIN', text="") + col.operator("anim.keying_set_path_remove", icon='ICON_ZOOMOUT', text="") ksp = ks.active_path if ksp: col = layout.column() - col.itemL(text="Target:") + col.label(text="Target:") col.template_any_ID(ksp, "id", "id_type") col.template_path_builder(ksp, "rna_path", ksp.id) @@ -139,17 +139,17 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel): row = layout.row() col = row.column() - col.itemL(text="Array Target:") - col.itemR(ksp, "entire_array") - if ksp.entire_array == False: - col.itemR(ksp, "array_index") + col.label(text="Array Target:") + col.prop(ksp, "entire_array") + if ksp.entire_array is False: + col.prop(ksp, "array_index") if wide_ui: col = row.column() - col.itemL(text="F-Curve Grouping:") - col.itemR(ksp, "grouping") + col.label(text="F-Curve Grouping:") + col.prop(ksp, "grouping") if ksp.grouping == 'NAMED': - col.itemR(ksp, "group") + col.prop(ksp, "group") class SCENE_PT_physics(SceneButtonsPanel): @@ -157,7 +157,7 @@ class SCENE_PT_physics(SceneButtonsPanel): COMPAT_ENGINES = set(['BLENDER_RENDER']) def draw_header(self, context): - self.layout.itemR(context.scene, "use_gravity", text="") + self.layout.prop(context.scene, "use_gravity", text="") def draw(self, context): layout = self.layout @@ -168,9 +168,9 @@ class SCENE_PT_physics(SceneButtonsPanel): layout.active = scene.use_gravity if wide_ui: - layout.itemR(scene, "gravity", text="") + layout.prop(scene, "gravity", text="") else: - layout.column().itemR(scene, "gravity", text="") + layout.column().prop(scene, "gravity", text="") bpy.types.register(SCENE_PT_scene) bpy.types.register(SCENE_PT_unit) diff --git a/release/scripts/ui/properties_texture.py b/release/scripts/ui/properties_texture.py index 54a5c79ced5..1844599e957 100644 --- a/release/scripts/ui/properties_texture.py +++ b/release/scripts/ui/properties_texture.py @@ -99,8 +99,8 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel): row.template_list(idblock, "textures", idblock, "active_texture_index", rows=2) col = row.column(align=True) - col.item_enumO("texture.slot_move", "type", 'UP', text="", icon='ICON_TRIA_UP') - col.item_enumO("texture.slot_move", "type", 'DOWN', text="", icon='ICON_TRIA_DOWN') + col.operator("texture.slot_move", text="", icon='ICON_TRIA_UP').type = 'UP' + col.operator("texture.slot_move", text="", icon='ICON_TRIA_DOWN').type = 'DOWN' if wide_ui: @@ -118,10 +118,10 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel): context.weight_paint_object or context.texture_paint_object): - split.itemR(space, "brush_texture", text="Brush", toggle=True) + split.prop(space, "brush_texture", text="Brush", toggle=True) if tex: - layout.itemR(tex, "use_nodes") + layout.prop(tex, "use_nodes") split = layout.split(percentage=0.2) @@ -129,15 +129,15 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel): slot = context.texture_slot if slot: - split.itemL(text="Output:") - split.itemR(slot, "output_node", text="") + split.label(text="Output:") + split.prop(slot, "output_node", text="") else: if wide_ui: - split.itemL(text="Type:") - split.itemR(tex, "type", text="") + split.label(text="Type:") + split.prop(tex, "type", text="") else: - layout.itemR(tex, "type", text="") + layout.prop(tex, "type", text="") class TEXTURE_PT_colors(TextureButtonsPanel): @@ -150,24 +150,24 @@ class TEXTURE_PT_colors(TextureButtonsPanel): tex = context.texture wide_ui = context.region.width > narrowui - layout.itemR(tex, "use_color_ramp", text="Ramp") + layout.prop(tex, "use_color_ramp", text="Ramp") if tex.use_color_ramp: layout.template_color_ramp(tex, "color_ramp", expand=True) split = layout.split() col = split.column() - col.itemL(text="RGB Multiply:") + col.label(text="RGB Multiply:") sub = col.column(align=True) - sub.itemR(tex, "factor_red", text="R") - sub.itemR(tex, "factor_green", text="G") - sub.itemR(tex, "factor_blue", text="B") + sub.prop(tex, "factor_red", text="R") + sub.prop(tex, "factor_green", text="G") + sub.prop(tex, "factor_blue", text="B") if wide_ui: col = split.column() - col.itemL(text="Adjust:") - col.itemR(tex, "brightness") - col.itemR(tex, "contrast") + col.label(text="Adjust:") + col.prop(tex, "brightness") + col.prop(tex, "contrast") # Texture Slot Panels # @@ -194,74 +194,74 @@ class TEXTURE_PT_mapping(TextureSlotPanel): if type(idblock) != bpy.types.Brush: split = layout.split(percentage=0.3) col = split.column() - col.itemL(text="Coordinates:") + col.label(text="Coordinates:") col = split.column() - col.itemR(tex, "texture_coordinates", text="") + col.prop(tex, "texture_coordinates", text="") if tex.texture_coordinates == 'ORCO': """ ob = context.object if ob and ob.type == 'MESH': split = layout.split(percentage=0.3) - split.itemL(text="Mesh:") - split.itemR(ob.data, "texco_mesh", text="") + split.label(text="Mesh:") + split.prop(ob.data, "texco_mesh", text="") """ elif tex.texture_coordinates == 'UV': split = layout.split(percentage=0.3) - split.itemL(text="Layer:") + split.label(text="Layer:") ob = context.object if ob and ob.type == 'MESH': - split.item_pointerR(tex, "uv_layer", ob.data, "uv_textures", text="") + split.prop_object(tex, "uv_layer", ob.data, "uv_textures", text="") else: - split.itemR(tex, "uv_layer", text="") + split.prop(tex, "uv_layer", text="") elif tex.texture_coordinates == 'OBJECT': split = layout.split(percentage=0.3) - split.itemL(text="Object:") - split.itemR(tex, "object", text="") + split.label(text="Object:") + split.prop(tex, "object", text="") if type(idblock) == bpy.types.Brush: - layout.itemR(tex, "map_mode", expand=True) + layout.prop(tex, "map_mode", expand=True) row = layout.row() row.active = tex.map_mode in ('FIXED', 'TILED') - row.itemR(tex, "angle") + row.prop(tex, "angle") row = layout.row() row.active = tex.map_mode in ('TILED', '3D') - row.column().itemR(tex, "size") + row.column().prop(tex, "size") else: if type(idblock) == bpy.types.Material: split = layout.split(percentage=0.3) - split.itemL(text="Projection:") - split.itemR(tex, "mapping", text="") + split.label(text="Projection:") + split.prop(tex, "mapping", text="") split = layout.split() col = split.column() if tex.texture_coordinates in ('ORCO', 'UV'): - col.itemR(tex, "from_dupli") + col.prop(tex, "from_dupli") elif tex.texture_coordinates == 'OBJECT': - col.itemR(tex, "from_original") + col.prop(tex, "from_original") elif wide_ui: - col.itemL() + col.label() if wide_ui: col = split.column() row = col.row() - row.itemR(tex, "x_mapping", text="") - row.itemR(tex, "y_mapping", text="") - row.itemR(tex, "z_mapping", text="") + row.prop(tex, "x_mapping", text="") + row.prop(tex, "y_mapping", text="") + row.prop(tex, "z_mapping", text="") # any non brush split = layout.split() col = split.column() - col.itemR(tex, "offset") + col.prop(tex, "offset") if wide_ui: col = split.column() - col.itemR(tex, "size") + col.prop(tex, "size") class TEXTURE_PT_influence(TextureSlotPanel): @@ -282,43 +282,43 @@ class TEXTURE_PT_influence(TextureSlotPanel): def factor_but(layout, active, toggle, factor, name): row = layout.row(align=True) - row.itemR(tex, toggle, text="") + row.prop(tex, toggle, text="") sub = row.row() sub.active = active - sub.itemR(tex, factor, text=name, slider=True) + sub.prop(tex, factor, text=name, slider=True) if type(idblock) == bpy.types.Material: if idblock.type in ('SURFACE', 'HALO', 'WIRE'): split = layout.split() col = split.column() - col.itemL(text="Diffuse:") + col.label(text="Diffuse:") factor_but(col, tex.map_diffuse, "map_diffuse", "diffuse_factor", "Intensity") factor_but(col, tex.map_colordiff, "map_colordiff", "colordiff_factor", "Color") factor_but(col, tex.map_alpha, "map_alpha", "alpha_factor", "Alpha") factor_but(col, tex.map_translucency, "map_translucency", "translucency_factor", "Translucency") - col.itemL(text="Specular:") + col.label(text="Specular:") factor_but(col, tex.map_specular, "map_specular", "specular_factor", "Intensity") factor_but(col, tex.map_colorspec, "map_colorspec", "colorspec_factor", "Color") factor_but(col, tex.map_hardness, "map_hardness", "hardness_factor", "Hardness") if wide_ui: col = split.column() - col.itemL(text="Shading:") + col.label(text="Shading:") factor_but(col, tex.map_ambient, "map_ambient", "ambient_factor", "Ambient") factor_but(col, tex.map_emit, "map_emit", "emit_factor", "Emit") factor_but(col, tex.map_mirror, "map_mirror", "mirror_factor", "Mirror") factor_but(col, tex.map_raymir, "map_raymir", "raymir_factor", "Ray Mirror") - col.itemL(text="Geometry:") + col.label(text="Geometry:") factor_but(col, tex.map_normal, "map_normal", "normal_factor", "Normal") factor_but(col, tex.map_warp, "map_warp", "warp_factor", "Warp") factor_but(col, tex.map_displacement, "map_displacement", "displacement_factor", "Displace") #sub = col.column() #sub.active = tex.map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror - #sub.itemR(tex, "default_value", text="Amount", slider=True) + #sub.prop(tex, "default_value", text="Amount", slider=True) elif idblock.type == 'VOLUME': split = layout.split() @@ -330,7 +330,7 @@ class TEXTURE_PT_influence(TextureSlotPanel): if wide_ui: col = split.column() - col.itemL(text=" ") + col.label(text=" ") factor_but(col, tex.map_alpha, "map_coloremission", "coloremission_factor", "Emission Color") factor_but(col, tex.map_colortransmission, "map_colortransmission", "colortransmission_factor", "Transmission Color") factor_but(col, tex.map_colorreflection, "map_colorreflection", "colorreflection_factor", "Reflection Color") @@ -357,24 +357,24 @@ class TEXTURE_PT_influence(TextureSlotPanel): factor_but(col, tex.map_zenith_up, "map_zenith_up", "zenith_up_factor", "Zenith Up") factor_but(col, tex.map_zenith_down, "map_zenith_down", "zenith_down_factor", "Zenith Down") - layout.itemS() + layout.separator() split = layout.split() col = split.column() - col.itemR(tex, "blend_type", text="Blend") - col.itemR(tex, "rgb_to_intensity") + col.prop(tex, "blend_type", text="Blend") + col.prop(tex, "rgb_to_intensity") sub = col.column() sub.active = tex.rgb_to_intensity - sub.itemR(tex, "color", text="") + sub.prop(tex, "color", text="") if wide_ui: col = split.column() - col.itemR(tex, "negate", text="Negative") - col.itemR(tex, "stencil") + col.prop(tex, "negate", text="Negative") + col.prop(tex, "stencil") if type(idblock) in (bpy.types.Material, bpy.types.World): - col.itemR(tex, "default_value", text="DVar", slider=True) + col.prop(tex, "default_value", text="DVar", slider=True) # Texture Type Panels # @@ -396,23 +396,23 @@ class TEXTURE_PT_clouds(TextureTypePanel): tex = context.texture wide_ui = context.region.width > narrowui - layout.itemR(tex, "stype", expand=True) - layout.itemL(text="Noise:") - layout.itemR(tex, "noise_type", text="Type", expand=True) + layout.prop(tex, "stype", expand=True) + layout.label(text="Noise:") + layout.prop(tex, "noise_type", text="Type", expand=True) if wide_ui: - layout.itemR(tex, "noise_basis", text="Basis") + layout.prop(tex, "noise_basis", text="Basis") else: - layout.itemR(tex, "noise_basis", text="") + layout.prop(tex, "noise_basis", text="") split = layout.split() col = split.column() - col.itemR(tex, "noise_size", text="Size") - col.itemR(tex, "noise_depth", text="Depth") + col.prop(tex, "noise_size", text="Size") + col.prop(tex, "noise_depth", text="Depth") if wide_ui: col = split.column() - col.itemR(tex, "nabla", text="Nabla") + col.prop(tex, "nabla", text="Nabla") class TEXTURE_PT_wood(TextureTypePanel): @@ -425,30 +425,30 @@ class TEXTURE_PT_wood(TextureTypePanel): tex = context.texture wide_ui = context.region.width > narrowui - layout.itemR(tex, "noisebasis2", expand=True) + layout.prop(tex, "noisebasis2", expand=True) if wide_ui: - layout.itemR(tex, "stype", expand=True) + layout.prop(tex, "stype", expand=True) else: - layout.itemR(tex, "stype", text="") + layout.prop(tex, "stype", text="") col = layout.column() col.active = tex.stype in ('RINGNOISE', 'BANDNOISE') - col.itemL(text="Noise:") - col.row().itemR(tex, "noise_type", text="Type", expand=True) + col.label(text="Noise:") + col.row().prop(tex, "noise_type", text="Type", expand=True) if wide_ui: - layout.itemR(tex, "noise_basis", text="Basis") + layout.prop(tex, "noise_basis", text="Basis") else: - layout.itemR(tex, "noise_basis", text="") + layout.prop(tex, "noise_basis", text="") split = layout.split() split.active = tex.stype in ('RINGNOISE', 'BANDNOISE') col = split.column() - col.itemR(tex, "noise_size", text="Size") - col.itemR(tex, "turbulence") + col.prop(tex, "noise_size", text="Size") + col.prop(tex, "turbulence") col = split.column() - col.itemR(tex, "nabla") + col.prop(tex, "nabla") class TEXTURE_PT_marble(TextureTypePanel): @@ -461,25 +461,25 @@ class TEXTURE_PT_marble(TextureTypePanel): tex = context.texture wide_ui = context.region.width > narrowui - layout.itemR(tex, "stype", expand=True) - layout.itemR(tex, "noisebasis2", expand=True) - layout.itemL(text="Noise:") - layout.itemR(tex, "noise_type", text="Type", expand=True) + layout.prop(tex, "stype", expand=True) + layout.prop(tex, "noisebasis2", expand=True) + layout.label(text="Noise:") + layout.prop(tex, "noise_type", text="Type", expand=True) if wide_ui: - layout.itemR(tex, "noise_basis", text="Basis") + layout.prop(tex, "noise_basis", text="Basis") else: - layout.itemR(tex, "noise_basis", text="") + layout.prop(tex, "noise_basis", text="") split = layout.split() col = split.column() - col.itemR(tex, "noise_size", text="Size") - col.itemR(tex, "noise_depth", text="Depth") + col.prop(tex, "noise_size", text="Size") + col.prop(tex, "noise_depth", text="Depth") if wide_ui: col = split.column() - col.itemR(tex, "turbulence") - col.itemR(tex, "nabla") + col.prop(tex, "turbulence") + col.prop(tex, "nabla") class TEXTURE_PT_magic(TextureTypePanel): @@ -495,11 +495,11 @@ class TEXTURE_PT_magic(TextureTypePanel): split = layout.split() col = split.column() - col.itemR(tex, "noise_depth", text="Depth") + col.prop(tex, "noise_depth", text="Depth") if wide_ui: col = split.column() - col.itemR(tex, "turbulence") + col.prop(tex, "turbulence") class TEXTURE_PT_blend(TextureTypePanel): @@ -513,14 +513,14 @@ class TEXTURE_PT_blend(TextureTypePanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(tex, "progression") + layout.prop(tex, "progression") else: - layout.itemR(tex, "progression", text="") + layout.prop(tex, "progression", text="") sub = layout.row() sub.active = (tex.progression in ('LINEAR', 'QUADRATIC', 'EASING', 'RADIAL')) - sub.itemR(tex, "flip_axis", expand=True) + sub.prop(tex, "flip_axis", expand=True) class TEXTURE_PT_stucci(TextureTypePanel): @@ -533,22 +533,22 @@ class TEXTURE_PT_stucci(TextureTypePanel): tex = context.texture wide_ui = context.region.width > narrowui - layout.itemR(tex, "stype", expand=True) - layout.itemL(text="Noise:") - layout.itemR(tex, "noise_type", text="Type", expand=True) + layout.prop(tex, "stype", expand=True) + layout.label(text="Noise:") + layout.prop(tex, "noise_type", text="Type", expand=True) if wide_ui: - layout.itemR(tex, "noise_basis", text="Basis") + layout.prop(tex, "noise_basis", text="Basis") else: - layout.itemR(tex, "noise_basis", text="") + layout.prop(tex, "noise_basis", text="") split = layout.split() col = split.column() - col.itemR(tex, "noise_size", text="Size") + col.prop(tex, "noise_size", text="Size") if wide_ui: col = split.column() - col.itemR(tex, "turbulence") + col.prop(tex, "turbulence") class TEXTURE_PT_image(TextureTypePanel): @@ -578,38 +578,38 @@ class TEXTURE_PT_image_sampling(TextureTypePanel): split = layout.split() col = split.column() - col.itemL(text="Alpha:") - col.itemR(tex, "use_alpha", text="Use") - col.itemR(tex, "calculate_alpha", text="Calculate") - col.itemR(tex, "invert_alpha", text="Invert") - col.itemS() - col.itemR(tex, "flip_axis", text="Flip X/Y Axis") + col.label(text="Alpha:") + col.prop(tex, "use_alpha", text="Use") + col.prop(tex, "calculate_alpha", text="Calculate") + col.prop(tex, "invert_alpha", text="Invert") + col.separator() + col.prop(tex, "flip_axis", text="Flip X/Y Axis") if wide_ui: col = split.column() else: - col.itemS() - col.itemR(tex, "normal_map") + col.separator() + col.prop(tex, "normal_map") row = col.row() row.active = tex.normal_map - row.itemR(tex, "normal_space", text="") + row.prop(tex, "normal_space", text="") - col.itemL(text="Filter:") - col.itemR(tex, "filter", text="") - col.itemR(tex, "filter_size") - col.itemR(tex, "filter_size_minimum") - col.itemR(tex, "mipmap") + col.label(text="Filter:") + col.prop(tex, "filter", text="") + col.prop(tex, "filter_size") + col.prop(tex, "filter_size_minimum") + col.prop(tex, "mipmap") row = col.row() row.active = tex.mipmap - row.itemR(tex, "mipmap_gauss") + row.prop(tex, "mipmap_gauss") - col.itemR(tex, "interpolation") + col.prop(tex, "interpolation") if tex.mipmap and tex.filter != 'DEFAULT': if tex.filter == 'FELINE': - col.itemR(tex, "filter_probes", text="Probes") + col.prop(tex, "filter_probes", text="Probes") else: - col.itemR(tex, "filter_eccentricity", text="Eccentricity") + col.prop(tex, "filter_eccentricity", text="Eccentricity") class TEXTURE_PT_image_mapping(TextureTypePanel): @@ -624,50 +624,50 @@ class TEXTURE_PT_image_mapping(TextureTypePanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(tex, "extension") + layout.prop(tex, "extension") else: - layout.itemR(tex, "extension", text="") + layout.prop(tex, "extension", text="") split = layout.split() if tex.extension == 'REPEAT': col = split.column(align=True) - col.itemL(text="Repeat:") - col.itemR(tex, "repeat_x", text="X") - col.itemR(tex, "repeat_y", text="Y") + col.label(text="Repeat:") + col.prop(tex, "repeat_x", text="X") + col.prop(tex, "repeat_y", text="Y") if wide_ui: col = split.column(align=True) - col.itemL(text="Mirror:") - col.itemR(tex, "mirror_x", text="X") - col.itemR(tex, "mirror_y", text="Y") - layout.itemS() + col.label(text="Mirror:") + col.prop(tex, "mirror_x", text="X") + col.prop(tex, "mirror_y", text="Y") + layout.separator() elif tex.extension == 'CHECKER': col = split.column(align=True) row = col.row() - row.itemR(tex, "checker_even", text="Even") - row.itemR(tex, "checker_odd", text="Odd") + row.prop(tex, "checker_even", text="Even") + row.prop(tex, "checker_odd", text="Odd") if wide_ui: col = split.column() - col.itemR(tex, "checker_distance", text="Distance") + col.prop(tex, "checker_distance", text="Distance") - layout.itemS() + layout.separator() split = layout.split() col = split.column(align=True) - #col.itemR(tex, "crop_rectangle") - col.itemL(text="Crop Minimum:") - col.itemR(tex, "crop_min_x", text="X") - col.itemR(tex, "crop_min_y", text="Y") + #col.prop(tex, "crop_rectangle") + col.label(text="Crop Minimum:") + col.prop(tex, "crop_min_x", text="X") + col.prop(tex, "crop_min_y", text="Y") if wide_ui: col = split.column(align=True) - col.itemL(text="Crop Maximum:") - col.itemR(tex, "crop_max_x", text="X") - col.itemR(tex, "crop_max_y", text="Y") + col.label(text="Crop Maximum:") + col.prop(tex, "crop_max_x", text="X") + col.prop(tex, "crop_max_y", text="Y") class TEXTURE_PT_plugin(TextureTypePanel): @@ -679,7 +679,7 @@ class TEXTURE_PT_plugin(TextureTypePanel): # tex = context.texture - layout.itemL(text="Nothing yet") + layout.label(text="Nothing yet") class TEXTURE_PT_envmap(TextureTypePanel): @@ -691,7 +691,7 @@ class TEXTURE_PT_envmap(TextureTypePanel): # tex = context.texture - layout.itemL(text="Nothing yet") + layout.label(text="Nothing yet") class TEXTURE_PT_musgrave(TextureTypePanel): @@ -705,40 +705,40 @@ class TEXTURE_PT_musgrave(TextureTypePanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(tex, "musgrave_type") + layout.prop(tex, "musgrave_type") else: - layout.itemR(tex, "musgrave_type", text="") + layout.prop(tex, "musgrave_type", text="") split = layout.split() col = split.column() - col.itemR(tex, "highest_dimension", text="Dimension") - col.itemR(tex, "lacunarity") - col.itemR(tex, "octaves") + col.prop(tex, "highest_dimension", text="Dimension") + col.prop(tex, "lacunarity") + col.prop(tex, "octaves") if wide_ui: col = split.column() if (tex.musgrave_type in ('HETERO_TERRAIN', 'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL')): - col.itemR(tex, "offset") + col.prop(tex, "offset") if (tex.musgrave_type in ('RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL')): - col.itemR(tex, "gain") - col.itemR(tex, "noise_intensity", text="Intensity") + col.prop(tex, "gain") + col.prop(tex, "noise_intensity", text="Intensity") - layout.itemL(text="Noise:") + layout.label(text="Noise:") if wide_ui: - layout.itemR(tex, "noise_basis", text="Basis") + layout.prop(tex, "noise_basis", text="Basis") else: - layout.itemR(tex, "noise_basis", text="") + layout.prop(tex, "noise_basis", text="") split = layout.split() col = split.column() - col.itemR(tex, "noise_size", text="Size") + col.prop(tex, "noise_size", text="Size") if wide_ui: col = split.column() - col.itemR(tex, "nabla") + col.prop(tex, "nabla") class TEXTURE_PT_voronoi(TextureTypePanel): @@ -754,34 +754,34 @@ class TEXTURE_PT_voronoi(TextureTypePanel): split = layout.split() col = split.column() - col.itemL(text="Distance Metric:") - col.itemR(tex, "distance_metric", text="") + col.label(text="Distance Metric:") + col.prop(tex, "distance_metric", text="") sub = col.column() sub.active = tex.distance_metric == 'MINKOVSKY' - sub.itemR(tex, "minkovsky_exponent", text="Exponent") - col.itemL(text="Coloring:") - col.itemR(tex, "coloring", text="") - col.itemR(tex, "noise_intensity", text="Intensity") + sub.prop(tex, "minkovsky_exponent", text="Exponent") + col.label(text="Coloring:") + col.prop(tex, "coloring", text="") + col.prop(tex, "noise_intensity", text="Intensity") if wide_ui: col = split.column() sub = col.column(align=True) - sub.itemL(text="Feature Weights:") - sub.itemR(tex, "weight_1", text="1", slider=True) - sub.itemR(tex, "weight_2", text="2", slider=True) - sub.itemR(tex, "weight_3", text="3", slider=True) - sub.itemR(tex, "weight_4", text="4", slider=True) + sub.label(text="Feature Weights:") + sub.prop(tex, "weight_1", text="1", slider=True) + sub.prop(tex, "weight_2", text="2", slider=True) + sub.prop(tex, "weight_3", text="3", slider=True) + sub.prop(tex, "weight_4", text="4", slider=True) - layout.itemL(text="Noise:") + layout.label(text="Noise:") split = layout.split() col = split.column() - col.itemR(tex, "noise_size", text="Size") + col.prop(tex, "noise_size", text="Size") if wide_ui: col = split.column() - col.itemR(tex, "nabla") + col.prop(tex, "nabla") class TEXTURE_PT_distortednoise(TextureTypePanel): @@ -795,21 +795,21 @@ class TEXTURE_PT_distortednoise(TextureTypePanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(tex, "noise_distortion") - layout.itemR(tex, "noise_basis", text="Basis") + layout.prop(tex, "noise_distortion") + layout.prop(tex, "noise_basis", text="Basis") else: - layout.itemR(tex, "noise_distortion", text="") - layout.itemR(tex, "noise_basis", text="") + layout.prop(tex, "noise_distortion", text="") + layout.prop(tex, "noise_basis", text="") split = layout.split() col = split.column() - col.itemR(tex, "distortion", text="Distortion") - col.itemR(tex, "noise_size", text="Size") + col.prop(tex, "distortion", text="Distortion") + col.prop(tex, "noise_size", text="Size") if wide_ui: col = split.column() - col.itemR(tex, "nabla") + col.prop(tex, "nabla") class TEXTURE_PT_voxeldata(TextureButtonsPanel): @@ -825,22 +825,22 @@ class TEXTURE_PT_voxeldata(TextureButtonsPanel): tex = context.texture vd = tex.voxeldata - layout.itemR(vd, "file_format") + layout.prop(vd, "file_format") if vd.file_format in ['BLENDER_VOXEL', 'RAW_8BIT']: - layout.itemR(vd, "source_path") + layout.prop(vd, "source_path") if vd.file_format == 'RAW_8BIT': - layout.itemR(vd, "resolution") + layout.prop(vd, "resolution") elif vd.file_format == 'SMOKE': - layout.itemR(vd, "domain_object") + layout.prop(vd, "domain_object") - layout.itemR(vd, "still") + layout.prop(vd, "still") row = layout.row() row.active = vd.still - row.itemR(vd, "still_frame_number") + row.prop(vd, "still_frame_number") - layout.itemR(vd, "interpolation") - layout.itemR(vd, "extension") - layout.itemR(vd, "intensity") + layout.prop(vd, "interpolation") + layout.prop(vd, "extension") + layout.prop(vd, "intensity") class TEXTURE_PT_pointdensity(TextureButtonsPanel): @@ -858,47 +858,47 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel): wide_ui = context.region.width > narrowui if wide_ui: - layout.itemR(pd, "point_source", expand=True) + layout.prop(pd, "point_source", expand=True) else: - layout.itemR(pd, "point_source", text="") + layout.prop(pd, "point_source", text="") split = layout.split() col = split.column() if pd.point_source == 'PARTICLE_SYSTEM': - col.itemL(text="Object:") - col.itemR(pd, "object", text="") + col.label(text="Object:") + col.prop(pd, "object", text="") sub = col.column() - sub.enabled = pd.object + sub.enabled = bool(pd.object) if pd.object: - sub.itemL(text="System:") - sub.item_pointerR(pd, "particle_system", pd.object, "particle_systems", text="") - sub.itemL(text="Cache:") - sub.itemR(pd, "particle_cache", text="") + sub.label(text="System:") + sub.prop_object(pd, "particle_system", pd.object, "particle_systems", text="") + sub.label(text="Cache:") + sub.prop(pd, "particle_cache", text="") else: - col.itemL(text="Object:") - col.itemR(pd, "object", text="") - col.itemL(text="Cache:") - col.itemR(pd, "vertices_cache", text="") + col.label(text="Object:") + col.prop(pd, "object", text="") + col.label(text="Cache:") + col.prop(pd, "vertices_cache", text="") - col.itemS() + col.separator() - col.itemL(text="Color Source:") - col.itemR(pd, "color_source", text="") + col.label(text="Color Source:") + col.prop(pd, "color_source", text="") if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_VELOCITY'): - col.itemR(pd, "speed_scale") + col.prop(pd, "speed_scale") if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_AGE'): layout.template_color_ramp(pd, "color_ramp", expand=True) if wide_ui: col = split.column() - col.itemL() - col.itemR(pd, "radius") - col.itemL(text="Falloff:") - col.itemR(pd, "falloff", text="") + col.label() + col.prop(pd, "radius") + col.label(text="Falloff:") + col.prop(pd, "falloff", text="") if pd.falloff == 'SOFT': - col.itemR(pd, "falloff_softness") + col.prop(pd, "falloff_softness") class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel): @@ -914,7 +914,7 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel): tex = context.texture pd = tex.pointdensity - layout.itemR(pd, "turbulence", text="") + layout.prop(pd, "turbulence", text="") def draw(self, context): layout = self.layout @@ -927,17 +927,17 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel): split = layout.split() col = split.column() - col.itemL(text="Influence:") - col.itemR(pd, "turbulence_influence", text="") - col.itemL(text="Noise Basis:") - col.itemR(pd, "noise_basis", text="") + col.label(text="Influence:") + col.prop(pd, "turbulence_influence", text="") + col.label(text="Noise Basis:") + col.prop(pd, "noise_basis", text="") if wide_ui: col = split.column() - col.itemL() - col.itemR(pd, "turbulence_size") - col.itemR(pd, "turbulence_depth") - col.itemR(pd, "turbulence_strength") + col.label() + col.prop(pd, "turbulence_size") + col.prop(pd, "turbulence_depth") + col.prop(pd, "turbulence_strength") bpy.types.register(TEXTURE_PT_context_texture) bpy.types.register(TEXTURE_PT_preview) diff --git a/release/scripts/ui/properties_world.py b/release/scripts/ui/properties_world.py index 5a9f8cc18b3..4f662df8cc8 100644 --- a/release/scripts/ui/properties_world.py +++ b/release/scripts/ui/properties_world.py @@ -80,21 +80,21 @@ class WORLD_PT_world(WorldButtonsPanel): if wide_ui: row = layout.row() - row.itemR(world, "paper_sky") - row.itemR(world, "blend_sky") - row.itemR(world, "real_sky") + row.prop(world, "paper_sky") + row.prop(world, "blend_sky") + row.prop(world, "real_sky") else: col = layout.column() - col.itemR(world, "paper_sky") - col.itemR(world, "blend_sky") - col.itemR(world, "real_sky") + col.prop(world, "paper_sky") + col.prop(world, "blend_sky") + col.prop(world, "real_sky") row = layout.row() - row.column().itemR(world, "horizon_color") + row.column().prop(world, "horizon_color") col = row.column() - col.itemR(world, "zenith_color") + col.prop(world, "zenith_color") col.active = world.blend_sky - row.column().itemR(world, "ambient_color") + row.column().prop(world, "ambient_color") class WORLD_PT_mist(WorldButtonsPanel): @@ -104,7 +104,7 @@ class WORLD_PT_mist(WorldButtonsPanel): def draw_header(self, context): world = context.world - self.layout.itemR(world.mist, "enabled", text="") + self.layout.prop(world.mist, "enabled", text="") def draw(self, context): layout = self.layout @@ -116,15 +116,15 @@ class WORLD_PT_mist(WorldButtonsPanel): split = layout.split() col = split.column() - col.itemR(world.mist, "intensity", slider=True) - col.itemR(world.mist, "start") + col.prop(world.mist, "intensity", slider=True) + col.prop(world.mist, "start") if wide_ui: col = split.column() - col.itemR(world.mist, "depth") - col.itemR(world.mist, "height") + col.prop(world.mist, "depth") + col.prop(world.mist, "height") - layout.itemR(world.mist, "falloff") + layout.prop(world.mist, "falloff") class WORLD_PT_stars(WorldButtonsPanel): @@ -134,7 +134,7 @@ class WORLD_PT_stars(WorldButtonsPanel): def draw_header(self, context): world = context.world - self.layout.itemR(world.stars, "enabled", text="") + self.layout.prop(world.stars, "enabled", text="") def draw(self, context): layout = self.layout @@ -146,13 +146,13 @@ class WORLD_PT_stars(WorldButtonsPanel): split = layout.split() col = split.column() - col.itemR(world.stars, "size") - col.itemR(world.stars, "color_randomization", text="Colors") + col.prop(world.stars, "size") + col.prop(world.stars, "color_randomization", text="Colors") if wide_ui: col = split.column() - col.itemR(world.stars, "min_distance", text="Min. Dist") - col.itemR(world.stars, "average_separation", text="Separation") + col.prop(world.stars, "min_distance", text="Min. Dist") + col.prop(world.stars, "average_separation", text="Separation") class WORLD_PT_ambient_occlusion(WorldButtonsPanel): @@ -162,7 +162,7 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel): def draw_header(self, context): world = context.world - self.layout.itemR(world.ambient_occlusion, "enabled", text="") + self.layout.prop(world.ambient_occlusion, "enabled", text="") def draw(self, context): layout = self.layout @@ -171,58 +171,58 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel): layout.active = ao.enabled - layout.itemR(ao, "gather_method", expand=True) + layout.prop(ao, "gather_method", expand=True) split = layout.split() col = split.column() - col.itemL(text="Attenuation:") + col.label(text="Attenuation:") if ao.gather_method == 'RAYTRACE': - col.itemR(ao, "distance") - col.itemR(ao, "falloff") + col.prop(ao, "distance") + col.prop(ao, "falloff") sub = col.row() sub.active = ao.falloff - sub.itemR(ao, "falloff_strength", text="Strength") + sub.prop(ao, "falloff_strength", text="Strength") if ao.gather_method == 'RAYTRACE': if wide_ui: col = split.column() - col.itemL(text="Sampling:") - col.itemR(ao, "sample_method", text="") + col.label(text="Sampling:") + col.prop(ao, "sample_method", text="") sub = col.column() - sub.itemR(ao, "samples") + sub.prop(ao, "samples") if ao.sample_method == 'ADAPTIVE_QMC': - sub.itemR(ao, "threshold") - sub.itemR(ao, "adapt_to_speed", slider=True) + sub.prop(ao, "threshold") + sub.prop(ao, "adapt_to_speed", slider=True) elif ao.sample_method == 'CONSTANT_JITTERED': - sub.itemR(ao, "bias") + sub.prop(ao, "bias") if ao.gather_method == 'APPROXIMATE': if wide_ui: col = split.column() - col.itemL(text="Sampling:") - col.itemR(ao, "passes") - col.itemR(ao, "error_tolerance", text="Error") - col.itemR(ao, "pixel_cache") - col.itemR(ao, "correction") + col.label(text="Sampling:") + col.prop(ao, "passes") + col.prop(ao, "error_tolerance", text="Error") + col.prop(ao, "pixel_cache") + col.prop(ao, "correction") col = layout.column() - col.itemL(text="Influence:") + col.label(text="Influence:") - col.row().itemR(ao, "blend_mode", expand=True) + col.row().prop(ao, "blend_mode", expand=True) split = layout.split() col = split.column() - col.itemR(ao, "energy") + col.prop(ao, "energy") if wide_ui: col = split.column() - col.itemR(ao, "color") + col.prop(ao, "color") bpy.types.register(WORLD_PT_context_world) bpy.types.register(WORLD_PT_preview) diff --git a/release/scripts/ui/space_buttons.py b/release/scripts/ui/space_buttons.py index d1b7f99cf5d..c0e66013501 100644 --- a/release/scripts/ui/space_buttons.py +++ b/release/scripts/ui/space_buttons.py @@ -34,11 +34,11 @@ class Buttons_HT_header(bpy.types.Header): if context.area.show_menus: sub = row.row(align=True) - sub.itemM("Buttons_MT_view", text="View") + sub.menu("Buttons_MT_view", text="View") row = layout.row() - row.itemR(so, "buttons_context", expand=True, text="") - row.itemR(scene, "current_frame") + row.prop(so, "buttons_context", expand=True, text="") + row.prop(scene, "current_frame") class Buttons_MT_view(bpy.types.Menu): @@ -49,7 +49,7 @@ class Buttons_MT_view(bpy.types.Menu): so = context.space_data col = layout.column() - col.itemR(so, "panel_alignment", expand=True) + col.prop(so, "panel_alignment", expand=True) bpy.types.register(Buttons_HT_header) bpy.types.register(Buttons_MT_view) diff --git a/release/scripts/ui/space_console.py b/release/scripts/ui/space_console.py index 9cd95c0c262..63e8055b148 100644 --- a/release/scripts/ui/space_console.py +++ b/release/scripts/ui/space_console.py @@ -36,27 +36,27 @@ class CONSOLE_HT_header(bpy.types.Header): sub = row.row(align=True) if sc.console_type == 'REPORT': - sub.itemM("CONSOLE_MT_report") + sub.menu("CONSOLE_MT_report") else: - sub.itemM("CONSOLE_MT_console") + sub.menu("CONSOLE_MT_console") - layout.itemS() - layout.itemR(sc, "console_type", expand=True) + layout.separator() + layout.prop(sc, "console_type", expand=True) if sc.console_type == 'REPORT': row = layout.row(align=True) - row.itemR(sc, "show_report_debug", text="Debug") - row.itemR(sc, "show_report_info", text="Info") - row.itemR(sc, "show_report_operator", text="Operators") - row.itemR(sc, "show_report_warn", text="Warnings") - row.itemR(sc, "show_report_error", text="Errors") + row.prop(sc, "show_report_debug", text="Debug") + row.prop(sc, "show_report_info", text="Info") + row.prop(sc, "show_report_operator", text="Operators") + row.prop(sc, "show_report_warn", text="Warnings") + row.prop(sc, "show_report_error", text="Errors") row = layout.row() row.enabled = sc.show_report_operator - row.itemO("console.report_replay") + row.operator("console.report_replay") else: row = layout.row(align=True) - row.itemO("console.autocomplete", text="Autocomplete") + row.operator("console.autocomplete", text="Autocomplete") class CONSOLE_MT_console(bpy.types.Menu): @@ -65,10 +65,10 @@ class CONSOLE_MT_console(bpy.types.Menu): def draw(self, context): layout = self.layout layout.column() - layout.itemO("console.clear") - layout.itemO("console.copy") - layout.itemO("console.paste") - layout.itemM("CONSOLE_MT_language") + layout.operator("console.clear") + layout.operator("console.copy") + layout.operator("console.paste") + layout.menu("CONSOLE_MT_language") class CONSOLE_MT_report(bpy.types.Menu): @@ -77,10 +77,10 @@ class CONSOLE_MT_report(bpy.types.Menu): def draw(self, context): layout = self.layout layout.column() - layout.itemO("console.select_all_toggle") - layout.itemO("console.select_border") - layout.itemO("console.report_delete") - layout.itemO("console.report_copy") + layout.operator("console.select_all_toggle") + layout.operator("console.select_border") + layout.operator("console.report_delete") + layout.operator("console.report_copy") class CONSOLE_MT_language(bpy.types.Menu): @@ -101,7 +101,7 @@ class CONSOLE_MT_language(bpy.types.Menu): languages.sort() for language in languages: - layout.item_stringO("console.language", "language", language, text=language[0].upper() + language[1:]) + layout.operator("console.language", text=language[0].upper() + language[1:]).language = language def add_scrollback(text, text_type): diff --git a/release/scripts/ui/space_filebrowser.py b/release/scripts/ui/space_filebrowser.py index 2269cdd9a97..3b8734bdb21 100644 --- a/release/scripts/ui/space_filebrowser.py +++ b/release/scripts/ui/space_filebrowser.py @@ -32,36 +32,36 @@ class FILEBROWSER_HT_header(bpy.types.Header): layout.template_header(menus=False) row = layout.row() - row.itemS() + row.separator() row = layout.row(align=True) - row.itemO("file.previous", text="", icon='ICON_BACK') - row.itemO("file.next", text="", icon='ICON_FORWARD') - row.itemO("file.parent", text="", icon='ICON_FILE_PARENT') - row.itemO("file.refresh", text="", icon='ICON_FILE_REFRESH') + row.operator("file.previous", text="", icon='ICON_BACK') + row.operator("file.next", text="", icon='ICON_FORWARD') + row.operator("file.parent", text="", icon='ICON_FILE_PARENT') + row.operator("file.refresh", text="", icon='ICON_FILE_REFRESH') row = layout.row() - row.itemS() + row.separator() row = layout.row(align=True) - row.itemO("file.directory_new", text="", icon='ICON_NEWFOLDER') + row.operator("file.directory_new", text="", icon='ICON_NEWFOLDER') - layout.itemR(params, "display", expand=True, text="") - layout.itemR(params, "sort", expand=True, text="") + layout.prop(params, "display", expand=True, text="") + layout.prop(params, "sort", expand=True, text="") - layout.itemR(params, "hide_dot", text="Hide Invisible") - layout.itemR(params, "do_filter", text="", icon='ICON_FILTER') + layout.prop(params, "hide_dot", text="Hide Invisible") + layout.prop(params, "do_filter", text="", icon='ICON_FILTER') row = layout.row(align=True) row.active = params.do_filter - row.itemR(params, "filter_folder", text="") - row.itemR(params, "filter_blender", text="") - row.itemR(params, "filter_image", text="") - row.itemR(params, "filter_movie", text="") - row.itemR(params, "filter_script", text="") - row.itemR(params, "filter_font", text="") - row.itemR(params, "filter_sound", text="") - row.itemR(params, "filter_text", text="") + row.prop(params, "filter_folder", text="") + row.prop(params, "filter_blender", text="") + row.prop(params, "filter_image", text="") + row.prop(params, "filter_movie", text="") + row.prop(params, "filter_script", text="") + row.prop(params, "filter_font", text="") + row.prop(params, "filter_sound", text="") + row.prop(params, "filter_text", text="") bpy.types.register(FILEBROWSER_HT_header) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index d00babbefb1..32c5dbb9375 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -34,34 +34,34 @@ class IMAGE_MT_view(bpy.types.Menu): show_uvedit = sima.show_uvedit - layout.itemO("image.properties", icon='ICON_MENU_PANEL') + layout.operator("image.properties", icon='ICON_MENU_PANEL') - layout.itemS() + layout.separator() - layout.itemR(sima, "update_automatically") + layout.prop(sima, "update_automatically") if show_uvedit: - layout.itemR(settings, "uv_local_view") # Numpad / + layout.prop(settings, "uv_local_view") # Numpad / - layout.itemS() + layout.separator() - layout.itemO("image.view_zoom_in") - layout.itemO("image.view_zoom_out") + layout.operator("image.view_zoom_in") + layout.operator("image.view_zoom_out") - layout.itemS() + layout.separator() ratios = [[1, 8], [1, 4], [1, 2], [1, 1], [2, 1], [4, 1], [8, 1]] for a, b in ratios: text = "Zoom %d:%d" % (a, b) - layout.item_floatO("image.view_zoom_ratio", "ratio", a / b, text=text) + layout.operator("image.view_zoom_ratio", text=text).ratio = a / b - layout.itemS() + layout.separator() if show_uvedit: - layout.itemO("image.view_selected") + layout.operator("image.view_selected") - layout.itemO("image.view_all") - layout.itemO("screen.screen_full_area") + layout.operator("image.view_all") + layout.operator("screen.screen_full_area") class IMAGE_MT_select(bpy.types.Menu): @@ -70,19 +70,19 @@ class IMAGE_MT_select(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("uv.select_border") - layout.item_booleanO("uv.select_border", "pinned", True) + layout.operator("uv.select_border") + layout.operator("uv.select_border").pinned = True - layout.itemS() + layout.separator() - layout.itemO("uv.select_all_toggle") - layout.itemO("uv.select_inverse") - layout.itemO("uv.unlink_selection") + layout.operator("uv.select_all_toggle") + layout.operator("uv.select_inverse") + layout.operator("uv.unlink_selection") - layout.itemS() + layout.separator() - layout.itemO("uv.select_pinned") - layout.itemO("uv.select_linked") + layout.operator("uv.select_pinned") + layout.operator("uv.select_linked") class IMAGE_MT_image(bpy.types.Menu): @@ -94,39 +94,39 @@ class IMAGE_MT_image(bpy.types.Menu): sima = context.space_data ima = sima.image - layout.itemO("image.new") - layout.itemO("image.open") + layout.operator("image.new") + layout.operator("image.open") show_render = sima.show_render if ima: if not show_render: - layout.itemO("image.replace") - layout.itemO("image.reload") + layout.operator("image.replace") + layout.operator("image.reload") - layout.itemO("image.save") - layout.itemO("image.save_as") + layout.operator("image.save") + layout.operator("image.save_as") if ima.source == 'SEQUENCE': - layout.itemO("image.save_sequence") + layout.operator("image.save_sequence") if not show_render: - layout.itemS() + layout.separator() if ima.packed_file: - layout.itemO("image.unpack") + layout.operator("image.unpack") else: - layout.itemO("image.pack") + layout.operator("image.pack") # only for dirty && specific image types, perhaps # this could be done in operator poll too if ima.dirty: if ima.source in ('FILE', 'GENERATED') and ima.type != 'MULTILAYER': - layout.item_booleanO("image.pack", "as_png", True, text="Pack As PNG") + layout.operator("image.pack", text="Pack As PNG").as_png = True - layout.itemS() + layout.separator() - layout.itemR(sima, "image_painting") + layout.prop(sima, "image_painting") class IMAGE_MT_uvs_showhide(bpy.types.Menu): @@ -135,9 +135,9 @@ class IMAGE_MT_uvs_showhide(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("uv.reveal") - layout.itemO("uv.hide") - layout.item_booleanO("uv.hide", "unselected", True) + layout.operator("uv.reveal") + layout.operator("uv.hide") + layout.operator("uv.hide").unselected = True class IMAGE_MT_uvs_transform(bpy.types.Menu): @@ -146,9 +146,26 @@ class IMAGE_MT_uvs_transform(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("tfm.translate") - layout.itemO("tfm.rotate") - layout.itemO("tfm.resize") + layout.operator("tfm.translate") + layout.operator("tfm.rotate") + layout.operator("tfm.resize") + + +class IMAGE_MT_uvs_snap(bpy.types.Menu): + bl_label = "Snap" + + def draw(self, context): + layout = self.layout + layout.operator_context = 'EXEC_REGION_WIN' + + layout.operator("uv.snap_selection", text="Selected to Pixels").target = 'PIXELS' + layout.operator("uv.snap_selection", text="Selected to Cursor").target = 'CURSOR' + layout.operator("uv.snap_selection", text="Selected to Adjacent Unselected").target = 'ADJACENT_UNSELECTED' + + layout.separator() + + layout.operator("uv.snap_cursor", text="Cursor to Pixels").target = 'PIXELS' + layout.operator("uv.snap_cursor", text="Cursor to Selection").target = 'SELECTION' class IMAGE_MT_uvs_mirror(bpy.types.Menu): @@ -158,11 +175,8 @@ class IMAGE_MT_uvs_mirror(bpy.types.Menu): layout = self.layout layout.operator_context = 'EXEC_REGION_WIN' - props = layout.itemO("tfm.mirror", text="X Axis", properties=True) - props.constraint_axis[0] = True - - props = layout.itemO("tfm.mirror", text="Y Axis", properties=True) - props.constraint_axis[1] = True + layout.operator("tfm.mirror", text="X Axis").constraint_axis[0] = True + layout.operator("tfm.mirror", text="Y Axis").constraint_axis[1] = True class IMAGE_MT_uvs_weldalign(bpy.types.Menu): @@ -171,8 +185,8 @@ class IMAGE_MT_uvs_weldalign(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("uv.weld") # W, 1 - layout.items_enumO("uv.align", "axis") # W, 2/3/4 + layout.operator("uv.weld") # W, 1 + layout.operator_enums("uv.align", "axis") # W, 2/3/4 class IMAGE_MT_uvs(bpy.types.Menu): @@ -185,37 +199,38 @@ class IMAGE_MT_uvs(bpy.types.Menu): uv = sima.uv_editor settings = context.tool_settings - layout.itemR(uv, "snap_to_pixels") - layout.itemR(uv, "constrain_to_image_bounds") + layout.prop(uv, "snap_to_pixels") + layout.prop(uv, "constrain_to_image_bounds") - layout.itemS() + layout.separator() - layout.itemR(uv, "live_unwrap") - layout.itemO("uv.unwrap") - layout.item_booleanO("uv.pin", "clear", True, text="Unpin") - layout.itemO("uv.pin") + layout.prop(uv, "live_unwrap") + layout.operator("uv.unwrap") + layout.operator("uv.pin", text="Unpin").clear = True + layout.operator("uv.pin") - layout.itemS() + layout.separator() - layout.itemO("uv.pack_islands") - layout.itemO("uv.average_islands_scale") - layout.itemO("uv.minimize_stretch") - layout.itemO("uv.stitch") + layout.operator("uv.pack_islands") + layout.operator("uv.average_islands_scale") + layout.operator("uv.minimize_stretch") + layout.operator("uv.stitch") - layout.itemS() + layout.separator() - layout.itemM("IMAGE_MT_uvs_transform") - layout.itemM("IMAGE_MT_uvs_mirror") - layout.itemM("IMAGE_MT_uvs_weldalign") + layout.menu("IMAGE_MT_uvs_transform") + layout.menu("IMAGE_MT_uvs_mirror") + layout.menu("IMAGE_MT_uvs_snap") + layout.menu("IMAGE_MT_uvs_weldalign") - layout.itemS() + layout.separator() - layout.item_menu_enumR(settings, "proportional_editing") - layout.item_menu_enumR(settings, "proportional_editing_falloff") + layout.prop_menu_enum(settings, "proportional_editing") + layout.prop_menu_enum(settings, "proportional_editing_falloff") - layout.itemS() + layout.separator() - layout.itemM("IMAGE_MT_uvs_showhide") + layout.menu("IMAGE_MT_uvs_showhide") class IMAGE_HT_header(bpy.types.Header): @@ -239,18 +254,18 @@ class IMAGE_HT_header(bpy.types.Header): # menus if context.area.show_menus: sub = row.row(align=True) - sub.itemM("IMAGE_MT_view") + sub.menu("IMAGE_MT_view") if show_uvedit: - sub.itemM("IMAGE_MT_select") + sub.menu("IMAGE_MT_select") if ima and ima.dirty: - sub.itemM("IMAGE_MT_image", text="Image*") + sub.menu("IMAGE_MT_image", text="Image*") else: - sub.itemM("IMAGE_MT_image", text="Image") + sub.menu("IMAGE_MT_image", text="Image") if show_uvedit: - sub.itemM("IMAGE_MT_uvs") + sub.menu("IMAGE_MT_uvs") layout.template_ID(sima, "image", new="image.new") @@ -258,42 +273,42 @@ class IMAGE_HT_header(bpy.types.Header): if show_uvedit: uvedit = sima.uv_editor - layout.itemR(uvedit, "pivot", text="", icon_only=True) - layout.itemR(settings, "uv_sync_selection", text="") + layout.prop(uvedit, "pivot", text="", icon_only=True) + layout.prop(settings, "uv_sync_selection", text="") if settings.uv_sync_selection: - layout.itemR(settings, "mesh_selection_mode", text="", expand=True) + layout.prop(settings, "mesh_selection_mode", text="", expand=True) else: - layout.itemR(settings, "uv_selection_mode", text="", expand=True) - layout.itemR(uvedit, "sticky_selection_mode", text="", icon_only=True) + layout.prop(settings, "uv_selection_mode", text="", expand=True) + layout.prop(uvedit, "sticky_selection_mode", text="", icon_only=True) row = layout.row(align=True) - row.itemR(settings, "snap", text="") + row.prop(settings, "snap", text="") if settings.snap: - row.itemR(settings, "snap_mode", text="") + row.prop(settings, "snap_mode", text="") # mesh = context.edit_object.data - # row.item_pointerR(mesh, "active_uv_layer", mesh, "uv_textures") + # row.prop_object(mesh, "active_uv_layer", mesh, "uv_textures") if ima: # layers layout.template_image_layers(ima, iuser) # painting - layout.itemR(sima, "image_painting", text="") + layout.prop(sima, "image_painting", text="") # draw options row = layout.row(align=True) - row.itemR(sima, "draw_channels", text="", expand=True) + row.prop(sima, "draw_channels", text="", expand=True) row = layout.row(align=True) if ima.type == 'COMPOSITE': - row.itemO("image.record_composite", icon='ICON_REC') + row.operator("image.record_composite", icon='ICON_REC') if ima.type == 'COMPOSITE' and ima.source in ('MOVIE', 'SEQUENCE'): - row.itemO("image.play_composite", icon='ICON_PLAY') + row.operator("image.play_composite", icon='ICON_PLAY') if show_uvedit or sima.image_painting: - layout.itemR(sima, "update_automatically", text="") + layout.prop(sima, "update_automatically", text="") class IMAGE_PT_image_properties(bpy.types.Panel): @@ -337,27 +352,27 @@ class IMAGE_PT_game_properties(bpy.types.Panel): col = split.column() sub = col.column(align=True) - sub.itemR(ima, "animated") + sub.prop(ima, "animated") subsub = sub.column() subsub.active = ima.animated - subsub.itemR(ima, "animation_start", text="Start") - subsub.itemR(ima, "animation_end", text="End") - subsub.itemR(ima, "animation_speed", text="Speed") + subsub.prop(ima, "animation_start", text="Start") + subsub.prop(ima, "animation_end", text="End") + subsub.prop(ima, "animation_speed", text="Speed") - col.itemR(ima, "tiles") + col.prop(ima, "tiles") sub = col.column(align=True) sub.active = ima.tiles or ima.animated - sub.itemR(ima, "tiles_x", text="X") - sub.itemR(ima, "tiles_y", text="Y") + sub.prop(ima, "tiles_x", text="X") + sub.prop(ima, "tiles_y", text="Y") if wide_ui: col = split.column() - col.itemL(text="Clamp:") - col.itemR(ima, "clamp_x", text="X") - col.itemR(ima, "clamp_y", text="Y") - col.itemS() - col.itemR(ima, "mapping", expand=True) + col.label(text="Clamp:") + col.prop(ima, "clamp_x", text="X") + col.prop(ima, "clamp_y", text="Y") + col.separator() + col.prop(ima, "mapping", expand=True) class IMAGE_PT_view_properties(bpy.types.Panel): @@ -382,41 +397,41 @@ class IMAGE_PT_view_properties(bpy.types.Panel): col = split.column() if ima: - col.itemR(ima, "display_aspect", text="Aspect Ratio") + col.prop(ima, "display_aspect", text="Aspect Ratio") if wide_ui: col = split.column() - col.itemL(text="Coordinates:") - col.itemR(sima, "draw_repeated", text="Repeat") + col.label(text="Coordinates:") + col.prop(sima, "draw_repeated", text="Repeat") if show_uvedit: - col.itemR(uvedit, "normalized_coordinates", text="Normalized") + col.prop(uvedit, "normalized_coordinates", text="Normalized") elif show_uvedit: - col.itemL(text="Coordinates:") - col.itemR(uvedit, "normalized_coordinates", text="Normalized") + col.label(text="Coordinates:") + col.prop(uvedit, "normalized_coordinates", text="Normalized") if show_uvedit: col = layout.column() - col.itemL(text="UVs:") + col.label(text="UVs:") row = col.row() if wide_ui: - row.itemR(uvedit, "edge_draw_type", expand=True) + row.prop(uvedit, "edge_draw_type", expand=True) else: - row.itemR(uvedit, "edge_draw_type", text="") + row.prop(uvedit, "edge_draw_type", text="") split = layout.split() col = split.column() - col.itemR(uvedit, "draw_smooth_edges", text="Smooth") - col.itemR(uvedit, "draw_modified_edges", text="Modified") - #col.itemR(uvedit, "draw_edges") - #col.itemR(uvedit, "draw_faces") + col.prop(uvedit, "draw_smooth_edges", text="Smooth") + col.prop(uvedit, "draw_modified_edges", text="Modified") + #col.prop(uvedit, "draw_edges") + #col.prop(uvedit, "draw_faces") if wide_ui: col = split.column() - col.itemR(uvedit, "draw_stretch", text="Stretch") + col.prop(uvedit, "draw_stretch", text="Stretch") sub = col.column() sub.active = uvedit.draw_stretch - sub.row().itemR(uvedit, "draw_stretch_type", expand=True) + sub.row().prop(uvedit, "draw_stretch_type", expand=True) class IMAGE_PT_paint(bpy.types.Panel): @@ -445,28 +460,28 @@ class IMAGE_PT_paint(bpy.types.Panel): sub = layout.row(align=True) else: sub = layout.column(align=True) - sub.item_enumR(settings, "tool", 'DRAW') - sub.item_enumR(settings, "tool", 'SOFTEN') - sub.item_enumR(settings, "tool", 'CLONE') - sub.item_enumR(settings, "tool", 'SMEAR') + sub.prop_enum(settings, "tool", 'DRAW') + sub.prop_enum(settings, "tool", 'SOFTEN') + sub.prop_enum(settings, "tool", 'CLONE') + sub.prop_enum(settings, "tool", 'SMEAR') if brush: col = layout.column() - col.itemR(brush, "color", text="") + col.prop(brush, "color", text="") row = col.row(align=True) - row.itemR(brush, "size", slider=True) - row.itemR(brush, "use_size_pressure", toggle=True, text="") + row.prop(brush, "size", slider=True) + row.prop(brush, "use_size_pressure", toggle=True, text="") row = col.row(align=True) - row.itemR(brush, "strength", slider=True) - row.itemR(brush, "use_strength_pressure", toggle=True, text="") + row.prop(brush, "strength", slider=True) + row.prop(brush, "use_strength_pressure", toggle=True, text="") row = col.row(align=True) - row.itemR(brush, "jitter", slider=True) - row.itemR(brush, "use_jitter_pressure", toggle=True, text="") + row.prop(brush, "jitter", slider=True) + row.prop(brush, "use_jitter_pressure", toggle=True, text="") - col.itemR(brush, "blend", text="Blend") + col.prop(brush, "blend", text="Blend") class IMAGE_PT_paint_stroke(bpy.types.Panel): @@ -486,16 +501,16 @@ class IMAGE_PT_paint_stroke(bpy.types.Panel): settings = context.tool_settings.image_paint brush = settings.brush - layout.itemR(brush, "use_airbrush") + layout.prop(brush, "use_airbrush") col = layout.column() col.active = brush.use_airbrush - col.itemR(brush, "rate", slider=True) + col.prop(brush, "rate", slider=True) - layout.itemR(brush, "use_space") + layout.prop(brush, "use_space") row = layout.row(align=True) row.active = brush.use_space - row.itemR(brush, "spacing", text="Distance", slider=True) - row.itemR(brush, "use_spacing_pressure", toggle=True, text="") + row.prop(brush, "spacing", text="Distance", slider=True) + row.prop(brush, "use_spacing_pressure", toggle=True, text="") class IMAGE_PT_paint_curve(bpy.types.Panel): @@ -516,13 +531,14 @@ class IMAGE_PT_paint_curve(bpy.types.Panel): brush = settings.brush layout.template_curve_mapping(brush, "curve") - layout.item_menu_enumO("brush.curve_preset", property="shape") + layout.operator_menu_enum("brush.curve_preset", property="shape") bpy.types.register(IMAGE_MT_view) bpy.types.register(IMAGE_MT_select) bpy.types.register(IMAGE_MT_image) bpy.types.register(IMAGE_MT_uvs_showhide) bpy.types.register(IMAGE_MT_uvs_transform) +bpy.types.register(IMAGE_MT_uvs_snap) bpy.types.register(IMAGE_MT_uvs_mirror) bpy.types.register(IMAGE_MT_uvs_weldalign) bpy.types.register(IMAGE_MT_uvs) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 7d71eb22d0a..acbf44eb532 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -37,30 +37,30 @@ class INFO_HT_header(bpy.types.Header): if context.area.show_menus: sub = row.row(align=True) - sub.itemM("INFO_MT_file") - sub.itemM("INFO_MT_add") + sub.menu("INFO_MT_file") + sub.menu("INFO_MT_add") if rd.use_game_engine: - sub.itemM("INFO_MT_game") + sub.menu("INFO_MT_game") else: - sub.itemM("INFO_MT_render") - sub.itemM("INFO_MT_help") + sub.menu("INFO_MT_render") + sub.menu("INFO_MT_help") layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete") layout.template_ID(context.screen, "scene", new="scene.new", unlink="scene.delete") - layout.itemS() + layout.separator() if rd.multiple_engines: - layout.itemR(rd, "engine", text="") + layout.prop(rd, "engine", text="") - layout.itemS() + layout.separator() layout.template_operator_search() layout.template_running_jobs() - layout.itemL(text=scene.statistics()) + layout.label(text=scene.statistics()) - layout.itemO("wm.window_fullscreen_toggle", icon='ICON_FULLSCREEN_ENTER', text="") + layout.operator("wm.window_fullscreen_toggle", icon='ICON_FULLSCREEN_ENTER', text="") class INFO_MT_file(bpy.types.Menu): @@ -70,38 +70,38 @@ class INFO_MT_file(bpy.types.Menu): layout = self.layout layout.operator_context = 'EXEC_AREA' - layout.itemO("wm.read_homefile", text="New", icon='ICON_NEW') + layout.operator("wm.read_homefile", text="New", icon='ICON_NEW') layout.operator_context = 'INVOKE_AREA' - layout.itemO("wm.open_mainfile", text="Open...", icon='ICON_FILE_FOLDER') - layout.item_menu_enumO("wm.open_recentfile", "file", text="Open Recent") - layout.itemO("wm.recover_last_session") - layout.itemO("wm.recover_auto_save", text="Recover Auto Save...") + layout.operator("wm.open_mainfile", text="Open...", icon='ICON_FILE_FOLDER') + layout.operator_menu_enum("wm.open_recentfile", "file", text="Open Recent") + layout.operator("wm.recover_last_session") + layout.operator("wm.recover_auto_save", text="Recover Auto Save...") - layout.itemS() + layout.separator() layout.operator_context = 'EXEC_AREA' - layout.itemO("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK') + layout.operator("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK') layout.operator_context = 'INVOKE_AREA' - layout.itemO("wm.save_as_mainfile", text="Save As...") - layout.itemO("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES') + layout.operator("wm.save_as_mainfile", text="Save As...") + layout.operator("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES') - layout.itemS() + layout.separator() layout.operator_context = 'INVOKE_AREA' - layout.itemO("wm.link_append", text="Link") - layout.item_booleanO("wm.link_append", "link", False, text="Append") - layout.itemS() + layout.operator("wm.link_append", text="Link") + layout.operator("wm.link_append", text="Append").link = False + layout.separator() - layout.itemM("INFO_MT_file_import") - layout.itemM("INFO_MT_file_export") + layout.menu("INFO_MT_file_import") + layout.menu("INFO_MT_file_export") - layout.itemS() + layout.separator() - layout.itemM("INFO_MT_file_external_data") + layout.menu("INFO_MT_file_external_data") - layout.itemS() + layout.separator() layout.operator_context = 'EXEC_AREA' - layout.itemO("wm.exit_blender", text="Quit", icon='ICON_QUIT') + layout.operator("wm.exit_blender", text="Quit", icon='ICON_QUIT') # test for expanding menus ''' @@ -111,7 +111,7 @@ class INFO_MT_file_more(INFO_MT_file): def draw(self, context): layout = self.layout - layout.itemO("wm.read_homefile", text="TESTING ") + layout.operator("wm.read_homefile", text="TESTING ") dynamic_menu.setup(INFO_MT_file_more) ''' @@ -123,7 +123,7 @@ class INFO_MT_file_import(dynamic_menu.DynMenu): def draw(self, context): if "collada_import" in dir(bpy.ops.wm): - self.layout.itemO("wm.collada_import", text="COLLADA (.dae)...") + self.layout.operator("wm.collada_import", text="COLLADA (.dae)...") class INFO_MT_file_export(dynamic_menu.DynMenu): @@ -132,7 +132,7 @@ class INFO_MT_file_export(dynamic_menu.DynMenu): def draw(self, context): if "collada_export" in dir(bpy.ops.wm): - self.layout.itemO("wm.collada_export", text="COLLADA (.dae)...") + self.layout.operator("wm.collada_export", text="COLLADA (.dae)...") class INFO_MT_file_external_data(bpy.types.Menu): @@ -141,15 +141,15 @@ class INFO_MT_file_external_data(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("file.pack_all", text="Pack into .blend file") - layout.itemO("file.unpack_all", text="Unpack into Files...") + layout.operator("file.pack_all", text="Pack into .blend file") + layout.operator("file.unpack_all", text="Unpack into Files...") - layout.itemS() + layout.separator() - layout.itemO("file.make_paths_relative") - layout.itemO("file.make_paths_absolute") - layout.itemO("file.report_missing_files") - layout.itemO("file.find_missing_files") + layout.operator("file.make_paths_relative") + layout.operator("file.make_paths_absolute") + layout.operator("file.report_missing_files") + layout.operator("file.find_missing_files") class INFO_MT_mesh_add(dynamic_menu.DynMenu): @@ -159,16 +159,16 @@ class INFO_MT_mesh_add(dynamic_menu.DynMenu): def draw(self, context): layout = self.layout layout.operator_context = 'INVOKE_REGION_WIN' - layout.itemO("mesh.primitive_plane_add", icon='ICON_MESH_PLANE', text="Plane") - layout.itemO("mesh.primitive_cube_add", icon='ICON_MESH_CUBE', text="Cube") - layout.itemO("mesh.primitive_circle_add", icon='ICON_MESH_CIRCLE', text="Circle") - layout.itemO("mesh.primitive_uv_sphere_add", icon='ICON_MESH_UVSPHERE', text="UV Sphere") - layout.itemO("mesh.primitive_ico_sphere_add", icon='ICON_MESH_ICOSPHERE', text="Icosphere") - layout.itemO("mesh.primitive_tube_add", icon='ICON_MESH_TUBE', text="Tube") - layout.itemO("mesh.primitive_cone_add", icon='ICON_MESH_CONE', text="Cone") - layout.itemS() - layout.itemO("mesh.primitive_grid_add", icon='ICON_MESH_GRID', text="Grid") - layout.itemO("mesh.primitive_monkey_add", icon='ICON_MESH_MONKEY', text="Monkey") + layout.operator("mesh.primitive_plane_add", icon='ICON_MESH_PLANE', text="Plane") + layout.operator("mesh.primitive_cube_add", icon='ICON_MESH_CUBE', text="Cube") + layout.operator("mesh.primitive_circle_add", icon='ICON_MESH_CIRCLE', text="Circle") + layout.operator("mesh.primitive_uv_sphere_add", icon='ICON_MESH_UVSPHERE', text="UV Sphere") + layout.operator("mesh.primitive_ico_sphere_add", icon='ICON_MESH_ICOSPHERE', text="Icosphere") + layout.operator("mesh.primitive_tube_add", icon='ICON_MESH_TUBE', text="Tube") + layout.operator("mesh.primitive_cone_add", icon='ICON_MESH_CONE', text="Cone") + layout.separator() + layout.operator("mesh.primitive_grid_add", icon='ICON_MESH_GRID', text="Grid") + layout.operator("mesh.primitive_monkey_add", icon='ICON_MESH_MONKEY', text="Monkey") class INFO_MT_add(bpy.types.Menu): @@ -179,37 +179,37 @@ class INFO_MT_add(bpy.types.Menu): layout.operator_context = 'EXEC_SCREEN' - # layout.item_menu_enumO("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH') - layout.itemM("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH') + #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH') + layout.menu("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH') - layout.item_menu_enumO("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE') - layout.item_menu_enumO("object.surface_add", "type", text="Surface", icon='ICON_OUTLINER_OB_SURFACE') - layout.item_menu_enumO("object.metaball_add", "type", 'META', text="Metaball", icon='ICON_OUTLINER_OB_META') - layout.itemO("object.text_add", text="Text", icon='ICON_OUTLINER_OB_FONT') + layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE') + layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='ICON_OUTLINER_OB_SURFACE') + layout.operator_menu_enum("object.metaball_add", "type", 'META', text="Metaball", icon='ICON_OUTLINER_OB_META') + layout.operator("object.text_add", text="Text", icon='ICON_OUTLINER_OB_FONT') - layout.itemS() + layout.separator() - layout.operator_context = 'INVOKE_SCREEN' + layout.operator_context = 'INVOKE_REGION_WIN' - layout.itemO("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE') - layout.item_enumO("object.add", "type", 'LATTICE', icon='ICON_OUTLINER_OB_LATTICE') - layout.item_enumO("object.add", "type", 'EMPTY', icon='ICON_OUTLINER_OB_EMPTY') + layout.operator("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE') + layout.operator("object.add", text="Lattice", icon='ICON_OUTLINER_OB_LATTICE').type = 'LATTICE' + layout.operator("object.add", text="Empty", icon='ICON_OUTLINER_OB_EMPTY').type = 'EMPTY' - layout.itemS() + layout.separator() - layout.item_enumO("object.add", "type", 'CAMERA', icon='ICON_OUTLINER_OB_CAMERA') + layout.operator("object.add", text="Camera", icon='ICON_OUTLINER_OB_CAMERA').type = 'CAMERA' layout.operator_context = 'EXEC_SCREEN' - layout.item_menu_enumO("object.lamp_add", "type", 'LAMP', text="Lamp", icon='ICON_OUTLINER_OB_LAMP') + layout.operator_menu_enum("object.lamp_add", "type", 'LAMP', text="Lamp", icon='ICON_OUTLINER_OB_LAMP') - layout.itemS() + layout.separator() - layout.item_menu_enumO("object.effector_add", "type", 'EMPTY', text="Force Field", icon='ICON_OUTLINER_OB_EMPTY') + layout.operator_menu_enum("object.effector_add", "type", 'EMPTY', text="Force Field", icon='ICON_OUTLINER_OB_EMPTY') - layout.itemS() + layout.separator() - layout.item_menu_enumO("object.group_instance_add", "type", text="Group Instance", icon='ICON_OUTLINER_OB_EMPTY') + layout.operator_menu_enum("object.group_instance_add", "type", text="Group Instance", icon='ICON_OUTLINER_OB_EMPTY') class INFO_MT_game(bpy.types.Menu): @@ -220,14 +220,14 @@ class INFO_MT_game(bpy.types.Menu): gs = context.scene.game_data - layout.itemO("view3d.game_start") + layout.operator("view3d.game_start") - layout.itemS() + layout.separator() - layout.itemR(gs, "show_debug_properties") - layout.itemR(gs, "show_framerate_profile") - layout.itemR(gs, "show_physics_visualization") - layout.itemR(gs, "deprecation_warnings") + layout.prop(gs, "show_debug_properties") + layout.prop(gs, "show_framerate_profile") + layout.prop(gs, "show_physics_visualization") + layout.prop(gs, "deprecation_warnings") class INFO_MT_render(bpy.types.Menu): @@ -238,17 +238,17 @@ class INFO_MT_render(bpy.types.Menu): # rd = context.scene.render_data - layout.itemO("screen.render", text="Render Image", icon='ICON_RENDER_STILL') - layout.item_booleanO("screen.render", "animation", True, text="Render Animation", icon='ICON_RENDER_ANIMATION') + layout.operator("screen.render", text="Render Image", icon='ICON_RENDER_STILL') + layout.operator("screen.render", text="Render Animation", icon='ICON_RENDER_ANIMATION').animation = True - layout.itemS() + layout.separator() - layout.itemO("screen.opengl_render", text="OpenGL Render Image") - layout.item_booleanO("screen.opengl_render", "animation", True, text="OpenGL Render Animation") + layout.operator("screen.opengl_render", text="OpenGL Render Image") + layout.operator("screen.opengl_render", text="OpenGL Render Animation").animation = True - layout.itemS() + layout.separator() - layout.itemO("screen.render_view_show") + layout.operator("screen.render_view_show") class INFO_MT_help(bpy.types.Menu): @@ -257,19 +257,20 @@ class INFO_MT_help(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("help.manual", icon='ICON_HELP') - layout.itemO("help.release_logs", icon='ICON_URL') + layout.operator("help.manual", icon='ICON_HELP') + layout.operator("help.release_logs", icon='ICON_URL') - layout.itemS() + layout.separator() - layout.itemO("help.blender_website", icon='ICON_URL') - layout.itemO("help.blender_eshop", icon='ICON_URL') - layout.itemO("help.developer_community", icon='ICON_URL') - layout.itemO("help.user_community", icon='ICON_URL') - layout.itemS() - layout.itemO("help.report_bug", icon='ICON_URL') - layout.itemS() - layout.itemO("help.operator_cheat_sheet") + layout.operator("help.blender_website", icon='ICON_URL') + layout.operator("help.blender_eshop", icon='ICON_URL') + layout.operator("help.developer_community", icon='ICON_URL') + layout.operator("help.user_community", icon='ICON_URL') + layout.separator() + layout.operator("help.report_bug", icon='ICON_URL') + layout.separator() + layout.operator("help.python_api", icon='ICON_URL') + layout.operator("help.operator_cheat_sheet") bpy.types.register(INFO_HT_header) bpy.types.register(INFO_MT_file) @@ -297,14 +298,14 @@ class HELP_OT_manual(HelpOperator): '''The Blender Wiki manual''' bl_idname = "help.manual" bl_label = "Manual" - _url = 'http://wiki.blender.org/index.php/Manual' + _url = 'http://wiki.blender.org/index.php/Doc:Manual' class HELP_OT_release_logs(HelpOperator): '''Information about the changes in this version of Blender''' bl_idname = "help.release_logs" - bl_label = "Release Logs" - _url = 'http://www.blender.org/development/release-logs/' + bl_label = "Release Log" + _url = 'http://www.blender.org/development/release-logs/blender-250/' class HELP_OT_blender_website(HelpOperator): @@ -342,6 +343,13 @@ class HELP_OT_report_bug(HelpOperator): _url = 'http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse' +class HELP_OT_python_api(HelpOperator): + '''Reference for operator and data Python API''' + bl_idname = "help.python_api" + bl_label = "Python API Reference" + _url = 'http://www.blender.org/documentation/250PythonDoc/' + + class HELP_OT_operator_cheat_sheet(bpy.types.Operator): bl_idname = "help.operator_cheat_sheet" bl_label = "Operator Cheat Sheet (new textblock)" @@ -375,4 +383,5 @@ bpy.ops.add(HELP_OT_blender_eshop) bpy.ops.add(HELP_OT_developer_community) bpy.ops.add(HELP_OT_user_community) bpy.ops.add(HELP_OT_report_bug) +bpy.ops.add(HELP_OT_python_api) bpy.ops.add(HELP_OT_operator_cheat_sheet) diff --git a/release/scripts/ui/space_logic.py b/release/scripts/ui/space_logic.py index 42daa4ace07..e547da6bb8f 100644 --- a/release/scripts/ui/space_logic.py +++ b/release/scripts/ui/space_logic.py @@ -35,15 +35,15 @@ class LOGIC_PT_properties(bpy.types.Panel): ob = context.active_object game = ob.game - layout.itemO("object.game_property_new", text="Add Game Property") + layout.operator("object.game_property_new", text="Add Game Property") for i, prop in enumerate(game.properties): row = layout.row(align=True) - row.itemR(prop, "name", text="") - row.itemR(prop, "type", text="") - row.itemR(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly - row.itemR(prop, "debug", text="", toggle=True, icon='ICON_INFO') - row.item_intO("object.game_property_remove", "index", i, text="", icon='ICON_X') + row.prop(prop, "name", text="") + row.prop(prop, "type", text="") + row.prop(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly + row.prop(prop, "debug", text="", toggle=True, icon='ICON_INFO') + row.operator("object.game_property_remove", text="", icon='ICON_X').index = i bpy.types.register(LOGIC_PT_properties) diff --git a/release/scripts/ui/space_node.py b/release/scripts/ui/space_node.py index 807b7f6628f..cc5b3fe7977 100644 --- a/release/scripts/ui/space_node.py +++ b/release/scripts/ui/space_node.py @@ -33,13 +33,13 @@ class NODE_HT_header(bpy.types.Header): if context.area.show_menus: sub = row.row(align=True) - sub.itemM("NODE_MT_view") - sub.itemM("NODE_MT_select") - sub.itemM("NODE_MT_add") - sub.itemM("NODE_MT_node") + sub.menu("NODE_MT_view") + sub.menu("NODE_MT_select") + sub.menu("NODE_MT_add") + sub.menu("NODE_MT_node") row = layout.row() - row.itemR(snode, "tree_type", text="", expand=True) + row.prop(snode, "tree_type", text="", expand=True) if snode.tree_type == 'MATERIAL': ob = snode.id_from @@ -47,24 +47,24 @@ class NODE_HT_header(bpy.types.Header): if ob: layout.template_ID(ob, "active_material", new="material.new") if snode_id: - layout.itemR(snode_id, "use_nodes") + layout.prop(snode_id, "use_nodes") elif snode.tree_type == 'TEXTURE': - row.itemR(snode, "texture_type", text="", expand=True) + row.prop(snode, "texture_type", text="", expand=True) snode_id = snode.id id_from = snode.id_from if id_from: layout.template_ID(id_from, "active_texture", new="texture.new") if snode_id: - layout.itemR(snode_id, "use_nodes") + layout.prop(snode_id, "use_nodes") elif snode.tree_type == 'COMPOSITING': snode_id = snode.id - layout.itemR(snode_id, "use_nodes") - layout.itemR(snode_id.render_data, "free_unused_nodes", text="Free Unused") - layout.itemR(snode, "backdrop") + layout.prop(snode_id, "use_nodes") + layout.prop(snode_id.render_data, "free_unused_nodes", text="Free Unused") + layout.prop(snode, "backdrop") class NODE_MT_view(bpy.types.Menu): @@ -73,16 +73,16 @@ class NODE_MT_view(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("node.properties", icon='ICON_MENU_PANEL') - layout.itemS() + layout.operator("node.properties", icon='ICON_MENU_PANEL') + layout.separator() - layout.itemO("view2d.zoom_in") - layout.itemO("view2d.zoom_out") + layout.operator("view2d.zoom_in") + layout.operator("view2d.zoom_out") - layout.itemS() + layout.separator() - layout.itemO("node.view_all") - layout.itemO("screen.screen_full_area") + layout.operator("node.view_all") + layout.operator("screen.screen_full_area") class NODE_MT_select(bpy.types.Menu): @@ -91,12 +91,12 @@ class NODE_MT_select(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("node.select_border") + layout.operator("node.select_border") - layout.itemS() - layout.itemO("node.select_all") - layout.itemO("node.select_linked_from") - layout.itemO("node.select_linked_to") + layout.separator() + layout.operator("node.select_all") + layout.operator("node.select_linked_from") + layout.operator("node.select_linked_to") class NODE_MT_node(bpy.types.Menu): @@ -105,34 +105,34 @@ class NODE_MT_node(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("tfm.translate") - layout.itemO("tfm.rotate") - layout.itemO("tfm.resize") + layout.operator("tfm.translate") + layout.operator("tfm.rotate") + layout.operator("tfm.resize") - layout.itemS() + layout.separator() - layout.itemO("node.duplicate_move") - layout.itemO("node.delete") + layout.operator("node.duplicate_move") + layout.operator("node.delete") - layout.itemS() - layout.itemO("node.link_make") + layout.separator() + layout.operator("node.link_make") - layout.itemS() - layout.itemO("node.group_edit") - layout.itemO("node.group_ungroup") - layout.itemO("node.group_make") + layout.separator() + layout.operator("node.group_edit") + layout.operator("node.group_ungroup") + layout.operator("node.group_make") - layout.itemS() + layout.separator() - layout.itemO("node.hide") - layout.itemO("node.mute") + layout.operator("node.hide") + layout.operator("node.mute") # XXX - # layout.itemO("node.rename") + # layout.operator("node.rename") - layout.itemS() + layout.separator() - layout.itemO("node.show_cyclic_dependencies") + layout.operator("node.show_cyclic_dependencies") bpy.types.register(NODE_HT_header) bpy.types.register(NODE_MT_view) diff --git a/release/scripts/ui/space_outliner.py b/release/scripts/ui/space_outliner.py index 4d517cd9046..a398bc66f45 100644 --- a/release/scripts/ui/space_outliner.py +++ b/release/scripts/ui/space_outliner.py @@ -35,29 +35,29 @@ class OUTLINER_HT_header(bpy.types.Header): if context.area.show_menus: sub = row.row(align=True) - sub.itemM("OUTLINER_MT_view") + sub.menu("OUTLINER_MT_view") if space.display_mode == 'DATABLOCKS': - sub.itemM("OUTLINER_MT_edit_datablocks") + sub.menu("OUTLINER_MT_edit_datablocks") - layout.itemR(space, "display_mode", text="") + layout.prop(space, "display_mode", text="") - layout.itemS() + layout.separator() if space.display_mode == 'DATABLOCKS': row = layout.row(align=True) - row.itemO("outliner.keyingset_add_selected", icon='ICON_ZOOMIN', text="") - row.itemO("outliner.keyingset_remove_selected", icon='ICON_ZOOMOUT', text="") + row.operator("outliner.keyingset_add_selected", icon='ICON_ZOOMIN', text="") + row.operator("outliner.keyingset_remove_selected", icon='ICON_ZOOMOUT', text="") if ks: row = layout.row(align=False) - row.item_pointerR(scene, "active_keying_set", scene, "keying_sets", text="") + row.prop_object(scene, "active_keying_set", scene, "keying_sets", text="") row = layout.row(align=True) - row.itemO("anim.insert_keyframe", text="", icon='ICON_KEY_HLT') - row.itemO("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT') + row.operator("anim.keyframe_insert", text="", icon='ICON_KEY_HLT') + row.operator("anim.keyframe_delete", text="", icon='ICON_KEY_DEHLT') else: row = layout.row(align=False) - row.itemL(text="No Keying Set active") + row.label(text="No Keying Set active") class OUTLINER_MT_view(bpy.types.Menu): @@ -70,12 +70,12 @@ class OUTLINER_MT_view(bpy.types.Menu): col = layout.column() if space.display_mode not in ('DATABLOCKS', 'USER_PREFERENCES', 'KEYMAPS'): - col.itemR(space, "show_restriction_columns") - col.itemS() - col.itemO("outliner.show_active") + col.prop(space, "show_restriction_columns") + col.separator() + col.operator("outliner.show_active") - col.itemO("outliner.show_one_level") - col.itemO("outliner.show_hierarchy") + col.operator("outliner.show_one_level") + col.operator("outliner.show_hierarchy") class OUTLINER_MT_edit_datablocks(bpy.types.Menu): @@ -86,13 +86,13 @@ class OUTLINER_MT_edit_datablocks(bpy.types.Menu): col = layout.column() - col.itemO("outliner.keyingset_add_selected") - col.itemO("outliner.keyingset_remove_selected") + col.operator("outliner.keyingset_add_selected") + col.operator("outliner.keyingset_remove_selected") - col.itemS() + col.separator() - col.itemO("outliner.drivers_add_selected") - col.itemO("outliner.drivers_delete_selected") + col.operator("outliner.drivers_add_selected") + col.operator("outliner.drivers_delete_selected") bpy.types.register(OUTLINER_HT_header) bpy.types.register(OUTLINER_MT_view) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 2793819f740..56f5aa883c8 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -40,23 +40,23 @@ class SEQUENCER_HT_header(bpy.types.Header): if context.area.show_menus: sub = row.row(align=True) - sub.itemM("SEQUENCER_MT_view") + sub.menu("SEQUENCER_MT_view") - row.itemS() + row.separator() if st.display_mode == 'SEQUENCER': - sub.itemM("SEQUENCER_MT_select") - sub.itemM("SEQUENCER_MT_marker") - sub.itemM("SEQUENCER_MT_add") - sub.itemM("SEQUENCER_MT_strip") + sub.menu("SEQUENCER_MT_select") + sub.menu("SEQUENCER_MT_marker") + sub.menu("SEQUENCER_MT_add") + sub.menu("SEQUENCER_MT_strip") - layout.itemR(st, "display_mode", text="") + layout.prop(st, "display_mode", text="") if st.display_mode == 'SEQUENCER': - layout.itemS() - layout.itemO("sequencer.reload") + layout.separator() + layout.operator("sequencer.refresh_all") else: - layout.itemR(st, "display_channel", text="Channel") + layout.prop(st, "display_channel", text="Channel") class SEQUENCER_MT_view(bpy.types.Menu): @@ -97,11 +97,11 @@ class SEQUENCER_MT_view(bpy.types.Menu): menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); """ - layout.itemS() - layout.itemO("sequencer.view_all") - layout.itemO("sequencer.view_selected") - layout.itemS() - layout.itemO("screen.screen_full_area", text="Toggle Full Screen") + layout.separator() + layout.operator("sequencer.view_all") + layout.operator("sequencer.view_selected") + layout.separator() + layout.operator("screen.screen_full_area", text="Toggle Full Screen") """ @@ -114,12 +114,12 @@ class SEQUENCER_MT_view(bpy.types.Menu): uiDefMenuSep(block); """ - layout.itemR(st, "draw_frames") - layout.itemR(st, "show_cframe_indicator") + layout.prop(st, "draw_frames") + layout.prop(st, "show_cframe_indicator") if st.display_mode == 'IMAGE': - layout.itemR(st, "draw_safe_margin") + layout.prop(st, "draw_safe_margin") if st.display_mode == 'WAVEFORM': - layout.itemR(st, "separate_color_preview") + layout.prop(st, "separate_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, ""); @@ -135,16 +135,16 @@ class SEQUENCER_MT_select(bpy.types.Menu): layout = self.layout layout.column() - layout.item_enumO("sequencer.select_active_side", "side", 'LEFT', text="Strips to the Left") - layout.item_enumO("sequencer.select_active_side", "side", 'RIGHT', text="Strips to the Right") - layout.itemS() - layout.item_enumO("sequencer.select_handles", "side", 'BOTH', text="Surrounding Handles") - layout.item_enumO("sequencer.select_handles", "side", 'LEFT', text="Left Handle") - layout.item_enumO("sequencer.select_handles", "side", 'RIGHT', text="Right Handle") - layout.itemS() - layout.itemO("sequencer.select_linked") - layout.itemO("sequencer.select_all_toggle") - layout.itemO("sequencer.select_inverse") + layout.operator("sequencer.select_active_side", text="Strips to the Left").side = 'LEFT' + layout.operator("sequencer.select_active_side", text="Strips to the Right").side = 'RIGHT' + layout.separator() + layout.operator("sequencer.select_handles", text="Surrounding Handles").side = 'BOTH' + layout.operator("sequencer.select_handles", text="Left Handle").side = 'LEFT' + layout.operator("sequencer.select_handles", text="Right Handle").side = 'RIGHT' + layout.separator() + layout.operator("sequencer.select_linked") + layout.operator("sequencer.select_all_toggle") + layout.operator("sequencer.select_inverse") class SEQUENCER_MT_marker(bpy.types.Menu): @@ -154,14 +154,14 @@ class SEQUENCER_MT_marker(bpy.types.Menu): layout = self.layout layout.column() - layout.itemO("marker.add", text="Add Marker") - layout.itemO("marker.duplicate", text="Duplicate Marker") - layout.itemO("marker.move", text="Grab/Move Marker") - layout.itemO("marker.delete", text="Delete Marker") - layout.itemS() - layout.itemL(text="ToDo: Name Marker") + layout.operator("marker.add", text="Add Marker") + layout.operator("marker.duplicate", text="Duplicate Marker") + layout.operator("marker.move", text="Grab/Move Marker") + layout.operator("marker.delete", text="Delete Marker") + layout.separator() + layout.label(text="ToDo: Name Marker") - #layout.itemO("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS) + #layout.operator("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS) class SEQUENCER_MT_add(bpy.types.Menu): @@ -172,12 +172,12 @@ class SEQUENCER_MT_add(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_WIN' layout.column() - layout.itemO("sequencer.scene_strip_add", text="Scene") - layout.itemO("sequencer.movie_strip_add", text="Movie") - layout.itemO("sequencer.image_strip_add", text="Image") - layout.itemO("sequencer.sound_strip_add", text="Sound") + layout.operator("sequencer.scene_strip_add", text="Scene") + layout.operator("sequencer.movie_strip_add", text="Movie") + layout.operator("sequencer.image_strip_add", text="Image") + layout.operator("sequencer.sound_strip_add", text="Sound") - layout.itemM("SEQUENCER_MT_add_effect") + layout.menu("SEQUENCER_MT_add_effect") class SEQUENCER_MT_add_effect(bpy.types.Menu): @@ -188,19 +188,19 @@ class SEQUENCER_MT_add_effect(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_WIN' layout.column() - layout.item_enumO("sequencer.effect_strip_add", 'type', 'ADD') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'SUBTRACT') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'ALPHA_OVER') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'ALPHA_UNDER') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'GAMMA_CROSS') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'MULTIPLY') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'OVER_DROP') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'PLUGIN') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'WIPE') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'GLOW') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'TRANSFORM') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'COLOR') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'SPEED') + layout.operator("sequencer.effect_strip_add", text="Add").type = 'ADD' + layout.operator("sequencer.effect_strip_add", text="Subtract").type = 'SUBTRACT' + layout.operator("sequencer.effect_strip_add", text="Alpha Over").type = 'ALPHA_OVER' + layout.operator("sequencer.effect_strip_add", text="Alpha Under").type = 'ALPHA_UNDER' + layout.operator("sequencer.effect_strip_add", text="Gamma Cross").type = 'GAMMA_CROSS' + layout.operator("sequencer.effect_strip_add", text="Multiply").type = 'MULTIPLY' + layout.operator("sequencer.effect_strip_add", text="Over Drop").type = 'OVER_DROP' + layout.operator("sequencer.effect_strip_add", text="Plugin").type = 'PLUGIN' + layout.operator("sequencer.effect_strip_add", text="Wipe").type = 'WIPE' + layout.operator("sequencer.effect_strip_add", text="Glow").type = 'GLOW' + layout.operator("sequencer.effect_strip_add", text="Transform").type = 'TRANSFORM' + layout.operator("sequencer.effect_strip_add", text="Color").type = 'COLOR' + layout.operator("sequencer.effect_strip_add", text="Speed Control").type = 'SPEED' class SEQUENCER_MT_strip(bpy.types.Menu): @@ -212,18 +212,18 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_WIN' layout.column() - layout.item_enumO("tfm.transform", "mode", 'TRANSLATION', text="Grab/Move") - layout.item_enumO("tfm.transform", "mode", 'TIME_EXTEND', text="Grab/Extend from frame") + layout.operator("tfm.transform", text="Grab/Move").mode = 'TRANSLATION' + layout.operator("tfm.transform", text="Grab/Extend from frame").mode = 'TIME_EXTEND' # uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator - layout.itemS() + layout.separator() - layout.item_enumO("sequencer.cut", "type", 'HARD', text="Cut (hard) at frame") - layout.item_enumO("sequencer.cut", "type", 'SOFT', text="Cut (soft) at frame") - layout.itemO("sequencer.images_separate") - layout.itemS() + layout.operator("sequencer.cut", text="Cut (hard) at frame").type = 'HARD' + layout.operator("sequencer.cut", text="Cut (soft) at frame").type = 'SOFT' + layout.operator("sequencer.images_separate") + layout.separator() - layout.itemO("sequencer.duplicate") - layout.itemO("sequencer.delete") + layout.operator("sequencer.duplicate") + layout.operator("sequencer.delete") strip = act_strip(context) @@ -231,45 +231,45 @@ class SEQUENCER_MT_strip(bpy.types.Menu): stype = strip.type if stype == 'EFFECT': - layout.itemS() - layout.itemO("sequencer.effect_change") - layout.itemO("sequencer.effect_reassign_inputs") + layout.separator() + layout.operator("sequencer.effect_change") + layout.operator("sequencer.effect_reassign_inputs") elif stype == 'IMAGE': - layout.itemS() - layout.itemO("sequencer.image_change") - layout.itemO("sequencer.rendersize") + layout.separator() + layout.operator("sequencer.image_change") + layout.operator("sequencer.rendersize") elif stype == 'SCENE': - layout.itemS() - layout.itemO("sequencer.scene_change", text="Change Scene") + layout.separator() + layout.operator("sequencer.scene_change", text="Change Scene") elif stype == 'MOVIE': - layout.itemS() - layout.itemO("sequencer.movie_change") - layout.itemO("sequencer.rendersize") + layout.separator() + layout.operator("sequencer.movie_change") + layout.operator("sequencer.rendersize") - layout.itemS() + layout.separator() - layout.itemO("sequencer.meta_make") - layout.itemO("sequencer.meta_separate") + layout.operator("sequencer.meta_make") + layout.operator("sequencer.meta_separate") #if (ed && (ed->metastack.first || (ed->act_seq && ed->act_seq->type == SEQ_META))) { # uiItemS(layout); # uiItemO(layout, NULL, 0, "sequencer.meta_toggle"); #} - layout.itemS() - layout.itemO("sequencer.reload") - layout.itemS() - layout.itemO("sequencer.lock") - layout.itemO("sequencer.unlock") - layout.itemO("sequencer.mute") - layout.itemO("sequencer.unmute") + layout.separator() + layout.operator("sequencer.reload") + layout.separator() + layout.operator("sequencer.lock") + layout.operator("sequencer.unlock") + layout.operator("sequencer.mute") + layout.operator("sequencer.unmute") - layout.item_booleanO("sequencer.mute", "unselected", 1, text="Mute Deselected Strips") + layout.operator("sequencer.mute", text="Mute Deselected Strips").unselected = True - layout.itemO("sequencer.snap") + layout.operator("sequencer.snap") - layout.itemO("sequencer.swap_right") - layout.itemO("sequencer.swap_left") + layout.operator("sequencer.swap_right") + layout.operator("sequencer.swap_left") class SequencerButtonsPanel(bpy.types.Panel): @@ -277,7 +277,7 @@ class SequencerButtonsPanel(bpy.types.Panel): bl_region_type = 'UI' def poll(self, context): - return context.space_data.display_mode == 'SEQUENCER' and act_strip(context) != None + return (context.space_data.display_mode == 'SEQUENCER') and (act_strip(context) is not None) class SequencerButtonsPanel_Output(bpy.types.Panel): @@ -297,47 +297,47 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel): strip = act_strip(context) split = layout.split(percentage=0.3) - split.itemL(text="Name:") - split.itemR(strip, "name", text="") + split.label(text="Name:") + split.prop(strip, "name", text="") split = layout.split(percentage=0.3) - split.itemL(text="Type:") - split.itemR(strip, "type", text="") + split.label(text="Type:") + split.prop(strip, "type", text="") split = layout.split(percentage=0.3) - split.itemL(text="Blend:") - split.itemR(strip, "blend_mode", text="") + split.label(text="Blend:") + split.prop(strip, "blend_mode", text="") row = layout.row() if strip.mute == True: - row.itemR(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_ON', text="") - elif strip.mute == False: - row.itemR(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_OFF', text="") + row.prop(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_ON', text="") + elif strip.mute is False: + row.prop(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_OFF', text="") sub = row.row() sub.active = (not strip.mute) - sub.itemR(strip, "blend_opacity", text="Opacity", slider=True) + sub.prop(strip, "blend_opacity", text="Opacity", slider=True) row = layout.row() - row.itemR(strip, "lock") - row.itemR(strip, "frame_locked", text="Frame Lock") + row.prop(strip, "lock") + row.prop(strip, "frame_locked", text="Frame Lock") col = layout.column() col.enabled = not strip.lock - col.itemR(strip, "channel") - col.itemR(strip, "start_frame") - col.itemR(strip, "length") + col.prop(strip, "channel") + col.prop(strip, "start_frame") + col.prop(strip, "length") col = layout.column(align=True) - col.itemL(text="Offset:") - col.itemR(strip, "start_offset", text="Start") - col.itemR(strip, "end_offset", text="End") + col.label(text="Offset:") + col.prop(strip, "start_offset", text="Start") + col.prop(strip, "end_offset", text="End") col = layout.column(align=True) - col.itemL(text="Still:") - col.itemR(strip, "start_still", text="Start") - col.itemR(strip, "end_still", text="End") + col.label(text="Still:") + col.prop(strip, "start_still", text="Start") + col.prop(strip, "end_still", text="End") class SEQUENCER_PT_effect(SequencerButtonsPanel): @@ -359,77 +359,79 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): strip = act_strip(context) if strip.type == 'COLOR': - layout.itemR(strip, "color") + layout.prop(strip, "color") elif strip.type == 'WIPE': col = layout.column() - col.itemR(strip, "transition_type") - col.itemL(text="Direction:") - col.row().itemR(strip, "direction", expand=True) + col.prop(strip, "transition_type") + col.label(text="Direction:") + col.row().prop(strip, "direction", expand=True) col = layout.column() - col.itemR(strip, "blur_width", slider=True) + col.prop(strip, "blur_width", slider=True) if strip.transition_type in ('SINGLE', 'DOUBLE'): - col.itemR(strip, "angle") + col.prop(strip, "angle") elif strip.type == 'GLOW': flow = layout.column_flow() - flow.itemR(strip, "threshold", slider=True) - flow.itemR(strip, "clamp", slider=True) - flow.itemR(strip, "boost_factor") - flow.itemR(strip, "blur_distance") + flow.prop(strip, "threshold", slider=True) + flow.prop(strip, "clamp", slider=True) + flow.prop(strip, "boost_factor") + flow.prop(strip, "blur_distance") row = layout.row() - row.itemR(strip, "quality", slider=True) - row.itemR(strip, "only_boost") + row.prop(strip, "quality", slider=True) + row.prop(strip, "only_boost") elif strip.type == 'SPEED': - layout.itemR(strip, "global_speed") + layout.prop(strip, "global_speed") flow = layout.column_flow() - flow.itemR(strip, "curve_velocity") - flow.itemR(strip, "curve_compress_y") - flow.itemR(strip, "frame_blending") + flow.prop(strip, "curve_velocity") + flow.prop(strip, "curve_compress_y") + flow.prop(strip, "frame_blending") elif strip.type == 'TRANSFORM': col = layout.column() - col.itemR(strip, "interpolation") - col.itemR(strip, "translation_unit") + col.prop(strip, "interpolation") + col.prop(strip, "translation_unit") col = layout.column(align=True) - col.itemL(text="Position X:") - col.itemR(strip, "translate_start_x", text="Start") - col.itemR(strip, "translate_end_x", text="End") + col.label(text="Position X:") + col.prop(strip, "translate_start_x", text="Start") + col.prop(strip, "translate_end_x", text="End") col = layout.column(align=True) - col.itemL(text="Position Y:") - col.itemR(strip, "translate_start_y", text="Start") - col.itemR(strip, "translate_end_y", text="End") + col.label(text="Position Y:") + col.prop(strip, "translate_start_y", text="Start") + col.prop(strip, "translate_end_y", text="End") - layout.itemS() + layout.separator() col = layout.column(align=True) - col.itemL(text="Scale X:") - col.itemR(strip, "scale_start_x", text="Start") - col.itemR(strip, "scale_end_x", text="End") + col.label(text="Scale X:") + col.prop(strip, "scale_start_x", text="Start") + col.prop(strip, "scale_end_x", text="End") col = layout.column(align=True) - col.itemL(text="Scale Y:") - col.itemR(strip, "scale_start_y", text="Start") - col.itemR(strip, "scale_end_y", text="End") + col.label(text="Scale Y:") + col.prop(strip, "scale_start_y", text="Start") + col.prop(strip, "scale_end_y", text="End") - layout.itemS() + layout.separator() col = layout.column(align=True) - col.itemL(text="Rotation:") - col.itemR(strip, "rotation_start", text="Start") - col.itemR(strip, "rotation_end", text="End") + col.label(text="Rotation:") + col.prop(strip, "rotation_start", text="Start") + col.prop(strip, "rotation_end", text="End") col = layout.column(align=True) - col.itemR(strip, "factor_0", text="Anim0") - col.itemR(strip, "factor_1", text="Anim1") + if strip.type == 'SPEED': + col.prop(strip, "speed_fader", text="Speed fader") + else: + col.prop(strip, "effect_fader", text="Effect fader") class SEQUENCER_PT_input(SequencerButtonsPanel): @@ -452,9 +454,9 @@ class SEQUENCER_PT_input(SequencerButtonsPanel): split = layout.split(percentage=0.2) col = split.column() - col.itemL(text="Path:") + col.label(text="Path:") col = split.column() - col.itemR(strip, "directory", text="") + col.prop(strip, "directory", text="") # Current element for the filename @@ -462,30 +464,30 @@ class SEQUENCER_PT_input(SequencerButtonsPanel): if elem: split = layout.split(percentage=0.2) col = split.column() - col.itemL(text="File:") + col.label(text="File:") col = split.column() - col.itemR(elem, "filename", text="") # strip.elements[0] could be a fallback + col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback - layout.itemR(strip, "use_translation", text="Image Offset:") + layout.prop(strip, "use_translation", text="Image Offset:") if strip.transform: col = layout.column(align=True) col.active = strip.use_translation - col.itemR(strip.transform, "offset_x", text="X") - col.itemR(strip.transform, "offset_y", text="Y") + col.prop(strip.transform, "offset_x", text="X") + col.prop(strip.transform, "offset_y", text="Y") - layout.itemR(strip, "use_crop", text="Image Crop:") + layout.prop(strip, "use_crop", text="Image Crop:") if strip.crop: col = layout.column(align=True) col.active = strip.use_crop - col.itemR(strip.crop, "top") - col.itemR(strip.crop, "left") - col.itemR(strip.crop, "bottom") - col.itemR(strip.crop, "right") + col.prop(strip.crop, "top") + col.prop(strip.crop, "left") + col.prop(strip.crop, "bottom") + col.prop(strip.crop, "right") col = layout.column(align=True) - col.itemL(text="Trim Duration:") - col.itemR(strip, "animation_start_offset", text="Start") - col.itemR(strip, "animation_end_offset", text="End") + col.label(text="Trim Duration:") + col.prop(strip, "animation_start_offset", text="Start") + col.prop(strip, "animation_end_offset", text="End") class SEQUENCER_PT_sound(SequencerButtonsPanel): @@ -499,7 +501,7 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel): if not strip: return False - return strip.type in ('SOUND', ) + return (strip.type == 'SOUND') def draw(self, context): layout = self.layout @@ -508,18 +510,39 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel): layout.template_ID(strip, "sound", open="sound.open") - layout.itemS() - layout.itemR(strip.sound, "filename", text="") + layout.separator() + layout.prop(strip.sound, "filename", text="") row = layout.row() if strip.sound.packed_file: - row.itemO("sound.unpack", icon='ICON_PACKAGE', text="Unpack") + row.operator("sound.unpack", icon='ICON_PACKAGE', text="Unpack") else: - row.itemO("sound.pack", icon='ICON_UGLYPACKAGE', text="Pack") + row.operator("sound.pack", icon='ICON_UGLYPACKAGE', text="Pack") + + row.prop(strip.sound, "caching") + + layout.prop(strip, "volume") + + +class SEQUENCER_PT_scene(SequencerButtonsPanel): + bl_label = "Scene" + + def poll(self, context): + if context.space_data.display_mode != 'SEQUENCER': + return False - row.itemR(strip.sound, "caching") + strip = act_strip(context) + if not strip: + return False + + return (strip.type == 'SCENE') + + def draw(self, context): + layout = self.layout + + strip = act_strip(context) - layout.itemR(strip, "volume") + layout.template_ID(strip, "scene") class SEQUENCER_PT_filter(SequencerButtonsPanel): @@ -541,35 +564,35 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel): strip = act_strip(context) col = layout.column() - col.itemL(text="Video:") - col.itemR(strip, "strobe") - col.itemR(strip, "de_interlace") + col.label(text="Video:") + col.prop(strip, "strobe") + col.prop(strip, "de_interlace") col = layout.column() - col.itemL(text="Colors:") - col.itemR(strip, "multiply_colors", text="Multiply") - col.itemR(strip, "premultiply") - col.itemR(strip, "convert_float") + col.label(text="Colors:") + col.prop(strip, "multiply_colors", text="Multiply") + col.prop(strip, "premultiply") + col.prop(strip, "convert_float") col = layout.column() - col.itemL(text="Flip:") - col.itemR(strip, "flip_x", text="X") - col.itemR(strip, "flip_y", text="Y") - col.itemR(strip, "reverse_frames", text="Backwards") + col.label(text="Flip:") + col.prop(strip, "flip_x", text="X") + col.prop(strip, "flip_y", text="Y") + col.prop(strip, "reverse_frames", text="Backwards") - layout.itemR(strip, "use_color_balance") + layout.prop(strip, "use_color_balance") if strip.color_balance: # TODO - need to add this somehow row = layout.row() row.active = strip.use_color_balance col = row.column() - col.itemR(strip.color_balance, "lift") - col.itemR(strip.color_balance, "inverse_lift", text="Inverse") + col.prop(strip.color_balance, "lift") + col.prop(strip.color_balance, "inverse_lift", text="Inverse") col = row.column() - col.itemR(strip.color_balance, "gamma") - col.itemR(strip.color_balance, "inverse_gamma", text="Inverse") + col.prop(strip.color_balance, "gamma") + col.prop(strip.color_balance, "inverse_gamma", text="Inverse") col = row.column() - col.itemR(strip.color_balance, "gain") - col.itemR(strip.color_balance, "inverse_gain", text="Inverse") + col.prop(strip.color_balance, "gain") + col.prop(strip.color_balance, "inverse_gain", text="Inverse") class SEQUENCER_PT_proxy(SequencerButtonsPanel): @@ -588,7 +611,7 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel): def draw_header(self, context): strip = act_strip(context) - self.layout.itemR(strip, "use_proxy", text="") + self.layout.prop(strip, "use_proxy", text="") def draw(self, context): layout = self.layout @@ -596,10 +619,10 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel): strip = act_strip(context) flow = layout.column_flow() - flow.itemR(strip, "proxy_custom_directory") + flow.prop(strip, "proxy_custom_directory") if strip.proxy: # TODO - need to add this somehow - flow.itemR(strip.proxy, "directory") - flow.itemR(strip.proxy, "file") + flow.prop(strip.proxy, "directory") + flow.prop(strip.proxy, "file") class SEQUENCER_PT_view(SequencerButtonsPanel_Output): @@ -611,8 +634,8 @@ class SEQUENCER_PT_view(SequencerButtonsPanel_Output): st = context.space_data col = layout.column() - col.itemR(st, "draw_overexposed") # text="Zebra" - col.itemR(st, "draw_safe_margin") + col.prop(st, "draw_overexposed") # text="Zebra" + col.prop(st, "draw_safe_margin") bpy.types.register(SEQUENCER_HT_header) # header/menu classes bpy.types.register(SEQUENCER_MT_view) @@ -626,6 +649,7 @@ bpy.types.register(SEQUENCER_PT_edit) # sequencer panels bpy.types.register(SEQUENCER_PT_effect) bpy.types.register(SEQUENCER_PT_input) bpy.types.register(SEQUENCER_PT_sound) +bpy.types.register(SEQUENCER_PT_scene) bpy.types.register(SEQUENCER_PT_filter) bpy.types.register(SEQUENCER_PT_proxy) diff --git a/release/scripts/ui/space_text.py b/release/scripts/ui/space_text.py index 013ae79b12f..6ea499704fc 100644 --- a/release/scripts/ui/space_text.py +++ b/release/scripts/ui/space_text.py @@ -34,39 +34,39 @@ class TEXT_HT_header(bpy.types.Header): if context.area.show_menus: sub = row.row(align=True) - sub.itemM("TEXT_MT_text") + sub.menu("TEXT_MT_text") if text: - sub.itemM("TEXT_MT_edit") - sub.itemM("TEXT_MT_format") + sub.menu("TEXT_MT_edit") + sub.menu("TEXT_MT_format") if text and text.modified: row = layout.row() # row.color(redalert) - row.itemO("text.resolve_conflict", text="", icon='ICON_HELP') + row.operator("text.resolve_conflict", text="", icon='ICON_HELP') layout.template_ID(st, "text", new="text.new", unlink="text.unlink") row = layout.row(align=True) - row.itemR(st, "line_numbers", text="") - row.itemR(st, "word_wrap", text="") - row.itemR(st, "syntax_highlight", text="") - - row = layout.row() - row.itemO("text.run_script") - row.itemR(text, "use_module") + row.prop(st, "line_numbers", text="") + row.prop(st, "word_wrap", text="") + row.prop(st, "syntax_highlight", text="") if text: row = layout.row() + row.operator("text.run_script") + row.prop(text, "use_module") + + row = layout.row() if text.filename != "": if text.dirty: - row.itemL(text="File: *%s (unsaved)" % text.filename) + row.label(text="File: *%s (unsaved)" % text.filename) else: - row.itemL(text="File: %s" % text.filename) + row.label(text="File: %s" % text.filename) else: if text.library: - row.itemL(text="Text: External") + row.label(text="Text: External") else: - row.itemL(text="Text: Internal") + row.label(text="Text: Internal") class TEXT_PT_properties(bpy.types.Panel): @@ -80,14 +80,14 @@ class TEXT_PT_properties(bpy.types.Panel): st = context.space_data flow = layout.column_flow() - flow.itemR(st, "line_numbers") - flow.itemR(st, "word_wrap") - flow.itemR(st, "syntax_highlight") - flow.itemR(st, "live_edit") + flow.prop(st, "line_numbers") + flow.prop(st, "word_wrap") + flow.prop(st, "syntax_highlight") + flow.prop(st, "live_edit") flow = layout.column_flow() - flow.itemR(st, "font_size") - flow.itemR(st, "tab_width") + flow.prop(st, "font_size") + flow.prop(st, "tab_width") class TEXT_PT_find(bpy.types.Panel): @@ -103,24 +103,24 @@ class TEXT_PT_find(bpy.types.Panel): # find col = layout.column(align=True) row = col.row() - row.itemR(st, "find_text", text="") - row.itemO("text.find_set_selected", text="", icon='ICON_TEXT') - col.itemO("text.find") + row.prop(st, "find_text", text="") + row.operator("text.find_set_selected", text="", icon='ICON_TEXT') + col.operator("text.find") # replace col = layout.column(align=True) row = col.row() - row.itemR(st, "replace_text", text="") - row.itemO("text.replace_set_selected", text="", icon='ICON_TEXT') - col.itemO("text.replace") + row.prop(st, "replace_text", text="") + row.operator("text.replace_set_selected", text="", icon='ICON_TEXT') + col.operator("text.replace") # mark - layout.itemO("text.mark_all") + layout.operator("text.mark_all") # settings row = layout.row() - row.itemR(st, "find_wrap", text="Wrap") - row.itemR(st, "find_all", text="All") + row.prop(st, "find_wrap", text="Wrap") + row.prop(st, "find_all", text="All") class TEXT_MT_text(bpy.types.Menu): @@ -133,32 +133,32 @@ class TEXT_MT_text(bpy.types.Menu): text = st.text layout.column() - layout.itemO("text.new") - layout.itemO("text.open") + layout.operator("text.new") + layout.operator("text.open") if text: - layout.itemO("text.reload") + layout.operator("text.reload") layout.column() - layout.itemO("text.save") - layout.itemO("text.save_as") + layout.operator("text.save") + layout.operator("text.save_as") if text.filename != "": - layout.itemO("text.make_internal") + layout.operator("text.make_internal") layout.column() - layout.itemO("text.run_script") + layout.operator("text.run_script") #ifndef DISABLE_PYTHON # XXX if(BPY_is_pyconstraint(text)) # XXX uiMenuItemO(head, 0, "text.refresh_pyconstraints"); #endif - layout.itemS() + layout.separator() - layout.itemO("text.properties", icon='ICON_MENU_PANEL') + layout.operator("text.properties", icon='ICON_MENU_PANEL') - layout.itemM("TEXT_MT_templates") + layout.menu("TEXT_MT_templates") class TEXT_MT_templates(bpy.types.Menu): @@ -168,7 +168,6 @@ class TEXT_MT_templates(bpy.types.Menu): bl_label = "Script Templates" def draw(self, context): - import os self.path_menu(bpy.utils.script_paths("templates"), "text.open") @@ -178,8 +177,8 @@ class TEXT_MT_edit_view(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.item_enumO("text.move", "type", 'FILE_TOP', text="Top of File") - layout.item_enumO("text.move", "type", 'FILE_BOTTOM', text="Bottom of File") + layout.operator("text.move", text="Top of File").type = 'FILE_TOP' + layout.operator("text.move", text="Bottom of File").type = 'FILE_BOTTOM' class TEXT_MT_edit_select(bpy.types.Menu): @@ -188,8 +187,8 @@ class TEXT_MT_edit_select(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("text.select_all") - layout.itemO("text.select_line") + layout.operator("text.select_all") + layout.operator("text.select_line") class TEXT_MT_edit_markers(bpy.types.Menu): @@ -198,9 +197,9 @@ class TEXT_MT_edit_markers(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("text.markers_clear") - layout.itemO("text.next_marker") - layout.itemO("text.previous_marker") + layout.operator("text.markers_clear") + layout.operator("text.next_marker") + layout.operator("text.previous_marker") class TEXT_MT_format(bpy.types.Menu): @@ -209,17 +208,17 @@ class TEXT_MT_format(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("text.indent") - layout.itemO("text.unindent") + layout.operator("text.indent") + layout.operator("text.unindent") - layout.itemS() + layout.separator() - layout.itemO("text.comment") - layout.itemO("text.uncomment") + layout.operator("text.comment") + layout.operator("text.uncomment") - layout.itemS() + layout.separator() - layout.item_menu_enumO("text.convert_whitespace", "type") + layout.operator_menu_enum("text.convert_whitespace", "type") class TEXT_MT_edit_to3d(bpy.types.Menu): @@ -228,8 +227,8 @@ class TEXT_MT_edit_to3d(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.item_booleanO("text.to_3d_object", "split_lines", False, text="One Object") - layout.item_booleanO("text.to_3d_object", "split_lines", True, text="One Object Per Line") + layout.operator("text.to_3d_object", text="One Object").split_lines = False + layout.operator("text.to_3d_object", text="One Object Per Line").split_lines = True class TEXT_MT_edit(bpy.types.Menu): @@ -241,29 +240,29 @@ class TEXT_MT_edit(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("ed.undo") - layout.itemO("ed.redo") + layout.operator("ed.undo") + layout.operator("ed.redo") - layout.itemS() + layout.separator() - layout.itemO("text.cut") - layout.itemO("text.copy") - layout.itemO("text.paste") + layout.operator("text.cut") + layout.operator("text.copy") + layout.operator("text.paste") - layout.itemS() + layout.separator() - layout.itemM("TEXT_MT_edit_view") - layout.itemM("TEXT_MT_edit_select") - layout.itemM("TEXT_MT_edit_markers") + layout.menu("TEXT_MT_edit_view") + layout.menu("TEXT_MT_edit_select") + layout.menu("TEXT_MT_edit_markers") - layout.itemS() + layout.separator() - layout.itemO("text.jump") - layout.itemO("text.properties", text="Find...") + layout.operator("text.jump") + layout.operator("text.properties", text="Find...") - layout.itemS() + layout.separator() - layout.itemM("TEXT_MT_edit_to3d") + layout.menu("TEXT_MT_edit_to3d") bpy.types.register(TEXT_HT_header) bpy.types.register(TEXT_PT_properties) diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 638656bcee5..938a365ed3a 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -35,51 +35,51 @@ class TIME_HT_header(bpy.types.Header): if context.area.show_menus: sub = row.row(align=True) - sub.itemM("TIME_MT_view") - sub.itemM("TIME_MT_frame") - sub.itemM("TIME_MT_playback") + sub.menu("TIME_MT_view") + sub.menu("TIME_MT_frame") + sub.menu("TIME_MT_playback") - layout.itemR(scene, "use_preview_range", text="PR") + layout.prop(scene, "use_preview_range", text="PR") row = layout.row(align=True) if not scene.use_preview_range: - row.itemR(scene, "start_frame", text="Start") - row.itemR(scene, "end_frame", text="End") + row.prop(scene, "start_frame", text="Start") + row.prop(scene, "end_frame", text="End") else: - row.itemR(scene, "preview_range_start_frame", text="Start") - row.itemR(scene, "preview_range_end_frame", text="End") + row.prop(scene, "preview_range_start_frame", text="Start") + row.prop(scene, "preview_range_end_frame", text="End") - layout.itemR(scene, "current_frame", text="") + layout.prop(scene, "current_frame", text="") - layout.itemS() + layout.separator() row = layout.row(align=True) - row.item_booleanO("screen.frame_jump", "end", False, text="", icon='ICON_REW') - row.item_booleanO("screen.keyframe_jump", "next", False, text="", icon='ICON_PREV_KEYFRAME') + row.operator("screen.frame_jump", text="", icon='ICON_REW').end = False + row.operator("screen.keyframe_jump", text="", icon='ICON_PREV_KEYFRAME').next = False if not screen.animation_playing: - row.item_booleanO("screen.animation_play", "reverse", True, text="", icon='ICON_PLAY_REVERSE') - row.itemO("screen.animation_play", text="", icon='ICON_PLAY') + row.operator("screen.animation_play", text="", icon='ICON_PLAY_REVERSE').reverse = True + row.operator("screen.animation_play", text="", icon='ICON_PLAY') else: sub = row.row() sub.scale_x = 2.0 - sub.itemO("screen.animation_play", text="", icon='ICON_PAUSE') - row.item_booleanO("screen.keyframe_jump", "next", True, text="", icon='ICON_NEXT_KEYFRAME') - row.item_booleanO("screen.frame_jump", "end", True, text="", icon='ICON_FF') + sub.operator("screen.animation_play", text="", icon='ICON_PAUSE') + row.operator("screen.keyframe_jump", text="", icon='ICON_NEXT_KEYFRAME').next = True + row.operator("screen.frame_jump", text="", icon='ICON_FF').end = True row = layout.row(align=True) - row.itemR(tools, "enable_auto_key", text="", toggle=True, icon='ICON_REC') + row.prop(tools, "enable_auto_key", text="", toggle=True, icon='ICON_REC') if screen.animation_playing and tools.enable_auto_key: subsub = row.row() - subsub.itemR(tools, "record_with_nla", toggle=True) + subsub.prop(tools, "record_with_nla", toggle=True) - layout.itemR(scene, "sync_audio", text="", toggle=True, icon='ICON_SPEAKER') + layout.prop(scene, "sync_audio", text="Realtime", toggle=True, icon='ICON_SPEAKER') - layout.itemS() + layout.separator() row = layout.row(align=True) - row.item_pointerR(scene, "active_keying_set", scene, "keying_sets", text="") - row.itemO("anim.insert_keyframe", text="", icon='ICON_KEY_HLT') - row.itemO("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT') + row.prop_object(scene, "active_keying_set", scene, "keying_sets", text="") + row.operator("anim.keyframe_insert", text="", icon='ICON_KEY_HLT') + row.operator("anim.keyframe_delete", text="", icon='ICON_KEY_DEHLT') class TIME_MT_view(bpy.types.Menu): @@ -90,11 +90,11 @@ class TIME_MT_view(bpy.types.Menu): st = context.space_data - layout.itemO("anim.time_toggle") + layout.operator("anim.time_toggle") - layout.itemS() + layout.separator() - layout.itemR(st, "only_selected") + layout.prop(st, "only_selected") class TIME_MT_frame(bpy.types.Menu): @@ -104,22 +104,22 @@ class TIME_MT_frame(bpy.types.Menu): layout = self.layout # tools = context.tool_settings - layout.itemO("marker.add", text="Add Marker") - layout.itemO("marker.duplicate", text="Duplicate Marker") - layout.itemO("marker.move", text="Grab/Move Marker") - layout.itemO("marker.delete", text="Delete Marker") - layout.itemL(text="ToDo: Name Marker") + layout.operator("marker.add", text="Add Marker") + layout.operator("marker.duplicate", text="Duplicate Marker") + layout.operator("marker.move", text="Grab/Move Marker") + layout.operator("marker.delete", text="Delete Marker") + layout.label(text="ToDo: Name Marker") - layout.itemS() + layout.separator() - layout.itemO("time.start_frame_set") - layout.itemO("time.end_frame_set") + layout.operator("time.start_frame_set") + layout.operator("time.end_frame_set") - layout.itemS() + layout.separator() sub = layout.row() #sub.active = tools.enable_auto_key - sub.itemM("TIME_MT_autokey") + sub.menu("TIME_MT_autokey") class TIME_MT_playback(bpy.types.Menu): @@ -131,23 +131,23 @@ class TIME_MT_playback(bpy.types.Menu): st = context.space_data scene = context.scene - layout.itemR(st, "play_top_left") - layout.itemR(st, "play_all_3d") - layout.itemR(st, "play_anim") - layout.itemR(st, "play_buttons") - layout.itemR(st, "play_image") - layout.itemR(st, "play_sequencer") - layout.itemR(st, "play_nodes") + layout.prop(st, "play_top_left") + layout.prop(st, "play_all_3d") + layout.prop(st, "play_anim") + layout.prop(st, "play_buttons") + layout.prop(st, "play_image") + layout.prop(st, "play_sequencer") + layout.prop(st, "play_nodes") - layout.itemS() + layout.separator() - layout.itemR(st, "continue_physics") + layout.prop(st, "continue_physics") - layout.itemS() + layout.separator() - layout.itemR(scene, "sync_audio", icon='ICON_SPEAKER') - layout.itemR(scene, "mute_audio") - layout.itemR(scene, "scrub_audio") + layout.prop(scene, "sync_audio", text="Realtime Playback", icon='ICON_SPEAKER') + layout.prop(scene, "mute_audio") + layout.prop(scene, "scrub_audio") class TIME_MT_autokey(bpy.types.Menu): @@ -159,8 +159,8 @@ class TIME_MT_autokey(bpy.types.Menu): layout.active = tools.enable_auto_key - layout.item_enumR(tools, "autokey_mode", 'ADD_REPLACE_KEYS') - layout.item_enumR(tools, "autokey_mode", 'REPLACE_KEYS') + layout.prop_enum(tools, "autokey_mode", 'ADD_REPLACE_KEYS') + layout.prop_enum(tools, "autokey_mode", 'REPLACE_KEYS') bpy.types.register(TIME_HT_header) bpy.types.register(TIME_MT_view) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 54e03681dc1..32a9f0d2534 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -30,11 +30,11 @@ class USERPREF_HT_header(bpy.types.Header): userpref = context.user_preferences layout.operator_context = 'EXEC_AREA' - layout.itemO("wm.save_homefile", text="Save As Default") + layout.operator("wm.save_homefile", text="Save As Default") if userpref.active_section == 'INPUT': layout.operator_context = 'INVOKE_DEFAULT' - layout.item_stringO("wm.keyconfig_export", "path", "keymap.py", "Export Key Configuration...") + layout.operator("wm.keyconfig_export", "Export Key Configuration...").path = "keymap.py" class USERPREF_MT_view(bpy.types.Menu): @@ -55,7 +55,7 @@ class USERPREF_PT_tabs(bpy.types.Panel): userpref = context.user_preferences - layout.itemR(userpref, "active_section", expand=True) + layout.prop(userpref, "active_section", expand=True) class USERPREF_PT_interface(bpy.types.Panel): @@ -80,68 +80,68 @@ class USERPREF_PT_interface(bpy.types.Panel): sub = col.split(percentage=0.85) sub1 = sub.column() - sub1.itemL(text="Display:") - sub1.itemR(view, "tooltips") - sub1.itemR(view, "display_object_info", text="Object Info") - sub1.itemR(view, "use_large_cursors") - sub1.itemR(view, "show_view_name", text="View Name") - sub1.itemR(view, "show_playback_fps", text="Playback FPS") - sub1.itemR(view, "global_scene") - sub1.itemR(view, "pin_floating_panels") - sub1.itemR(view, "object_center_size") - sub1.itemS() - sub1.itemS() - sub1.itemS() - sub1.itemR(view, "show_mini_axis", text="Display Mini Axis") + sub1.label(text="Display:") + sub1.prop(view, "tooltips") + sub1.prop(view, "display_object_info", text="Object Info") + sub1.prop(view, "use_large_cursors") + sub1.prop(view, "show_view_name", text="View Name") + sub1.prop(view, "show_playback_fps", text="Playback FPS") + sub1.prop(view, "global_scene") + sub1.prop(view, "pin_floating_panels") + sub1.prop(view, "object_center_size") + sub1.separator() + sub1.separator() + sub1.separator() + sub1.prop(view, "show_mini_axis", text="Display Mini Axis") sub2 = sub1.column() sub2.enabled = view.show_mini_axis - sub2.itemR(view, "mini_axis_size", text="Size") - sub2.itemR(view, "mini_axis_brightness", text="Brightness") + sub2.prop(view, "mini_axis_size", text="Size") + sub2.prop(view, "mini_axis_brightness", text="Brightness") col = split.column() sub = col.split(percentage=0.85) sub1 = sub.column() - sub1.itemL(text="View Manipulation:") - sub1.itemR(view, "auto_depth") - sub1.itemR(view, "global_pivot") - sub1.itemR(view, "zoom_to_mouse") - sub1.itemR(view, "rotate_around_selection") - sub1.itemS() + sub1.label(text="View Manipulation:") + sub1.prop(view, "auto_depth") + sub1.prop(view, "global_pivot") + sub1.prop(view, "zoom_to_mouse") + sub1.prop(view, "rotate_around_selection") + sub1.separator() - sub1.itemR(view, "auto_perspective") - sub1.itemR(view, "smooth_view") - sub1.itemR(view, "rotation_angle") + sub1.prop(view, "auto_perspective") + sub1.prop(view, "smooth_view") + sub1.prop(view, "rotation_angle") col = split.column() sub = col.split(percentage=0.85) sub1 = sub.column() #Toolbox doesn't exist yet -# sub1.itemL(text="Toolbox:") -# sub1.itemR(view, "use_column_layout") -# sub1.itemL(text="Open Toolbox Delay:") -# sub1.itemR(view, "open_left_mouse_delay", text="Hold LMB") -# sub1.itemR(view, "open_right_mouse_delay", text="Hold RMB") +# sub1.label(text="Toolbox:") +# sub1.prop(view, "use_column_layout") +# sub1.label(text="Open Toolbox Delay:") +# sub1.prop(view, "open_left_mouse_delay", text="Hold LMB") +# sub1.prop(view, "open_right_mouse_delay", text="Hold RMB") #manipulator - sub1.itemR(view, "use_manipulator") + sub1.prop(view, "use_manipulator") sub2 = sub1.column() sub2.enabled = view.use_manipulator - sub2.itemR(view, "manipulator_size", text="Size") - sub2.itemR(view, "manipulator_handle_size", text="Handle Size") - sub2.itemR(view, "manipulator_hotspot", text="Hotspot") + sub2.prop(view, "manipulator_size", text="Size") + sub2.prop(view, "manipulator_handle_size", text="Handle Size") + sub2.prop(view, "manipulator_hotspot", text="Hotspot") - sub1.itemS() - sub1.itemS() - sub1.itemS() + sub1.separator() + sub1.separator() + sub1.separator() - sub1.itemL(text="Menus:") - sub1.itemR(view, "open_mouse_over") - sub1.itemL(text="Menu Open Delay:") - sub1.itemR(view, "open_toplevel_delay", text="Top Level") - sub1.itemR(view, "open_sublevel_delay", text="Sub Level") + sub1.label(text="Menus:") + sub1.prop(view, "open_mouse_over") + sub1.label(text="Menu Open Delay:") + sub1.prop(view, "open_toplevel_delay", text="Top Level") + sub1.prop(view, "open_sublevel_delay", text="Sub Level") class USERPREF_PT_edit(bpy.types.Panel): @@ -166,87 +166,87 @@ class USERPREF_PT_edit(bpy.types.Panel): sub = col.split(percentage=0.85) sub1 = sub.column() - sub1.itemL(text="Link Materials To:") - sub1.row().itemR(edit, "material_link", expand=True) - sub1.itemS() - sub1.itemS() - sub1.itemS() - sub1.itemL(text="New Objects:") - sub1.itemR(edit, "enter_edit_mode") - sub1.itemL(text="Align To:") - sub1.row().itemR(edit, "object_align", expand=True) - sub1.itemS() - sub1.itemS() - sub1.itemS() - - sub1.itemL(text="Undo:") - sub1.itemR(edit, "global_undo") - sub1.itemR(edit, "undo_steps", text="Steps") - sub1.itemR(edit, "undo_memory_limit", text="Memory Limit") + sub1.label(text="Link Materials To:") + sub1.row().prop(edit, "material_link", expand=True) + sub1.separator() + sub1.separator() + sub1.separator() + sub1.label(text="New Objects:") + sub1.prop(edit, "enter_edit_mode") + sub1.label(text="Align To:") + sub1.row().prop(edit, "object_align", expand=True) + sub1.separator() + sub1.separator() + sub1.separator() + + sub1.label(text="Undo:") + sub1.prop(edit, "global_undo") + sub1.prop(edit, "undo_steps", text="Steps") + sub1.prop(edit, "undo_memory_limit", text="Memory Limit") col = split.column() sub = col.split(percentage=0.85) sub1 = sub.column() - sub1.itemL(text="Snap:") - sub1.itemR(edit, "snap_translate", text="Translate") - sub1.itemR(edit, "snap_rotate", text="Rotate") - sub1.itemR(edit, "snap_scale", text="Scale") - sub1.itemS() - sub1.itemS() - sub1.itemS() - sub1.itemL(text="Grease Pencil:") - sub1.itemR(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance") - sub1.itemR(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance") - # sub1.itemR(edit, "grease_pencil_simplify_stroke", text="Simplify Stroke") - sub1.itemR(edit, "grease_pencil_eraser_radius", text="Eraser Radius") - sub1.itemR(edit, "grease_pencil_smooth_stroke", text="Smooth Stroke") + sub1.label(text="Snap:") + sub1.prop(edit, "snap_translate", text="Translate") + sub1.prop(edit, "snap_rotate", text="Rotate") + sub1.prop(edit, "snap_scale", text="Scale") + sub1.separator() + sub1.separator() + sub1.separator() + sub1.label(text="Grease Pencil:") + sub1.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance") + sub1.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance") + # sub1.prop(edit, "grease_pencil_simplify_stroke", text="Simplify Stroke") + sub1.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius") + sub1.prop(edit, "grease_pencil_smooth_stroke", text="Smooth Stroke") col = split.column() sub = col.split(percentage=0.85) sub1 = sub.column() - sub1.itemL(text="Keyframing:") - sub1.itemR(edit, "use_visual_keying") - sub1.itemR(edit, "keyframe_insert_needed", text="Only Insert Needed") - sub1.itemS() - sub1.itemL(text="New F-Curve Defaults:") - sub1.itemR(edit, "new_interpolation_type", text="Interpolation") - sub1.itemS() - sub1.itemR(edit, "auto_keying_enable", text="Auto Keyframing:") + sub1.label(text="Keyframing:") + sub1.prop(edit, "use_visual_keying") + sub1.prop(edit, "keyframe_insert_needed", text="Only Insert Needed") + sub1.separator() + sub1.label(text="New F-Curve Defaults:") + sub1.prop(edit, "new_interpolation_type", text="Interpolation") + sub1.separator() + sub1.prop(edit, "auto_keying_enable", text="Auto Keyframing:") sub2 = sub1.column() sub2.active = edit.auto_keying_enable - sub2.itemR(edit, "auto_keyframe_insert_keyingset", text="Only Insert for Keying Set") - sub2.itemR(edit, "auto_keyframe_insert_available", text="Only Insert Available") + sub2.prop(edit, "auto_keyframe_insert_keyingset", text="Only Insert for Keying Set") + sub2.prop(edit, "auto_keyframe_insert_available", text="Only Insert Available") - sub1.itemS() - sub1.itemS() - sub1.itemS() + sub1.separator() + sub1.separator() + sub1.separator() - sub1.itemL(text="Transform:") - sub1.itemR(edit, "drag_immediately") + sub1.label(text="Transform:") + sub1.prop(edit, "drag_immediately") - sub1.itemS() - sub1.itemS() - sub1.itemS() + sub1.separator() + sub1.separator() + sub1.separator() col = split.column() sub = col.split(percentage=0.85) sub1 = sub.column() - sub1.itemL(text="Duplicate Data:") - sub1.itemR(edit, "duplicate_mesh", text="Mesh") - sub1.itemR(edit, "duplicate_surface", text="Surface") - sub1.itemR(edit, "duplicate_curve", text="Curve") - sub1.itemR(edit, "duplicate_text", text="Text") - sub1.itemR(edit, "duplicate_metaball", text="Metaball") - sub1.itemR(edit, "duplicate_armature", text="Armature") - sub1.itemR(edit, "duplicate_lamp", text="Lamp") - sub1.itemR(edit, "duplicate_material", text="Material") - sub1.itemR(edit, "duplicate_texture", text="Texture") - sub1.itemR(edit, "duplicate_ipo", text="F-Curve") - sub1.itemR(edit, "duplicate_action", text="Action") - sub1.itemR(edit, "duplicate_particle", text="Particle") + sub1.label(text="Duplicate Data:") + sub1.prop(edit, "duplicate_mesh", text="Mesh") + sub1.prop(edit, "duplicate_surface", text="Surface") + sub1.prop(edit, "duplicate_curve", text="Curve") + sub1.prop(edit, "duplicate_text", text="Text") + sub1.prop(edit, "duplicate_metaball", text="Metaball") + sub1.prop(edit, "duplicate_armature", text="Armature") + sub1.prop(edit, "duplicate_lamp", text="Lamp") + sub1.prop(edit, "duplicate_material", text="Material") + sub1.prop(edit, "duplicate_texture", text="Texture") + sub1.prop(edit, "duplicate_ipo", text="F-Curve") + sub1.prop(edit, "duplicate_action", text="Action") + sub1.prop(edit, "duplicate_particle", text="Particle") class USERPREF_PT_system(bpy.types.Panel): @@ -264,6 +264,9 @@ class USERPREF_PT_system(bpy.types.Panel): userpref = context.user_preferences system = userpref.system + lamp0 = system.solid_lights[0] + lamp1 = system.solid_lights[1] + lamp2 = system.solid_lights[2] split = layout.split() @@ -271,75 +274,102 @@ class USERPREF_PT_system(bpy.types.Panel): sub = col.split(percentage=0.9) sub1 = sub.column() - sub1.itemL(text="General:") - sub1.itemR(system, "dpi") - sub1.itemR(system, "frame_server_port") - sub1.itemR(system, "scrollback", text="Console Scrollback") - sub1.itemR(system, "emulate_numpad") - sub1.itemR(system, "auto_run_python_scripts") - - sub1.itemS() - sub1.itemS() - sub1.itemS() - - sub1.itemL(text="Sound:") - sub1.row().itemR(system, "audio_device", expand=True) + sub1.label(text="General:") + sub1.prop(system, "dpi") + sub1.prop(system, "frame_server_port") + sub1.prop(system, "scrollback", text="Console Scrollback") + sub1.prop(system, "auto_run_python_scripts") + + sub1.separator() + sub1.separator() + sub1.separator() + + sub1.label(text="Sound:") + sub1.row().prop(system, "audio_device", expand=True) sub2 = sub1.column() sub2.active = system.audio_device != 'NONE' - sub2.itemR(system, "enable_all_codecs") - sub2.itemR(system, "game_sound") - sub2.itemR(system, "audio_channels", text="Channels") - sub2.itemR(system, "audio_mixing_buffer", text="Mixing Buffer") - sub2.itemR(system, "audio_sample_rate", text="Sample Rate") - sub2.itemR(system, "audio_sample_format", text="Sample Format") + sub2.prop(system, "enable_all_codecs") + sub2.prop(system, "game_sound") + sub2.prop(system, "audio_channels", text="Channels") + sub2.prop(system, "audio_mixing_buffer", text="Mixing Buffer") + sub2.prop(system, "audio_sample_rate", text="Sample Rate") + sub2.prop(system, "audio_sample_format", text="Sample Format") col = split.column() sub = col.split(percentage=0.9) sub1 = sub .column() - sub1.itemL(text="Weight Colors:") - sub1.itemR(system, "use_weight_color_range", text="Use Custom Range") + sub1.label(text="Weight Colors:") + sub1.prop(system, "use_weight_color_range", text="Use Custom Range") sub2 = sub1.column() sub2.active = system.use_weight_color_range sub2.template_color_ramp(system, "weight_color_range", expand=True) - sub1.itemS() - sub1.itemS() - sub1.itemS() + sub1.separator() + sub1.separator() + sub1.separator() - sub1.itemR(system, "language") - sub1.itemL(text="Translate:") - sub1.itemR(system, "translate_tooltips", text="Tooltips") - sub1.itemR(system, "translate_buttons", text="Labels") - sub1.itemR(system, "translate_toolbox", text="Toolbox") + sub1.prop(system, "language") + sub1.label(text="Translate:") + sub1.prop(system, "translate_tooltips", text="Tooltips") + sub1.prop(system, "translate_buttons", text="Labels") + sub1.prop(system, "translate_toolbox", text="Toolbox") - sub1.itemS() + sub1.separator() - sub1.itemR(system, "use_textured_fonts") + sub1.prop(system, "use_textured_fonts") col = split.column() sub = col.split(percentage=0.9) sub1 = sub.column() - sub1.itemL(text="OpenGL:") - sub1.itemR(system, "clip_alpha", slider=True) - sub1.itemR(system, "use_mipmaps") - sub1.itemR(system, "use_vbos") - sub1.itemL(text="Window Draw Method:") - sub1.row().itemR(system, "window_draw_method", expand=True) - sub1.itemL(text="Textures:") - sub1.itemR(system, "gl_texture_limit", text="Limit Size") - sub1.itemR(system, "texture_time_out", text="Time Out") - sub1.itemR(system, "texture_collection_rate", text="Collection Rate") + sub1.label(text="Solid OpenGL lights:") - sub1.itemS() - sub1.itemS() - sub1.itemS() + sub2 = sub1.split() - sub1.itemL(text="Sequencer:") - sub1.itemR(system, "prefetch_frames") - sub1.itemR(system, "memory_cache_limit") + col = sub2.column() + col.prop(lamp0, "enabled") + sub = col.column() + sub.active = lamp0.enabled + sub.prop(lamp0, "diffuse_color") + sub.prop(lamp0, "specular_color") + sub.prop(lamp0, "direction") + + col = sub2.column() + col.prop(lamp1, "enabled") + sub = col.column() + sub.active = lamp1.enabled + sub.prop(lamp1, "diffuse_color") + sub.prop(lamp1, "specular_color") + sub.prop(lamp1, "direction") + + col = sub2.column() + col.prop(lamp2, "enabled") + sub = col.column() + sub.active = lamp2.enabled + sub.prop(lamp2, "diffuse_color") + sub.prop(lamp2, "specular_color") + sub.prop(lamp2, "direction") + + sub1.label(text="OpenGL:") + sub1.prop(system, "clip_alpha", slider=True) + sub1.prop(system, "use_mipmaps") + sub1.prop(system, "use_vbos") + sub1.label(text="Window Draw Method:") + sub1.row().prop(system, "window_draw_method", expand=True) + sub1.label(text="Textures:") + sub1.prop(system, "gl_texture_limit", text="Limit Size") + sub1.prop(system, "texture_time_out", text="Time Out") + sub1.prop(system, "texture_collection_rate", text="Collection Rate") + + sub1.separator() + sub1.separator() + sub1.separator() + + sub1.label(text="Sequencer:") + sub1.prop(system, "prefetch_frames") + sub1.prop(system, "memory_cache_limit") class USERPREF_PT_theme(bpy.types.Panel): @@ -360,9 +390,9 @@ class USERPREF_PT_theme(bpy.types.Panel): split = layout.split(percentage=0.33) - split.itemR(theme, "active_theme", text="") + split.prop(theme, "active_theme", text="") - layout.itemS() + layout.separator() split = layout.split() @@ -370,634 +400,634 @@ class USERPREF_PT_theme(bpy.types.Panel): v3d = theme.view_3d col = split.column() - col.itemR(v3d, "back") - col.itemR(v3d, "button") - col.itemR(v3d, "button_title") - col.itemR(v3d, "button_text") - col.itemR(v3d, "header") + col.prop(v3d, "back") + col.prop(v3d, "button") + col.prop(v3d, "button_title") + col.prop(v3d, "button_text") + col.prop(v3d, "header") col = split.column() - col.itemR(v3d, "grid") - col.itemR(v3d, "wire") - col.itemR(v3d, "lamp", slider=True) - col.itemR(v3d, "editmesh_active", slider=True) + col.prop(v3d, "grid") + col.prop(v3d, "wire") + col.prop(v3d, "lamp", slider=True) + col.prop(v3d, "editmesh_active", slider=True) col = split.column() - col.itemR(v3d, "object_selected") - col.itemR(v3d, "object_active") - col.itemR(v3d, "object_grouped") - col.itemR(v3d, "object_grouped_active") - col.itemR(v3d, "transform") + col.prop(v3d, "object_selected") + col.prop(v3d, "object_active") + col.prop(v3d, "object_grouped") + col.prop(v3d, "object_grouped_active") + col.prop(v3d, "transform") col = split.column() - col.itemR(v3d, "vertex") - col.itemR(v3d, "face", slider=True) - col.itemR(v3d, "normal") - col.itemR(v3d, "bone_solid") - col.itemR(v3d, "bone_pose") + col.prop(v3d, "vertex") + col.prop(v3d, "face", slider=True) + col.prop(v3d, "normal") + col.prop(v3d, "bone_solid") + col.prop(v3d, "bone_pose") -# col.itemR(v3d, "edge") Doesn't seem to work +# col.prop(v3d, "edge") Doesn't seem to work elif theme.active_theme == 'USER_INTERFACE': ui = theme.user_interface.wcol_regular - layout.itemL(text="Regular:") + layout.label(text="Regular:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") - layout.itemS() + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") + layout.separator() ui = theme.user_interface.wcol_tool - layout.itemL(text="Tool:") + layout.label(text="Tool:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_radio - layout.itemL(text="Radio Buttons:") + layout.label(text="Radio Buttons:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_text - layout.itemL(text="Text:") + layout.label(text="Text:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_option - layout.itemL(text="Option:") + layout.label(text="Option:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_toggle - layout.itemL(text="Toggle:") + layout.label(text="Toggle:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_num - layout.itemL(text="Number Field:") + layout.label(text="Number Field:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_numslider - layout.itemL(text="Value Slider:") + layout.label(text="Value Slider:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_box - layout.itemL(text="Box:") + layout.label(text="Box:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_menu - layout.itemL(text="Menu:") + layout.label(text="Menu:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_pulldown - layout.itemL(text="Pulldown:") + layout.label(text="Pulldown:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_menu_back - layout.itemL(text="Menu Back:") + layout.label(text="Menu Back:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_menu_item - layout.itemL(text="Menu Item:") + layout.label(text="Menu Item:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_scroll - layout.itemL(text="Scroll Bar:") + layout.label(text="Scroll Bar:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_list_item - layout.itemL(text="List Item:") + layout.label(text="List Item:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "outline") - sub1.itemR(ui, "item", slider=True) + sub1.prop(ui, "outline") + sub1.prop(ui, "item", slider=True) sub1 = sub.column() - sub1.itemR(ui, "inner", slider=True) - sub1.itemR(ui, "inner_sel", slider=True) + sub1.prop(ui, "inner", slider=True) + sub1.prop(ui, "inner_sel", slider=True) sub1 = sub.column() - sub1.itemR(ui, "text") - sub1.itemR(ui, "text_sel") + sub1.prop(ui, "text") + sub1.prop(ui, "text_sel") sub1 = sub.column() - sub1.itemR(ui, "shaded") + sub1.prop(ui, "shaded") sub2 = sub1.column(align=True) sub2.active = ui.shaded - sub2.itemR(ui, "shadetop") - sub2.itemR(ui, "shadedown") + sub2.prop(ui, "shadetop") + sub2.prop(ui, "shadedown") ui = theme.user_interface.wcol_state - layout.itemL(text="State:") + layout.label(text="State:") sub = layout.row() sub1 = sub.column() - sub1.itemR(ui, "inner_anim") - sub1.itemR(ui, "inner_anim_sel") + sub1.prop(ui, "inner_anim") + sub1.prop(ui, "inner_anim_sel") sub1 = sub.column() - sub1.itemR(ui, "inner_driven") - sub1.itemR(ui, "inner_driven_sel") + sub1.prop(ui, "inner_driven") + sub1.prop(ui, "inner_driven_sel") sub1 = sub.column() - sub1.itemR(ui, "inner_key") - sub1.itemR(ui, "inner_key_sel") + sub1.prop(ui, "inner_key") + sub1.prop(ui, "inner_key_sel") sub1 = sub.column() - sub1.itemR(ui, "blend") + sub1.prop(ui, "blend") ui = theme.user_interface - layout.itemS() + layout.separator() sub = layout.row() - sub.itemR(ui, "icon_file") + sub.prop(ui, "icon_file") - layout.itemS() - layout.itemS() + layout.separator() + layout.separator() elif theme.active_theme == 'GRAPH_EDITOR': graph = theme.graph_editor col = split.column() - col.itemR(graph, "back") - col.itemR(graph, "button") - col.itemR(graph, "button_title") - col.itemR(graph, "button_text") + col.prop(graph, "back") + col.prop(graph, "button") + col.prop(graph, "button_title") + col.prop(graph, "button_text") col = split.column() - col.itemR(graph, "header") - col.itemR(graph, "grid") - col.itemR(graph, "list") - col.itemR(graph, "channel_group") + col.prop(graph, "header") + col.prop(graph, "grid") + col.prop(graph, "list") + col.prop(graph, "channel_group") col = split.column() - col.itemR(graph, "active_channels_group") - col.itemR(graph, "dopesheet_channel") - col.itemR(graph, "dopesheet_subchannel") - col.itemR(graph, "vertex") + col.prop(graph, "active_channels_group") + col.prop(graph, "dopesheet_channel") + col.prop(graph, "dopesheet_subchannel") + col.prop(graph, "vertex") col = split.column() - col.itemR(graph, "current_frame") - col.itemR(graph, "handle_vertex") - col.itemR(graph, "handle_vertex_select") - col.itemS() - col.itemR(graph, "handle_vertex_size") + col.prop(graph, "current_frame") + col.prop(graph, "handle_vertex") + col.prop(graph, "handle_vertex_select") + col.separator() + col.prop(graph, "handle_vertex_size") elif theme.active_theme == 'FILE_BROWSER': file_browse = theme.file_browser col = split.column() - col.itemR(file_browse, "back") - col.itemR(file_browse, "text") - col.itemR(file_browse, "text_hi") + col.prop(file_browse, "back") + col.prop(file_browse, "text") + col.prop(file_browse, "text_hi") col = split.column() - col.itemR(file_browse, "header") - col.itemR(file_browse, "list") + col.prop(file_browse, "header") + col.prop(file_browse, "list") col = split.column() - col.itemR(file_browse, "selected_file") - col.itemR(file_browse, "tiles") + col.prop(file_browse, "selected_file") + col.prop(file_browse, "tiles") col = split.column() - col.itemR(file_browse, "active_file") - col.itemR(file_browse, "active_file_text") + col.prop(file_browse, "active_file") + col.prop(file_browse, "active_file_text") elif theme.active_theme == 'NLA_EDITOR': nla = theme.nla_editor col = split.column() - col.itemR(nla, "back") - col.itemR(nla, "button") - col.itemR(nla, "button_title") + col.prop(nla, "back") + col.prop(nla, "button") + col.prop(nla, "button_title") col = split.column() - col.itemR(nla, "button_text") - col.itemR(nla, "text") - col.itemR(nla, "header") + col.prop(nla, "button_text") + col.prop(nla, "text") + col.prop(nla, "header") col = split.column() - col.itemR(nla, "grid") - col.itemR(nla, "bars") - col.itemR(nla, "bars_selected") + col.prop(nla, "grid") + col.prop(nla, "bars") + col.prop(nla, "bars_selected") col = split.column() - col.itemR(nla, "strips") - col.itemR(nla, "strips_selected") - col.itemR(nla, "current_frame") + col.prop(nla, "strips") + col.prop(nla, "strips_selected") + col.prop(nla, "current_frame") elif theme.active_theme == 'DOPESHEET_EDITOR': dope = theme.dopesheet_editor col = split.column() - col.itemR(dope, "back") - col.itemR(dope, "list") - col.itemR(dope, "text") - col.itemR(dope, "header") + col.prop(dope, "back") + col.prop(dope, "list") + col.prop(dope, "text") + col.prop(dope, "header") col = split.column() - col.itemR(dope, "grid") - col.itemR(dope, "channels") - col.itemR(dope, "channels_selected") - col.itemR(dope, "channel_group") + col.prop(dope, "grid") + col.prop(dope, "channels") + col.prop(dope, "channels_selected") + col.prop(dope, "channel_group") col = split.column() - col.itemR(dope, "active_channels_group") - col.itemR(dope, "long_key") - col.itemR(dope, "long_key_selected") + col.prop(dope, "active_channels_group") + col.prop(dope, "long_key") + col.prop(dope, "long_key_selected") col = split.column() - col.itemR(dope, "current_frame") - col.itemR(dope, "dopesheet_channel") - col.itemR(dope, "dopesheet_subchannel") + col.prop(dope, "current_frame") + col.prop(dope, "dopesheet_channel") + col.prop(dope, "dopesheet_subchannel") elif theme.active_theme == 'IMAGE_EDITOR': image = theme.image_editor col = split.column() - col.itemR(image, "back") - col.itemR(image, "button") + col.prop(image, "back") + col.prop(image, "button") col = split.column() - col.itemR(image, "button_title") - col.itemR(image, "button_text") + col.prop(image, "button_title") + col.prop(image, "button_text") col = split.column() - col.itemR(image, "header") + col.prop(image, "header") col = split.column() - col.itemR(image, "editmesh_active", slider=True) + col.prop(image, "editmesh_active", slider=True) elif theme.active_theme == 'SEQUENCE_EDITOR': seq = theme.sequence_editor col = split.column() - col.itemR(seq, "back") - col.itemR(seq, "button") - col.itemR(seq, "button_title") - col.itemR(seq, "button_text") - col.itemR(seq, "text") + col.prop(seq, "back") + col.prop(seq, "button") + col.prop(seq, "button_title") + col.prop(seq, "button_text") + col.prop(seq, "text") col = split.column() - col.itemR(seq, "header") - col.itemR(seq, "grid") - col.itemR(seq, "movie_strip") - col.itemR(seq, "image_strip") - col.itemR(seq, "scene_strip") + col.prop(seq, "header") + col.prop(seq, "grid") + col.prop(seq, "movie_strip") + col.prop(seq, "image_strip") + col.prop(seq, "scene_strip") col = split.column() - col.itemR(seq, "audio_strip") - col.itemR(seq, "effect_strip") - col.itemR(seq, "plugin_strip") - col.itemR(seq, "transition_strip") + col.prop(seq, "audio_strip") + col.prop(seq, "effect_strip") + col.prop(seq, "plugin_strip") + col.prop(seq, "transition_strip") col = split.column() - col.itemR(seq, "meta_strip") - col.itemR(seq, "current_frame") - col.itemR(seq, "keyframe") - col.itemR(seq, "draw_action") + col.prop(seq, "meta_strip") + col.prop(seq, "current_frame") + col.prop(seq, "keyframe") + col.prop(seq, "draw_action") elif theme.active_theme == 'PROPERTIES': prop = theme.properties col = split.column() - col.itemR(prop, "back") + col.prop(prop, "back") col = split.column() - col.itemR(prop, "title") + col.prop(prop, "title") col = split.column() - col.itemR(prop, "text") + col.prop(prop, "text") col = split.column() - col.itemR(prop, "header") + col.prop(prop, "header") elif theme.active_theme == 'TEXT_EDITOR': text = theme.text_editor col = split.column() - col.itemR(text, "back") - col.itemR(text, "button") - col.itemR(text, "button_title") - col.itemR(text, "button_text") + col.prop(text, "back") + col.prop(text, "button") + col.prop(text, "button_title") + col.prop(text, "button_text") col = split.column() - col.itemR(text, "text") - col.itemR(text, "text_hi") - col.itemR(text, "header") - col.itemR(text, "line_numbers_background") + col.prop(text, "text") + col.prop(text, "text_hi") + col.prop(text, "header") + col.prop(text, "line_numbers_background") col = split.column() - col.itemR(text, "selected_text") - col.itemR(text, "cursor") - col.itemR(text, "syntax_builtin") - col.itemR(text, "syntax_special") + col.prop(text, "selected_text") + col.prop(text, "cursor") + col.prop(text, "syntax_builtin") + col.prop(text, "syntax_special") col = split.column() - col.itemR(text, "syntax_comment") - col.itemR(text, "syntax_string") - col.itemR(text, "syntax_numbers") + col.prop(text, "syntax_comment") + col.prop(text, "syntax_string") + col.prop(text, "syntax_numbers") elif theme.active_theme == 'TIMELINE': time = theme.timeline col = split.column() - col.itemR(time, "back") - col.itemR(time, "text") + col.prop(time, "back") + col.prop(time, "text") col = split.column() - col.itemR(time, "header") + col.prop(time, "header") col = split.column() - col.itemR(time, "grid") + col.prop(time, "grid") col = split.column() - col.itemR(time, "current_frame") + col.prop(time, "current_frame") elif theme.active_theme == 'NODE_EDITOR': node = theme.node_editor col = split.column() - col.itemR(node, "back") - col.itemR(node, "button") - col.itemR(node, "button_title") - col.itemR(node, "button_text") + col.prop(node, "back") + col.prop(node, "button") + col.prop(node, "button_title") + col.prop(node, "button_text") col = split.column() - col.itemR(node, "text") - col.itemR(node, "text_hi") - col.itemR(node, "header") - col.itemR(node, "wires") + col.prop(node, "text") + col.prop(node, "text_hi") + col.prop(node, "header") + col.prop(node, "wires") col = split.column() - col.itemR(node, "wire_select") - col.itemR(node, "selected_text") - col.itemR(node, "node_backdrop", slider=True) - col.itemR(node, "in_out_node") + col.prop(node, "wire_select") + col.prop(node, "selected_text") + col.prop(node, "node_backdrop", slider=True) + col.prop(node, "in_out_node") col = split.column() - col.itemR(node, "converter_node") - col.itemR(node, "operator_node") - col.itemR(node, "group_node") + col.prop(node, "converter_node") + col.prop(node, "operator_node") + col.prop(node, "group_node") elif theme.active_theme == 'LOGIC_EDITOR': logic = theme.logic_editor col = split.column() - col.itemR(logic, "back") - col.itemR(logic, "button") + col.prop(logic, "back") + col.prop(logic, "button") col = split.column() - col.itemR(logic, "button_title") - col.itemR(logic, "button_text") + col.prop(logic, "button_title") + col.prop(logic, "button_text") col = split.column() - col.itemR(logic, "text") - col.itemR(logic, "header") + col.prop(logic, "text") + col.prop(logic, "header") col = split.column() - col.itemR(logic, "panel") + col.prop(logic, "panel") elif theme.active_theme == 'OUTLINER': out = theme.outliner col = split.column() - col.itemR(out, "back") + col.prop(out, "back") col = split.column() - col.itemR(out, "text") + col.prop(out, "text") col = split.column() - col.itemR(out, "text_hi") + col.prop(out, "text_hi") col = split.column() - col.itemR(out, "header") + col.prop(out, "header") elif theme.active_theme == 'INFO': info = theme.info col = split.column() - col.itemR(info, "back") + col.prop(info, "back") col = split.column() - col.itemR(info, "header") + col.prop(info, "header") col = split.column() - col.itemR(info, "header_text") + col.prop(info, "header_text") col = split.column() @@ -1005,16 +1035,16 @@ class USERPREF_PT_theme(bpy.types.Panel): prefs = theme.user_preferences col = split.column() - col.itemR(prefs, "back") + col.prop(prefs, "back") col = split.column() - col.itemR(prefs, "text") + col.prop(prefs, "text") col = split.column() - col.itemR(prefs, "header") + col.prop(prefs, "header") col = split.column() - col.itemR(prefs, "header_text") + col.prop(prefs, "header_text") class USERPREF_PT_file(bpy.types.Panel): @@ -1036,53 +1066,53 @@ class USERPREF_PT_file(bpy.types.Panel): split = layout.split(percentage=0.6) col = split.column() - col.itemL(text="File Paths:") + col.label(text="File Paths:") sub = col.split(percentage=0.3) - sub.itemL(text="Fonts:") - sub.itemR(paths, "fonts_directory", text="") + sub.label(text="Fonts:") + sub.prop(paths, "fonts_directory", text="") sub = col.split(percentage=0.3) - sub.itemL(text="Textures:") - sub.itemR(paths, "textures_directory", text="") + sub.label(text="Textures:") + sub.prop(paths, "textures_directory", text="") sub = col.split(percentage=0.3) - sub.itemL(text="Texture Plugins:") - sub.itemR(paths, "texture_plugin_directory", text="") + sub.label(text="Texture Plugins:") + sub.prop(paths, "texture_plugin_directory", text="") sub = col.split(percentage=0.3) - sub.itemL(text="Sequence Plugins:") - sub.itemR(paths, "sequence_plugin_directory", text="") + sub.label(text="Sequence Plugins:") + sub.prop(paths, "sequence_plugin_directory", text="") sub = col.split(percentage=0.3) - sub.itemL(text="Render Output:") - sub.itemR(paths, "render_output_directory", text="") + sub.label(text="Render Output:") + sub.prop(paths, "render_output_directory", text="") sub = col.split(percentage=0.3) - sub.itemL(text="Scripts:") - sub.itemR(paths, "python_scripts_directory", text="") + sub.label(text="Scripts:") + sub.prop(paths, "python_scripts_directory", text="") sub = col.split(percentage=0.3) - sub.itemL(text="Sounds:") - sub.itemR(paths, "sounds_directory", text="") + sub.label(text="Sounds:") + sub.prop(paths, "sounds_directory", text="") sub = col.split(percentage=0.3) - sub.itemL(text="Temp:") - sub.itemR(paths, "temporary_directory", text="") + sub.label(text="Temp:") + sub.prop(paths, "temporary_directory", text="") col = split.column() sub = col.split(percentage=0.2) sub.column() # sub1, unused sub2 = sub.column() - sub2.itemL(text="Save & Load:") - sub2.itemR(paths, "use_relative_paths") - sub2.itemR(paths, "compress_file") - sub2.itemR(paths, "load_ui") - sub2.itemR(paths, "filter_file_extensions") - sub2.itemR(paths, "hide_dot_files_datablocks") - sub2.itemS() - sub2.itemS() - sub2.itemL(text="Auto Save:") - sub2.itemR(paths, "save_version") - sub2.itemR(paths, "recent_files") - sub2.itemR(paths, "save_preview_images") - sub2.itemR(paths, "auto_save_temporary_files") + sub2.label(text="Save & Load:") + sub2.prop(paths, "use_relative_paths") + sub2.prop(paths, "compress_file") + sub2.prop(paths, "load_ui") + sub2.prop(paths, "filter_file_extensions") + sub2.prop(paths, "hide_dot_files_datablocks") + sub2.separator() + sub2.separator() + sub2.label(text="Auto Save:") + sub2.prop(paths, "save_version") + sub2.prop(paths, "recent_files") + sub2.prop(paths, "save_preview_images") + sub2.prop(paths, "auto_save_temporary_files") sub3 = sub2.column() sub3.enabled = paths.auto_save_temporary_files - sub3.itemR(paths, "auto_save_time", text="Timer (mins)") + sub3.prop(paths, "auto_save_time", text="Timer (mins)") class USERPREF_PT_input(bpy.types.Panel): @@ -1111,50 +1141,52 @@ class USERPREF_PT_input(bpy.types.Panel): col = row.column() sub = col.column() - sub.itemL(text="Configuration:") - sub.item_pointerR(wm, "active_keyconfig", wm, "keyconfigs", text="") + sub.label(text="Configuration:") + sub.prop_object(wm, "active_keyconfig", wm, "keyconfigs", text="") - col.itemS() + col.separator() sub = col.column() - sub.itemL(text="Mouse:") + sub.label(text="Mouse:") sub1 = sub.column() sub1.enabled = (inputs.select_mouse == 'RIGHT') - sub1.itemR(inputs, "emulate_3_button_mouse") - sub.itemR(inputs, "continuous_mouse") + sub1.prop(inputs, "emulate_3_button_mouse") + sub.prop(inputs, "continuous_mouse") + + sub.label(text="Select With:") + sub.row().prop(inputs, "select_mouse", expand=True) + + sub.separator() - sub.itemL(text="Select With:") - sub.row().itemR(inputs, "select_mouse", expand=True) - sub.itemL(text="Middle Mouse:") - sub.row().itemR(inputs, "middle_mouse", expand=True) + sub.prop(inputs, "emulate_numpad") - sub.itemS() - sub.itemS() - sub.itemS() + sub.separator() - sub.itemL(text="Orbit Style:") - sub.row().itemR(inputs, "view_rotation", expand=True) + sub.label(text="Orbit Style:") + sub.row().prop(inputs, "view_rotation", expand=True) - sub.itemL(text="Zoom Style:") - sub.row().itemR(inputs, "viewport_zoom_style", expand=True) + sub.label(text="Zoom Style:") + sub.row().prop(inputs, "viewport_zoom_style", expand=True) + if inputs.viewport_zoom_style == 'DOLLY': + sub.row().prop(inputs, "zoom_axis", expand=True) + sub.prop(inputs, "invert_zoom_direction") - #sub.itemR(inputs, "use_middle_mouse_paste") + #sub.prop(inputs, "use_middle_mouse_paste") - #col.itemS() + #col.separator() #sub = col.column() - #sub.itemL(text="Mouse Wheel:") - #sub.itemR(view, "wheel_invert_zoom", text="Invert Zoom") - #sub.itemR(view, "wheel_scroll_lines", text="Scroll Lines") + #sub.label(text="Mouse Wheel:") + #sub.prop(view, "wheel_scroll_lines", text="Scroll Lines") - col.itemS() + col.separator() sub = col.column() - sub.itemL(text="NDOF Device:") - sub.itemR(inputs, "ndof_pan_speed", text="Pan Speed") - sub.itemR(inputs, "ndof_rotate_speed", text="Orbit Speed") + sub.label(text="NDOF Device:") + sub.prop(inputs, "ndof_pan_speed", text="Pan Speed") + sub.prop(inputs, "ndof_rotate_speed", text="Orbit Speed") - row.itemS() + row.separator() # Keymap Settings col = split.column() @@ -1164,17 +1196,17 @@ class USERPREF_PT_input(bpy.types.Panel): km = wm.active_keymap subsplit = col.split() - subsplit.item_pointerR(wm, "active_keymap", defkc, "keymaps", text="Map:") + subsplit.prop_object(wm, "active_keymap", defkc, "keymaps", text="Map:") if km.user_defined: row = subsplit.row() - row.itemO("WM_OT_keymap_restore", text="Restore") - row.item_booleanO("WM_OT_keymap_restore", "all", True, text="Restore All") + row.operator("WM_OT_keymap_restore", text="Restore") + row.operator("WM_OT_keymap_restore", text="Restore All").all = True else: row = subsplit.row() - row.itemO("WM_OT_keymap_edit", text="Edit") - row.itemL() + row.operator("WM_OT_keymap_edit", text="Edit") + row.label() - col.itemS() + col.separator() for kmi in km.items: subcol = col.column() @@ -1183,82 +1215,82 @@ class USERPREF_PT_input(bpy.types.Panel): row = subcol.row() if kmi.expanded: - row.itemR(kmi, "expanded", text="", icon='ICON_TRIA_DOWN') + row.prop(kmi, "expanded", text="", icon='ICON_TRIA_DOWN') else: - row.itemR(kmi, "expanded", text="", icon='ICON_TRIA_RIGHT') + row.prop(kmi, "expanded", text="", icon='ICON_TRIA_RIGHT') itemrow = row.row() itemrow.enabled = km.user_defined if kmi.active: - itemrow.itemR(kmi, "active", text="", icon='ICON_CHECKBOX_HLT') + itemrow.prop(kmi, "active", text="", icon='ICON_CHECKBOX_HLT') else: - itemrow.itemR(kmi, "active", text="", icon='ICON_CHECKBOX_DEHLT') + itemrow.prop(kmi, "active", text="", icon='ICON_CHECKBOX_DEHLT') itemcol = itemrow.column() itemcol.active = kmi.active row = itemcol.row() if km.modal: - row.itemR(kmi, "propvalue", text="") + row.prop(kmi, "propvalue", text="") else: - row.itemR(kmi, "idname", text="") + row.prop(kmi, "idname", text="") sub = row.row() sub.scale_x = 0.6 - sub.itemR(kmi, "map_type", text="") + sub.prop(kmi, "map_type", text="") sub = row.row(align=True) if kmi.map_type == 'KEYBOARD': - sub.itemR(kmi, "type", text="", full_event=True) + sub.prop(kmi, "type", text="", full_event=True) elif kmi.map_type == 'MOUSE': - sub.itemR(kmi, "type", text="", full_event=True) + sub.prop(kmi, "type", text="", full_event=True) elif kmi.map_type == 'TWEAK': sub.scale_x = 0.5 - sub.itemR(kmi, "type", text="") - sub.itemR(kmi, "value", text="") + sub.prop(kmi, "type", text="") + sub.prop(kmi, "value", text="") elif kmi.map_type == 'TIMER': - sub.itemR(kmi, "type", text="") + sub.prop(kmi, "type", text="") else: - sub.itemL() + sub.label() if kmi.expanded: if kmi.map_type not in ('TEXTINPUT', 'TIMER'): sub = itemcol.row(align=True) if kmi.map_type == 'KEYBOARD': - sub.itemR(kmi, "type", text="", event=True) - sub.itemR(kmi, "value", text="") + sub.prop(kmi, "type", text="", event=True) + sub.prop(kmi, "value", text="") elif kmi.map_type == 'MOUSE': - sub.itemR(kmi, "type", text="") - sub.itemR(kmi, "value", text="") + sub.prop(kmi, "type", text="") + sub.prop(kmi, "value", text="") else: - sub.itemL() - sub.itemL() + sub.label() + sub.label() subrow = sub.row() subrow.scale_x = 0.75 - subrow.itemR(kmi, "any") - subrow.itemR(kmi, "shift") - subrow.itemR(kmi, "ctrl") - subrow.itemR(kmi, "alt") - subrow.itemR(kmi, "oskey", text="Cmd") - sub.itemR(kmi, "key_modifier", text="", event=True) + subrow.prop(kmi, "any") + subrow.prop(kmi, "shift") + subrow.prop(kmi, "ctrl") + subrow.prop(kmi, "alt") + subrow.prop(kmi, "oskey", text="Cmd") + sub.prop(kmi, "key_modifier", text="", event=True) flow = itemcol.column_flow(columns=2) props = kmi.properties - if props != None: + if props is not None: for pname in dir(props): if not props.is_property_hidden(pname): - flow.itemR(props, pname) + flow.prop(props, pname) - itemcol.itemS() + itemcol.separator() - itemrow.itemO("wm.keyitem_remove", text="", icon='ICON_ZOOMOUT') + itemrow.operator("wm.keyitem_remove", text="", icon='ICON_ZOOMOUT') itemrow = col.row() - itemrow.itemL() - itemrow.itemO("wm.keyitem_add", text="", icon='ICON_ZOOMIN') + itemrow.label() + itemrow.operator("wm.keyitem_add", text="", icon='ICON_ZOOMIN') itemrow.enabled = km.user_defined bpy.types.register(USERPREF_HT_header) @@ -1350,7 +1382,7 @@ class WM_OT_keyconfig_export(bpy.types.Operator): props = kmi.properties - if props != None: + if props is not None: for pname in dir(props): if props.is_property_set(pname) and not props.is_property_hidden(pname): value = eval("props.%s" % pname) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index c1b3dd8524c..5b33fbecac2 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -27,11 +27,12 @@ class VIEW3D_HT_header(bpy.types.Header): def draw(self, context): layout = self.layout - # view = context.space_data + view = context.space_data mode_string = context.mode edit_object = context.edit_object - object = context.active_object - + obj = context.active_object + toolsettings = context.scene.tool_settings + row = layout.row(align=True) row.template_header() @@ -39,22 +40,65 @@ class VIEW3D_HT_header(bpy.types.Header): if context.area.show_menus: sub = row.row(align=True) - sub.itemM("VIEW3D_MT_view") + sub.menu("VIEW3D_MT_view") # Select Menu if mode_string not in ('EDIT_TEXT', 'SCULPT', 'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'): - sub.itemM("VIEW3D_MT_select_%s" % mode_string.lower()) + sub.menu("VIEW3D_MT_select_%s" % mode_string.lower()) if edit_object: - sub.itemM("VIEW3D_MT_edit_%s" % edit_object.type.lower()) - elif object: + sub.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower()) + elif obj: if mode_string not in ['PAINT_WEIGHT', 'PAINT_TEXTURE']: - sub.itemM("VIEW3D_MT_%s" % mode_string.lower()) + sub.menu("VIEW3D_MT_%s" % mode_string.lower()) else: - sub.itemM("VIEW3D_MT_object") + sub.menu("VIEW3D_MT_object") layout.template_header_3D() + # Particle edit + if obj and obj.mode == 'PARTICLE_EDIT': + layout.prop(toolsettings.particle_edit, "selection_mode", text="", expand=True) + + # Occlude geometry + if obj and view.viewport_shading in ('SOLID', 'SHADED', 'TEXTURED') and (obj.mode == 'PARTICLE_EDIT' or (obj.mode == 'EDIT' and obj.type == 'MESH')): + layout.prop(view, "occlude_geometry", text="") + + # Proportional editing + if obj and obj.mode in ('OBJECT', 'EDIT'): + row = layout.row(align=True) + row.prop(toolsettings, "proportional_editing", text="", icon_only=True) + if toolsettings.proportional_editing != 'DISABLED': + row.prop(toolsettings, "proportional_editing_falloff", text="", icon_only=True) + + # Snap + row = layout.row(align=True) + row.prop(toolsettings, "snap", text="") + row.prop(toolsettings, "snap_element", text="", icon_only=True) + if toolsettings.snap_element != 'INCREMENT': + row.prop(toolsettings, "snap_target", text="", icon_only=True) + if obj and obj.mode == 'OBJECT': + row.prop(toolsettings, "snap_align_rotation", text="") + if toolsettings.snap_element == 'VOLUME': + row.prop(toolsettings, "snap_peel_object", text="") + elif toolsettings.snap_element == 'FACE': + row.prop(toolsettings, "snap_project", text="") + + # OpenGL render + row = layout.row(align=True) + row.operator("screen.opengl_render", text="", icon='ICON_RENDER_STILL') + props = row.operator("screen.opengl_render", text="", icon='ICON_RENDER_ANIMATION') + props.animation = True + + # Pose + if obj and obj.mode == 'POSE': + row = layout.row(align=True) + row.operator("pose.copy", text="", icon='ICON_COPYDOWN') + row.operator("pose.paste", text="", icon='ICON_PASTEDOWN') + props = row.operator("pose.paste", text="", icon='ICON_PASTEFLIPDOWN') + props.flipped = 1 + + # ********** Menu ********** # ********** Utilities ********** @@ -67,9 +111,9 @@ class VIEW3D_MT_showhide(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("%s.reveal" % self._operator_name, text="Show Hidden") - layout.itemO("%s.hide" % self._operator_name, text="Hide Selected") - layout.item_booleanO("%s.hide" % self._operator_name, "unselected", True, text="Hide Unselected") + layout.operator("%s.reveal" % self._operator_name, text="Show Hidden") + layout.operator("%s.hide" % self._operator_name, text="Hide Selected") + layout.operator("%s.hide" % self._operator_name, text="Hide Unselected").unselected = True class VIEW3D_MT_transform(bpy.types.Menu): @@ -78,84 +122,86 @@ class VIEW3D_MT_transform(bpy.types.Menu): # TODO: get rid of the custom text strings? def draw(self, context): layout = self.layout - - layout.itemO("tfm.translate", text="Grab/Move") + + layout.operator("tfm.translate", text="Grab/Move") # TODO: sub-menu for grab per axis - layout.itemO("tfm.rotate", text="Rotate") + layout.operator("tfm.rotate", text="Rotate") # TODO: sub-menu for rot per axis - layout.itemO("tfm.resize", text="Scale") + layout.operator("tfm.resize", text="Scale") # TODO: sub-menu for scale per axis - - layout.itemS() - - layout.itemO("tfm.tosphere", text="To Sphere") - layout.itemO("tfm.shear", text="Shear") - layout.itemO("tfm.warp", text="Warp") - layout.item_enumO("tfm.transform", "mode", 'PUSHPULL', text="Push/Pull") + + layout.separator() + + layout.operator("tfm.tosphere", text="To Sphere") + layout.operator("tfm.shear", text="Shear") + layout.operator("tfm.warp", text="Warp") + layout.operator("tfm.transform", text="Push/Pull").mode = 'PUSHPULL' if context.edit_object and context.edit_object.type == 'ARMATURE': - layout.itemO("armature.align") + layout.operator("armature.align") else: layout.operator_context = 'EXEC_AREA' - layout.item_enumO("tfm.transform", "mode", 'ALIGN', text="Align to Transform Orientation") # XXX see alignmenu() in edit.c of b2.4x to get this working - - layout.itemS() - + layout.operator("tfm.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working + + layout.separator() + layout.operator_context = 'EXEC_AREA' - - layout.item_enumO("object.center_set", "type", 'CENTER') - layout.item_enumO("object.center_set", "type", 'CENTERNEW') - layout.item_enumO("object.center_set", "type", 'CENTERCURSOR') - + + layout.operator("object.center_set", text="ObData to Centroid").type = 'CENTER' + layout.operator("object.center_set", text="Centroid to ObData").type = 'CENTER_NEW' + layout.operator("object.center_set", text="Centroid to 3D Cursor").type = 'CENTER_CURSOR' + + class VIEW3D_MT_mirror(bpy.types.Menu): bl_label = "Mirror" def draw(self, context): layout = self.layout - layout.itemO("tfm.mirror", text="Interactive Mirror") - - layout.itemS() - - layout.operator_context = 'EXEC_AREA' - - props = layout.itemO("tfm.mirror", properties=True, text="X Global") + layout.operator("tfm.mirror", text="Interactive Mirror") + + layout.separator() + + layout.operator_context = 'INVOKE_REGION_WIN' + + props = layout.operator("tfm.mirror", text="X Global") props.constraint_axis = (True, False, False) props.constraint_orientation = 'GLOBAL' - props = layout.itemO("tfm.mirror", properties=True, text="Y Global") + props = layout.operator("tfm.mirror", text="Y Global") props.constraint_axis = (False, True, False) props.constraint_orientation = 'GLOBAL' - props = layout.itemO("tfm.mirror", properties=True, text="Z Global") + props = layout.operator("tfm.mirror", text="Z Global") props.constraint_axis = (False, False, True) props.constraint_orientation = 'GLOBAL' - + if context.edit_object: - layout.itemS() - - props = layout.itemO("tfm.mirror", properties=True, text="X Local") + layout.separator() + + props = layout.operator("tfm.mirror", text="X Local") props.constraint_axis = (True, False, False) props.constraint_orientation = 'LOCAL' - props = layout.itemO("tfm.mirror", properties=True, text="Y Local") + props = layout.operator("tfm.mirror", text="Y Local") props.constraint_axis = (False, True, False) props.constraint_orientation = 'LOCAL' - props = layout.itemO("tfm.mirror", properties=True, text="Z Local") + props = layout.operator("tfm.mirror", text="Z Local") props.constraint_axis = (False, False, True) props.constraint_orientation = 'LOCAL' - + + class VIEW3D_MT_snap(bpy.types.Menu): bl_label = "Snap" def draw(self, context): layout = self.layout - layout.itemO("view3d.snap_selected_to_grid", text="Selection to Grid") - layout.itemO("view3d.snap_selected_to_cursor", text="Selection to Cursor") - layout.itemO("view3d.snap_selected_to_center", text="Selection to Center") + layout.operator("view3d.snap_selected_to_grid", text="Selection to Grid") + layout.operator("view3d.snap_selected_to_cursor", text="Selection to Cursor") + layout.operator("view3d.snap_selected_to_center", text="Selection to Center") - layout.itemS() + layout.separator() - layout.itemO("view3d.snap_cursor_to_selected", text="Cursor to Selected") - layout.itemO("view3d.snap_cursor_to_grid", text="Cursor to Grid") - layout.itemO("view3d.snap_cursor_to_active", text="Cursor to Active") + layout.operator("view3d.snap_cursor_to_selected", text="Cursor to Selected") + layout.operator("view3d.snap_cursor_to_grid", text="Cursor to Grid") + layout.operator("view3d.snap_cursor_to_active", text="Cursor to Active") class VIEW3D_MT_uv_map(dynamic_menu.DynMenu): @@ -164,15 +210,15 @@ class VIEW3D_MT_uv_map(dynamic_menu.DynMenu): def draw(self, context): layout = self.layout - layout.itemO("uv.unwrap") - layout.itemO("uv.cube_project") - layout.itemO("uv.cylinder_project") - layout.itemO("uv.sphere_project") - layout.itemO("uv.project_from_view") + layout.operator("uv.unwrap") + layout.operator("uv.cube_project") + layout.operator("uv.cylinder_project") + layout.operator("uv.sphere_project") + layout.operator("uv.project_from_view") - layout.itemS() + layout.separator() - layout.itemO("uv.reset") + layout.operator("uv.reset") # ********** View menus ********** @@ -183,52 +229,52 @@ class VIEW3D_MT_view(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.properties", icon='ICON_MENU_PANEL') - layout.itemO("view3d.toolbar", icon='ICON_MENU_PANEL') + layout.operator("view3d.properties", icon='ICON_MENU_PANEL') + layout.operator("view3d.toolbar", icon='ICON_MENU_PANEL') - layout.itemS() + layout.separator() - layout.item_enumO("view3d.viewnumpad", "type", 'CAMERA') - layout.item_enumO("view3d.viewnumpad", "type", 'TOP') - layout.item_enumO("view3d.viewnumpad", "type", 'FRONT') - layout.item_enumO("view3d.viewnumpad", "type", 'RIGHT') + layout.operator("view3d.viewnumpad", text="Camera").type = 'CAMERA' + layout.operator("view3d.viewnumpad", text="Top").type = 'TOP' + layout.operator("view3d.viewnumpad", text="Front").type = 'FRONT' + layout.operator("view3d.viewnumpad", text="Right").type = 'RIGHT' - layout.itemM("VIEW3D_MT_view_cameras", text="Cameras") + layout.menu("VIEW3D_MT_view_cameras", text="Cameras") - layout.itemS() + layout.separator() - layout.itemO("view3d.view_persportho") + layout.operator("view3d.view_persportho") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_view_navigation") - layout.itemM("VIEW3D_MT_view_align") + layout.menu("VIEW3D_MT_view_navigation") + layout.menu("VIEW3D_MT_view_align") - layout.itemS() + layout.separator() layout.operator_context = 'INVOKE_REGION_WIN' - layout.itemO("view3d.clip_border", text="Clipping Border...") - layout.itemO("view3d.zoom_border", text="Zoom Border...") + layout.operator("view3d.clip_border", text="Clipping Border...") + layout.operator("view3d.zoom_border", text="Zoom Border...") - layout.itemS() + layout.separator() - layout.item_intO("view3d.layers", "nr", 0, text="Show All Layers") + layout.operator("view3d.layers", text="Show All Layers").nr = 0 - layout.itemS() + layout.separator() - layout.itemO("view3d.localview", text="View Global/Local") - layout.itemO("view3d.view_center") - layout.itemO("view3d.view_all") + layout.operator("view3d.localview", text="View Global/Local") + layout.operator("view3d.view_center") + layout.operator("view3d.view_all") - layout.itemS() + layout.separator() - layout.itemO("screen.region_foursplit", text="Toggle Quad View") - layout.itemO("screen.screen_full_area", text="Toggle Full Screen") + layout.operator("screen.region_foursplit", text="Toggle Quad View") + layout.operator("screen.screen_full_area", text="Toggle Full Screen") - layout.itemS() + layout.separator() - layout.itemO("screen.animation_play", text="Playback Animation", icon='ICON_PLAY') + layout.operator("screen.animation_play", text="Playback Animation", icon='ICON_PLAY') class VIEW3D_MT_view_navigation(bpy.types.Menu): @@ -237,20 +283,20 @@ class VIEW3D_MT_view_navigation(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.items_enumO("view3d.view_orbit", "type") + layout.operator_enums("view3d.view_orbit", "type") - layout.itemS() + layout.separator() - layout.items_enumO("view3d.view_pan", "type") + layout.operator_enums("view3d.view_pan", "type") - layout.itemS() + layout.separator() - layout.item_floatO("view3d.zoom", "delta", 1.0, text="Zoom In") - layout.item_floatO("view3d.zoom", "delta", -1.0, text="Zoom Out") + layout.operator("view3d.zoom", text="Zoom In").delta = 1.0 + layout.operator("view3d.zoom", text="Zoom Out").delta = -1.0 - layout.itemS() + layout.separator() - layout.itemO("view3d.fly") + layout.operator("view3d.fly") class VIEW3D_MT_view_align(bpy.types.Menu): @@ -259,13 +305,14 @@ class VIEW3D_MT_view_align(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemM("VIEW3D_MT_view_align_selected") + layout.menu("VIEW3D_MT_view_align_selected") - layout.itemS() + layout.separator() - layout.item_booleanO("view3d.view_all", "center", True, text="Center Cursor and View All") - layout.itemO("view3d.camera_to_view", text="Align Active Camera to View") - layout.itemO("view3d.view_center") + layout.operator("view3d.view_all", text="Center Cursor and View All").center = True + layout.operator("view3d.camera_to_view", text="Align Active Camera to View") + layout.operator("view3d.view_center") + layout.operator("view3d.view_center_cursor") class VIEW3D_MT_view_align_selected(bpy.types.Menu): @@ -274,22 +321,22 @@ class VIEW3D_MT_view_align_selected(bpy.types.Menu): def draw(self, context): layout = self.layout - props = layout.itemO("view3d.viewnumpad", properties=True, text="Top") + props = layout.operator("view3d.viewnumpad", text="Top") props.align_active = True props.type = 'TOP' - props = layout.itemO("view3d.viewnumpad", properties=True, text="Bottom") + props = layout.operator("view3d.viewnumpad", text="Bottom") props.align_active = True props.type = 'BOTTOM' - props = layout.itemO("view3d.viewnumpad", properties=True, text="Front") + props = layout.operator("view3d.viewnumpad", text="Front") props.align_active = True props.type = 'FRONT' - props = layout.itemO("view3d.viewnumpad", properties=True, text="Back") + props = layout.operator("view3d.viewnumpad", text="Back") props.align_active = True props.type = 'BACK' - props = layout.itemO("view3d.viewnumpad", properties=True, text="Right") + props = layout.operator("view3d.viewnumpad", text="Right") props.align_active = True props.type = 'RIGHT' - props = layout.itemO("view3d.viewnumpad", properties=True, text="Left") + props = layout.operator("view3d.viewnumpad", text="Left") props.align_active = True props.type = 'LEFT' @@ -300,8 +347,8 @@ class VIEW3D_MT_view_cameras(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.object_as_camera") - layout.item_enumO("view3d.viewnumpad", "type", 'CAMERA', text="Active Camera") + layout.operator("view3d.object_as_camera") + layout.operator("view3d.viewnumpad", text="Active Camera").type = 'CAMERA' # ********** Select menus, suffix from context.mode ********** @@ -312,23 +359,23 @@ class VIEW3D_MT_select_object(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.select_border") - layout.itemO("view3d.select_circle") + layout.operator("view3d.select_border") + layout.operator("view3d.select_circle") - layout.itemS() + layout.separator() - layout.itemO("object.select_all_toggle", text="Select/Deselect All") - layout.itemO("object.select_inverse", text="Inverse") - layout.itemO("object.select_random", text="Random") - layout.itemO("object.select_mirror", text="Mirror") - layout.itemO("object.select_by_layer", text="Select All by Layer") - layout.item_menu_enumO("object.select_by_type", "type", "", text="Select All by Type...") + layout.operator("object.select_all_toggle", text="Select/Deselect All") + layout.operator("object.select_inverse", text="Inverse") + layout.operator("object.select_random", text="Random") + layout.operator("object.select_mirror", text="Mirror") + layout.operator("object.select_by_layer", text="Select All by Layer") + layout.operator_menu_enum("object.select_by_type", "type", "", text="Select All by Type...") - layout.itemS() + layout.separator() - layout.item_menu_enumO("object.select_grouped", "type", text="Grouped") - layout.item_menu_enumO("object.select_linked", "type", text="Linked") - layout.itemO("object.select_pattern", text="Select Pattern...") + layout.operator_menu_enum("object.select_grouped", "type", text="Grouped") + layout.operator_menu_enum("object.select_linked", "type", text="Linked") + layout.operator("object.select_pattern", text="Select Pattern...") class VIEW3D_MT_select_pose(bpy.types.Menu): @@ -337,27 +384,27 @@ class VIEW3D_MT_select_pose(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.select_border") + layout.operator("view3d.select_border") - layout.itemS() + layout.separator() - layout.itemO("pose.select_all_toggle", text="Select/Deselect All") - layout.itemO("pose.select_inverse", text="Inverse") - layout.itemO("pose.select_constraint_target", text="Constraint Target") - layout.itemO("pose.select_linked", text="Linked") + layout.operator("pose.select_all_toggle", text="Select/Deselect All") + layout.operator("pose.select_inverse", text="Inverse") + layout.operator("pose.select_constraint_target", text="Constraint Target") + layout.operator("pose.select_linked", text="Linked") - layout.itemS() + layout.separator() - layout.item_enumO("pose.select_hierarchy", "direction", 'PARENT') - layout.item_enumO("pose.select_hierarchy", "direction", 'CHILD') + layout.operator("pose.select_hierarchy", text="Parent").direction = 'PARENT' + layout.operator("pose.select_hierarchy", text="Child").direction = 'CHILD' - layout.itemS() + layout.separator() - props = layout.itemO("pose.select_hierarchy", properties=True, text="Extend Parent") + props = layout.operator("pose.select_hierarchy", text="Extend Parent") props.extend = True props.direction = 'PARENT' - props = layout.itemO("pose.select_hierarchy", properties=True, text="Extend Child") + props = layout.operator("pose.select_hierarchy", text="Extend Child") props.extend = True props.direction = 'CHILD' @@ -368,23 +415,23 @@ class VIEW3D_MT_select_particle(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.select_border") + layout.operator("view3d.select_border") - layout.itemS() + layout.separator() - layout.itemO("particle.select_all_toggle", text="Select/Deselect All") - layout.itemO("particle.select_linked") - layout.itemO("particle.select_inverse") + layout.operator("particle.select_all_toggle", text="Select/Deselect All") + layout.operator("particle.select_linked") + layout.operator("particle.select_inverse") - layout.itemS() + layout.separator() - layout.itemO("particle.select_more") - layout.itemO("particle.select_less") + layout.operator("particle.select_more") + layout.operator("particle.select_less") - layout.itemS() + layout.separator() - layout.itemO("particle.select_first", text="Roots") - layout.itemO("particle.select_last", text="Tips") + layout.operator("particle.select_first", text="Roots") + layout.operator("particle.select_last", text="Tips") class VIEW3D_MT_select_edit_mesh(bpy.types.Menu): @@ -393,47 +440,47 @@ class VIEW3D_MT_select_edit_mesh(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.select_border") - layout.itemO("view3d.select_circle") + layout.operator("view3d.select_border") + layout.operator("view3d.select_circle") - layout.itemS() + layout.separator() - layout.itemO("mesh.select_all_toggle", text="Select/Deselect All") - layout.itemO("mesh.select_inverse", text="Inverse") + layout.operator("mesh.select_all_toggle", text="Select/Deselect All") + layout.operator("mesh.select_inverse", text="Inverse") - layout.itemS() + layout.separator() - layout.itemO("mesh.select_random", text="Random...") - layout.itemO("mesh.edges_select_sharp", text="Sharp Edges") - layout.itemO("mesh.faces_select_linked_flat", text="Linked Flat Faces") - layout.itemO("mesh.faces_select_interior", text="Interior Faces") - layout.itemO("mesh.select_axis", text="Side of Active") + layout.operator("mesh.select_random", text="Random...") + layout.operator("mesh.edges_select_sharp", text="Sharp Edges") + layout.operator("mesh.faces_select_linked_flat", text="Linked Flat Faces") + layout.operator("mesh.faces_select_interior", text="Interior Faces") + layout.operator("mesh.select_axis", text="Side of Active") - layout.itemS() + layout.separator() - layout.item_enumO("mesh.select_by_number_vertices", "type", 'TRIANGLES', text="Triangles") - layout.item_enumO("mesh.select_by_number_vertices", "type", 'QUADS', text="Quads") - layout.item_enumO("mesh.select_by_number_vertices", "type", 'OTHER', text="Loose Verts/Edges") - layout.itemO("mesh.select_similar", text="Similar...") + layout.operator("mesh.select_by_number_vertices", text="Triangles").type = 'TRIANGLES' + layout.operator("mesh.select_by_number_vertices", text="Quads").type = 'QUADS' + layout.operator("mesh.select_by_number_vertices", text="Loose Verts/Edges").type = 'OTHER' + layout.operator("mesh.select_similar", text="Similar...") - layout.itemS() + layout.separator() - layout.itemO("mesh.select_less", text="Less") - layout.itemO("mesh.select_more", text="More") + layout.operator("mesh.select_less", text="Less") + layout.operator("mesh.select_more", text="More") - layout.itemS() + layout.separator() - layout.itemO("mesh.select_mirror", text="Mirror") + layout.operator("mesh.select_mirror", text="Mirror") - layout.itemO("mesh.select_linked", text="Linked") - layout.itemO("mesh.select_vertex_path", text="Vertex Path") - layout.itemO("mesh.loop_multi_select", text="Edge Loop") - layout.item_booleanO("mesh.loop_multi_select", "ring", True, text="Edge Ring") + layout.operator("mesh.select_linked", text="Linked") + layout.operator("mesh.select_vertex_path", text="Vertex Path") + layout.operator("mesh.loop_multi_select", text="Edge Loop") + layout.operator("mesh.loop_multi_select", text="Edge Ring").ring = True - layout.itemS() + layout.separator() - layout.itemO("mesh.loop_to_region") - layout.itemO("mesh.region_to_loop") + layout.operator("mesh.loop_to_region") + layout.operator("mesh.region_to_loop") class VIEW3D_MT_select_edit_curve(bpy.types.Menu): @@ -442,27 +489,27 @@ class VIEW3D_MT_select_edit_curve(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.select_border") - layout.itemO("view3d.select_circle") + layout.operator("view3d.select_border") + layout.operator("view3d.select_circle") - layout.itemS() + layout.separator() - layout.itemO("curve.select_all_toggle", text="Select/Deselect All") - layout.itemO("curve.select_inverse") - layout.itemO("curve.select_random") - layout.itemO("curve.select_every_nth") + layout.operator("curve.select_all_toggle", text="Select/Deselect All") + layout.operator("curve.select_inverse") + layout.operator("curve.select_random") + layout.operator("curve.select_every_nth") - layout.itemS() + layout.separator() - layout.itemO("curve.de_select_first") - layout.itemO("curve.de_select_last") - layout.itemO("curve.select_next") - layout.itemO("curve.select_previous") + layout.operator("curve.de_select_first") + layout.operator("curve.de_select_last") + layout.operator("curve.select_next") + layout.operator("curve.select_previous") - layout.itemS() + layout.separator() - layout.itemO("curve.select_more") - layout.itemO("curve.select_less") + layout.operator("curve.select_more") + layout.operator("curve.select_less") class VIEW3D_MT_select_edit_surface(bpy.types.Menu): @@ -471,24 +518,24 @@ class VIEW3D_MT_select_edit_surface(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.select_border") - layout.itemO("view3d.select_circle") + layout.operator("view3d.select_border") + layout.operator("view3d.select_circle") - layout.itemS() + layout.separator() - layout.itemO("curve.select_all_toggle", text="Select/Deselect All") - layout.itemO("curve.select_inverse") - layout.itemO("curve.select_random") - layout.itemO("curve.select_every_nth") + layout.operator("curve.select_all_toggle", text="Select/Deselect All") + layout.operator("curve.select_inverse") + layout.operator("curve.select_random") + layout.operator("curve.select_every_nth") - layout.itemS() + layout.separator() - layout.itemO("curve.select_row") + layout.operator("curve.select_row") - layout.itemS() + layout.separator() - layout.itemO("curve.select_more") - layout.itemO("curve.select_less") + layout.operator("curve.select_more") + layout.operator("curve.select_less") class VIEW3D_MT_select_edit_metaball(bpy.types.Menu): @@ -497,16 +544,16 @@ class VIEW3D_MT_select_edit_metaball(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.select_border") + layout.operator("view3d.select_border") - layout.itemS() + layout.separator() - layout.itemO("mball.select_deselect_all_metaelems") - layout.itemO("mball.select_inverse_metaelems") + layout.operator("mball.select_deselect_all_metaelems") + layout.operator("mball.select_inverse_metaelems") - layout.itemS() + layout.separator() - layout.itemO("mball.select_random_metaelems") + layout.operator("mball.select_random_metaelems") class VIEW3D_MT_select_edit_lattice(bpy.types.Menu): @@ -515,11 +562,11 @@ class VIEW3D_MT_select_edit_lattice(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.select_border") + layout.operator("view3d.select_border") - layout.itemS() + layout.separator() - layout.itemO("lattice.select_all_toggle", text="Select/Deselect All") + layout.operator("lattice.select_all_toggle", text="Select/Deselect All") class VIEW3D_MT_select_edit_armature(bpy.types.Menu): @@ -528,26 +575,26 @@ class VIEW3D_MT_select_edit_armature(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("view3d.select_border") + layout.operator("view3d.select_border") - layout.itemS() + layout.separator() - layout.itemO("armature.select_all_toggle", text="Select/Deselect All") - layout.itemO("armature.select_inverse", text="Inverse") + layout.operator("armature.select_all_toggle", text="Select/Deselect All") + layout.operator("armature.select_inverse", text="Inverse") - layout.itemS() + layout.separator() - layout.item_enumO("armature.select_hierarchy", "direction", 'PARENT', text="Parent") - layout.item_enumO("armature.select_hierarchy", "direction", 'CHILD', text="Child") + layout.operator("armature.select_hierarchy", text="Parent").direction = 'PARENT' + layout.operator("armature.select_hierarchy", text="Child").direction = 'CHILD' - layout.itemS() + layout.separator() - props = layout.itemO("armature.select_hierarchy", properties=True, text="Extend Parent") + props = layout.operator("armature.select_hierarchy", text="Extend Parent") props.extend = True props.direction = 'PARENT' - props = layout.itemO("armature.select_hierarchy", properties=True, text="Extend Child") + props = layout.operator("armature.select_hierarchy", text="Extend Child") props.extend = True props.direction = 'CHILD' @@ -557,7 +604,7 @@ class VIEW3D_MT_select_face(bpy.types.Menu):# XXX no matching enum def draw(self, context): layout = self.layout - + # TODO # see view3d_select_faceselmenu @@ -571,45 +618,45 @@ class VIEW3D_MT_object(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemM("VIEW3D_MT_transform") - layout.itemM("VIEW3D_MT_mirror") - layout.itemM("VIEW3D_MT_object_clear") - layout.itemM("VIEW3D_MT_object_apply") - layout.itemM("VIEW3D_MT_snap") + layout.menu("VIEW3D_MT_transform") + layout.menu("VIEW3D_MT_mirror") + layout.menu("VIEW3D_MT_object_clear") + layout.menu("VIEW3D_MT_object_apply") + layout.menu("VIEW3D_MT_snap") - layout.itemS() + layout.separator() - layout.itemO("anim.insert_keyframe_menu", text="Insert Keyframe...") - layout.itemO("anim.delete_keyframe_v3d", text="Delete Keyframe...") + layout.operator("anim.keyframe_insert_menu", text="Insert Keyframe...") + layout.operator("anim.keyframe_delete_v3d", text="Delete Keyframe...") - layout.itemS() + layout.separator() - layout.itemO("object.duplicate_move") - layout.item_booleanO("object.duplicate", "linked", True, text="Duplicate Linked") - layout.itemO("object.delete", text="Delete...") - layout.itemO("object.proxy_make", text="Make Proxy...") - layout.itemM("VIEW3D_MT_make_links", text="Make Links...") - layout.item_menu_enumO("object.make_local", "type", text="Make Local...") - layout.itemM("VIEW3D_MT_make_single_user") - layout.itemM("VIEW3D_MT_make_links") + layout.operator("object.duplicate_move") + layout.operator("object.duplicate", text="Duplicate Linked").linked = True + layout.operator("object.delete", text="Delete...") + layout.operator("object.proxy_make", text="Make Proxy...") + layout.menu("VIEW3D_MT_make_links", text="Make Links...") + layout.operator_menu_enum("object.make_local", "type", text="Make Local...") + layout.menu("VIEW3D_MT_make_single_user") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_object_parent") - layout.itemM("VIEW3D_MT_object_track") - layout.itemM("VIEW3D_MT_object_group") - layout.itemM("VIEW3D_MT_object_constraints") + layout.menu("VIEW3D_MT_object_parent") + layout.menu("VIEW3D_MT_object_track") + layout.menu("VIEW3D_MT_object_group") + layout.menu("VIEW3D_MT_object_constraints") - layout.itemS() + layout.separator() - layout.itemO("object.join") + layout.operator("object.join_shapes") + layout.operator("object.join") - layout.itemS() + layout.separator() - layout.itemO("object.move_to_layer", text="Move to Layer...") - layout.itemM("VIEW3D_MT_object_showhide") + layout.operator("object.move_to_layer", text="Move to Layer...") + layout.menu("VIEW3D_MT_object_showhide") - layout.item_menu_enumO("object.convert", "target") + layout.operator_menu_enum("object.convert", "target") class VIEW3D_MT_object_clear(bpy.types.Menu): @@ -618,10 +665,10 @@ class VIEW3D_MT_object_clear(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("object.location_clear", text="Location") - layout.itemO("object.rotation_clear", text="Rotation") - layout.itemO("object.scale_clear", text="Scale") - layout.itemO("object.origin_clear", text="Origin") + layout.operator("object.location_clear", text="Location") + layout.operator("object.rotation_clear", text="Rotation") + layout.operator("object.scale_clear", text="Scale") + layout.operator("object.origin_clear", text="Origin") class VIEW3D_MT_object_apply(bpy.types.Menu): @@ -630,12 +677,12 @@ class VIEW3D_MT_object_apply(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("object.location_apply", text="Location") - layout.itemO("object.rotation_apply", text="Rotation") - layout.itemO("object.scale_apply", text="Scale") - layout.itemS() - layout.itemO("object.visual_transform_apply", text="Visual Transform") - layout.itemO("object.duplicates_make_real") + layout.operator("object.location_apply", text="Location") + layout.operator("object.rotation_apply", text="Rotation") + layout.operator("object.scale_apply", text="Scale") + layout.separator() + layout.operator("object.visual_transform_apply", text="Visual Transform") + layout.operator("object.duplicates_make_real") class VIEW3D_MT_object_parent(bpy.types.Menu): @@ -644,8 +691,8 @@ class VIEW3D_MT_object_parent(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("object.parent_set", text="Set") - layout.itemO("object.parent_clear", text="Clear") + layout.operator("object.parent_set", text="Set") + layout.operator("object.parent_clear", text="Clear") class VIEW3D_MT_object_track(bpy.types.Menu): @@ -654,8 +701,8 @@ class VIEW3D_MT_object_track(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("object.track_set", text="Set") - layout.itemO("object.track_clear", text="Clear") + layout.operator("object.track_set", text="Set") + layout.operator("object.track_clear", text="Clear") class VIEW3D_MT_object_group(bpy.types.Menu): @@ -664,13 +711,13 @@ class VIEW3D_MT_object_group(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("group.create") - layout.itemO("group.objects_remove") + layout.operator("group.create") + layout.operator("group.objects_remove") - layout.itemS() + layout.separator() - layout.itemO("group.objects_add_active") - layout.itemO("group.objects_remove_active") + layout.operator("group.objects_add_active") + layout.operator("group.objects_remove_active") class VIEW3D_MT_object_constraints(bpy.types.Menu): @@ -679,8 +726,8 @@ class VIEW3D_MT_object_constraints(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("object.constraint_add_with_targets") - layout.itemO("object.constraints_clear") + layout.operator("object.constraint_add_with_targets") + layout.operator("object.constraints_clear") class VIEW3D_MT_object_showhide(bpy.types.Menu): @@ -689,9 +736,9 @@ class VIEW3D_MT_object_showhide(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("object.restrictview_clear", text="Show Hidden") - layout.itemO("object.restrictview_set", text="Hide Selected") - layout.item_booleanO("object.restrictview_set", "unselected", True, text="Hide Unselected") + layout.operator("object.restrictview_clear", text="Show Hidden") + layout.operator("object.restrictview_set", text="Hide Selected") + layout.operator("object.restrictview_set", text="Hide Unselected").unselected = True class VIEW3D_MT_make_single_user(bpy.types.Menu): @@ -700,19 +747,19 @@ class VIEW3D_MT_make_single_user(bpy.types.Menu): def draw(self, context): layout = self.layout - props = layout.itemO("object.make_single_user", properties=True, text="Object") + props = layout.operator("object.make_single_user", text="Object") props.object = True - props = layout.itemO("object.make_single_user", properties=True, text="Object & ObData") + props = layout.operator("object.make_single_user", text="Object & ObData") props.object = props.obdata = True - props = layout.itemO("object.make_single_user", properties=True, text="Object & ObData & Materials+Tex") + props = layout.operator("object.make_single_user", text="Object & ObData & Materials+Tex") props.object = props.obdata = props.material = props.texture = True - props = layout.itemO("object.make_single_user", properties=True, text="Materials+Tex") + props = layout.operator("object.make_single_user", text="Materials+Tex") props.material = props.texture = True - props = layout.itemO("object.make_single_user", properties=True, text="Animation") + props = layout.operator("object.make_single_user", text="Animation") props.animation = True @@ -722,9 +769,9 @@ class VIEW3D_MT_make_links(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.item_menu_enumO("object.make_links_scene", "type", text="Objects to Scene...") + layout.operator_menu_enum("object.make_links_scene", "type", text="Objects to Scene...") - layout.items_enumO("object.make_links_data", property="type") # inline + layout.operator_enums("object.make_links_data", property="type") # inline # ********** Vertex paint menu ********** @@ -736,9 +783,8 @@ class VIEW3D_MT_paint_vertex(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("paint.vertex_color_set") - props = layout.itemO("paint.vertex_color_set", text="Set Selected Vertex Colors", properties=True) - props.selected = True + layout.operator("paint.vertex_color_set") + layout.operator("paint.vertex_color_set", text="Set Selected Vertex Colors").selected = True class VIEW3D_MT_hook(bpy.types.Menu): @@ -747,17 +793,17 @@ class VIEW3D_MT_hook(bpy.types.Menu): def draw(self, context): layout = self.layout layout.operator_context = 'EXEC_AREA' - layout.itemO("object.hook_add_newob") - layout.itemO("object.hook_add_selob") - + layout.operator("object.hook_add_newob") + layout.operator("object.hook_add_selob") + if [mod.type == 'HOOK' for mod in context.active_object.modifiers]: - layout.itemS() - layout.item_menu_enumO("object.hook_assign", "modifier") - layout.item_menu_enumO("object.hook_remove", "modifier") - layout.itemS() - layout.item_menu_enumO("object.hook_select", "modifier") - layout.item_menu_enumO("object.hook_reset", "modifier") - layout.item_menu_enumO("object.hook_recenter", "modifier") + layout.separator() + layout.operator_menu_enum("object.hook_assign", "modifier") + layout.operator_menu_enum("object.hook_remove", "modifier") + layout.separator() + layout.operator_menu_enum("object.hook_select", "modifier") + layout.operator_menu_enum("object.hook_reset", "modifier") + layout.operator_menu_enum("object.hook_recenter", "modifier") class VIEW3D_MT_vertex_group(bpy.types.Menu): @@ -766,21 +812,21 @@ class VIEW3D_MT_vertex_group(bpy.types.Menu): def draw(self, context): layout = self.layout layout.operator_context = 'EXEC_AREA' - layout.item_booleanO("object.vertex_group_assign", "new", True, text="Assign to New Group") - + layout.operator("object.vertex_group_assign", text="Assign to New Group").new = True + ob = context.active_object if ob.mode == 'EDIT': if ob.vertex_groups and ob.active_vertex_group: - layout.itemS() - layout.itemO("object.vertex_group_assign", text="Assign to Active Group") - layout.itemO("object.vertex_group_remove_from", text="Remove from Active Group") - layout.item_booleanO("object.vertex_group_remove_from", "all", True, text="Remove from All") - layout.itemS() - + layout.separator() + layout.operator("object.vertex_group_assign", text="Assign to Active Group") + layout.operator("object.vertex_group_remove_from", text="Remove from Active Group") + layout.operator("object.vertex_group_remove_from", text="Remove from All").all = True + layout.separator() + if ob.vertex_groups and ob.active_vertex_group: - layout.item_menu_enumO("object.vertex_group_set_active", "group", text="Set Active Group") - layout.itemO("object.vertex_group_remove", text="Remove Active Group") - layout.item_booleanO("object.vertex_group_remove", "all", True, text="Remove All Groups") + layout.operator_menu_enum("object.vertex_group_set_active", "group", text="Set Active Group") + layout.operator("object.vertex_group_remove", text="Remove Active Group") + layout.operator("object.vertex_group_remove", text="Remove All Groups").all = True # ********** Sculpt menu ********** @@ -795,31 +841,31 @@ class VIEW3D_MT_sculpt(bpy.types.Menu): sculpt = context.tool_settings.sculpt brush = context.tool_settings.sculpt.brush - layout.itemR(sculpt, "symmetry_x") - layout.itemR(sculpt, "symmetry_y") - layout.itemR(sculpt, "symmetry_z") - layout.itemS() - layout.itemR(sculpt, "lock_x") - layout.itemR(sculpt, "lock_y") - layout.itemR(sculpt, "lock_z") - layout.itemS() - layout.item_menu_enumO("brush.curve_preset", property="shape") - layout.itemS() + layout.prop(sculpt, "symmetry_x") + layout.prop(sculpt, "symmetry_y") + layout.prop(sculpt, "symmetry_z") + layout.separator() + layout.prop(sculpt, "lock_x") + layout.prop(sculpt, "lock_y") + layout.prop(sculpt, "lock_z") + layout.separator() + layout.operator_menu_enum("brush.curve_preset", property="shape") + layout.separator() sculpt_tool = brush.sculpt_tool if sculpt_tool != 'GRAB': - layout.itemR(brush, "use_airbrush") + layout.prop(brush, "use_airbrush") if sculpt_tool != 'LAYER': - layout.itemR(brush, "use_anchor") + layout.prop(brush, "use_anchor") if sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'): - layout.itemR(brush, "flip_direction") + layout.prop(brush, "flip_direction") if sculpt_tool == 'LAYER': - layout.itemR(brush, "use_persistent") - layout.itemO("sculpt.set_persistent_base") + layout.prop(brush, "use_persistent") + layout.operator("sculpt.set_persistent_base") # ********** Particle menu ********** @@ -832,21 +878,21 @@ class VIEW3D_MT_particle(bpy.types.Menu): particle_edit = context.tool_settings.particle_edit - layout.itemO("particle.mirror") + layout.operator("particle.mirror") - layout.itemS() + layout.separator() - layout.itemO("particle.remove_doubles") - layout.itemO("particle.delete") + layout.operator("particle.remove_doubles") + layout.operator("particle.delete") if particle_edit.selection_mode == 'POINT': - layout.itemO("particle.subdivide") + layout.operator("particle.subdivide") - layout.itemO("particle.rekey") + layout.operator("particle.rekey") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_particle_showhide") + layout.menu("VIEW3D_MT_particle_showhide") class VIEW3D_MT_particle_showhide(VIEW3D_MT_showhide): @@ -862,60 +908,60 @@ class VIEW3D_MT_pose(bpy.types.Menu): layout = self.layout arm = context.active_object.data - - layout.itemM("VIEW3D_MT_transform") - layout.itemM("VIEW3D_MT_snap") + + layout.menu("VIEW3D_MT_transform") + layout.menu("VIEW3D_MT_snap") if arm.drawtype in ('BBONE', 'ENVELOPE'): - layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance") + layout.operator("tfm.transform", text="Scale Envelope Distance").mode = 'BONESIZE' - layout.itemM("VIEW3D_MT_pose_transform") + layout.menu("VIEW3D_MT_pose_transform") - layout.itemS() + layout.separator() - layout.itemO("anim.insert_keyframe_menu", text="Insert Keyframe...") - layout.itemO("anim.delete_keyframe_v3d", text="Delete Keyframe...") + layout.operator("anim.keyframe_insert_menu", text="Insert Keyframe...") + layout.operator("anim.keyframe_delete_v3d", text="Delete Keyframe...") - layout.itemS() + layout.separator() - layout.itemO("pose.apply") - layout.itemO("pose.relax") + layout.operator("pose.apply") + layout.operator("pose.relax") - layout.itemS() + layout.separator() - layout.itemO("pose.copy") - layout.itemO("pose.paste") - layout.item_booleanO("pose.paste", "flipped", True, text="Paste X-Flipped Pose") + layout.operator("pose.copy") + layout.operator("pose.paste") + layout.operator("pose.paste", text="Paste X-Flipped Pose").flipped = True - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_pose_pose") - layout.itemM("VIEW3D_MT_pose_motion") - layout.itemM("VIEW3D_MT_pose_group") + layout.menu("VIEW3D_MT_pose_pose") + layout.menu("VIEW3D_MT_pose_motion") + layout.menu("VIEW3D_MT_pose_group") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_pose_ik") - layout.itemM("VIEW3D_MT_pose_constraints") + layout.menu("VIEW3D_MT_pose_ik") + layout.menu("VIEW3D_MT_pose_constraints") - layout.itemS() + layout.separator() layout.operator_context = 'EXEC_AREA' - layout.item_enumO("pose.autoside_names", "axis", 'XAXIS', text="AutoName Left/Right") - layout.item_enumO("pose.autoside_names", "axis", 'YAXIS', text="AutoName Front/Back") - layout.item_enumO("pose.autoside_names", "axis", 'ZAXIS', text="AutoName Top/Bottom") + layout.operator("pose.autoside_names", text="AutoName Left/Right").axis = 'XAXIS' + layout.operator("pose.autoside_names", text="AutoName Front/Back").axis = 'YAXIS' + layout.operator("pose.autoside_names", text="AutoName Top/Bottom").axis = 'ZAXIS' - layout.itemO("pose.flip_names") + layout.operator("pose.flip_names") - layout.itemS() + layout.separator() layout.operator_context = 'INVOKE_AREA' - layout.itemO("pose.armature_layers", text="Change Armature Layers...") - layout.itemO("pose.bone_layers", text="Change Bone Layers...") + layout.operator("pose.armature_layers", text="Change Armature Layers...") + layout.operator("pose.bone_layers", text="Change Bone Layers...") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_pose_showhide") - layout.item_menu_enumO("pose.flags_set", 'mode', text="Bone Settings") + layout.menu("VIEW3D_MT_pose_showhide") + layout.operator_menu_enum("pose.flags_set", 'mode', text="Bone Settings") class VIEW3D_MT_pose_transform(bpy.types.Menu): @@ -924,13 +970,13 @@ class VIEW3D_MT_pose_transform(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemL(text="User Transform") + layout.label(text="User Transform") - layout.itemO("pose.loc_clear", text="Location") - layout.itemO("pose.rot_clear", text="Rotation") - layout.itemO("pose.scale_clear", text="Scale") + layout.operator("pose.loc_clear", text="Location") + layout.operator("pose.rot_clear", text="Rotation") + layout.operator("pose.scale_clear", text="Scale") - layout.itemL(text="Origin") + layout.label(text="Origin") class VIEW3D_MT_pose_pose(bpy.types.Menu): @@ -939,13 +985,13 @@ class VIEW3D_MT_pose_pose(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("poselib.browse_interactive", text="Browse Poses...") + layout.operator("poselib.browse_interactive", text="Browse Poses...") - layout.itemS() + layout.separator() - layout.itemO("poselib.pose_add", text="Add Pose...") - layout.itemO("poselib.pose_rename", text="Rename Pose...") - layout.itemO("poselib.pose_remove", text="Remove Pose...") + layout.operator("poselib.pose_add", text="Add Pose...") + layout.operator("poselib.pose_rename", text="Rename Pose...") + layout.operator("poselib.pose_remove", text="Remove Pose...") class VIEW3D_MT_pose_motion(bpy.types.Menu): @@ -954,8 +1000,8 @@ class VIEW3D_MT_pose_motion(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("pose.paths_calculate", text="Calculate") - layout.itemO("pose.paths_clear", text="Clear") + layout.operator("pose.paths_calculate", text="Calculate") + layout.operator("pose.paths_clear", text="Clear") class VIEW3D_MT_pose_group(bpy.types.Menu): @@ -963,13 +1009,13 @@ class VIEW3D_MT_pose_group(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("pose.group_add") - layout.itemO("pose.group_remove") + layout.operator("pose.group_add") + layout.operator("pose.group_remove") - layout.itemS() + layout.separator() - layout.itemO("pose.group_assign") - layout.itemO("pose.group_unassign") + layout.operator("pose.group_assign") + layout.operator("pose.group_unassign") class VIEW3D_MT_pose_ik(bpy.types.Menu): @@ -978,8 +1024,8 @@ class VIEW3D_MT_pose_ik(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("pose.ik_add") - layout.itemO("pose.ik_clear") + layout.operator("pose.ik_add") + layout.operator("pose.ik_clear") class VIEW3D_MT_pose_constraints(bpy.types.Menu): @@ -988,8 +1034,8 @@ class VIEW3D_MT_pose_constraints(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("pose.constraint_add_with_targets", text="Add (With Targets)...") - layout.itemO("pose.constraints_clear") + layout.operator("pose.constraint_add_with_targets", text="Add (With Targets)...") + layout.operator("pose.constraints_clear") class VIEW3D_MT_pose_showhide(VIEW3D_MT_showhide): @@ -1006,41 +1052,41 @@ class VIEW3D_MT_edit_mesh(bpy.types.Menu): settings = context.tool_settings - layout.itemO("ed.undo") - layout.itemO("ed.redo") + layout.operator("ed.undo") + layout.operator("ed.redo") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_transform") - layout.itemM("VIEW3D_MT_mirror") - layout.itemM("VIEW3D_MT_snap") + layout.menu("VIEW3D_MT_transform") + layout.menu("VIEW3D_MT_mirror") + layout.menu("VIEW3D_MT_snap") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_uv_map", text="UV Unwrap...") + layout.menu("VIEW3D_MT_uv_map", text="UV Unwrap...") - layout.itemS() + layout.separator() - layout.itemO("mesh.extrude_move") - layout.itemO("mesh.duplicate_move") - layout.itemO("mesh.delete", text="Delete...") + layout.operator("mesh.extrude_move") + layout.operator("mesh.duplicate_move") + layout.operator("mesh.delete", text="Delete...") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_edit_mesh_vertices") - layout.itemM("VIEW3D_MT_edit_mesh_edges") - layout.itemM("VIEW3D_MT_edit_mesh_faces") - layout.itemM("VIEW3D_MT_edit_mesh_normals") + layout.menu("VIEW3D_MT_edit_mesh_vertices") + layout.menu("VIEW3D_MT_edit_mesh_edges") + layout.menu("VIEW3D_MT_edit_mesh_faces") + layout.menu("VIEW3D_MT_edit_mesh_normals") - layout.itemS() + layout.separator() - layout.itemR(settings, "automerge_editing") - layout.item_menu_enumR(settings, "proportional_editing") - layout.item_menu_enumR(settings, "proportional_editing_falloff") + layout.prop(settings, "automerge_editing") + layout.prop_menu_enum(settings, "proportional_editing") + layout.prop_menu_enum(settings, "proportional_editing_falloff") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_edit_mesh_showhide") + layout.menu("VIEW3D_MT_edit_mesh_showhide") class VIEW3D_MT_edit_mesh_specials(bpy.types.Menu): @@ -1051,21 +1097,21 @@ class VIEW3D_MT_edit_mesh_specials(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_WIN' - layout.itemO("mesh.subdivide", text="Subdivide") - layout.item_floatO("mesh.subdivide", "smoothness", 1.0, text="Subdivide Smooth") - layout.itemO("mesh.merge", text="Merge...") - layout.itemO("mesh.remove_doubles") - layout.itemO("mesh.hide", text="Hide") - layout.itemO("mesh.reveal", text="Reveal") - layout.itemO("mesh.select_inverse") - layout.itemO("mesh.flip_normals") - layout.itemO("mesh.vertices_smooth", text="Smooth") - # layout.itemO("mesh.bevel", text="Bevel") - layout.itemO("mesh.faces_shade_smooth") - layout.itemO("mesh.faces_shade_flat") - layout.itemO("mesh.blend_from_shape") - layout.itemO("mesh.shape_propagate_to_all") - layout.itemO("mesh.select_vertex_path") + layout.operator("mesh.subdivide", text="Subdivide") + layout.operator("mesh.subdivide", text="Subdivide Smooth").smoothness = 1.0 + layout.operator("mesh.merge", text="Merge...") + layout.operator("mesh.remove_doubles") + layout.operator("mesh.hide", text="Hide") + layout.operator("mesh.reveal", text="Reveal") + layout.operator("mesh.select_inverse") + layout.operator("mesh.flip_normals") + layout.operator("mesh.vertices_smooth", text="Smooth") + # layout.operator("mesh.bevel", text="Bevel") + layout.operator("mesh.faces_shade_smooth") + layout.operator("mesh.faces_shade_flat") + layout.operator("mesh.blend_from_shape") + layout.operator("mesh.shape_propagate_to_all") + layout.operator("mesh.select_vertex_path") class VIEW3D_MT_edit_mesh_vertices(bpy.types.Menu): @@ -1075,27 +1121,27 @@ class VIEW3D_MT_edit_mesh_vertices(bpy.types.Menu): layout = self.layout layout.operator_context = 'INVOKE_REGION_WIN' - layout.itemO("mesh.merge") - layout.itemO("mesh.rip") - layout.itemO("mesh.split") - layout.itemO("mesh.separate") + layout.operator("mesh.merge") + layout.operator("mesh.rip") + layout.operator("mesh.split") + layout.operator("mesh.separate") - layout.itemS() + layout.separator() - layout.itemO("mesh.vertices_smooth") - layout.itemO("mesh.remove_doubles") + layout.operator("mesh.vertices_smooth") + layout.operator("mesh.remove_doubles") - layout.itemO("mesh.select_vertex_path") + layout.operator("mesh.select_vertex_path") - layout.itemO("mesh.blend_from_shape") + layout.operator("mesh.blend_from_shape") - layout.itemO("object.vertex_group_blend") - layout.itemO("mesh.shape_propagate_to_all") + layout.operator("object.vertex_group_blend") + layout.operator("mesh.shape_propagate_to_all") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_vertex_group") - layout.itemM("VIEW3D_MT_hook") + layout.menu("VIEW3D_MT_vertex_group") + layout.menu("VIEW3D_MT_hook") class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu): @@ -1105,36 +1151,36 @@ class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu): layout = self.layout layout.operator_context = 'INVOKE_REGION_WIN' - layout.itemO("mesh.edge_face_add") - layout.itemO("mesh.subdivide") + layout.operator("mesh.edge_face_add") + layout.operator("mesh.subdivide") - layout.itemS() + layout.separator() - layout.itemO("mesh.mark_seam") - layout.item_booleanO("mesh.mark_seam", "clear", True, text="Clear Seam") + layout.operator("mesh.mark_seam") + layout.operator("mesh.mark_seam", text="Clear Seam").clear = True - layout.itemS() + layout.separator() - layout.itemO("mesh.mark_sharp") - layout.item_booleanO("mesh.mark_sharp", "clear", True, text="Clear Sharp") + layout.operator("mesh.mark_sharp") + layout.operator("mesh.mark_sharp", text="Clear Sharp").clear = True - layout.itemS() + layout.separator() - layout.item_enumO("mesh.edge_rotate", "direction", 'CW', text="Rotate Edge CW") - layout.item_enumO("mesh.edge_rotate", "direction", 'CCW', text="Rotate Edge CCW") + layout.operator("mesh.edge_rotate", text="Rotate Edge CW").direction = 'CW' + layout.operator("mesh.edge_rotate", text="Rotate Edge CCW").direction = 'CCW' - layout.itemS() + layout.separator() - layout.itemO("TFM_OT_edge_slide", text="Edge Slide") - layout.itemO("mesh.loop_multi_select", text="Edge Loop") + layout.operator("TFM_OT_edge_slide", text="Edge Slide") + layout.operator("mesh.loop_multi_select", text="Edge Loop") # uiItemO(layout, "Loopcut", 0, "mesh.loop_cut"); // CutEdgeloop(em, 1); # uiItemO(layout, "Edge Slide", 0, "mesh.edge_slide"); // EdgeSlide(em, 0,0.0); - layout.item_booleanO("mesh.loop_multi_select", "ring", True, text="Edge Ring") + layout.operator("mesh.loop_multi_select", text="Edge Ring").ring = True - layout.itemO("mesh.loop_to_region") - layout.itemO("mesh.region_to_loop") + layout.operator("mesh.loop_to_region") + layout.operator("mesh.region_to_loop") class VIEW3D_MT_edit_mesh_faces(dynamic_menu.DynMenu): @@ -1145,36 +1191,36 @@ class VIEW3D_MT_edit_mesh_faces(dynamic_menu.DynMenu): layout = self.layout layout.operator_context = 'INVOKE_REGION_WIN' - # layout.itemO("mesh.bevel") - # layout.itemO("mesh.bevel") - layout.itemO("mesh.edge_face_add") - layout.itemO("mesh.fill") - layout.itemO("mesh.beauty_fill") + # layout.operator("mesh.bevel") + # layout.operator("mesh.bevel") + layout.operator("mesh.edge_face_add") + layout.operator("mesh.fill") + layout.operator("mesh.beauty_fill") - layout.itemS() + layout.separator() - layout.itemO("mesh.quads_convert_to_tris") - layout.itemO("mesh.tris_convert_to_quads") - layout.itemO("mesh.edge_flip") + layout.operator("mesh.quads_convert_to_tris") + layout.operator("mesh.tris_convert_to_quads") + layout.operator("mesh.edge_flip") - layout.itemS() + layout.separator() - layout.itemO("mesh.faces_shade_smooth") - layout.itemO("mesh.faces_shade_flat") + layout.operator("mesh.faces_shade_smooth") + layout.operator("mesh.faces_shade_flat") - layout.itemS() + layout.separator() # uiItemO(layout, NULL, 0, "mesh.face_mode"); // mesh_set_face_flags(em, 1); # uiItemBooleanO(layout, NULL, 0, "mesh.face_mode", "clear", 1); // mesh_set_face_flags(em, 0); - layout.item_enumO("mesh.edge_rotate", "direction", 'CW', text="Rotate Edge CW") + layout.operator("mesh.edge_rotate", text="Rotate Edge CW").direction = 'CW' - layout.itemS() + layout.separator() - layout.item_menu_enumO("mesh.uvs_rotate", "direction") - layout.item_menu_enumO("mesh.uvs_mirror", "axis") - layout.item_menu_enumO("mesh.colors_rotate", "direction") - layout.item_menu_enumO("mesh.colors_mirror", "axis") + layout.operator_menu_enum("mesh.uvs_rotate", "direction") + layout.operator_menu_enum("mesh.uvs_mirror", "axis") + layout.operator_menu_enum("mesh.colors_rotate", "direction") + layout.operator_menu_enum("mesh.colors_mirror", "axis") class VIEW3D_MT_edit_mesh_normals(bpy.types.Menu): @@ -1183,12 +1229,12 @@ class VIEW3D_MT_edit_mesh_normals(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("mesh.normals_make_consistent", text="Recalculate Outside") - layout.item_booleanO("mesh.normals_make_consistent", "inside", True, text="Recalculate Inside") + layout.operator("mesh.normals_make_consistent", text="Recalculate Outside") + layout.operator("mesh.normals_make_consistent", text="Recalculate Inside").inside = True - layout.itemS() + layout.separator() - layout.itemO("mesh.flip_normals") + layout.operator("mesh.flip_normals") class VIEW3D_MT_edit_mesh_showhide(VIEW3D_MT_showhide): @@ -1202,33 +1248,33 @@ def draw_curve(self, context): layout = self.layout settings = context.tool_settings - - layout.itemM("VIEW3D_MT_transform") - layout.itemM("VIEW3D_MT_mirror") - layout.itemM("VIEW3D_MT_snap") - layout.itemS() + layout.menu("VIEW3D_MT_transform") + layout.menu("VIEW3D_MT_mirror") + layout.menu("VIEW3D_MT_snap") + + layout.separator() - layout.itemO("curve.extrude") - layout.itemO("curve.duplicate") - layout.itemO("curve.separate") - layout.itemO("curve.make_segment") - layout.itemO("curve.cyclic_toggle") - layout.itemO("curve.delete", text="Delete...") + layout.operator("curve.extrude") + layout.operator("curve.duplicate") + layout.operator("curve.separate") + layout.operator("curve.make_segment") + layout.operator("curve.cyclic_toggle") + layout.operator("curve.delete", text="Delete...") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_edit_curve_ctrlpoints") - layout.itemM("VIEW3D_MT_edit_curve_segments") + layout.menu("VIEW3D_MT_edit_curve_ctrlpoints") + layout.menu("VIEW3D_MT_edit_curve_segments") - layout.itemS() + layout.separator() - layout.item_menu_enumR(settings, "proportional_editing") - layout.item_menu_enumR(settings, "proportional_editing_falloff") + layout.prop_menu_enum(settings, "proportional_editing") + layout.prop_menu_enum(settings, "proportional_editing_falloff") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_edit_curve_showhide") + layout.menu("VIEW3D_MT_edit_curve_showhide") class VIEW3D_MT_edit_curve(bpy.types.Menu): @@ -1246,17 +1292,17 @@ class VIEW3D_MT_edit_curve_ctrlpoints(bpy.types.Menu): edit_object = context.edit_object if edit_object.type == 'CURVE': - layout.item_enumO("tfm.transform", "mode", 'TILT') - layout.itemO("curve.tilt_clear") - layout.itemO("curve.separate") + layout.operator("tfm.transform").mode = 'TILT' + layout.operator("curve.tilt_clear") + layout.operator("curve.separate") - layout.itemS() + layout.separator() - layout.item_menu_enumO("curve.handle_type_set", "type") + layout.operator_menu_enum("curve.handle_type_set", "type") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_hook") + layout.menu("VIEW3D_MT_hook") class VIEW3D_MT_edit_curve_segments(bpy.types.Menu): @@ -1265,8 +1311,8 @@ class VIEW3D_MT_edit_curve_segments(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("curve.subdivide") - layout.itemO("curve.switch_direction") + layout.operator("curve.subdivide") + layout.operator("curve.switch_direction") class VIEW3D_MT_edit_curve_showhide(VIEW3D_MT_showhide): @@ -1285,11 +1331,11 @@ class VIEW3D_MT_edit_text(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("font.file_paste") + layout.operator("font.file_paste") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_edit_text_chars") + layout.menu("VIEW3D_MT_edit_text_chars") class VIEW3D_MT_edit_text_chars(bpy.types.Menu): @@ -1298,32 +1344,32 @@ class VIEW3D_MT_edit_text_chars(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.item_stringO("font.text_insert", "text", b'\xC2\xA9'.decode(), text="Copyright|Alt C") - layout.item_stringO("font.text_insert", "text", b'\xC2\xAE'.decode(), text="Registered Trademark|Alt R") + layout.operator("font.text_insert", text="Copyright|Alt C").text = b'\xC2\xA9'.decode() + layout.operator("font.text_insert", text="Registered Trademark|Alt R").text = b'\xC2\xAE'.decode() - layout.itemS() + layout.separator() - layout.item_stringO("font.text_insert", "text", b'\xC2\xB0'.decode(), text="Degree Sign|Alt G") - layout.item_stringO("font.text_insert", "text", b'\xC3\x97'.decode(), text="Multiplication Sign|Alt x") - layout.item_stringO("font.text_insert", "text", b'\xC2\x8A'.decode(), text="Circle|Alt .") - layout.item_stringO("font.text_insert", "text", b'\xC2\xB9'.decode(), text="Superscript 1|Alt 1") - layout.item_stringO("font.text_insert", "text", b'\xC2\xB2'.decode(), text="Superscript 2|Alt 2") - layout.item_stringO("font.text_insert", "text", b'\xC2\xB3'.decode(), text="Superscript 3|Alt 3") - layout.item_stringO("font.text_insert", "text", b'\xC2\xBB'.decode(), text="Double >>|Alt >") - layout.item_stringO("font.text_insert", "text", b'\xC2\xAB'.decode(), text="Double <<|Alt <") - layout.item_stringO("font.text_insert", "text", b'\xE2\x80\xB0'.decode(), text="Promillage|Alt %") + layout.operator("font.text_insert", text="Degree Sign|Alt G").text = b'\xC2\xB0'.decode() + layout.operator("font.text_insert", text="Multiplication Sign|Alt x").text = b'\xC3\x97'.decode() + layout.operator("font.text_insert", text="Circle|Alt .").text = b'\xC2\x8A'.decode() + layout.operator("font.text_insert", text="Superscript 1|Alt 1").text = b'\xC2\xB9'.decode() + layout.operator("font.text_insert", text="Superscript 2|Alt 2").text = b'\xC2\xB2'.decode() + layout.operator("font.text_insert", text="Superscript 3|Alt 3").text = b'\xC2\xB3'.decode() + layout.operator("font.text_insert", text="Double >>|Alt >").text = b'\xC2\xBB'.decode() + layout.operator("font.text_insert", text="Double <<|Alt <").text = b'\xC2\xAB'.decode() + layout.operator("font.text_insert", text="Promillage|Alt %").text = b'\xE2\x80\xB0'.decode() - layout.itemS() + layout.separator() - layout.item_stringO("font.text_insert", "text", b'\xC2\xA4'.decode(), text="Dutch Florin|Alt F") - layout.item_stringO("font.text_insert", "text", b'\xC2\xA3'.decode(), text="British Pound|Alt L") - layout.item_stringO("font.text_insert", "text", b'\xC2\xA5'.decode(), text="Japanese Yen|Alt Y") + layout.operator("font.text_insert", text="Dutch Florin|Alt F").text = b'\xC2\xA4'.decode() + layout.operator("font.text_insert", text="British Pound|Alt L").text = b'\xC2\xA3'.decode() + layout.operator("font.text_insert", text="Japanese Yen|Alt Y").text = b'\xC2\xA5'.decode() - layout.itemS() + layout.separator() - layout.item_stringO("font.text_insert", "text", b'\xC3\x9F'.decode(), text="German S|Alt S") - layout.item_stringO("font.text_insert", "text", b'\xC2\xBF'.decode(), text="Spanish Question Mark|Alt ?") - layout.item_stringO("font.text_insert", "text", b'\xC2\xA1'.decode(), text="Spanish Exclamation Mark|Alt !") + layout.operator("font.text_insert", text="German S|Alt S").text = b'\xC3\x9F'.decode() + layout.operator("font.text_insert", text="Spanish Question Mark|Alt ?").text = b'\xC2\xBF'.decode() + layout.operator("font.text_insert", text="Spanish Exclamation Mark|Alt !").text = b'\xC2\xA1'.decode() class VIEW3D_MT_edit_meta(bpy.types.Menu): @@ -1334,28 +1380,28 @@ class VIEW3D_MT_edit_meta(bpy.types.Menu): settings = context.tool_settings - layout.itemO("ed.undo") - layout.itemO("ed.redo") + layout.operator("ed.undo") + layout.operator("ed.redo") - layout.itemS() - - layout.itemM("VIEW3D_MT_transform") - layout.itemM("VIEW3D_MT_mirror") - layout.itemM("VIEW3D_MT_snap") + layout.separator() - layout.itemS() + layout.menu("VIEW3D_MT_transform") + layout.menu("VIEW3D_MT_mirror") + layout.menu("VIEW3D_MT_snap") - layout.itemO("mball.delete_metaelems", text="Delete...") - layout.itemO("mball.duplicate_metaelems") + layout.separator() - layout.itemS() + layout.operator("mball.delete_metaelems", text="Delete...") + layout.operator("mball.duplicate_metaelems") - layout.item_menu_enumR(settings, "proportional_editing") - layout.item_menu_enumR(settings, "proportional_editing_falloff") + layout.separator() - layout.itemS() + layout.prop_menu_enum(settings, "proportional_editing") + layout.prop_menu_enum(settings, "proportional_editing_falloff") - layout.itemM("VIEW3D_MT_edit_meta_showhide") + layout.separator() + + layout.menu("VIEW3D_MT_edit_meta_showhide") class VIEW3D_MT_edit_meta_showhide(bpy.types.Menu): @@ -1364,9 +1410,9 @@ class VIEW3D_MT_edit_meta_showhide(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("mball.reveal_metaelems", text="Show Hidden") - layout.itemO("mball.hide_metaelems", text="Hide Selected") - layout.item_booleanO("mball.hide_metaelems", "unselected", True, text="Hide Unselected") + layout.operator("mball.reveal_metaelems", text="Show Hidden") + layout.operator("mball.hide_metaelems", text="Hide Selected") + layout.operator("mball.hide_metaelems", text="Hide Unselected").unselected = True class VIEW3D_MT_edit_lattice(bpy.types.Menu): @@ -1376,19 +1422,19 @@ class VIEW3D_MT_edit_lattice(bpy.types.Menu): layout = self.layout settings = context.tool_settings - - layout.itemM("VIEW3D_MT_transform") - layout.itemM("VIEW3D_MT_mirror") - layout.itemM("VIEW3D_MT_snap") - layout.itemS() + layout.menu("VIEW3D_MT_transform") + layout.menu("VIEW3D_MT_mirror") + layout.menu("VIEW3D_MT_snap") - layout.itemO("lattice.make_regular") + layout.separator() - layout.itemS() + layout.operator("lattice.make_regular") - layout.item_menu_enumR(settings, "proportional_editing") - layout.item_menu_enumR(settings, "proportional_editing_falloff") + layout.separator() + + layout.prop_menu_enum(settings, "proportional_editing") + layout.prop_menu_enum(settings, "proportional_editing_falloff") class VIEW3D_MT_edit_armature(bpy.types.Menu): @@ -1399,56 +1445,56 @@ class VIEW3D_MT_edit_armature(bpy.types.Menu): edit_object = context.edit_object arm = edit_object.data - - layout.itemM("VIEW3D_MT_transform") - layout.itemM("VIEW3D_MT_mirror") - layout.itemM("VIEW3D_MT_snap") - layout.itemM("VIEW3D_MT_edit_armature_roll") + + layout.menu("VIEW3D_MT_transform") + layout.menu("VIEW3D_MT_mirror") + layout.menu("VIEW3D_MT_snap") + layout.menu("VIEW3D_MT_edit_armature_roll") if arm.drawtype == 'ENVELOPE': - layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance") + layout.operator("tfm.transform", text="Scale Envelope Distance").mode = 'BONESIZE' else: - layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale B-Bone Width") + layout.operator("tfm.transform", text="Scale B-Bone Width").mode = 'BONESIZE' - layout.itemS() + layout.separator() - layout.itemO("armature.extrude_move") + layout.operator("armature.extrude_move") if arm.x_axis_mirror: - layout.itemO("armature.extrude_forked") + layout.operator("armature.extrude_forked") - layout.itemO("armature.duplicate_move") - layout.itemO("armature.merge") - layout.itemO("armature.fill") - layout.itemO("armature.delete") - layout.itemO("armature.separate") + layout.operator("armature.duplicate_move") + layout.operator("armature.merge") + layout.operator("armature.fill") + layout.operator("armature.delete") + layout.operator("armature.separate") - layout.itemS() + layout.separator() - layout.itemO("armature.subdivide_multi", text="Subdivide") - layout.itemO("armature.switch_direction", text="Switch Direction") + layout.operator("armature.subdivide_multi", text="Subdivide") + layout.operator("armature.switch_direction", text="Switch Direction") - layout.itemS() + layout.separator() layout.operator_context = 'EXEC_AREA' - layout.item_enumO("armature.autoside_names", "type", 'XAXIS', text="AutoName Left/Right") - layout.item_enumO("armature.autoside_names", "type", 'YAXIS', text="AutoName Front/Back") - layout.item_enumO("armature.autoside_names", "type", 'ZAXIS', text="AutoName Top/Bottom") - layout.itemO("armature.flip_names") + layout.operator("armature.autoside_names", text="AutoName Left/Right").type = 'XAXIS' + layout.operator("armature.autoside_names", text="AutoName Front/Back").type = 'YAXIS' + layout.operator("armature.autoside_names", text="AutoName Top/Bottom").type = 'ZAXIS' + layout.operator("armature.flip_names") - layout.itemS() + layout.separator() layout.operator_context = 'INVOKE_DEFAULT' - layout.itemO("armature.armature_layers") - layout.itemO("armature.bone_layers") + layout.operator("armature.armature_layers") + layout.operator("armature.bone_layers") - layout.itemS() + layout.separator() - layout.itemM("VIEW3D_MT_edit_armature_parent") + layout.menu("VIEW3D_MT_edit_armature_parent") - layout.itemS() + layout.separator() - layout.item_menu_enumO("armature.flags_set", "mode", text="Bone Settings") + layout.operator_menu_enum("armature.flags_set", "mode", text="Bone Settings") class VIEW3D_MT_armature_specials(bpy.types.Menu): @@ -1459,16 +1505,16 @@ class VIEW3D_MT_armature_specials(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_WIN' - layout.itemO("armature.subdivide_multi", text="Subdivide") - layout.itemO("armature.switch_direction", text="Switch Direction") + layout.operator("armature.subdivide_multi", text="Subdivide") + layout.operator("armature.switch_direction", text="Switch Direction") - layout.itemS() + layout.separator() layout.operator_context = 'EXEC_REGION_WIN' - layout.item_enumO("armature.autoside_names", "type", 'XAXIS', text="AutoName Left/Right") - layout.item_enumO("armature.autoside_names", "type", 'YAXIS', text="AutoName Front/Back") - layout.item_enumO("armature.autoside_names", "type", 'ZAXIS', text="AutoName Top/Bottom") - layout.itemO("armature.flip_names", text="Flip Names") + layout.operator("armature.autoside_names", text="AutoName Left/Right").type = 'XAXIS' + layout.operator("armature.autoside_names", text="AutoName Front/Back").type = 'YAXIS' + layout.operator("armature.autoside_names", text="AutoName Top/Bottom").type = 'ZAXIS' + layout.operator("armature.flip_names", text="Flip Names") class VIEW3D_MT_edit_armature_parent(bpy.types.Menu): @@ -1477,8 +1523,8 @@ class VIEW3D_MT_edit_armature_parent(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.itemO("armature.parent_set", text="Make") - layout.itemO("armature.parent_clear", text="Clear") + layout.operator("armature.parent_set", text="Make") + layout.operator("armature.parent_clear", text="Clear") class VIEW3D_MT_edit_armature_roll(bpy.types.Menu): @@ -1487,12 +1533,12 @@ class VIEW3D_MT_edit_armature_roll(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.item_enumO("armature.calculate_roll", "type", 'GLOBALUP', text="Clear Roll (Z-Axis Up)") - layout.item_enumO("armature.calculate_roll", "type", 'CURSOR', text="Roll to Cursor") + layout.operator("armature.calculate_roll", text="Clear Roll (Z-Axis Up)").type = 'GLOBALUP' + layout.operator("armature.calculate_roll", text="Roll to Cursor").type = 'CURSOR' - layout.itemS() + layout.separator() - layout.item_enumO("tfm.transform", "mode", 'BONE_ROLL', text="Set Roll") + layout.operator("tfm.transform", text="Set Roll").mode = 'BONE_ROLL' # ********** Panel ********** @@ -1513,22 +1559,20 @@ class VIEW3D_PT_3dview_properties(bpy.types.Panel): scene = context.scene col = layout.column() - col.itemL(text="Camera:") - col.itemR(view, "camera", text="") - col.itemR(view, "lens") - - col = layout.column(align=True) - col.itemL(text="Clip:") - col.itemR(view, "clip_start", text="Start") - col.itemR(view, "clip_end", text="End") + col.label(text="Camera:") + col.prop(view, "camera", text="") + col.prop(view, "lens") + col.label(text="Lock to Object:") + col.prop(view, "lock_object", text="") + if view.lock_object and view.lock_object.type == 'ARMATURE': + col.prop_object(view, "lock_bone", view.lock_object.data, "bones", text="") col = layout.column(align=True) - col.itemL(text="Grid:") - col.itemR(view, "grid_lines", text="Lines") - col.itemR(view, "grid_spacing", text="Spacing") - col.itemR(view, "grid_subdivisions", text="Subdivisions") + col.label(text="Clip:") + col.prop(view, "clip_start", text="Start") + col.prop(view, "clip_end", text="End") - layout.column().itemR(scene, "cursor_location", text="3D Cursor:") + layout.column().prop(scene, "cursor_location", text="3D Cursor:") class VIEW3D_PT_3dview_name(bpy.types.Panel): @@ -1544,15 +1588,15 @@ class VIEW3D_PT_3dview_name(bpy.types.Panel): ob = context.active_object row = layout.row() - row.itemL(text="", icon='ICON_OBJECT_DATA') - row.itemR(ob, "name", text="") + row.label(text="", icon='ICON_OBJECT_DATA') + row.prop(ob, "name", text="") if ob.type == 'ARMATURE' and ob.mode in ('EDIT', 'POSE'): bone = context.active_bone if bone: row = layout.row() - row.itemL(text="", icon='ICON_BONE_DATA') - row.itemR(bone, "name", text="") + row.label(text="", icon='ICON_BONE_DATA') + row.prop(bone, "name", text="") class VIEW3D_PT_3dview_display(bpy.types.Panel): @@ -1573,30 +1617,37 @@ class VIEW3D_PT_3dview_display(bpy.types.Panel): ob = context.object col = layout.column() - col.itemR(view, "display_floor", text="Grid Floor") - col.itemR(view, "display_x_axis", text="X Axis") - col.itemR(view, "display_y_axis", text="Y Axis") - col.itemR(view, "display_z_axis", text="Z Axis") - col.itemR(view, "outline_selected") - col.itemR(view, "all_object_centers") - col.itemR(view, "relationship_lines") + col.prop(view, "display_x_axis", text="X Axis") + col.prop(view, "display_y_axis", text="Y Axis") + col.prop(view, "display_z_axis", text="Z Axis") + col.prop(view, "outline_selected") + col.prop(view, "all_object_centers") + col.prop(view, "relationship_lines") if ob and ob.type == 'MESH': mesh = ob.data - col.itemR(mesh, "all_edges") + col.prop(mesh, "all_edges") col = layout.column() - col.itemL(text="Shading:") - col.itemR(gs, "material_mode", text="") - col.itemR(view, "textured_solid") + col.prop(view, "display_floor", text="Grid Floor") + sub = col.column(align=True) + sub.active = view.display_floor + sub.prop(view, "grid_lines", text="Lines") + sub.prop(view, "grid_spacing", text="Spacing") + sub.prop(view, "grid_subdivisions", text="Subdivisions") + + col = layout.column() + col.label(text="Shading:") + col.prop(gs, "material_mode", text="") + col.prop(view, "textured_solid") # XXX - the Quad View options don't work yet -# layout.itemS() +# layout.separator() # -# layout.itemO("screen.region_foursplit", text="Toggle Quad View") +# layout.operator("screen.region_foursplit", text="Toggle Quad View") # col = layout.column() -# col.itemR(view, "lock_rotation") -# col.itemR(view, "box_preview") -# col.itemR(view, "box_clip") +# col.prop(view, "lock_rotation") +# col.prop(view, "box_preview") +# col.prop(view, "box_clip") class VIEW3D_PT_3dview_meshdisplay(bpy.types.Panel): @@ -1614,25 +1665,25 @@ class VIEW3D_PT_3dview_meshdisplay(bpy.types.Panel): mesh = context.active_object.data col = layout.column() - col.itemL(text="Overlays:") - col.itemR(mesh, "draw_edges", text="Edges") - col.itemR(mesh, "draw_faces", text="Faces") - col.itemR(mesh, "draw_creases", text="Creases") - col.itemR(mesh, "draw_bevel_weights", text="Bevel Weights") - col.itemR(mesh, "draw_seams", text="Seams") - col.itemR(mesh, "draw_sharp", text="Sharp") - - col.itemS() - col.itemL(text="Normals:") - col.itemR(mesh, "draw_normals", text="Face") - col.itemR(mesh, "draw_vertex_normals", text="Vertex") - col.itemR(context.scene.tool_settings, "normal_size", text="Normal Size") - - col.itemS() - col.itemL(text="Numerics:") - col.itemR(mesh, "draw_edge_lenght") - col.itemR(mesh, "draw_edge_angle") - col.itemR(mesh, "draw_face_area") + col.label(text="Overlays:") + col.prop(mesh, "draw_edges", text="Edges") + col.prop(mesh, "draw_faces", text="Faces") + col.prop(mesh, "draw_creases", text="Creases") + col.prop(mesh, "draw_bevel_weights", text="Bevel Weights") + col.prop(mesh, "draw_seams", text="Seams") + col.prop(mesh, "draw_sharp", text="Sharp") + + col.separator() + col.label(text="Normals:") + col.prop(mesh, "draw_normals", text="Face") + col.prop(mesh, "draw_vertex_normals", text="Vertex") + col.prop(context.scene.tool_settings, "normal_size", text="Normal Size") + + col.separator() + col.label(text="Numerics:") + col.prop(mesh, "draw_edge_lenght") + col.prop(mesh, "draw_edge_angle") + col.prop(mesh, "draw_face_area") class VIEW3D_PT_3dview_curvedisplay(bpy.types.Panel): @@ -1650,10 +1701,10 @@ class VIEW3D_PT_3dview_curvedisplay(bpy.types.Panel): curve = context.active_object.data col = layout.column() - col.itemL(text="Overlays:") - col.itemR(curve, "draw_handles", text="Handles") - col.itemR(curve, "draw_normals", text="Normals") - col.itemR(context.scene.tool_settings, "normal_size", text="Normal Size") + col.label(text="Overlays:") + col.prop(curve, "draw_handles", text="Handles") + col.prop(curve, "draw_normals", text="Normals") + col.prop(context.scene.tool_settings, "normal_size", text="Normal Size") class VIEW3D_PT_background_image(bpy.types.Panel): @@ -1671,7 +1722,7 @@ class VIEW3D_PT_background_image(bpy.types.Panel): layout = self.layout view = context.space_data - layout.itemR(view, "display_background_image", text="") + layout.prop(view, "display_background_image", text="") def draw(self, context): layout = self.layout @@ -1683,16 +1734,15 @@ class VIEW3D_PT_background_image(bpy.types.Panel): layout.active = view.display_background_image col = layout.column() - col.itemR(bg, "image", text="") - #col.itemR(bg, "image_user") - col.itemR(bg, "size") - col.itemR(bg, "transparency", slider=True) + col.template_ID(bg, "image", open="image.open") + col.prop(bg, "size") + col.prop(bg, "transparency", slider=True) col = layout.column(align=True) - col.itemL(text="Offset:") - col.itemR(bg, "offset_x", text="X") - col.itemR(bg, "offset_y", text="Y") + col.label(text="Offset:") + col.prop(bg, "offset_x", text="X") + col.prop(bg, "offset_y", text="Y") class VIEW3D_PT_transform_orientations(bpy.types.Panel): @@ -1712,14 +1762,14 @@ class VIEW3D_PT_transform_orientations(bpy.types.Panel): col = layout.column() - col.itemR(view, "transform_orientation") - col.itemO("tfm.create_orientation", text="Create") + col.prop(view, "transform_orientation") + col.operator("tfm.create_orientation", text="Create") orientation = view.current_orientation if orientation: - col.itemR(orientation, "name") - col.itemO("tfm.delete_orientation", text="Delete") + col.prop(orientation, "name") + col.operator("tfm.delete_orientation", text="Delete") class VIEW3D_PT_etch_a_ton(bpy.types.Panel): @@ -1737,7 +1787,7 @@ class VIEW3D_PT_etch_a_ton(bpy.types.Panel): layout = self.layout toolsettings = context.scene.tool_settings - layout.itemR(toolsettings, "bone_sketching", text="") + layout.prop(toolsettings, "bone_sketching", text="") def draw(self, context): layout = self.layout @@ -1745,23 +1795,23 @@ class VIEW3D_PT_etch_a_ton(bpy.types.Panel): col = layout.column() - col.itemR(toolsettings, "etch_quick") - col.itemR(toolsettings, "etch_overdraw") + col.prop(toolsettings, "etch_quick") + col.prop(toolsettings, "etch_overdraw") - col.itemR(toolsettings, "etch_convert_mode") + col.prop(toolsettings, "etch_convert_mode") if toolsettings.etch_convert_mode == 'LENGTH': - col.itemR(toolsettings, "etch_length_limit") + col.prop(toolsettings, "etch_length_limit") elif toolsettings.etch_convert_mode == 'ADAPTIVE': - col.itemR(toolsettings, "etch_adaptive_limit") + col.prop(toolsettings, "etch_adaptive_limit") elif toolsettings.etch_convert_mode == 'FIXED': - col.itemR(toolsettings, "etch_subdivision_number") + col.prop(toolsettings, "etch_subdivision_number") elif toolsettings.etch_convert_mode == 'RETARGET': - col.itemR(toolsettings, "etch_template") - col.itemR(toolsettings, "etch_roll_mode") - col.itemR(toolsettings, "etch_autoname") - col.itemR(toolsettings, "etch_number") - col.itemR(toolsettings, "etch_side") + col.prop(toolsettings, "etch_template") + col.prop(toolsettings, "etch_roll_mode") + col.prop(toolsettings, "etch_autoname") + col.prop(toolsettings, "etch_number") + col.prop(toolsettings, "etch_side") class VIEW3D_PT_context_properties(bpy.types.Panel): @@ -1770,62 +1820,36 @@ class VIEW3D_PT_context_properties(bpy.types.Panel): bl_label = "Properties" bl_default_closed = True - def draw(self, context): - import rna_prop_ui - # reload(rna_prop_ui) + def _active_context_member(self, context): obj = context.object if obj: mode = obj.mode if mode == 'POSE': - item = "active_pchan" + return "active_pose_bone" elif mode == 'EDIT' and obj.type == 'ARMATURE': - item = "active_bone" + return "active_bone" else: - item = "object" - - # Draw with no edit button - rna_prop_ui.draw(self.layout, context, item, False) - - -# Operators -from bpy.props import * - + return "object" -class OBJECT_OT_select_pattern(bpy.types.Operator): - '''Select object matching a naming pattern.''' - bl_idname = "object.select_pattern" - bl_label = "Select Pattern" - bl_register = True - bl_undo = True + return "" - pattern = StringProperty(name="Pattern", description="Name filter using '*' and '?' wildcard chars", maxlen=32, default="*") - case_sensitive = BoolProperty(name="Case Sensitive", description="Do a case sensitive compare", default=False) - extend = BoolProperty(name="Extend", description="Extend the existing selection", default=True) - - def execute(self, context): + def poll(self, context): + member = self._active_context_member(context) + if member: + context_member = getattr(context, member) + return context_member and context_member.keys() - import fnmatch + return False - if self.properties.case_sensitive: - pattern_match = fnmatch.fnmatchcase - else: - pattern_match = lambda a, b: fnmatch.fnmatchcase(a.upper(), b.upper()) - - for ob in context.visible_objects: - if pattern_match(ob.name, self.properties.pattern): - ob.selected = True - elif not self.properties.extend: - ob.selected = False + def draw(self, context): + import rna_prop_ui + # reload(rna_prop_ui) + member = self._active_context_member(context) - return ('FINISHED',) + if member: + # Draw with no edit button + rna_prop_ui.draw(self.layout, context, member, False) - # TODO - python cant do popups yet - ''' - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) - return ('RUNNING_MODAL',) - ''' bpy.types.register(VIEW3D_HT_header) # Header @@ -1921,5 +1945,3 @@ bpy.types.register(VIEW3D_PT_transform_orientations) bpy.types.register(VIEW3D_PT_etch_a_ton) bpy.types.register(VIEW3D_PT_context_properties) - -bpy.ops.add(OBJECT_OT_select_pattern) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index b80d55e9076..8559efa42c6 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -36,41 +36,41 @@ class VIEW3D_PT_tools_objectmode(View3DPanel): layout = self.layout col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") + col.label(text="Transform:") + col.operator("tfm.translate") + col.operator("tfm.rotate") + col.operator("tfm.resize", text="Scale") col = layout.column(align=True) - col.itemL(text="Object:") - col.itemO("object.duplicate_move") - col.itemO("object.delete") - col.itemO("object.join") + col.label(text="Object:") + col.operator("object.duplicate_move") + col.operator("object.delete") + col.operator("object.join") active_object = context.active_object if active_object and active_object.type == 'MESH': col = layout.column(align=True) - col.itemL(text="Shading:") - col.itemO("object.shade_smooth", text="Smooth") - col.itemO("object.shade_flat", text="Flat") + col.label(text="Shading:") + col.operator("object.shade_smooth", text="Smooth") + col.operator("object.shade_flat", text="Flat") col = layout.column(align=True) - col.itemL(text="Keyframes:") - col.itemO("anim.insert_keyframe_menu", text="Insert") - col.itemO("anim.delete_keyframe_v3d", text="Remove") + col.label(text="Keyframes:") + col.operator("anim.keyframe_insert_menu", text="Insert") + col.operator("anim.keyframe_delete_v3d", text="Remove") col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") + col.label(text="Repeat:") + col.operator("screen.repeat_last") + col.operator("screen.repeat_history", text="History...") col = layout.column(align=True) - col.itemL(text="Grease Pencil:") + col.label(text="Grease Pencil:") row = col.row() - row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw") - row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line") - row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase") + row.operator("gpencil.draw", text="Draw").mode = 'DRAW' + row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT' + row.operator("gpencil.draw", text="Erase").mode = 'ERASER' # ********** default tools for editmode_mesh **************** @@ -83,63 +83,63 @@ class VIEW3D_PT_tools_meshedit(View3DPanel): layout = self.layout col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") - col.itemO("tfm.shrink_fatten", text="Along Normal") + col.label(text="Transform:") + col.operator("tfm.translate") + col.operator("tfm.rotate") + col.operator("tfm.resize", text="Scale") + col.operator("tfm.shrink_fatten", text="Along Normal") col = layout.column(align=True) - col.itemL(text="Deform:") - col.itemO("tfm.edge_slide") - col.itemO("mesh.rip_move") - col.itemO("mesh.vertices_smooth") + col.label(text="Deform:") + col.operator("tfm.edge_slide") + col.operator("mesh.rip_move") + col.operator("mesh.vertices_smooth") col = layout.column(align=True) - col.itemL(text="Add:") - col.itemO("mesh.extrude_move") - col.itemO("mesh.subdivide") - col.itemO("mesh.loopcut") - col.itemO("mesh.duplicate_move") - col.itemO("mesh.spin") - col.itemO("mesh.screw") + col.label(text="Add:") + col.operator("mesh.extrude_move") + col.operator("mesh.subdivide") + col.operator("mesh.loopcut_slide") + col.operator("mesh.duplicate_move") + col.operator("mesh.spin") + col.operator("mesh.screw") col = layout.column(align=True) - col.itemL(text="Remove:") - col.itemO("mesh.delete") - col.itemO("mesh.merge") - col.itemO("mesh.remove_doubles") + col.label(text="Remove:") + col.operator("mesh.delete") + col.operator("mesh.merge") + col.operator("mesh.remove_doubles") col = layout.column(align=True) - col.itemL(text="Normals:") - col.itemO("mesh.normals_make_consistent", text="Recalculate") - col.itemO("mesh.flip_normals", text="Flip Direction") + col.label(text="Normals:") + col.operator("mesh.normals_make_consistent", text="Recalculate") + col.operator("mesh.flip_normals", text="Flip Direction") col = layout.column(align=True) - col.itemL(text="UV Mapping:") - col.item_stringO("wm.call_menu", "name", "VIEW3D_MT_uv_map", text="Unwrap") - col.itemO("mesh.mark_seam") - col.item_booleanO("mesh.mark_seam", "clear", True, text="Clear Seam") + col.label(text="UV Mapping:") + col.operator("wm.call_menu", text="Unwrap").name = "VIEW3D_MT_uv_map" + col.operator("mesh.mark_seam") + col.operator("mesh.mark_seam", text="Clear Seam").clear = True col = layout.column(align=True) - col.itemL(text="Shading:") - col.itemO("mesh.faces_shade_smooth", text="Smooth") - col.itemO("mesh.faces_shade_flat", text="Flat") + col.label(text="Shading:") + col.operator("mesh.faces_shade_smooth", text="Smooth") + col.operator("mesh.faces_shade_flat", text="Flat") col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") + col.label(text="Repeat:") + col.operator("screen.repeat_last") + col.operator("screen.repeat_history", text="History...") col = layout.column(align=True) - col.itemL(text="Grease Pencil:") + col.label(text="Grease Pencil:") row = col.row() - row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw") - row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line") - row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase") + row.operator("gpencil.draw", text="Draw").mode = 'DRAW' + row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT' + row.operator("gpencil.draw", text="Erase").mode = 'ERASER' class VIEW3D_PT_tools_meshedit_options(View3DPanel): @@ -154,7 +154,7 @@ class VIEW3D_PT_tools_meshedit_options(View3DPanel): if ob: mesh = context.active_object.data col = layout.column(align=True) - col.itemR(mesh, "use_mirror_x") + col.prop(mesh, "use_mirror_x") # ********** default tools for editmode_curve **************** @@ -167,48 +167,48 @@ class VIEW3D_PT_tools_curveedit(View3DPanel): layout = self.layout col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") - + col.label(text="Transform:") + col.operator("tfm.translate") + col.operator("tfm.rotate") + col.operator("tfm.resize", text="Scale") + col = layout.column(align=True) - col.item_enumO("tfm.transform", "mode", 'TILT') - col.item_enumO("tfm.transform", "mode", 'CURVE_SHRINKFATTEN') + col.operator("tfm.transform", text="Tilt").mode = 'TILT' + col.operator("tfm.transform", text="Shrink/Fatten").mode = 'CURVE_SHRINKFATTEN' col = layout.column(align=True) - col.itemL(text="Curve:") - col.itemO("curve.duplicate") - col.itemO("curve.delete") - col.itemO("curve.cyclic_toggle") - col.itemO("curve.switch_direction") - col.itemO("curve.spline_type_set") + col.label(text="Curve:") + col.operator("curve.duplicate") + col.operator("curve.delete") + col.operator("curve.cyclic_toggle") + col.operator("curve.switch_direction") + col.operator("curve.spline_type_set") col = layout.column(align=True) - col.itemL(text="Handles:") + col.label(text="Handles:") row = col.row() - row.item_enumO("curve.handle_type_set", "type", 'AUTOMATIC', text="Auto") - row.item_enumO("curve.handle_type_set", "type", 'VECTOR') + row.operator("curve.handle_type_set", text="Auto").type = 'AUTOMATIC' + row.operator("curve.handle_type_set", text="Vector").type = 'VECTOR' row = col.row() - row.item_enumO("curve.handle_type_set", "type", 'ALIGN') - row.item_enumO("curve.handle_type_set", "type", 'FREE_ALIGN', text="Free") + row.operator("curve.handle_type_set", text="Align").type = 'ALIGN' + row.operator("curve.handle_type_set", text="Free").type = 'FREE_ALIGN' col = layout.column(align=True) - col.itemL(text="Modeling:") - col.itemO("curve.extrude") - col.itemO("curve.subdivide") + col.label(text="Modeling:") + col.operator("curve.extrude") + col.operator("curve.subdivide") col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") + col.label(text="Repeat:") + col.operator("screen.repeat_last") + col.operator("screen.repeat_history", text="History...") col = layout.column(align=True) - col.itemL(text="Grease Pencil:") + col.label(text="Grease Pencil:") row = col.row() - row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw") - row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line") - row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase") + row.operator("gpencil.draw", text="Draw").mode = 'DRAW' + row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT' + row.operator("gpencil.draw", text="Erase").mode = 'ERASER' # ********** default tools for editmode_surface **************** @@ -221,34 +221,34 @@ class VIEW3D_PT_tools_surfaceedit(View3DPanel): layout = self.layout col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") + col.label(text="Transform:") + col.operator("tfm.translate") + col.operator("tfm.rotate") + col.operator("tfm.resize", text="Scale") col = layout.column(align=True) - col.itemL(text="Curve:") - col.itemO("curve.duplicate") - col.itemO("curve.delete") - col.itemO("curve.cyclic_toggle") - col.itemO("curve.switch_direction") + col.label(text="Curve:") + col.operator("curve.duplicate") + col.operator("curve.delete") + col.operator("curve.cyclic_toggle") + col.operator("curve.switch_direction") col = layout.column(align=True) - col.itemL(text="Modeling:") - col.itemO("curve.extrude") - col.itemO("curve.subdivide") + col.label(text="Modeling:") + col.operator("curve.extrude") + col.operator("curve.subdivide") col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") + col.label(text="Repeat:") + col.operator("screen.repeat_last") + col.operator("screen.repeat_history", text="History...") col = layout.column(align=True) - col.itemL(text="Grease Pencil:") + col.label(text="Grease Pencil:") row = col.row() - row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw") - row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line") - row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase") + row.operator("gpencil.draw", text="Draw").mode = 'DRAW' + row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT' + row.operator("gpencil.draw", text="Erase").mode = 'ERASER' # ********** default tools for editmode_text **************** @@ -261,26 +261,26 @@ class VIEW3D_PT_tools_textedit(View3DPanel): layout = self.layout col = layout.column(align=True) - col.itemL(text="Text Edit:") - col.itemO("font.text_copy", text="Copy") - col.itemO("font.text_cut", text="Cut") - col.itemO("font.text_paste", text="Paste") + col.label(text="Text Edit:") + col.operator("font.text_copy", text="Copy") + col.operator("font.text_cut", text="Cut") + col.operator("font.text_paste", text="Paste") col = layout.column(align=True) - col.itemL(text="Set Case:") - col.item_enumO("font.case_set", "case", 'UPPER', text="To Upper") - col.item_enumO("font.case_set", "case", 'LOWER', text="To Lower") + col.label(text="Set Case:") + col.operator("font.case_set", text="To Upper").case = 'UPPER' + col.operator("font.case_set", text="To Lower").case = 'LOWER' col = layout.column(align=True) - col.itemL(text="Style:") - col.item_enumO("font.style_toggle", "style", 'BOLD') - col.item_enumO("font.style_toggle", "style", 'ITALIC') - col.item_enumO("font.style_toggle", "style", 'UNDERLINE') + col.label(text="Style:") + col.operator("font.style_toggle", text="Bold").style = 'BOLD' + col.operator("font.style_toggle", text="Italic").style = 'ITALIC' + col.operator("font.style_toggle", text="Underline").style = 'UNDERLINE' col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") + col.label(text="Repeat:") + col.operator("screen.repeat_last") + col.operator("screen.repeat_history", text="History...") # ********** default tools for editmode_armature **************** @@ -294,33 +294,33 @@ class VIEW3D_PT_tools_armatureedit(View3DPanel): layout = self.layout col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") + col.label(text="Transform:") + col.operator("tfm.translate") + col.operator("tfm.rotate") + col.operator("tfm.resize", text="Scale") col = layout.column(align=True) - col.itemL(text="Bones:") - col.itemO("armature.bone_primitive_add", text="Add") - col.itemO("armature.duplicate_move", text="Duplicate") - col.itemO("armature.delete", text="Delete") + col.label(text="Bones:") + col.operator("armature.bone_primitive_add", text="Add") + col.operator("armature.duplicate_move", text="Duplicate") + col.operator("armature.delete", text="Delete") col = layout.column(align=True) - col.itemL(text="Modeling:") - col.itemO("armature.extrude_move") - col.itemO("armature.subdivide_multi", text="Subdivide") + col.label(text="Modeling:") + col.operator("armature.extrude_move") + col.operator("armature.subdivide_multi", text="Subdivide") col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") + col.label(text="Repeat:") + col.operator("screen.repeat_last") + col.operator("screen.repeat_history", text="History...") col = layout.column(align=True) - col.itemL(text="Grease Pencil:") + col.label(text="Grease Pencil:") row = col.row() - row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw") - row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line") - row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase") + row.operator("gpencil.draw", text="Draw").mode = 'DRAW' + row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT' + row.operator("gpencil.draw", text="Erase").mode = 'ERASER' class VIEW3D_PT_tools_armatureedit_options(View3DPanel): @@ -333,7 +333,7 @@ class VIEW3D_PT_tools_armatureedit_options(View3DPanel): arm = context.active_object.data col = layout.column(align=True) - col.itemR(arm, "x_axis_mirror") + col.prop(arm, "x_axis_mirror") # ********** default tools for editmode_mball **************** @@ -346,22 +346,22 @@ class VIEW3D_PT_tools_mballedit(View3DPanel): layout = self.layout col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") + col.label(text="Transform:") + col.operator("tfm.translate") + col.operator("tfm.rotate") + col.operator("tfm.resize", text="Scale") col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") + col.label(text="Repeat:") + col.operator("screen.repeat_last") + col.operator("screen.repeat_history", text="History...") col = layout.column(align=True) - col.itemL(text="Grease Pencil:") + col.label(text="Grease Pencil:") row = col.row() - row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw") - row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line") - row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase") + row.operator("gpencil.draw", text="Draw").mode = 'DRAW' + row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT' + row.operator("gpencil.draw", text="Erase").mode = 'ERASER' # ********** default tools for editmode_lattice **************** @@ -374,25 +374,25 @@ class VIEW3D_PT_tools_latticeedit(View3DPanel): layout = self.layout col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") + col.label(text="Transform:") + col.operator("tfm.translate") + col.operator("tfm.rotate") + col.operator("tfm.resize", text="Scale") col = layout.column(align=True) - col.itemO("lattice.make_regular") + col.operator("lattice.make_regular") col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") + col.label(text="Repeat:") + col.operator("screen.repeat_last") + col.operator("screen.repeat_history", text="History...") col = layout.column(align=True) - col.itemL(text="Grease Pencil:") + col.label(text="Grease Pencil:") row = col.row() - row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw") - row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line") - row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase") + row.operator("gpencil.draw", text="Draw").mode = 'DRAW' + row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT' + row.operator("gpencil.draw", text="Erase").mode = 'ERASER' # ********** default tools for posemode **************** @@ -406,44 +406,44 @@ class VIEW3D_PT_tools_posemode(View3DPanel): layout = self.layout col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") + col.label(text="Transform:") + col.operator("tfm.translate") + col.operator("tfm.rotate") + col.operator("tfm.resize", text="Scale") col = layout.column(align=True) - col.itemL(text="In-Between:") + col.label(text="In-Between:") row = col.row() - row.itemO("pose.push", text="Push") - row.itemO("pose.relax", text="Relax") - col.itemO("pose.breakdown", text="Breakdowner") + row.operator("pose.push", text="Push") + row.operator("pose.relax", text="Relax") + col.operator("pose.breakdown", text="Breakdowner") col = layout.column(align=True) - col.itemL(text="Pose:") + col.label(text="Pose:") row = col.row() - row.itemO("pose.copy", text="Copy") - row.itemO("pose.paste", text="Paste") + row.operator("pose.copy", text="Copy") + row.operator("pose.paste", text="Paste") col = layout.column(align=True) - col.itemO("poselib.pose_add", text="Add To Library") + col.operator("poselib.pose_add", text="Add To Library") col = layout.column(align=True) - col.itemL(text="Keyframes:") + col.label(text="Keyframes:") - col.itemO("anim.insert_keyframe_menu", text="Insert") - col.itemO("anim.delete_keyframe_v3d", text="Remove") + col.operator("anim.keyframe_insert_menu", text="Insert") + col.operator("anim.keyframe_delete_v3d", text="Remove") col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") + col.label(text="Repeat:") + col.operator("screen.repeat_last") + col.operator("screen.repeat_history", text="History...") col = layout.column(align=True) - col.itemL(text="Grease Pencil:") + col.label(text="Grease Pencil:") row = col.row() - row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw") - row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line") - row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase") + row.operator("gpencil.draw", text="Draw").mode = 'DRAW' + row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT' + row.operator("gpencil.draw", text="Erase").mode = 'ERASER' class VIEW3D_PT_tools_posemode_options(View3DPanel): @@ -456,8 +456,8 @@ class VIEW3D_PT_tools_posemode_options(View3DPanel): arm = context.active_object.data col = layout.column(align=True) - col.itemR(arm, "x_axis_mirror") - col.itemR(arm, "auto_ik") + col.prop(arm, "x_axis_mirror") + col.prop(arm, "auto_ik") # ********** default tools for paint modes **************** @@ -507,119 +507,119 @@ class VIEW3D_PT_tools_brush(PaintPanel): # XXX This needs a check if psys is editable. if context.particle_edit_object: # XXX Select Particle System - layout.column().itemR(settings, "tool", expand=True) + layout.column().prop(settings, "tool", expand=True) if settings.tool != 'NONE': col = layout.column() - col.itemR(brush, "size", slider=True) - col.itemR(brush, "strength", slider=True) + col.prop(brush, "size", slider=True) + col.prop(brush, "strength", slider=True) if settings.tool == 'ADD': col = layout.column() - col.itemR(settings, "add_interpolate") + col.prop(settings, "add_interpolate") sub = col.column(align=True) sub.active = settings.add_interpolate - sub.itemR(brush, "steps", slider=True) - sub.itemR(settings, "add_keys", slider=True) + sub.prop(brush, "steps", slider=True) + sub.prop(settings, "add_keys", slider=True) elif settings.tool == 'LENGTH': - layout.itemR(brush, "length_mode", expand=True) + layout.prop(brush, "length_mode", expand=True) elif settings.tool == 'PUFF': - layout.itemR(brush, "puff_mode", expand=True) + layout.prop(brush, "puff_mode", expand=True) # Sculpt Mode # elif context.sculpt_object and brush: col = layout.column() - col.itemS() - col.itemR(brush, "sculpt_tool", expand=True) - col.itemS() + col.separator() + col.prop(brush, "sculpt_tool", expand=True) + col.separator() row = col.row(align=True) - row.itemR(brush, "size", slider=True) - row.itemR(brush, "use_size_pressure", toggle=True, text="") + row.prop(brush, "size", slider=True) + row.prop(brush, "use_size_pressure", toggle=True, text="") if brush.sculpt_tool != 'GRAB': row = col.row(align=True) - row.itemR(brush, "strength", slider=True) - row.itemR(brush, "use_strength_pressure", text="") + row.prop(brush, "strength", slider=True) + row.prop(brush, "use_strength_pressure", text="") # XXX - TODO #row = col.row(align=True) - #row.itemR(brush, "jitter", slider=True) - #row.itemR(brush, "use_jitter_pressure", toggle=True, text="") + #row.prop(brush, "jitter", slider=True) + #row.prop(brush, "use_jitter_pressure", toggle=True, text="") col = layout.column() if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'): - col.row().itemR(brush, "direction", expand=True) + col.row().prop(brush, "direction", expand=True) if brush.sculpt_tool == 'LAYER': - col.itemR(brush, "use_persistent") - col.itemO("sculpt.set_persistent_base") + col.prop(brush, "use_persistent") + col.operator("sculpt.set_persistent_base") # Texture Paint Mode # elif context.texture_paint_object and brush: col = layout.column(align=True) - col.item_enumR(settings, "tool", 'DRAW') - col.item_enumR(settings, "tool", 'SOFTEN') - col.item_enumR(settings, "tool", 'CLONE') - col.item_enumR(settings, "tool", 'SMEAR') + col.prop_enum(settings, "tool", 'DRAW') + col.prop_enum(settings, "tool", 'SOFTEN') + col.prop_enum(settings, "tool", 'CLONE') + col.prop_enum(settings, "tool", 'SMEAR') col = layout.column() - col.itemR(brush, "color", text="") + col.prop(brush, "color", text="") row = col.row(align=True) - row.itemR(brush, "size", slider=True) - row.itemR(brush, "use_size_pressure", toggle=True, text="") + row.prop(brush, "size", slider=True) + row.prop(brush, "use_size_pressure", toggle=True, text="") row = col.row(align=True) - row.itemR(brush, "strength", slider=True) - row.itemR(brush, "use_strength_pressure", toggle=True, text="") + row.prop(brush, "strength", slider=True) + row.prop(brush, "use_strength_pressure", toggle=True, text="") row = col.row(align=True) - row.itemR(brush, "jitter", slider=True) - row.itemR(brush, "use_jitter_pressure", toggle=True, text="") + row.prop(brush, "jitter", slider=True) + row.prop(brush, "use_jitter_pressure", toggle=True, text="") - col.itemR(brush, "blend", text="Blend") + col.prop(brush, "blend", text="Blend") # Weight Paint Mode # elif context.weight_paint_object and brush: - layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight", slider=True) - layout.itemR(context.tool_settings, "auto_normalize", text="Auto Normalize") + layout.prop(context.tool_settings, "vertex_group_weight", text="Weight", slider=True) + layout.prop(context.tool_settings, "auto_normalize", text="Auto Normalize") col = layout.column() row = col.row(align=True) - row.itemR(brush, "size", slider=True) - row.itemR(brush, "use_size_pressure", toggle=True, text="") + row.prop(brush, "size", slider=True) + row.prop(brush, "use_size_pressure", toggle=True, text="") row = col.row(align=True) - row.itemR(brush, "strength", slider=True) - row.itemR(brush, "use_strength_pressure", toggle=True, text="") + row.prop(brush, "strength", slider=True) + row.prop(brush, "use_strength_pressure", toggle=True, text="") row = col.row(align=True) - row.itemR(brush, "jitter", slider=True) - row.itemR(brush, "use_jitter_pressure", toggle=True, text="") + row.prop(brush, "jitter", slider=True) + row.prop(brush, "use_jitter_pressure", toggle=True, text="") # Vertex Paint Mode # elif context.vertex_paint_object and brush: col = layout.column() - col.itemR(brush, "color", text="") + col.prop(brush, "color", text="") row = col.row(align=True) - row.itemR(brush, "size", slider=True) - row.itemR(brush, "use_size_pressure", toggle=True, text="") + row.prop(brush, "size", slider=True) + row.prop(brush, "use_size_pressure", toggle=True, text="") row = col.row(align=True) - row.itemR(brush, "strength", slider=True) - row.itemR(brush, "use_strength_pressure", toggle=True, text="") + row.prop(brush, "strength", slider=True) + row.prop(brush, "use_strength_pressure", toggle=True, text="") # XXX - TODO #row = col.row(align=True) - #row.itemR(brush, "jitter", slider=True) - #row.itemR(brush, "use_jitter_pressure", toggle=True, text="") + #row.prop(brush, "jitter", slider=True) + #row.prop(brush, "use_jitter_pressure", toggle=True, text="") class VIEW3D_PT_tools_brush_stroke(PaintPanel): @@ -642,27 +642,27 @@ class VIEW3D_PT_tools_brush_stroke(PaintPanel): if context.sculpt_object: if brush.sculpt_tool != 'LAYER': - layout.itemR(brush, "use_anchor") - layout.itemR(brush, "use_rake") + layout.prop(brush, "use_anchor") + layout.prop(brush, "use_rake") - layout.itemR(brush, "use_airbrush") + layout.prop(brush, "use_airbrush") col = layout.column() col.active = brush.use_airbrush - col.itemR(brush, "rate", slider=True) + col.prop(brush, "rate", slider=True) if not texture_paint: - layout.itemR(brush, "use_smooth_stroke") + layout.prop(brush, "use_smooth_stroke") col = layout.column() col.active = brush.use_smooth_stroke - col.itemR(brush, "smooth_stroke_radius", text="Radius", slider=True) - col.itemR(brush, "smooth_stroke_factor", text="Factor", slider=True) + col.prop(brush, "smooth_stroke_radius", text="Radius", slider=True) + col.prop(brush, "smooth_stroke_factor", text="Factor", slider=True) - layout.itemR(brush, "use_space") + layout.prop(brush, "use_space") row = layout.row(align=True) row.active = brush.use_space - row.itemR(brush, "spacing", text="Distance", slider=True) + row.prop(brush, "spacing", text="Distance", slider=True) if texture_paint: - row.itemR(brush, "use_spacing_pressure", toggle=True, text="") + row.prop(brush, "use_spacing_pressure", toggle=True, text="") class VIEW3D_PT_tools_brush_curve(PaintPanel): @@ -680,7 +680,7 @@ class VIEW3D_PT_tools_brush_curve(PaintPanel): brush = settings.brush layout.template_curve_mapping(brush, "curve") - layout.item_menu_enumO("brush.curve_preset", property="shape") + layout.operator_menu_enum("brush.curve_preset", property="shape") class VIEW3D_PT_sculpt_options(PaintPanel): @@ -695,22 +695,22 @@ class VIEW3D_PT_sculpt_options(PaintPanel): sculpt = context.tool_settings.sculpt col = layout.column() - col.itemR(sculpt, "partial_redraw", text="Partial Refresh") - col.itemR(sculpt, "show_brush") + col.prop(sculpt, "partial_redraw", text="Partial Refresh") + col.prop(sculpt, "show_brush") split = self.layout.split() col = split.column() - col.itemL(text="Symmetry:") - col.itemR(sculpt, "symmetry_x", text="X") - col.itemR(sculpt, "symmetry_y", text="Y") - col.itemR(sculpt, "symmetry_z", text="Z") + col.label(text="Symmetry:") + col.prop(sculpt, "symmetry_x", text="X") + col.prop(sculpt, "symmetry_y", text="Y") + col.prop(sculpt, "symmetry_z", text="Z") col = split.column() - col.itemL(text="Lock:") - col.itemR(sculpt, "lock_x", text="X") - col.itemR(sculpt, "lock_y", text="Y") - col.itemR(sculpt, "lock_z", text="Z") + col.label(text="Lock:") + col.prop(sculpt, "lock_x", text="X") + col.prop(sculpt, "lock_y", text="Y") + col.prop(sculpt, "lock_z", text="Z") # ********** default tools for weightpaint **************** @@ -723,12 +723,12 @@ class VIEW3D_PT_tools_weightpaint(View3DPanel): layout = self.layout col = layout.column() - # col.itemL(text="Blend:") - col.itemO("object.vertex_group_normalize_all", text="Normalize All") - col.itemO("object.vertex_group_normalize", text="Normalize") - col.itemO("object.vertex_group_invert", text="Invert") - col.itemO("object.vertex_group_clean", text="Clean") - col.itemO("object.vertex_group_levels", text="Levels") + # col.label(text="Blend:") + col.operator("object.vertex_group_normalize_all", text="Normalize All") + col.operator("object.vertex_group_normalize", text="Normalize") + col.operator("object.vertex_group_invert", text="Invert") + col.operator("object.vertex_group_clean", text="Clean") + col.operator("object.vertex_group_levels", text="Levels") class VIEW3D_PT_tools_weightpaint_options(View3DPanel): @@ -741,21 +741,21 @@ class VIEW3D_PT_tools_weightpaint_options(View3DPanel): wpaint = context.tool_settings.weight_paint col = layout.column() - col.itemL(text="Blend:") - col.itemR(wpaint, "mode", text="") - col.itemR(wpaint, "all_faces") - col.itemR(wpaint, "normals") - col.itemR(wpaint, "spray") + col.label(text="Blend:") + col.prop(wpaint, "mode", text="") + col.prop(wpaint, "all_faces") + col.prop(wpaint, "normals") + col.prop(wpaint, "spray") data = context.weight_paint_object.data if type(data) == bpy.types.Mesh: - col.itemR(data, "use_mirror_x") + col.prop(data, "use_mirror_x") # Commented out because the Apply button isn't an operator yet, making these settings useless -# col.itemL(text="Gamma:") -# col.itemR(wpaint, "gamma", text="") -# col.itemL(text="Multiply:") -# col.itemR(wpaint, "mul", text="") +# col.label(text="Gamma:") +# col.prop(wpaint, "gamma", text="") +# col.label(text="Multiply:") +# col.prop(wpaint, "mul", text="") # Also missing now: # Soft, Vgroup, X-Mirror and "Clear" Operator. @@ -773,17 +773,17 @@ class VIEW3D_PT_tools_vertexpaint(View3DPanel): vpaint = context.tool_settings.vertex_paint col = layout.column() - col.itemL(text="Blend:") - col.itemR(vpaint, "mode", text="") - col.itemR(vpaint, "all_faces") - col.itemR(vpaint, "normals") - col.itemR(vpaint, "spray") + col.label(text="Blend:") + col.prop(vpaint, "mode", text="") + col.prop(vpaint, "all_faces") + col.prop(vpaint, "normals") + col.prop(vpaint, "spray") # Commented out because the Apply button isn't an operator yet, making these settings useless -# col.itemL(text="Gamma:") -# col.itemR(vpaint, "gamma", text="") -# col.itemL(text="Multiply:") -# col.itemR(vpaint, "mul", text="") +# col.label(text="Gamma:") +# col.prop(vpaint, "gamma", text="") +# col.label(text="Multiply:") +# col.prop(vpaint, "mul", text="") # ********** default tools for texturepaint **************** @@ -798,7 +798,7 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel): def draw_header(self, context): ipaint = context.tool_settings.image_paint - self.layout.itemR(ipaint, "use_projection", text="") + self.layout.prop(ipaint, "use_projection", text="") def draw(self, context): layout = self.layout @@ -810,36 +810,36 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel): col = layout.column() sub = col.column() sub.active = use_projection - sub.itemR(ipaint, "use_occlude") - sub.itemR(ipaint, "use_backface_cull") + sub.prop(ipaint, "use_occlude") + sub.prop(ipaint, "use_backface_cull") split = layout.split() col = split.column() col.active = (use_projection) - col.itemR(ipaint, "use_normal_falloff") + col.prop(ipaint, "use_normal_falloff") col = split.column() col.active = (ipaint.use_normal_falloff and use_projection) - col.itemR(ipaint, "normal_angle", text="") + col.prop(ipaint, "normal_angle", text="") split = layout.split(percentage=0.7) col = split.column(align=False) col.active = (use_projection) - col.itemR(ipaint, "use_stencil_layer") + col.prop(ipaint, "use_stencil_layer") col = split.column(align=False) col.active = (use_projection and ipaint.use_stencil_layer) - col.itemR(ipaint, "invert_stencil", text="Inv") + col.prop(ipaint, "invert_stencil", text="Inv") col = layout.column() sub = col.column() sub.active = (settings.tool == 'CLONE') - sub.itemR(ipaint, "use_clone_layer") + sub.prop(ipaint, "use_clone_layer") sub = col.column() - sub.itemR(ipaint, "seam_bleed") + sub.prop(ipaint, "seam_bleed") class VIEW3D_PT_tools_particlemode(View3DPanel): @@ -853,7 +853,7 @@ class VIEW3D_PT_tools_particlemode(View3DPanel): pe = context.tool_settings.particle_edit ob = pe.object - layout.itemR(pe, "type", text="") + layout.prop(pe, "type", text="") ptcache = None @@ -873,36 +873,36 @@ class VIEW3D_PT_tools_particlemode(View3DPanel): if not pe.editable: - layout.itemL(text="Point cache must be baked") - layout.itemL(text="to enable editing!") + layout.label(text="Point cache must be baked") + layout.label(text="to enable editing!") col = layout.column(align=True) if pe.hair: col.active = pe.editable - col.itemR(pe, "emitter_deflect", text="Deflect emitter") + col.prop(pe, "emitter_deflect", text="Deflect emitter") sub = col.row() sub.active = pe.emitter_deflect - sub.itemR(pe, "emitter_distance", text="Distance") + sub.prop(pe, "emitter_distance", text="Distance") col = layout.column(align=True) col.active = pe.editable - col.itemL(text="Keep:") - col.itemR(pe, "keep_lengths", text="Lenghts") - col.itemR(pe, "keep_root", text="Root") + col.label(text="Keep:") + col.prop(pe, "keep_lengths", text="Lenghts") + col.prop(pe, "keep_root", text="Root") if not pe.hair: - col.itemL(text="Correct:") - col.itemR(pe, "auto_velocity", text="Velocity") + col.label(text="Correct:") + col.prop(pe, "auto_velocity", text="Velocity") col = layout.column(align=True) col.active = pe.editable - col.itemL(text="Draw:") - col.itemR(pe, "draw_step", text="Path Steps") + col.label(text="Draw:") + col.prop(pe, "draw_step", text="Path Steps") if pe.type == 'PARTICLES': - col.itemR(pe, "draw_particles", text="Particles") - col.itemR(pe, "fade_time") + col.prop(pe, "draw_particles", text="Particles") + col.prop(pe, "fade_time") sub = col.row() sub.active = pe.fade_time - sub.itemR(pe, "fade_frames", slider=True) + sub.prop(pe, "fade_frames", slider=True) bpy.types.register(VIEW3D_PT_tools_weightpaint) diff --git a/release/text/blender.html b/release/text/blender.html deleted file mode 100644 index 30c8f0b0dc2..00000000000 --- a/release/text/blender.html +++ /dev/null @@ -1,516 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html> -<head> - <title>A brief introduction to Blender</title> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <meta name="GENERATOR" content="Quanta Plus"> -</head> -<body> - -<h1 align="center"><a name="top">Blender v2.4x series</a></h1> -<br> -<ol> - <li><a href="#intro">About</a></li> - <li><a href="#pack">Package Contents and Install</a></li> - <li><a href="#start">Getting Started:</a></li> - <ol> - <li><a href="#start_run">Running</a></li> - <li><a href="#start_1st">First steps</a>, -<a href="#start_3dview">The 3d View</a></li> - </ol> - <li><a href="#resources">Resources</a></li> - <li><a href="#trouble">Troubleshooting</a></li> - <li><a href="#faq">(FAQ) A few remarks</a></li> -</ol> - -<h2><a name="intro">1. About</a></h2> - -<p>Welcome to the world of <a href="http://www.blender.org">Blender</a>! -The program you have now in your hands is a free and fully functional 3D -modeling, animation, rendering, compositing, video editing and game creation suite. It is available for -Unix-based (Linux, Mac OS X, etc.) and Windows systems and has a large -world-wide community.</p> - -<p>Blender is free to be applied for any purpose, including commercial usage and -distribution. It's free and open-source software, released under the GNU GPL -licence. The full program sources are available on our website.</p> - -<p>For impatient readers, here the two most important links:</p> -<a href="http://www.blender.org">www.blender.org</a> the main website<br> -<a href="http://wiki.blender.org">wiki.blender.org</a> the documentation website<br> - -<p align="right"><a href="#top">back to top</a></p> - -<h2><a name="pack">2. Package Contents and Install</a></h2> - -<p>This is what you should get from a downloaded Blender package:</p> - -<ul> - <li>The Blender program for some specific platform;</li> - <li>This text, with links and the copyright notice;</li> - <li>A basic set of scripts, including importers and exporters to other 3d - formats.</li> -</ul> - -<p>The latest version for all supported platforms can always be found at the -main Blender site, along with documentation, sample .blend files, many scripts, -plugins and more.</p> - -<p>If you are interested in the development of the program, information for -coders and the CVS repository with the sources can be found at the -<a href="http://www.blender.org/development/">developer's section of the site.</a></p> - -<h3><a name="start_install">Installation notes:</a></h3> - -<p>Installing is mostly a matter of executing a self-installer package or unpacking it to -some folder. Blender has a minimum of system dependencies (like OpenGL and SDL), and doesn't -install by overwriting libraries in your system. There are also some extra -files needed for a good install, like an antialiased font and standard python scripts, but these -are optional. Typically these will go to your HOME/.blender/ -directory. Below you find instructions for it per OS. -</p> - -<p><b>Windows:</b> the .exe installer handles registry of file types for you. The .zip download has -a .blender directory included, which can be manually copied.<br> -The directory .blender is located by Blender while checking the following list:<br> -- whether environment variable HOME exists, <br> -- or, if environment USERPROFILE exists, and the installer has created there the Application Data\Blender Foundation\Blender\ -directory, <br> -- or it uses the .blender directory from the installation directory (where blender.exe resides) <br> -Also note that Blender comes with two dll files, which have to reside next to blender.exe.</p> - -<p><b>Linux, FreeBSD, Irix, Solaris:</b> after unpacking the distribution, you can copy the .blender -directory from it to your home directory. </p> - -<p><b>OSX:</b> the .blender directory is in Blender.app/Contents/Resources/. This is being located -by default. If you like to alter some of the files, copy this directory to your home dir.</p> - -<p><b>Other settings:</b><br> -There are many paths you can set in Blender itself, to tell it where to -look for your collections of texture and sound files, fonts, plugins and -additional scripts, besides where it should save rendered images, temporary -data, etc. If you're only starting, there's no need to worry about this now. -</p> - -<p><b>Python:</b><br> -Some downloaded scripts may require extra Python modules not shipped with -Blender. Installing the whole Python distribution is a way to solve this -issue for most cases except scripts that require extensions (3rd party -modules), but we are starting to add more modules to Blender itself so that -most scripts don't depend on full Python installs anymore. This is mostly -about Windows, in other platforms Python is usually a standard component -nowadays, so unless there's a version mismatch or an incomplete py -installation, there should be no problems.</p> - -<p>Even if you do have the right version of Python installed you may need to -tell the embedded Python interpreter where the installation is. To do that -it's enough to set a system variable called PYTHON to the full path to the -stand-alone Python executable (to find out execute "import sys; print -sys.executable" inside the stand-alone interpreter, not in Blender). To check -which Python was linked to your Blender binary, execute "import sys; print -sys.version" at Blender's text editor), it's probably 2.5.something -- only the -two first numbers should have to match with yours.</p> - - -<p align="right"><a href="#top">back to top</a></p> - -<h2><a name="start">3. Getting Started</a></h2> - -<p>Blender's main strength is at modeling, animating and rendering 3d -scenes, from simple cubes and monkey heads to the complex environments found in -videogames and movies with computer graphics (CG) art.</p> - -<p><strong>Rendering</strong> is the process of generating 2d images from 3d -data (basically lit 3d models) as if viewed by a virtual camera. In simple -terms, rendering is like taking a picture of the scene, but with many more -ways to influence the results. Blender comes with a very flexible renderer -and is well integrated with the open source YafRay package. There are also -scripts to export to other popular third party renderers like Povray and -Renderman compliant ones. By <strong>animating</strong> the data and rendering -pictures of each successive frame, movie sequences can be created.</p> - -<p>In <strong>compositing</strong> a set of techniques is used to add effects -to rendered images and combine these into a single frame. This is how, for -example, artists add laser beams, glows and dinosaurs to motion -pictures. Blender also has builtin -support for video sequence editing and sound synchronization.</p> - -<p>The <strong>game engine</strong> inside Blender lets users create and play -nifty 3d games, complete with 3d graphics, sound, physics and scripted rules. -</p> - -<p>Via <strong>scripting</strong> the program's functionality can be automated -and extended in real-time with important new capabilities. True displacement -mapping, for example, is now part of the core program, but before that it was -already possible using scripts. Since they are written in a nice higher-level -programming language -- <a href="http://www.python.org">Python</a> in our case --- development is considerably faster and easier than normal C/C++ coding. -Naturally, they run slower than compiled code, but still fast enough for -<em>many</em> purposes or for mixed approaches like some plugins use.</p> - -<h3><a name="start_run">Running:</a></h3> - -<p>Depending on your platform, the installation may have put an icon on your -desktop and a menu entry for Blender. If not, it's not hard to do that -yourself for your favorite window manager.</p> - -<p>But for more flexibility, you can execute Blender from a shell window or -command-line prompt. Try "blender -h" to see all available options.</p> - -<p>Blender saves data in its own custom binary format, using ".blend" as -extension. The default start-up configuration is saved in a file in your home directory called -.B.blend. To save your changes to it, click on -<strong>File->Save Default Settings</strong> or use the Control+u shortcut -directly.</p> - -<h3><a name="start_1st">First steps:</a></h3> - -<p>This is the point where we stop and warn newcomers that 3d Computer -Graphics is a vast field and Blender has a lot of packed functionality. -If you already tried to run it and fell victim to the "too many buttons!" -syndrome, just relax and <a href="#faq_2">read this part</a> of the F.A.Q. </p> - -<p>Hoping the explanations helped, let's start Blender and take a look at it. -At the top header you can see the main menu. Under "File" you'll find entries -to save, load and quit. If <em>someone</em> ever messes with your workspace -and you can't find your way around: use the menu <strong>File->Load Factory settings</strong>.</p> - -<p>Blender's screen is divided in "areas". Each of them has a top or bottom -header and can show any of the available builtin applications (called "spaces", -like the 3d View, the Text Editor, etc). If you started with a default -configuration, there should now be three areas: -</p> - -<ul> - <li>A thin strip at the top where you can see the header of the <strong>User -Preferences Window</strong> (its header is also Blender's main menu);</li> - <li>A big one in the middle with the <strong>3d View</strong>, where you -model and preview your scenes;</li> - <li>A smaller at the bottom with the <strong>Buttons Window</strong>, where -you add and configure most of your scene data.</li> -</ul> - -<p>These are the three most important spaces, at least when you are starting. -At the left corner of each header you can find the "Window Types" button, -which is like the "Start" buttom of many desktop environments. Clicking on -it lets you change what is shown in that area.</p> - -<p><strong>Highly configurable workspace</strong></p> - -<p>Blender's interface has been considerably improved for the 2.3x series. -Besides the goals of exposing functionality via menus and adding tooltips -for all buttons, there are even more ways now to change your workspace.</p> - -<p>As before, areas can be resized, subdivided in two or joined; headers can -be moved to the top or bottom of an area or hidden completely. Just experiment -to find out how, it's trivial. Hint: the mouse cursor changes to a double arrow -when it is over the inter-area edges.</p> - -<p>There should be a button with "SCR:" in the top header. It has some preset -workspaces that can be tried now for a tour of the possibilities. When you -change your current setup to something worth keeping, that same button has the -option to save the new screen.</p> - -<p>Since version 2.30 Blender lets users define new color themes that can also -be shared with others when saved in the default startup .B.blend file.</p> - -<p>The User Preferences space has many options there that you may want to -tweak, like turning button tooltips on/off, setting paths, etc. Just remember -to save your configuration if you want to keep it for the next session). -Since these preferences are not saved in regular .blend files, the presets will -retain working even when loading files from others. Note however, that the arrangement -of the UI itself - its screens and windows - are always saved in each file. -</p> - -<h3><a name="start_3dview">The 3d View:</a></h3> - -<p><strong>Mouse buttons and the toolbox</strong></p> - -<p>Pressing the SPACEBAR or Shift+a while the mouse pointer is inside a 3d -View space will open up the toolbox. The toolbox gives you faster access to -many functions, like adding new objects to your scene, editing their properties, -selecting and so on.</p> - -<p>This is how the mouse buttons work in this space: -<ul> - <li>Left button: anchor the 3d cursor in a new location -- it defines where -your next added object will appear, among other things.</li> - <li>Right button: selection. If you hold it and move, you can move the -selected item around.</li> - <li>Middle button: 3d space rotation or translation -- choose which one in -one of the User Preferences tabs.</li> -</ul> -Combinations of mouse buttons and Shift or Control will give you additional -options like zooming, panning and restricted movement. 3d scenes can be seen -from any position and orientation, but there are some default ones you can -reach with Numpad buttons or the "View" menu in the 3d View's header.</p> - -<p><strong>Edit Mode</strong></p> - -<p>When you want to edit the vertices of a mesh, for example, it's necessary to -select the object and enter "Edit Mode", either using the 3d View header "Mode" -button or by pressing TAB on your keyboard (press it again to return to object -mode).</p> - -<p><strong>And this was only the beginning ...</strong></p> - -<p>The above guidelines should have given new users enough to start playing -with the interface. The next section lists online references that can actually teach about 3d and this program, but it's a good idea to spend some time just -playing with Blender, looking at menus and finding what mouse actions do in -each space.</p> - -<p align="right"><a href="#top">back to top</a></p> - -<h2><a name="resources">4. Resources</a></h2> - -<ul> - <li><a href="http://www.blender.org">www.blender.org</a> - the general site, with documentation and downloads</li> - <li><a href="http://www.blenderartists.org">www.blenderartists.org</a> - the main user community web site</li> - <li><a href="http://projects.blender.org">projects.blender.org</a> - the project's site</li> -</ul> - -<p>This short presentation is meant to guide newcomers to Blender through their -<em>very first</em> steps, giving directions to where you can find the -resources you will need. We can't teach you 3D in these few lines of text, -that would take a lengthy book.</p> - -<p>Irc users are invited to try #blenderchat on irc.freenode.net .</p> - -<p>There are also local Blender community sites in some countries, that should -be listed at the Community section of the main site.</p> - -<p>If you are a coder wanting to get in touch with Blender development, a good read -is the "Get Involved" page at <a href="http://www.blender.org/community/get-involved/">www.blender.org</a>. A -good way to start is to follow the mailing lists for a while and check bug -reports, to see if you can fix one. On irc.freenode.net: #blendercoders you'll find many active developers, here also the weekly meetings take place.</p> - -<h3><a name="resources_xtra">Other useful links</a></h3> - -<p>In the realm of open-source cg programs, it's a pleasure to mention other -great projects that can help you achieve your visions. Note that these -programs are completely independent from Blender and have their own sites, -documentation and support channels. Note also that this list is not complete -and should be updated on future versions of this text.</p> - -<dl> - <dt><a href="http://www.gimp.org">The Gimp</a></dt> - <dd>The mighty GNU Image Manipulation Program. In 3d work it is a valuable -resource to create, convert and, of course, manipulate texture images. -It is also useful for work with rendered pictures, for example to add 2d text, -logos or to touch-up, apply factory or hand-made effects and compose with other -images.</dd> - -</dl> - -<h4>Renderers:</h4> - -<dl> - <dt><a href="http://www.yafray.org">YafRay</a></dt> - <dd>A currently inactive but very impressive program. Blender has builtin -support for it.</dd> - <dt><a href="http://www.povray.org">Povray</a></dt> - <dd>One of the best and most popular renderers in the world. There is a -script to export Blender scenes to be rendered with it.</dd> - <dt><a href="https://renderman.pixar.com">Renderman-compliant:</a> -open-source: <a href="http://www.aqsis.org">Aqsis</a>, -<a href="http://pixie.sf.net">Pixie</a>. Closed-source: -<a href="http://www.3delight.com">3delight</a>.</dt> - <dd>The Renderman spec was created by Pixar years ago to define both a -standard and powerful representation of 3d data for renderers and the expected -quality of the renderization itself. Think about 3d art from some movie -- it -was much probably created by Pixar's own Photorealistic Renderman (PRMan) -renderer. This is a good site to learn more: -<a href="http://www.rendermanacademy.com">The Renderman Academy</a>. Neither -Pixar nor its products are affiliated with Blender.</dd> -</dl> - -<p align="right"><a href="#top">back to top</a></p> - -<h2><a name="trouble">5. Troubleshooting</a></h2> - -<p>If something isn't working, please read this entire section before looking -for help.</p> - -<ul> - <li><a href="#trouble_gen">General start-up and usage problems</a></li> - <li><a href="#trouble_vdo">Video card blues</a></li> - <li><a href="#trouble_py">Scripts</a></li> - <li><a href="#trouble_bugt">The Bug Tracker</a></li> -</ul> - -<h3><a name="trouble_gen">General start-up and usage problems</a></h3> - -<p>If the program crashes or something isn't working properly, try running -Blender in <strong>debug mode:</strong> execute it as "blender -d" from a -command prompt. This might give some info about what is wrong. There are also -other options that might be useful, "blender -h" lists all of them.<br> -Most likely an immediate crash is due to Blender's need for a compliant and -stable working OpenGL.</p> - -<h3><a name="trouble_vdo">Video card blues</a></h3> - -<p>Although OpenGL is cherished as an excellent cross platform library, the enormous -growth of different 3D cards have made this a complicated affair for Blender. Unlike -other programs - or 3D games - Blender utilizes OpenGL for its entire GUI, including -buttons and pulldown menus. That means also the 2D options for OpenGL should -work good, something easily ignored or badly tested by 3D card manufacturors, who -target more at the latest SFX features for new 3D games.<br> -In general Blender performs -very well on 3D cards from renowned brands, such as NVidia, ATI or 3DLabs.</p> - - -<h3><a name="trouble_py">Scripts</a></h3> - -<p>To be sure that some functionality is scripted: all scripts in Blender can -be accessed from the "Scripts" menu in the Scripts Window's header, even if the -same functionality is also in another menu somewhere. If you see an entry in -one of the submenus there, it refers to a script. Please don't report problems -with scripts to the bug tracker or other normal Blender channels. You should -find the author's site or contact email in the script's text itself, but -usually the Python & Plugins forum at -<a href="http://www.blenderartists.org">Blenderartists.org</a> is used for posting -announcements, questions, suggestions and bug reports related to scripts. It's -the recommended place to look first, specially if no site was specified at the -script's window or source file(s).</p> -<p>If some or all scripts that should appear in menus are not there, running -Blender in <a href="#trouble_gen">debug mode </a> can possibly inform what is -wrong. Make sure the reported dir(s) really exist.</p> - -<h3><a name="trouble_bugt">The Bug Tracker</a></h3> - -<p>If you really think you found a new bug in Blender, check the Bug Tracker -entries at <a href="http://projects.blender.org/tracker/?atid=125&group_id=9&func=browse">the projects site</a> and if -it was not reported yet, please log in (or register) and fill in detailed -information about the error. A small .blend file or script (if it is a problem -with the Blender Python API) showcasing the bug can help a lot.</p> - -<p align="right"><a href="#top">back to top</a></p> - -<h2><a name="faq">6. (FAQ) A few remarks</a></h2> - -<ol> - <li><a href="#faq_1">Quick tips.</a></li> - <li><a href="#faq_2">What's up with the interface?</a></li> - <li><a href="#faq_3">How good is Blender? How does it compare to other 3d -programs?</a></li> - <li><a href="#faq_4">Something doesn't work, what do I do?</a></li> -</ol> - -<h3><a name="faq_1">Quick tips:</a></h3> - -<p><strong>Rendering</strong>: to see something when you render (F12) an image, -make sure the scene has a camera pointing at your models (camera view is -NumPad 0) and at least one light properly placed. Otherwise you'll only get a -black rectangle.</p> - -<p>Setting texture map input to "uv" in the Material Buttons window is not enough -to assign a texture image and uv data to a mesh. It's necessary to select the mesh, -enter edit mode, indicate face selection mode (modes can be accessed in the 3d view's header), load an -image in the UV/Image Editor window and then define a mapping (or unwrapping). Only then -the mesh will have uv data available for exporting.</p> - -<p>If you want the fastest possible access to Blender's functionality, remember -what a <cite>wise power user</cite> wrote: "keep one hand on the keyboard -and the other on the mouse". Learn and use the shortcuts, configure your -workspace to your needs.</p> - -<h3><a name="faq_2">What's up with the interface?</a></h3> - -<p>Blender uses a couple of innovative paradigms in the UI, not following more common, somewhat standard rules for user -interfaces. In the past years several of our interface concepts have been adopted in more programs though, -especially using a configurable non-overlapping subdivision layout and the paradigm to never block the UI from working by -offering all editors and options in parallel. <br> -Typically free programs offer easy-to-use interfaces for large audiences. Blender however is, like other high-end 3D tools, -meant to be a powerful production tool for professionals and 3D enthusiasts, for people who are dedicated to become 3D artists with enough time -and motivation to master the software. <br> -This also has its origins in the 90ies, when Blender was born as an in-house studio tool, optimized to speed up daily heavy -work, and not to please everyone. But it's true that you can consider Blender's interface -to be not very newbie-friendly. Luckily you only have to learn it once, and once you get the basics it'll feel like 2nd nature!</p> - -<p>Blender also has been considerably -improved since the 2.3x series, exposing most functionality via menus, adding -panels, color "themability", tooltips for all buttons and internationalization -support. This is an ongoing effort or, better, a goal to keep the best ideas -in Blender's design while expanding and making it more user-friendly.</p> - -<p><b>Too many buttons!</b></p> - -<p>Again, 3D Computer Graphics is a vast and fun field. If you're only -starting, Blender can seem daunting, specially because of all its packed -functionality. Don't let that upset you, there is no need to care about -<em>all</em> those buttons right now -- or ever.</p> - -<p>There are basic things all users should learn early up:</p> - -<ul> - <li>Start the program and access the main menus;</li> - <li>Find and configure user preferences;</li> - <li>Basic scene set-up: how to add and transform (move, scale, rotate) - lights, cameras and objects;</li> - <li>Create and link materials to objects, at least to color them;</li> - <li>Render your scenes.</li> -</ul> - -<p>One hour is enough time to assimilate and practice that before going on -with basic mesh editing and texturing, for example. There are many different -areas to learn about. Taste, interaction with other users and your main -interests (game art, rendered stills, movies) will guide you and define the -skills you'll want to master. Then it goes like a spiral: practice something -for a while, study and find about new tricks or whole new areas, practice a -little more and so on. Soon you'll become pleased to have all those buttons to -play with. A few more months and you'll probably be back asking for more ... -</p> - -<h3><a name="faq_3">How good is Blender?</a></h3> - -<p>If you ever get the impression that it's not possible to create great -looking or complex works with Blender, rejoice -- you are just plainly -uninformed, as browsing blender.org galleries and community forums can easily confirm.</p> - -<h3>How does it compare to other 3d programs?</h3> - -<p>In short: it takes considerable dedication to become good, no matter which -program you work with, as long as it is good enough not to get in your way. -Blender has, like the others, its strong and weak points.</p> - -<p>Compared to commercial alternatives, Blender misses some features and isn't -as "newbie-friendly". It doesn't come packed with "one-click" or "wizard" -functionality, where you get much faster results in detriment of flexibility -and value. It also isn't bundled with tens of megabytes of sample models, -texture images, tutorials, etc. (which only partly explains how Blender can fit -in such a small download).</p> - -<p>Thankfully, these are relatively minor shortcomings. Many of Blender's modeling, animation and -rendering/compositing features are up-to-par with the industry standards. The pace at which features -are being added or polished in Blender is impressive, now that it's a well -stablished open source project. We get daily feedback from professionals and studios using Blender, and -results from the Blender Foundation's Open Movie/Game projects such as <a href="http://www.bigbuckbunny.org">Big Buck Bunny</a> -and <a href="http://www.yofrankie.org">Yo Frankie!</a> have set a reference standard for what a program like Blender can achieve. - More: through plugins and scripting, many -repetitive or otherwise cumbersome tasks can be made trivial. But plugin and -script authors go further, teaching Blender new tricks, from importers and -exporters to more advanced "applications".</p> - -<p>About goodies, there are many places where you can get them (check -<a href="#resources">resources</a>). Besides the many available Blender books, the main site and -blenderartists.org are the best ones to start. For free texture -images, a simple search for "free textures" should bring many results, just pay -attention to their licenses if you plan to release your work later.</p> - -<p>Commercial packages might make it easier for newbies to produce nice looking -material, but only another newbie would praise the results. There's a huge -difference between what a skilled artist and someone poking at buttons and -using presets can accomplish.</p> - -<p>Last but best of all: Blender is open-source, free for all to use, study and -improve.</p> - -<hr> -<p>Thanks for reading, we hope you enjoy Blender!</p> - -<p><font size=-1>Document version 1.1, Sept 2008</font></p> - -<p align="right"><a href="#top">back to top</a></p> - -</body> -</html> diff --git a/release/text/readme.html b/release/text/readme.html new file mode 100644 index 00000000000..a9a98053a6a --- /dev/null +++ b/release/text/readme.html @@ -0,0 +1,73 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <meta http-equiv="Content-Style-Type" content="text/css"> + <title></title> + <style type="text/css"> + p.title {margin-left: 20%; margin-right: 20%; text-align: center; font: 22.0px Helvetica} + p.footer {margin-left: 20%; margin-right: 20%; text-align: center; font: 14.0px Helvetica; min-height: 14.0px} + p.header {margin-left: 20%; margin-right: 20%; font: 16.0px Helvetica} + p.body {margin-left: 20%; margin-right: 20%; font: 14.0px Helvetica} + </style> +</head> +<body> +<p class="title"><b>Blender 2.5 Alpha 0</b></p> +<p><br></p> +<p class="header"><b>About</b></p> +<p class="body">Welcome to Blender, the free, open source 3D application for modeling, animation, rendering, compositing, video editing and game creation. Blender is available for Linux, Mac OS X, Windows, Solaris and Irix and has a large world-wide community.</p> +<p class="body">Blender can be used freely for any purpose, including commercial use and distribution. It's free and open-source software, released under the GNU GPL licence. The entire source code is available on our website.</p> +<p class="body">For more information, visit <a href="http://www.blender.org">blender.org</a>.</p> +<p><br></p> +<p class="header"><b>2.5 ALPHA 0</b></p> +<p class="body">The Blender Foundation and online developer community is proud to present Blender 2.5 Alpha 0. This release is the first official testing release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. <a href="http://www.blender.org/development/release-logs/blender-250/">More information about this release</a>.</p> +<p class="body">What to Expect:</p> +<p class="body"> • Big improvements - This is our most exciting version to date, already a significant improvement in many ways over 2.49</p> +<p class="body"> • Missing/Incomplete Features - Although most of it is there, not all functionality from pre-2.5 versions has been restored yet. Some functionality may be re-implemented a different way.</p> +<p class="body"> • Bugs - We've fixed a lot lately, but there are still quite a few bugs. This is alpha software, we're still working on it!</p> +<p class="body"> • Changes - If you're used to the old Blenders, Blender 2.5 may seem quite different at first, but it won't be long before it grows on you even more than before.</p> +<p><br></p> +<p class="header"><b>Bugs</b></p> +<p class="body">Blender 2.5 Alpha0 is unfinished software. If you encounter a bug, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender 2.5. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.</p> +<p><br></p> +<p class="header"><b>Package Contents</b></p> +<p class="body">The downloaded Blender package includes:</p> +<p class="body"> • The Blender application for the chosen operating system.</p> +<p class="body"> • Scripts for importing and exporters to other 3d formats.</p> +<p class="body"> • Readme and copyright files.</p> +<p><br></p> +<p class="header"><b>Installation</b></p> +<p class="body"><b>Windows: </b>The download .zip contains a Blender folder. You may put this anywhere on your hard drive. To launch Blender, double-click on Blender.exe.<br> +Install scripts by putting them in the .blender/scripts folder next to the executable.</p> +<p class="body"><b>Linux, FreeBSD, Irix, Solaris: </b>Unpack the distribution, copy the .blender directory from it to your home directory. Then run the Blender executable.<br> +Install scripts by putting them in the .blender/scripts inside your home folder.</p> +<p class="body"><b>Mac OS X: </b>The downloaded package includes blender.app. Optionally copy this to your Applications folder, and add it to the dock by dragging it from there to the dock.<br> +Install scripts by putting them in the .blender/scripts inside your home folder. If the folder does not exist, you can create it manually.</p> +<p><br></p> +<p class="header"><b>Getting Started</b></p> +<p class="body">When opening Blender, you’ll see large 3D view in the center, a Toolbar on the left, a Properties area on the right and a Timeline at the bottom.</p> +<p class="body">Orbit around in the 3D view by holding the middle mouse button and dragging. Alternatively, hold the alt key and drag the left mouse button. Additionally, hold Shift to pan the view and Ctrl to zoom.</p> +<p class="body">Select objects using the right mouse button. With the object selected, perform actions by clicking any of the tool buttons on the left, or make changes to its properties by altering any of the setting on the right.</p> +<p class="body">For more information on how to use Blender, <a href="http://www.blender.org/education-help/">watch tutorials</a> or <a href="http://wiki.blender.org/index.php/Doc:Manual">read the manual</a>.</p> +<p><br></p> +<p class="header"><b>Links</b></p> +<p class="body">Users:</p> +<p class="body"> General information <a href="http://www.blender.org">www.blender.org</a> <br> + Full release log <a href="http://www.blender.org/development/release-logs/blender-250/">www.blender.org/development/release-logs/blender-250/</a><br> + Tutorials <a href="http://www.blender.org/education-help/">www.blender.org/education-help/</a> <br> + Manual <a href="http://wiki.blender.org/index.php/Doc:Manual">wiki.blender.org/index.php/Doc:Manual</a><br> + User Forum <a href="http://www.blenderartists.org">www.blenderartists.org</a><br> + IRC <a href="irc://irc.freenode.net/#blender">#blender on irc.freenode.net</a><br> +</p> +<p class="body">Developers:</p> +<p class="body"> Development <a href="http://www.blender.org/development/">www.blender.org/development/</a><br> + SVN and Bug Tracker <a href="http://projects.blender.org">projects.blender.org</a><br> + Get Involved <a href="http://www.blender.org/community/get-involved/">www.blender.org/community/get-involved/</a><br> + IRC <a href="irc://irc.freenode.net/#blendercoders">#blendercoders on irc.freenode.net</a></p> +<p><br></p> +<p><br></p><p class="footer">Blender is open-source and free for all to use.</p> +<p><br></p> +<p class="footer">Enjoy.</p> +<p><br></p> +</body> +</html> diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 076747cb845..514411e137d 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -54,6 +54,7 @@ struct Object; struct Scene; struct Mesh; struct EditMesh; +struct KeyBlock; struct ModifierData; struct MCol; struct ColorBand; @@ -318,6 +319,10 @@ int DM_release(DerivedMesh *dm); */ void DM_to_mesh(DerivedMesh *dm, struct Mesh *me); +/* utility function to convert a DerivedMesh to a shape key block + */ +void DM_to_meshkey(DerivedMesh *dm, struct Mesh *me, struct KeyBlock *kb); + /* set the CD_FLAG_NOCOPY flag in custom data layers where the mask is * zero for the layer type, so only layer types specified by the mask * will be copied diff --git a/source/blender/blenkernel/BKE_action.h b/source/blender/blenkernel/BKE_action.h index e0b65c1996f..6029ce01794 100644 --- a/source/blender/blenkernel/BKE_action.h +++ b/source/blender/blenkernel/BKE_action.h @@ -140,7 +140,11 @@ void free_pose(struct bPose *pose); */ void copy_pose(struct bPose **dst, struct bPose *src, int copyconstraints); - +/** + * Copy the internal members of each pose channel including constraints + * and ID-Props, used when duplicating bones in editmode. + */ +void duplicate_pose_channel_data(struct bPoseChannel *pchan, const struct bPoseChannel *pchan_from); /** * Return a pointer to the pose channel of the given name diff --git a/source/blender/blenkernel/BKE_constraint.h b/source/blender/blenkernel/BKE_constraint.h index a8ccc84a7c3..e9110b99098 100644 --- a/source/blender/blenkernel/BKE_constraint.h +++ b/source/blender/blenkernel/BKE_constraint.h @@ -114,7 +114,7 @@ bConstraintTypeInfo *get_constraint_typeinfo(int type); void unique_constraint_name(struct bConstraint *con, struct ListBase *list); void free_constraints(struct ListBase *list); -void copy_constraints(struct ListBase *dst, struct ListBase *src); +void copy_constraints(struct ListBase *dst, const struct ListBase *src); void relink_constraints(struct ListBase *list); void free_constraint_data(struct bConstraint *con); diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h index 7f64538b10d..2c013a5231a 100644 --- a/source/blender/blenkernel/BKE_context.h +++ b/source/blender/blenkernel/BKE_context.h @@ -248,9 +248,9 @@ int CTX_data_selected_editable_bones(const bContext *C, ListBase *list); int CTX_data_visible_bones(const bContext *C, ListBase *list); int CTX_data_editable_bones(const bContext *C, ListBase *list); -struct bPoseChannel *CTX_data_active_pchan(const bContext *C); -int CTX_data_selected_pchans(const bContext *C, ListBase *list); -int CTX_data_visible_pchans(const bContext *C, ListBase *list); +struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C); +int CTX_data_selected_pose_bones(const bContext *C, ListBase *list); +int CTX_data_visible_pose_bones(const bContext *C, ListBase *list); #ifdef __cplusplus } diff --git a/source/blender/blenkernel/BKE_key.h b/source/blender/blenkernel/BKE_key.h index c81d837689f..d5bae00d32e 100644 --- a/source/blender/blenkernel/BKE_key.h +++ b/source/blender/blenkernel/BKE_key.h @@ -59,6 +59,7 @@ void key_curve_normal_weights(float t, float *data, int type); float *do_ob_key(struct Scene *scene, struct Object *ob); struct Key *ob_get_key(struct Object *ob); +struct KeyBlock *add_keyblock(struct Scene *scene, struct Key *key); struct KeyBlock *ob_get_keyblock(struct Object *ob); struct KeyBlock *ob_get_reference_keyblock(struct Object *ob); struct KeyBlock *key_get_keyblock(struct Key *key, int index); diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h index 245db7e35ff..c30bfa3e247 100644 --- a/source/blender/blenkernel/BKE_modifier.h +++ b/source/blender/blenkernel/BKE_modifier.h @@ -281,6 +281,7 @@ int modifier_dependsOnTime(struct ModifierData *md); int modifier_supportsMapping(struct ModifierData *md); int modifier_couldBeCage(struct ModifierData *md); int modifier_isDeformer(struct ModifierData *md); +int modifier_sameTopology(ModifierData *md); int modifier_isEnabled(struct ModifierData *md, int required_mode); void modifier_setError(struct ModifierData *md, char *format, ...); diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h index 2291601bd47..2199240d77b 100644 --- a/source/blender/blenkernel/BKE_particle.h +++ b/source/blender/blenkernel/BKE_particle.h @@ -222,7 +222,7 @@ void copy_particle_key(struct ParticleKey *to, struct ParticleKey *from, int tim void psys_particle_on_emitter(struct ParticleSystemModifierData *psmd, int distr, int index, int index_dmcache, float *fuv, float foffset, float *vec, float *nor, float *utan, float *vtan, float *orco, float *ornor); struct ParticleSystemModifierData *psys_get_modifier(struct Object *ob, struct ParticleSystem *psys); -void object_add_particle_system(struct Scene *scene, struct Object *ob); +struct ModifierData *object_add_particle_system(struct Scene *scene, struct Object *ob, char *name); void object_remove_particle_system(struct Scene *scene, struct Object *ob); struct ParticleSettings *psys_new_settings(char *name, struct Main *main); struct ParticleSettings *psys_copy_settings(struct ParticleSettings *part); diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index f9abaa9da02..209e4610c6a 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -277,6 +277,26 @@ void DM_to_mesh(DerivedMesh *dm, Mesh *me) *me = tmp; } +void DM_to_meshkey(DerivedMesh *dm, Mesh *me, KeyBlock *kb) +{ + int a, totvert = dm->getNumVerts(dm); + float *fp; + MVert *mvert; + + if(totvert==0 || me->totvert==0 || me->totvert!=totvert) return; + + if(kb->data) MEM_freeN(kb->data); + kb->data= MEM_callocN(me->key->elemsize*me->totvert, "kb->data"); + kb->totelem= totvert; + + fp= kb->data; + mvert=dm->getVertDataArray(dm, CD_MVERT); + + for(a=0; a<kb->totelem; a++, fp+=3, mvert++) { + VECCOPY(fp, mvert->co); + } +} + void DM_set_only_copy(DerivedMesh *dm, CustomDataMask mask) { CustomData_set_only_copy(&dm->vertData, mask); diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index b359ab6ee87..ace1292f813 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -153,7 +153,6 @@ void make_local_action(bAction *act) } } - void free_action (bAction *act) { /* sanity check */ @@ -457,6 +456,8 @@ bPoseChannel *verify_pose_channel(bPose* pose, const char* name) chan->ikrotweight = chan->iklinweight = 0.0f; unit_m4(chan->constinv); + chan->protectflag = OB_LOCK_ROT4D; /* lock by components by default */ + BLI_addtail(&pose->chanbase, chan); return chan; @@ -518,17 +519,22 @@ void copy_pose (bPose **dst, bPose *src, int copycon) outPose->ikdata = NULL; outPose->ikparam = MEM_dupallocN(src->ikparam); - // TODO: rename this argument... - if (copycon) { - for (pchan=outPose->chanbase.first; pchan; pchan=pchan->next) { + for (pchan=outPose->chanbase.first; pchan; pchan=pchan->next) { + // TODO: rename this argument... + if (copycon) { copy_constraints(&listb, &pchan->constraints); // copy_constraints NULLs listb pchan->constraints= listb; pchan->path= NULL; } - /* for now, duplicate Bone Groups too when doing this */ - BLI_duplicatelist(&outPose->agroups, &src->agroups); + if(pchan->prop) { + pchan->prop= IDP_CopyProperty(pchan->prop); + } } + + /* for now, duplicate Bone Groups too when doing this */ + if(copycon) + BLI_duplicatelist(&outPose->agroups, &src->agroups); *dst=outPose; } @@ -629,12 +635,54 @@ static void copy_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *chan pchan->flag= chan->flag; con= chan->constraints.first; - for(pcon= pchan->constraints.first; pcon; pcon= pcon->next, con= con->next) { + for(pcon= pchan->constraints.first; pcon && con; pcon= pcon->next, con= con->next) { pcon->enforce= con->enforce; pcon->headtail= con->headtail; } } +/* makes copies of internal data, unlike copy_pose_channel_data which only + * copies the pose state. + * hint: use when copying bones in editmode (on returned value from verify_pose_channel) */ +void duplicate_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *pchan_from) +{ + /* copy transform locks */ + pchan->protectflag = pchan_from->protectflag; + + /* copy rotation mode */ + pchan->rotmode = pchan_from->rotmode; + + /* copy bone group */ + pchan->agrp_index= pchan_from->agrp_index; + + /* ik (dof) settings */ + pchan->ikflag = pchan_from->ikflag; + VECCOPY(pchan->limitmin, pchan_from->limitmin); + VECCOPY(pchan->limitmax, pchan_from->limitmax); + VECCOPY(pchan->stiffness, pchan_from->stiffness); + pchan->ikstretch= pchan_from->ikstretch; + pchan->ikrotweight= pchan_from->ikrotweight; + pchan->iklinweight= pchan_from->iklinweight; + + /* constraints */ + copy_constraints(&pchan->constraints, &pchan_from->constraints); + + /* id-properties */ + if(pchan->prop) { + /* unlikely but possible it exists */ + IDP_FreeProperty(pchan->prop); + MEM_freeN(pchan->prop); + pchan->prop= NULL; + } + if(pchan_from->prop) { + pchan->prop= IDP_CopyProperty(pchan_from->prop); + } + + /* custom shape */ + pchan->custom= pchan_from->custom; +} + + /* checks for IK constraint, Spline IK, and also for Follow-Path constraint. * can do more constraints flags later */ @@ -1037,7 +1085,10 @@ void copy_pose_result(bPose *to, bPose *from) VECCOPY(pchanto->pose_head, pchanfrom->pose_head); VECCOPY(pchanto->pose_tail, pchanfrom->pose_tail); + + pchanto->rotmode= pchanfrom->rotmode; pchanto->flag= pchanfrom->flag; + pchanto->protectflag= pchanfrom->protectflag; } } } diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c index 5ebcec63cd4..a6f733708c7 100644 --- a/source/blender/blenkernel/intern/anim_sys.c +++ b/source/blender/blenkernel/intern/anim_sys.c @@ -697,20 +697,26 @@ static short animsys_write_rna_setting (PointerRNA *ptr, char *path, int array_i switch (RNA_property_type(prop)) { case PROP_BOOLEAN: - if (RNA_property_array_length(&new_ptr, prop)) - RNA_property_boolean_set_index(&new_ptr, prop, array_index, (int)value); + if (RNA_property_array_length(&new_ptr, prop)) { + if (RNA_property_editable_index(&new_ptr, prop, array_index)) + RNA_property_boolean_set_index(&new_ptr, prop, array_index, (int)value); + } else RNA_property_boolean_set(&new_ptr, prop, (int)value); break; case PROP_INT: - if (RNA_property_array_length(&new_ptr, prop)) - RNA_property_int_set_index(&new_ptr, prop, array_index, (int)value); + if (RNA_property_array_length(&new_ptr, prop)){ + if (RNA_property_editable_index(&new_ptr, prop, array_index)) + RNA_property_int_set_index(&new_ptr, prop, array_index, (int)value); + } else RNA_property_int_set(&new_ptr, prop, (int)value); break; case PROP_FLOAT: - if (RNA_property_array_length(&new_ptr, prop)) - RNA_property_float_set_index(&new_ptr, prop, array_index, value); + if (RNA_property_array_length(&new_ptr, prop)) { + if (RNA_property_editable_index(&new_ptr, prop, array_index)) + RNA_property_float_set_index(&new_ptr, prop, array_index, value); + } else RNA_property_float_set(&new_ptr, prop, value); break; @@ -1434,20 +1440,26 @@ void nladata_flush_channels (ListBase *channels) switch (RNA_property_type(prop)) { case PROP_BOOLEAN: - if (RNA_property_array_length(ptr, prop)) - RNA_property_boolean_set_index(ptr, prop, array_index, (int)value); + if (RNA_property_array_length(ptr, prop)) { + if (RNA_property_editable_index(ptr, prop, array_index)) + RNA_property_boolean_set_index(ptr, prop, array_index, (int)value); + } else RNA_property_boolean_set(ptr, prop, (int)value); break; case PROP_INT: - if (RNA_property_array_length(ptr, prop)) - RNA_property_int_set_index(ptr, prop, array_index, (int)value); + if (RNA_property_array_length(ptr, prop)) { + if (RNA_property_editable_index(ptr, prop, array_index)) + RNA_property_int_set_index(ptr, prop, array_index, (int)value); + } else RNA_property_int_set(ptr, prop, (int)value); break; case PROP_FLOAT: - if (RNA_property_array_length(ptr, prop)) - RNA_property_float_set_index(ptr, prop, array_index, value); + if (RNA_property_array_length(ptr, prop)) { + if (RNA_property_editable_index(ptr, prop, array_index)) + RNA_property_float_set_index(ptr, prop, array_index, value); + } else RNA_property_float_set(ptr, prop, value); break; diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index a63ff4ed599..418c9f00596 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -37,6 +37,7 @@ #include "BLI_math.h" #include "BLI_blenlib.h" +#include "DNA_anim_types.h" #include "DNA_armature_types.h" #include "DNA_action_types.h" #include "DNA_curve_types.h" @@ -49,6 +50,7 @@ #include "DNA_scene_types.h" #include "DNA_view3d_types.h" +#include "BKE_animsys.h" #include "BKE_armature.h" #include "BKE_action.h" #include "BKE_anim.h" @@ -127,6 +129,12 @@ void free_armature(bArmature *arm) freeSketch(arm->sketch); arm->sketch = NULL; } + + /* free animation data */ + if (arm->adt) { + BKE_free_animdata(&arm->id); + arm->adt= NULL; + } } } @@ -1501,6 +1509,10 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected pchanw.child= pchan->child; pchanw.path= NULL; + /* this is freed so copy a copy, else undo crashes */ + if(pchanw.prop) + pchanw.prop= IDP_CopyProperty(pchanw.prop); + /* constraints - proxy constraints are flushed... local ones are added after * 1. extract constraints not from proxy (CONSTRAINT_PROXY_LOCAL) from pchan's constraints * 2. copy proxy-pchan's constraints on-to new @@ -1915,20 +1927,12 @@ static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *o } /* step 4: set the scaling factors for the axes */ - // TODO: include a no-scale option? { /* only multiply the y-axis by the scaling factor to get nice volume-preservation */ mul_v3_fl(poseMat[1], scaleFac); /* set the scaling factors of the x and z axes from... */ switch (ikData->xzScaleMode) { - case CONSTRAINT_SPLINEIK_XZS_RADIUS: - { - /* radius of curve */ - mul_v3_fl(poseMat[0], radius); - mul_v3_fl(poseMat[2], radius); - } - break; case CONSTRAINT_SPLINEIK_XZS_ORIGINAL: { /* original scales get used */ @@ -1942,6 +1946,37 @@ static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *o mul_v3_fl(poseMat[2], scale); } break; + case CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC: + { + /* 'volume preservation' */ + float scale; + + /* calculate volume preservation factor which is + * basically the inverse of the y-scaling factor + */ + if (fabs(scaleFac) != 0.0f) { + scale= 1.0 / fabs(scaleFac); + + /* we need to clamp this within sensible values */ + // NOTE: these should be fine for now, but should get sanitised in future + scale= MIN2( MAX2(scale, 0.0001) , 100000); + } + else + scale= 1.0f; + + /* apply the scaling */ + mul_v3_fl(poseMat[0], scale); + mul_v3_fl(poseMat[2], scale); + } + break; + } + + /* finally, multiply the x and z scaling by the radius of the curve too, + * to allow automatic scales to get tweaked still + */ + if ((ikData->flag & CONSTRAINT_SPLINEIK_NO_CURVERAD) == 0) { + mul_v3_fl(poseMat[0], radius); + mul_v3_fl(poseMat[2], radius); } } @@ -2197,34 +2232,43 @@ void where_is_pose_bone(Scene *scene, Object *ob, bPoseChannel *pchan, float cti /* the rotation of the parent restposition */ copy_m4_m4(tmat, parbone->arm_mat); - - /* the location of actual parent transform */ - VECCOPY(tmat[3], offs_bone[3]); - offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f; - mul_m4_v3(parchan->pose_mat, tmat[3]); - mul_serie_m4(pchan->pose_mat, tmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL); } else if(bone->flag & BONE_NO_SCALE) { float orthmat[4][4]; - /* get the official transform, but we only use the vector from it (optimize...) */ - mul_serie_m4(pchan->pose_mat, parchan->pose_mat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL); - VECCOPY(vec, pchan->pose_mat[3]); - - /* do this again, but with an ortho-parent matrix */ + /* do transform, with an ortho-parent matrix */ copy_m4_m4(orthmat, parchan->pose_mat); normalize_m4(orthmat); mul_serie_m4(pchan->pose_mat, orthmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL); - - /* copy correct transform */ - VECCOPY(pchan->pose_mat[3], vec); } - else + else mul_serie_m4(pchan->pose_mat, parchan->pose_mat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL); + + /* in these cases we need to compute location separately */ + if(bone->flag & (BONE_HINGE|BONE_NO_SCALE|BONE_NO_LOCAL_LOCATION)) { + float bone_loc[3], chan_loc[3]; + + mul_v3_m4v3(bone_loc, parchan->pose_mat, offs_bone[3]); + copy_v3_v3(chan_loc, pchan->chan_mat[3]); + + /* no local location is not transformed by bone matrix */ + if(!(bone->flag & BONE_NO_LOCAL_LOCATION)) + mul_mat3_m4_v3(offs_bone, chan_loc); + + /* for hinge we use armature instead of pose mat */ + if(bone->flag & BONE_HINGE) mul_mat3_m4_v3(parbone->arm_mat, chan_loc); + else mul_mat3_m4_v3(parchan->pose_mat, chan_loc); + + add_v3_v3v3(pchan->pose_mat[3], bone_loc, chan_loc); + } } else { mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat); + + /* optional location without arm_mat rotation */ + if(bone->flag & BONE_NO_LOCAL_LOCATION) + add_v3_v3v3(pchan->pose_mat[3], bone->arm_mat[3], pchan->chan_mat[3]); /* only rootbones get the cyclic offset (unless user doesn't want that) */ if ((bone->flag & BONE_NO_CYCLICOFFSET) == 0) diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index 46fdec90528..0f3213cbc5d 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -3788,7 +3788,7 @@ void relink_constraints (ListBase *conlist) /* ......... */ /* duplicate all of the constraints in a constraint stack */ -void copy_constraints (ListBase *dst, ListBase *src) +void copy_constraints (ListBase *dst, const ListBase *src) { bConstraint *con, *srccon; diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c index 21549f6b147..fc1ef4aede9 100644 --- a/source/blender/blenkernel/intern/context.c +++ b/source/blender/blenkernel/intern/context.c @@ -878,18 +878,18 @@ int CTX_data_editable_bones(const bContext *C, ListBase *list) return ctx_data_collection_get(C, "editable_bones", list); } -struct bPoseChannel *CTX_data_active_pchan(const bContext *C) +struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C) { - return ctx_data_pointer_get(C, "active_pchan"); + return ctx_data_pointer_get(C, "active_pose_bone"); } -int CTX_data_selected_pchans(const bContext *C, ListBase *list) +int CTX_data_selected_pose_bones(const bContext *C, ListBase *list) { - return ctx_data_collection_get(C, "selected_pchans", list); + return ctx_data_collection_get(C, "selected_pose_bones", list); } -int CTX_data_visible_pchans(const bContext *C, ListBase *list) +int CTX_data_visible_pose_bones(const bContext *C, ListBase *list) { - return ctx_data_collection_get(C, "visible_pchans", list); + return ctx_data_collection_get(C, "visible_pose_bones", list); } diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index c451168a005..0623a5cbe5e 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -731,6 +731,9 @@ DriverTarget *driver_add_new_target (ChannelDriver *driver) dtar= MEM_callocN(sizeof(DriverTarget), "DriverTarget"); BLI_addtail(&driver->targets, dtar); + /* make the default ID-type ID_OB, since most driver targets refer to objects */ + dtar->idtype= ID_OB; + /* give the target a 'unique' name */ strcpy(dtar->name, "var"); BLI_uniquename(&driver->targets, dtar, "var", '_', offsetof(DriverTarget, name), 64); @@ -819,7 +822,7 @@ float driver_get_target_value (ChannelDriver *driver, DriverTarget *dtar) } /* get property to read from, and get value as appropriate */ - if (RNA_path_resolve(&id_ptr, path, &ptr, &prop)) { + if (RNA_path_resolve_full(&id_ptr, path, &ptr, &prop, &index)) { switch (RNA_property_type(prop)) { case PROP_BOOLEAN: if (RNA_property_array_length(&ptr, prop)) diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c index 5daa2ed1924..877c6d6b62e 100644 --- a/source/blender/blenkernel/intern/fmodifier.c +++ b/source/blender/blenkernel/intern/fmodifier.c @@ -53,6 +53,8 @@ #include "RNA_access.h" #include "RNA_types.h" +#include "AUD_C-API.h" + #ifndef DISABLE_PYTHON #include "BPY_extern.h" /* for BPY_pydriver_eval() */ #endif @@ -871,6 +873,96 @@ static FModifierTypeInfo FMI_LIMITS = { fcm_limits_evaluate /* evaluate */ }; +/* Sound F-Curve Modifier --------------------------- */ + +static void fcm_sound_new_data (void *mdata) +{ + FMod_Sound *data= (FMod_Sound *)mdata; + + /* defaults */ + data->strength= 1.0f; + data->delay = 0.0f; + data->modification = FCM_SOUND_MODIF_REPLACE; + data->sound = NULL; +} + +static void fcm_sound_evaluate (FCurve *fcu, FModifier *fcm, float *cvalue, float evaltime) +{ + FMod_Sound *data= (FMod_Sound *)fcm->data; + float amplitude; + + AUD_Device *device; + AUD_Sound *limiter; + AUD_SoundInfo info; + + // XXX fixme - need to get in terms of time instead of frames to be really useful +// evaltime = FRA2TIME(evaltime); + evaltime -= data->delay; + + /* sound-system cannot cope with negative times/frames */ + if (evaltime < 0.0f) + return; + /* must have a sound with a cache so that this can be used */ + if (ELEM(NULL, data->sound, data->sound->cache)) + return; + + /* examine this snippet of the wave, and extract the amplitude from it */ + info = AUD_getInfo(data->sound->cache); + info.specs.channels = 1; + info.specs.format = AUD_FORMAT_FLOAT32; + device = AUD_openReadDevice(info.specs); + limiter = AUD_limitSound(data->sound->cache, evaltime, evaltime + 1); + AUD_playDevice(device, limiter); + AUD_unload(limiter); + AUD_readDevice(device, (sample_t*)&litude, 1); + AUD_closeReadDevice(device); + + /* combine the amplitude with existing motion data */ + switch (data->modification) { + case FCM_SOUND_MODIF_ADD: + *cvalue= *cvalue + amplitude * data->strength; + break; + case FCM_SOUND_MODIF_SUBTRACT: + *cvalue= *cvalue - amplitude * data->strength; + break; + case FCM_SOUND_MODIF_MULTIPLY: + *cvalue= *cvalue * amplitude * data->strength; + break; + case FCM_SOUND_MODIF_REPLACE: + default: + *cvalue= *cvalue + amplitude * data->strength; + break; + } +} + +static float fcm_sound_time (FCurve *fcu, FModifier *fcm, float cvalue, float evaltime) +{ + FMod_Sound *data= (FMod_Sound *)fcm->data; + + /* check for the time delay */ +// evaltime = FRA2TIME(evaltime); + if(evaltime < data->delay) + return data->delay; + + /* modifier doesn't change time */ + return evaltime; +} + +static FModifierTypeInfo FMI_SOUND = { + FMODIFIER_TYPE_SOUND, /* type */ + sizeof(FMod_Sound), /* size */ + FMI_TYPE_REPLACE_VALUES, /* action type */ + 0, /* requirements */ + "Sound", /* name */ + "FMod_Sound", /* struct name */ + NULL, /* free data */ + NULL, /* copy data */ + fcm_sound_new_data, /* new data */ + NULL, /* verify */ + fcm_sound_time, /* evaluate time */ + fcm_sound_evaluate /* evaluate */ +}; + /* F-Curve Modifier API --------------------------- */ /* All of the F-Curve Modifier api functions use FModifierTypeInfo structs to carry out * and operations that involve F-Curve modifier specific code. @@ -892,6 +984,7 @@ static void fmods_init_typeinfo () fmodifiersTypeInfo[6]= NULL/*&FMI_FILTER*/; /* Filter F-Curve Modifier */ // XXX unimplemented fmodifiersTypeInfo[7]= &FMI_PYTHON; /* Custom Python F-Curve Modifier */ fmodifiersTypeInfo[8]= &FMI_LIMITS; /* Limits F-Curve Modifier */ + fmodifiersTypeInfo[9]= &FMI_SOUND; /* Sound F-Curve Modifier */ } /* This function should be used for getting the appropriate type-info when only diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index 3822e0322f7..c7b79756263 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -1395,6 +1395,49 @@ Key *ob_get_key(Object *ob) return NULL; } +KeyBlock *add_keyblock(Scene *scene, Key *key) +{ + KeyBlock *kb; + float curpos= -0.1; + int tot; + + kb= key->block.last; + if(kb) curpos= kb->pos; + + kb= MEM_callocN(sizeof(KeyBlock), "Keyblock"); + BLI_addtail(&key->block, kb); + kb->type= KEY_CARDINAL; + + tot= BLI_countlist(&key->block); + if(tot==1) strcpy(kb->name, "Basis"); + else sprintf(kb->name, "Key %d", tot-1); + + // XXX this is old anim system stuff? (i.e. the 'index' of the shapekey) + kb->adrcode= tot-1; + + key->totkey++; + if(key->totkey==1) key->refkey= kb; + + kb->slidermin= 0.0f; + kb->slidermax= 1.0f; + + // XXX kb->pos is the confusing old horizontal-line RVK crap in old IPO Editor... + if(key->type == KEY_RELATIVE) + kb->pos= curpos+0.1; + else { +#if 0 // XXX old animation system + curpos= bsystem_time(scene, 0, (float)CFRA, 0.0); + if(calc_ipo_spec(key->ipo, KEY_SPEED, &curpos)==0) { + curpos /= 100.0; + } + kb->pos= curpos; + + sort_keys(key); +#endif // XXX old animation system + } + return kb; +} + /* only the active keyblock */ KeyBlock *ob_get_keyblock(Object *ob) { diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index ed7fbe58ea4..56aab7d2ba9 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -7894,7 +7894,7 @@ static void meshdeformModifier_do( /* progress bar redraw can make this recursive .. */ if(!recursive) { recursive = 1; - mmd->bindfunc(md->scene, mmd, (float*)vertexCos, numVerts, cagemat); + mmd->bindfunc(md->scene, dm, mmd, (float*)vertexCos, numVerts, cagemat); recursive = 0; } } @@ -8924,6 +8924,12 @@ int modifier_couldBeCage(ModifierData *md) modifier_supportsMapping(md)); } +int modifier_sameTopology(ModifierData *md) +{ + ModifierTypeInfo *mti = modifierType_getInfo(md->type); + return ( mti->type == eModifierTypeType_OnlyDeform || mti->type == eModifierTypeType_Nonconstructive); +} + void modifier_setError(ModifierData *md, char *format, ...) { char buffer[2048]; diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 4c378d25a8c..a27c3b6494b 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -1675,7 +1675,9 @@ void ntreeSocketUseFlags(bNodeTree *ntree) /* tag all thats in use */ for(link= ntree->links.first; link; link= link->next) { - link->fromsock->flag |= SOCK_IN_USE; + + if(link->fromsock) // FIXME, see below + link->fromsock->flag |= SOCK_IN_USE; if(link->tosock) // FIXME This can be NULL, when dragging a new link in the UI, should probably copy the node tree for preview render - campbell link->tosock->flag |= SOCK_IN_USE; } diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 078ff9d6eeb..73a1d2023a2 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1044,6 +1044,10 @@ Object *add_object(struct Scene *scene, int type) ob->rotmode= ROT_MODE_EUL; /* axis-angle must not have a 0,0,0 axis, so set y-axis as default... */ ob->rotAxis[1]= ob->drotAxis[1]= 1.0f; + /* quaternions should be 1,0,0,0 by default.... */ + ob->quat[0]= 1.0f; + /* rotation locks should be 4D for 4 component rotations by default... */ + ob->protectflag = OB_LOCK_ROT4D; base= scene_add_base(scene, ob); scene_select_base(scene, base); @@ -2364,6 +2368,9 @@ void object_handle_update(Scene *scene, Object *ob) } if(ob->recalc & OB_RECALC_DATA) { + ID *data_id= (ID *)ob->data; + AnimData *adt= BKE_animdata_from_id(data_id); + float ctime= (float)scene->r.cfra; // XXX this is bad... if (G.f & G_DEBUG) printf("recalcdata %s\n", ob->id.name+2); @@ -2386,10 +2393,6 @@ void object_handle_update(Scene *scene, Object *ob) makeDispListCurveTypes(scene, ob, 0); } else if(ELEM(ob->type, OB_CAMERA, OB_LAMP)) { - ID *data_id= (ID *)ob->data; - AnimData *adt= BKE_animdata_from_id(data_id); - float ctime= (float)scene->r.cfra; // XXX this is bad... - /* evaluate drivers */ BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS); } @@ -2402,6 +2405,9 @@ void object_handle_update(Scene *scene, Object *ob) if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC)) armature_rebuild_pose(ob, ob->data); + /* evaluate drivers */ + BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS); + if(ob->id.lib && ob->proxy_from) { copy_pose_result(ob->pose, ob->proxy_from->pose); // printf("pose proxy copy, lib ob %s proxy %s\n", ob->id.name, ob->proxy_from->id.name); diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index e241d5808cd..bb2f4128891 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -3268,14 +3268,14 @@ void psys_mat_hair_to_global(Object *ob, DerivedMesh *dm, short from, ParticleDa /************************************************/ /* ParticleSettings handling */ /************************************************/ -void object_add_particle_system(Scene *scene, Object *ob) +ModifierData *object_add_particle_system(Scene *scene, Object *ob, char *name) { ParticleSystem *psys; ModifierData *md; ParticleSystemModifierData *psmd; if(!ob || ob->type != OB_MESH) - return; + return NULL; psys = ob->particlesystem.first; for(; psys; psys=psys->next) @@ -3293,7 +3293,11 @@ void object_add_particle_system(Scene *scene, Object *ob) strcpy(psys->name, "ParticleSystem"); md= modifier_new(eModifierType_ParticleSystem); - sprintf(md->name, "ParticleSystem %i", BLI_countlist(&ob->particlesystem)); + + if(name) BLI_strncpy(md->name, name, sizeof(md->name)); + else sprintf(md->name, "ParticleSystem %i", BLI_countlist(&ob->particlesystem)); + modifier_unique_name(&ob->modifiers, md); + psmd= (ParticleSystemModifierData*) md; psmd->psys=psys; BLI_addtail(&ob->modifiers, md); @@ -3304,6 +3308,8 @@ void object_add_particle_system(Scene *scene, Object *ob) DAG_scene_sort(scene); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + + return md; } void object_remove_particle_system(Scene *scene, Object *ob) { diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 075c6f6207f..809b5f2090c 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -2287,6 +2287,9 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra case PART_INT_RK4: steps=4; break; + case PART_INT_VERLET: + steps=1; + break; } copy_particle_key(states,&pa->state,1); @@ -2392,6 +2395,13 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra VECADDFAC(pa->state.vel,pa->state.vel,dv[3],1.0f/6.0f); } break; + case PART_INT_VERLET: /* Verlet integration */ + VECADDFAC(pa->state.vel,pa->state.vel,force,dtime); + VECADDFAC(pa->state.co,pa->state.co,pa->state.vel,dtime); + + VECSUB(pa->state.vel,pa->state.co,pa->prev_state.co); + mul_v3_fl(pa->state.vel,1.0f/dtime); + break; } } diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 91fd0bac400..27cb3ad834b 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -416,6 +416,7 @@ Scene *add_scene(char *name) pset->brushtype= PE_BRUSH_NONE; pset->draw_step= 2; pset->fade_frames= 2; + pset->selectmode= SCE_SELECT_PATH; for(a=0; a<PE_TOT_BRUSH; a++) { pset->brush[a].strength= 50; pset->brush[a].size= 50; diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index 68edc00de23..a1f81bf6166 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -246,7 +246,6 @@ static void do_plugin_effect(Sequence * seq,int cfra, if(seq->plugin->cfra) *(seq->plugin->cfra)= cfra; -// XXX *(seq->plugin->cfra)= frame_to_float(scene, cfra); cp = PIL_dynlib_find_symbol( seq->plugin->handle, "seqname"); @@ -2781,10 +2780,8 @@ static void store_icu_yrange_speed(struct Sequence * seq, } } } -extern float frame_to_float (Scene *scene, int cfra); void sequence_effect_speed_rebuild_map(Scene *scene, Sequence * seq, int force) { - float facf0 = seq->facf0; float ctime, div; int cfra; float fallback_fac; @@ -2804,7 +2801,7 @@ void sequence_effect_speed_rebuild_map(Scene *scene, Sequence * seq, int force) /* XXX - new in 2.5x. should we use the animation system this way? * The fcurve is needed because many frames need evaluating at once - campbell */ - fcu= id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, "factor_0", 0); + fcu= id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, "speed_fader", 0); if (!v->frameMap || v->length != seq->len) { @@ -2838,32 +2835,29 @@ void sequence_effect_speed_rebuild_map(Scene *scene, Sequence * seq, int force) if ((v->flags & SEQ_SPEED_INTEGRATE) != 0) { float cursor = 0; + float facf; v->frameMap[0] = 0; v->lastValidFrame = 0; for (cfra = 1; cfra < v->length; cfra++) { if(fcu) { - if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) { - ctime = frame_to_float(scene, seq->startdisp + cfra); - div = 1.0; - } else { - ctime= frame_to_float(scene, cfra); - div= v->length / 100.0f; - if(div==0.0) return; - } - -//XXX OLD ANIMSYS -// calc_ipo(seq->ipo, ctime/div); -// execute_ipo((ID *)seq, seq->ipo); - seq->facf0 = evaluate_fcurve(fcu, ctime/div); - } else - { - seq->facf0 = fallback_fac; + if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) { + ctime = seq->startdisp + cfra; + div = 1.0; + } else { + ctime= cfra; + div= v->length / 100.0f; + if(div==0.0) return; + } + + facf = evaluate_fcurve(fcu, ctime/div); + } else { + facf = fallback_fac; } - seq->facf0 *= v->globalSpeed; + facf *= v->globalSpeed; - cursor += seq->facf0; + cursor += facf; if (cursor >= v->length) { v->frameMap[cfra] = v->length - 1; @@ -2873,41 +2867,39 @@ void sequence_effect_speed_rebuild_map(Scene *scene, Sequence * seq, int force) } } } else { + float facf; + v->lastValidFrame = 0; for (cfra = 0; cfra < v->length; cfra++) { if(fcu) { - if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) { - ctime = frame_to_float(scene, seq->startdisp + cfra); - div = 1.0; - } else { - ctime= frame_to_float(scene, cfra); - div= v->length / 100.0f; - if(div==0.0) return; - } + if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) { + ctime = seq->startdisp + cfra; + div = 1.0; + } else { + ctime= cfra; + div= v->length / 100.0f; + if(div==0.0) return; + } -// XXX old animation system -// calc_ipo(seq->ipo, ctime/div); -// execute_ipo((ID *)seq, seq->ipo); - seq->facf0 = evaluate_fcurve(fcu, ctime/div); + facf = evaluate_fcurve(fcu, ctime / div); + if (v->flags & SEQ_SPEED_COMPRESS_IPO_Y) { + facf *= v->length; + } } - if (v->flags & SEQ_SPEED_COMPRESS_IPO_Y) { - seq->facf0 *= v->length; - } if (!fcu) { - seq->facf0 = (float) cfra * fallback_fac; + facf = (float) cfra * fallback_fac; } - seq->facf0 *= v->globalSpeed; - if (seq->facf0 >= v->length) { - seq->facf0 = v->length - 1; + facf *= v->globalSpeed; + if (facf >= v->length) { + facf = v->length - 1; } else { v->lastValidFrame = cfra; } - v->frameMap[cfra] = seq->facf0; + v->frameMap[cfra] = facf; } } - seq->facf0 = facf0; } /* diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c index e3e1debfa96..1920e82b4ab 100644 --- a/source/blender/blenkernel/intern/sequence.c +++ b/source/blender/blenkernel/intern/sequence.c @@ -38,12 +38,16 @@ #include "DNA_listBase.h" #include "DNA_sequence_types.h" #include "DNA_scene_types.h" +#include "DNA_anim_types.h" #include "BKE_global.h" #include "BKE_image.h" #include "BKE_main.h" #include "BKE_sequence.h" +#include "BKE_fcurve.h" #include "BKE_utildefines.h" +#include "RNA_access.h" +#include "RE_pipeline.h" #include "BLI_blenlib.h" #include "BLI_util.h" @@ -809,25 +813,26 @@ static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se) int x, y; int early_out; struct SeqEffectHandle sh = get_sequence_effect(seq); + FCurve *fcu= NULL; if (!sh.execute) { /* effect not supported in this version... */ make_black_ibuf(se->ibuf); return; } -#if 0 // XXX old animation system - if(seq->ipo && seq->ipo->curve.first) { - do_seq_ipo(scene, seq, cfra); - fac= seq->facf0; - facf= seq->facf1; - } else -#endif // XXX old animation system - { + fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, + "effect_fader", 0); + + if (!fcu) { sh.get_default_fac(seq, cfra, &fac, &facf); + if( scene->r.mode & R_FIELDS ); else facf= fac; + } else { + fac = facf = evaluate_fcurve(fcu, cfra); + if( scene->r.mode & R_FIELDS ) { + facf = evaluate_fcurve(fcu, cfra + 0.5); + } } - if( !(scene->r.mode & R_FIELDS) ) facf = fac; - early_out = sh.early_out(seq, fac, facf); if (early_out == -1) { /* no input needed */ @@ -1565,12 +1570,6 @@ static int input_have_to_preprocess(Scene *scene, Sequence * seq, TStripElem* se if(seq->blend_mode == SEQ_BLEND_REPLACE && !(seq->type & SEQ_EFFECT)) { -#if 0 // XXX old animation system - if (seq->ipo && seq->ipo->curve.first) { - do_seq_ipo(scene, seq, cfra); - mul *= seq->facf0; - } -#endif // XXX old animation system mul *= seq->blend_opacity / 100.0; } @@ -1655,12 +1654,6 @@ static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cf mul = seq->mul; if(seq->blend_mode == SEQ_BLEND_REPLACE) { -#if 0 // XXX old animation system - if (seq->ipo && seq->ipo->curve.first) { - do_seq_ipo(scene, seq, cfra); - mul *= seq->facf0; - } -#endif // XXX old animation system mul *= seq->blend_opacity / 100.0; } @@ -2014,14 +2007,9 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int } } } else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions -#if 0 - /* XXX move entirely to render? */ - int oldcfra = CFRA; - Sequence * oldseq = get_last_seq(); - Scene *sce= seq->scene, *oldsce= scene; + Scene *sce= seq->scene;// *oldsce= scene; Render *re; RenderResult rres; - int doseq, rendering= G.rendering; char scenename[64]; int have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first; int sce_valid =sce && (sce->camera || have_seq); @@ -2043,18 +2031,24 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int if (!sce_valid) { se->ok = STRIPELEM_FAILED; } else if (se->ibuf==NULL && sce_valid) { - /* no need to display a waitcursor on sequencer - scene strips */ - if (!have_seq) - waitcursor(1); - + int oldcfra; /* Hack! This function can be called from do_render_seq(), in that case the seq->scene can already have a Render initialized with same name, so we have to use a default name. (compositor uses scene name to find render). However, when called from within the UI (image preview in sequencer) we do want to use scene Render, that way the render result is defined - for display in render/imagewindow */ + for display in render/imagewindow + + Hmm, don't see, why we can't do that all the time, + and since G.rendering is uhm, gone... (Peter) + */ + + int rendering = 1; + int doseq; + + oldcfra = seq->scene->r.cfra; + if(rendering) { BLI_strncpy(scenename, sce->id.name+2, 64); strcpy(sce->id.name+2, " do_build_seq_ibuf"); @@ -2065,16 +2059,9 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int doseq= scene->r.scemode & R_DOSEQ; scene->r.scemode &= ~R_DOSEQ; - BIF_init_render_callbacks(re, 0); /* 0= no display callbacks */ - - /* XXX hrms, set_scene still needed? work on that... */ - if(sce!=oldsce) set_scene_bg(sce); RE_BlenderFrame(re, sce, seq->sfra+se->nr+seq->anim_startofs); - if(sce!=oldsce) set_scene_bg(oldsce); - /* UGLY WARNING, it is set to zero in RE_BlenderFrame */ - G.rendering= rendering; if(rendering) BLI_strncpy(sce->id.name+2, scenename, 64); @@ -2094,20 +2081,12 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int RE_ReleaseResultImage(re); - BIF_end_render_callbacks(); + // BIF_end_render_callbacks(); /* restore */ scene->r.scemode |= doseq; - - // XXX -#if 0 - if((G.f & G_PLAYANIM)==0 /* bad, is set on do_render_seq */ - && !have_seq - && !build_proxy_run) -#endif - - CFRA = oldcfra; - set_last_seq(oldseq); + + seq->scene->r.cfra = oldcfra; copy_to_ibuf_still(seq, se); @@ -2120,7 +2099,6 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int } } -#endif } if (!build_proxy_run) { if (se->ibuf && use_limiter) { @@ -2138,24 +2116,25 @@ static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *s float fac, facf; struct SeqEffectHandle sh = get_sequence_effect(seq); int early_out; + FCurve *fcu= NULL; se->se1 = 0; se->se2 = 0; se->se3 = 0; -#if 0 // XXX old animation system - if(seq->ipo && seq->ipo->curve.first) { - do_seq_ipo(scene, seq, cfra); - fac= seq->facf0; - facf= seq->facf1; - } else -#endif // XXX old animation system - { + fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, + "effect_fader", 0); + + if (!fcu) { sh.get_default_fac(seq, cfra, &fac, &facf); - } + if( scene->r.mode & R_FIELDS ); else facf= fac; + } else { + fac = facf = evaluate_fcurve(fcu, cfra); + if( scene->r.mode & R_FIELDS ) { + facf = evaluate_fcurve(fcu, cfra + 0.5); + } + } - if( scene->r.mode & R_FIELDS ); else facf= fac; - early_out = sh.early_out(seq, fac, facf); switch (early_out) { case -1: @@ -2389,6 +2368,7 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene, int early_out; Sequence * seq = seq_arr[i]; struct SeqEffectHandle sh; + float facf; se = give_tstripelem(seq, cfra); @@ -2415,21 +2395,9 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene, sh = get_sequence_blend(seq); -#if 0 // XXX old animation system - seq->facf0 = seq->facf1 = 1.0; + facf = seq->blend_opacity / 100.0; - - if(seq->ipo && seq->ipo->curve.first) { - do_seq_ipo(scene, seq, cfra); - } -#endif - - if( scene->r.mode & R_FIELDS ); else seq->facf0 = seq->facf1; - - seq->facf0 *= seq->blend_opacity / 100.0; - seq->facf1 *= seq->blend_opacity / 100.0; - - early_out = sh.early_out(seq, seq->facf0, seq->facf1); + early_out = sh.early_out(seq, facf, facf); switch (early_out) { case -1: @@ -2486,8 +2454,10 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene, struct SeqEffectHandle sh = get_sequence_blend(seq); TStripElem* se1 = give_tstripelem(seq_arr[i-1], cfra); TStripElem* se2 = give_tstripelem(seq_arr[i], cfra); + + float facf = seq->blend_opacity / 100.0; - int early_out = sh.early_out(seq, seq->facf0, seq->facf1); + int early_out = sh.early_out(seq, facf, facf); switch (early_out) { case 0: { int x= se2->ibuf->x; @@ -2535,12 +2505,12 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene, if (swap_input) { sh.execute(seq, cfra, - seq->facf0, seq->facf1, x, y, + facf, facf, x, y, se2->ibuf, se1->ibuf_comp, 0, se2->ibuf_comp); } else { sh.execute(seq, cfra, - seq->facf0, seq->facf1, x, y, + facf, facf, x, y, se1->ibuf_comp, se2->ibuf, 0, se2->ibuf_comp); } diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index 557f326e951..f53700976fd 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -3752,6 +3752,7 @@ static void softbody_update_positions(Object *ob, SoftBody *sb, float (*vertexCo } } + /* void SB_estimate_transform */ /* input Object *ob out (says any object that can do SB like mesh,lattice,curve ) output float lloc[3],float lrot[3][3],float lscale[3][3] @@ -3764,164 +3765,40 @@ static void softbody_update_positions(Object *ob, SoftBody *sb, float (*vertexCo lloc,lrot,lscale are allowed to be NULL, just in case you don't need it. should be pretty useful for pythoneers :) not! velocity .. 2nd order stuff + vcloud_estimate_transform see */ -/* can't believe there is none in math utils */ -float _det_m3(float m2[3][3]) -{ - float det = 0.f; - if (m2){ - det= m2[0][0]* (m2[1][1]*m2[2][2] - m2[1][2]*m2[2][1]) - -m2[1][0]* (m2[0][1]*m2[2][2] - m2[0][2]*m2[2][1]) - +m2[2][0]* (m2[0][1]*m2[1][2] - m2[0][2]*m2[1][1]); - } - return det; -} - void SB_estimate_transform(Object *ob,float lloc[3],float lrot[3][3],float lscale[3][3]) { BodyPoint *bp; ReferenceVert *rp; - float accu_pos[3] = {0.0f,0.0f,0.0f}; - float com[3],va[3],vb[3],rcom[3]; - float accu_mass = 0.0f,la = 0.0f,lb = 0.0f,eps = 0.000001f; SoftBody *sb = 0; - int a,i=0,imax=16; - int _localdebug; - - if (lloc) zero_v3(lloc); - if (lrot) zero_m3(lrot); - if (lscale) zero_m3(lscale); - + float (*opos)[3]; + float (*rpos)[3]; + float com[3],rcom[3]; + int a; if(!ob ||!ob->soft) return; /* why did we get here ? */ sb= ob->soft; - /*for threading there should be a lock */ - /* sb-> lock; */ - /* calculate center of mass */ if(!sb || !sb->bpoint) return; - _localdebug=sb->solverflags & SBSO_MONITOR; /* turn this on/off if you (don't) want to see progress on console */ - for(a=0,bp=sb->bpoint; a<sb->totpoint; a++, bp++) { - VECADD(accu_pos,accu_pos,bp->pos); - accu_mass += bp->mass; + opos= MEM_callocN( (sb->totpoint)*3*sizeof(float), "SB_OPOS"); + rpos= MEM_callocN( (sb->totpoint)*3*sizeof(float), "SB_RPOS"); + /* might filter vertex selection with a vertex group */ + for(a=0, bp=sb->bpoint, rp=sb->scratch->Ref.ivert; a<sb->totpoint; a++, bp++, rp++) { + VECCOPY(rpos[a],rp->pos); + VECCOPY(opos[a],bp->pos); } - VECCOPY(com,accu_pos); - mul_v3_fl(com,1.0f/accu_mass); - /* center of mass done*/ - if (sb->scratch){ - float dcom[3],stunt[3]; - float m[3][3],mr[3][3],q[3][3],qi[3][3]; - float odet,ndet; - zero_m3(m); - zero_m3(mr); - VECSUB(dcom,com,sb->scratch->Ref.com); - VECCOPY(rcom,sb->scratch->Ref.com); - if (_localdebug) { - printf("DCOM %f %f %f\n",dcom[0],dcom[1],dcom[2]); - } - if (lloc) VECCOPY(lloc,dcom); - VECCOPY(sb->lcom,dcom); - /* build 'projection' matrix */ - for(a=0, bp=sb->bpoint, rp=sb->scratch->Ref.ivert; a<sb->totpoint; a++, bp++, rp++) { - VECSUB(va,rp->pos,rcom); - la += len_v3(va); - /* mul_v3_fl(va,bp->mass); mass needs renormalzation here ?? */ - VECSUB(vb,bp->pos,com); - lb += len_v3(vb); - /* mul_v3_fl(va,rp->mass); */ - m[0][0] += va[0] * vb[0]; - m[0][1] += va[0] * vb[1]; - m[0][2] += va[0] * vb[2]; - - m[1][0] += va[1] * vb[0]; - m[1][1] += va[1] * vb[1]; - m[1][2] += va[1] * vb[2]; - - m[2][0] += va[2] * vb[0]; - m[2][1] += va[2] * vb[1]; - m[2][2] += va[2] * vb[2]; - - /* building the referenc matrix on the fly - needed to scale properly later*/ - - mr[0][0] += va[0] * va[0]; - mr[0][1] += va[0] * va[1]; - mr[0][2] += va[0] * va[2]; - - mr[1][0] += va[1] * va[0]; - mr[1][1] += va[1] * va[1]; - mr[1][2] += va[1] * va[2]; - - mr[2][0] += va[2] * va[0]; - mr[2][1] += va[2] * va[1]; - mr[2][2] += va[2] * va[2]; - } - /* we are pretty much set up here and we could return that raw mess containing essential information - but being nice fellows we proceed: - knowing we did split off the tanslational part to the center of mass (com) part - however let's do some more reverse engeneering and see if we can split - rotation from scale ->Polardecompose - */ - copy_m3_m3(q,m); - stunt[0] = q[0][0]; stunt[1] = q[1][1]; stunt[2] = q[2][2]; - /* nothing to see here but renormalizing works nicely - printf("lenght stunt %5.3f a %5.3f b %5.3f %5.3f\n",len_v3(stunt),la,lb,sqrt(la*lb)); - */ - mul_m3_fl(q,1.f/len_v3(stunt)); - /* not too much to see here - if(_localdebug){ - printf("q0 %5.3f %5.3f %5.3f\n",q[0][0],q[0][1],q[0][2]); - printf("q1 %5.3f %5.3f %5.3f\n",q[1][0],q[1][1],q[1][2]); - printf("q2 %5.3f %5.3f %5.3f\n",q[2][0],q[2][1],q[2][2]); - } - */ - /* this is pretty much Polardecompose 'inline' the algo based on Higham's thesis */ - /* without the far case !!! but seems to work here pretty neat */ - odet = 0.f; - ndet = _det_m3(q); - while((odet-ndet)*(odet-ndet) > eps && i<imax){ - invert_m3_m3(qi,q); - transpose_m3(qi); - add_m3_m3m3(q,q,qi); - mul_m3_fl(q,0.5f); - odet =ndet; - ndet =_det_m3(q); - i++; - } - if (i){ - float scale[3][3]; - float irot[3][3]; - if(lrot) copy_m3_m3(lrot,q); - copy_m3_m3(sb->lrot,q); - if(_localdebug){ - printf("Rot .. i %d\n",i); - printf("!q0 %5.3f %5.3f %5.3f\n",q[0][0],q[0][1],q[0][2]); - printf("!q1 %5.3f %5.3f %5.3f\n",q[1][0],q[1][1],q[1][2]); - printf("!q2 %5.3f %5.3f %5.3f\n",q[2][0],q[2][1],q[2][2]); - } - invert_m3_m3(irot,q); - /* now that's where we need mr to get scaling right */ - invert_m3_m3(qi,mr); - mul_m3_m3m3(q,m,qi); - - //mul_m3_m3m3(scale,q,irot); - mul_m3_m3m3(scale,irot,q); /* i always have a problem with this C functions left/right operator applies first*/ - mul_m3_fl(scale,lb/la); /* 0 order scale was normalized away so put it back here dunno if that is needed here ???*/ - - if(lscale) copy_m3_m3(lscale,scale); - copy_m3_m3(sb->lscale,scale); - if(_localdebug){ - printf("Scale .. \n"); - printf("!s0 %5.3f %5.3f %5.3f\n",scale[0][0],scale[0][1],scale[0][2]); - printf("!s1 %5.3f %5.3f %5.3f\n",scale[1][0],scale[1][1],scale[1][2]); - printf("!s2 %5.3f %5.3f %5.3f\n",scale[2][0],scale[2][1],scale[2][2]); - } - - } - } - /*for threading there should be a unlock */ - /* sb-> unlock; */ + vcloud_estimate_transform(sb->totpoint, opos, NULL, rpos, NULL, com, rcom,lrot,lscale); + //VECSUB(com,com,rcom); + if (lloc) VECCOPY(lloc,com); + VECCOPY(sb->lcom,com); + if (lscale) copy_m3_m3(sb->lscale,lscale); + if (lrot) copy_m3_m3(sb->lrot,lrot); + + + MEM_freeN(opos); + MEM_freeN(rpos); } static void softbody_reset(Object *ob, SoftBody *sb, float (*vertexCos)[3], int numVerts) @@ -4182,10 +4059,6 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i dtime = timescale; softbody_update_positions(ob, sb, vertexCos, numVerts); softbody_step(scene, ob, sb, dtime); - if(sb->solverflags & SBSO_MONITOR ){ - printf("Picked from cache continue_physics %d\n",framenr); - } - softbody_to_object(ob, vertexCos, numVerts, 0); return; } @@ -4210,9 +4083,6 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i cache_result = BKE_ptcache_read_cache(&pid, framenr, scene->r.frs_sec); if(cache_result == PTCACHE_READ_EXACT || cache_result == PTCACHE_READ_INTERPOLATED) { - if(sb->solverflags & SBSO_MONITOR ){ - printf("Picked from cache at frame %d\n",framenr); - } softbody_to_object(ob, vertexCos, numVerts, sb->local); cache->simframe= framenr; diff --git a/source/blender/blenlib/BLI_listbase.h b/source/blender/blenlib/BLI_listbase.h index 21b4c83bd88..bd735888f95 100644 --- a/source/blender/blenlib/BLI_listbase.h +++ b/source/blender/blenlib/BLI_listbase.h @@ -55,7 +55,7 @@ void BLI_sortlist(struct ListBase *listbase, int (*cmp)(void *, void *)); void BLI_freelist(struct ListBase *listbase); int BLI_countlist(struct ListBase *listbase); void BLI_freelinkN(struct ListBase *listbase, void *vlink); -void BLI_duplicatelist(struct ListBase *list1, struct ListBase *list2); /* copy from 2 to 1 */ +void BLI_duplicatelist(struct ListBase *list1, const struct ListBase *list2); /* create a generic list node containing link to provided data */ struct LinkData *BLI_genericNodeN(void *data); diff --git a/source/blender/blenlib/BLI_math_geom.h b/source/blender/blenlib/BLI_math_geom.h index d54be9d5e03..c50d9caade0 100644 --- a/source/blender/blenlib/BLI_math_geom.h +++ b/source/blender/blenlib/BLI_math_geom.h @@ -148,6 +148,12 @@ void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang, void tangent_from_uv(float *uv1, float *uv2, float *uv3, float *co1, float *co2, float *co3, float *n, float *tang); +/********************************* vector clouds******************************/ + + +void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight, + float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3]); + #ifdef __cplusplus } #endif diff --git a/source/blender/blenlib/BLI_math_matrix.h b/source/blender/blenlib/BLI_math_matrix.h index 53476e4d03c..5667fb79332 100644 --- a/source/blender/blenlib/BLI_math_matrix.h +++ b/source/blender/blenlib/BLI_math_matrix.h @@ -82,6 +82,7 @@ void mul_m4_v4(float M[4][4], float r[3]); void mul_project_m4_v4(float M[4][4], float r[3]); void mul_m3_v3(float M[3][3], float r[3]); +void mul_v3_m3v3(float r[3], float M[3][3], float a[3]); void mul_transposed_m3_v3(float M[3][3], float r[3]); void mul_m3_v3_double(float M[3][3], double r[3]); diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h index e21c3800acc..399c234a108 100644 --- a/source/blender/blenlib/BLI_math_vector.h +++ b/source/blender/blenlib/BLI_math_vector.h @@ -54,6 +54,9 @@ MINLINE void zero_v3(float r[3]); MINLINE void copy_v2_v2(float r[2], float a[2]); MINLINE void copy_v3_v3(float r[3], float a[3]); +MINLINE void swap_v2_v2(float a[2], float b[2]); +MINLINE void swap_v3_v3(float a[3], float b[3]); + /********************************* Arithmetic ********************************/ MINLINE void add_v2_v2(float r[2], float a[2]); @@ -72,6 +75,11 @@ MINLINE void mul_v3_v3fl(float r[3], float a[3], float f); MINLINE void mul_v3_v3(float r[3], float a[3]); MINLINE void mul_v3_v3v3(float r[3], float a[3], float b[3]); +MINLINE void madd_v3_v3fl(float r[3], float a[3], float f); +MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3]); +MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f); +MINLINE void madd_v3_v3v3v3(float r[3], float a[3], float b[3], float c[3]); + MINLINE void negate_v3(float r[3]); MINLINE void negate_v3_v3(float r[3], float a[3]); @@ -137,8 +145,8 @@ void print_v2(char *str, float a[2]); void print_v3(char *str, float a[3]); void print_v4(char *str, float a[4]); -void normal_short_to_float_v3(float r[3], short n[3]); -void normal_float_to_short_v3(short r[3], float n[3]); +MINLINE void normal_short_to_float_v3(float r[3], short n[3]); +MINLINE void normal_float_to_short_v3(short r[3], float n[3]); void minmax_v3_v3v3(float r[3], float min[3], float max[3]); diff --git a/source/blender/blenlib/intern/listbase.c b/source/blender/blenlib/intern/listbase.c index b3a4722d6d9..166f4ed029e 100644 --- a/source/blender/blenlib/intern/listbase.c +++ b/source/blender/blenlib/intern/listbase.c @@ -343,7 +343,7 @@ int BLI_findindex(ListBase *listbase, void *vlink) return -1; } -void BLI_duplicatelist(ListBase *list1, ListBase *list2) /* copy from 2 to 1 */ +void BLI_duplicatelist(ListBase *list1, const ListBase *list2) { struct Link *link1, *link2; diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index 0b3ab2f0afc..efa5876e1b0 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -1597,3 +1597,161 @@ void tangent_from_uv(float *uv1, float *uv2, float *uv3, float *co1, float *co2, negate_v3(tang); } +/********************************************************/ + +/* vector clouds */ +/* void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight, + float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3]) + +input +( +int list_size +4 lists as pointer to array[list_size] +1. current pos array of 'new' positions +2. current weight array of 'new'weights (may be NULL pointer if you have no weights ) +3. reference rpos array of 'old' positions +4. reference rweight array of 'old'weights (may be NULL pointer if you have no weights ) +) +output +( +float lloc[3] center of mass pos +float rloc[3] center of mass rpos +float lrot[3][3] rotation matrix +float lscale[3][3] scale matrix +pointers may be NULL if not needed +) + +*/ +/* can't believe there is none in math utils */ +float _det_m3(float m2[3][3]) +{ + float det = 0.f; + if (m2){ + det= m2[0][0]* (m2[1][1]*m2[2][2] - m2[1][2]*m2[2][1]) + -m2[1][0]* (m2[0][1]*m2[2][2] - m2[0][2]*m2[2][1]) + +m2[2][0]* (m2[0][1]*m2[1][2] - m2[0][2]*m2[1][1]); + } + return det; +} + + +void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight, + float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3]) +{ + float accu_com[3]= {0.0f,0.0f,0.0f}, accu_rcom[3]= {0.0f,0.0f,0.0f}; + float accu_weight = 0.0f,accu_rweight = 0.0f,eps = 0.000001f; + + int a; + /* first set up a nice default response */ + if (lloc) zero_v3(lloc); + if (rloc) zero_v3(rloc); + if (lrot) unit_m3(lrot); + if (lscale) unit_m3(lscale); + /* do com for both clouds */ + if (pos && rpos && (list_size > 0)) /* paranoya check */ + { + /* do com for both clouds */ + for(a=0; a<list_size; a++){ + if (weight){ + float v[3]; + copy_v3_v3(v,pos[a]); + mul_v3_fl(v,weight[a]); + add_v3_v3v3(accu_com,accu_com,v); + accu_weight +=weight[a]; + } + else add_v3_v3v3(accu_com,accu_com,pos[a]); + + if (rweight){ + float v[3]; + copy_v3_v3(v,rpos[a]); + mul_v3_fl(v,rweight[a]); + add_v3_v3v3(accu_rcom,accu_rcom,v); + accu_rweight +=rweight[a]; + } + else add_v3_v3v3(accu_rcom,accu_rcom,rpos[a]); + + } + if (!weight || !rweight){ + accu_weight = accu_rweight = list_size; + } + + mul_v3_fl(accu_com,1.0f/accu_weight); + mul_v3_fl(accu_rcom,1.0f/accu_rweight); + if (lloc) copy_v3_v3(lloc,accu_com); + if (rloc) copy_v3_v3(rloc,accu_rcom); + if (lrot || lscale){ /* caller does not want rot nor scale, strange but legal */ + /*so now do some reverse engeneering and see if we can split rotation from scale ->Polardecompose*/ + /* build 'projection' matrix */ + float m[3][3],mr[3][3],q[3][3],qi[3][3]; + float va[3],vb[3],stunt[3]; + float odet,ndet; + int i=0,imax=15; + zero_m3(m); + zero_m3(mr); + + /* build 'projection' matrix */ + for(a=0; a<list_size; a++){ + sub_v3_v3v3(va,rpos[a],accu_rcom); + /* mul_v3_fl(va,bp->mass); mass needs renormalzation here ?? */ + sub_v3_v3v3(vb,pos[a],accu_com); + /* mul_v3_fl(va,rp->mass); */ + m[0][0] += va[0] * vb[0]; + m[0][1] += va[0] * vb[1]; + m[0][2] += va[0] * vb[2]; + + m[1][0] += va[1] * vb[0]; + m[1][1] += va[1] * vb[1]; + m[1][2] += va[1] * vb[2]; + + m[2][0] += va[2] * vb[0]; + m[2][1] += va[2] * vb[1]; + m[2][2] += va[2] * vb[2]; + + /* building the referenc matrix on the fly + needed to scale properly later*/ + + mr[0][0] += va[0] * va[0]; + mr[0][1] += va[0] * va[1]; + mr[0][2] += va[0] * va[2]; + + mr[1][0] += va[1] * va[0]; + mr[1][1] += va[1] * va[1]; + mr[1][2] += va[1] * va[2]; + + mr[2][0] += va[2] * va[0]; + mr[2][1] += va[2] * va[1]; + mr[2][2] += va[2] * va[2]; + } + copy_m3_m3(q,m); + stunt[0] = q[0][0]; stunt[1] = q[1][1]; stunt[2] = q[2][2]; + /* renormalizing for numeric stability */ + mul_m3_fl(q,1.f/len_v3(stunt)); + + /* this is pretty much Polardecompose 'inline' the algo based on Higham's thesis */ + /* without the far case ... but seems to work here pretty neat */ + odet = 0.f; + ndet = _det_m3(q); + while((odet-ndet)*(odet-ndet) > eps && i<imax){ + invert_m3_m3(qi,q); + transpose_m3(qi); + add_m3_m3m3(q,q,qi); + mul_m3_fl(q,0.5f); + odet =ndet; + ndet =_det_m3(q); + i++; + } + + if (i){ + float scale[3][3]; + float irot[3][3]; + if(lrot) copy_m3_m3(lrot,q); + invert_m3_m3(irot,q); + invert_m3_m3(qi,mr); + mul_m3_m3m3(q,m,qi); + mul_m3_m3m3(scale,irot,q); + if(lscale) copy_m3_m3(lscale,scale); + + } + } + } +} diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c index edab1cc2440..47b99bce8ab 100644 --- a/source/blender/blenlib/intern/math_matrix.c +++ b/source/blender/blenlib/intern/math_matrix.c @@ -338,15 +338,19 @@ void mul_m4_v4(float mat[][4], float *vec) vec[3]=x*mat[0][3] + y*mat[1][3] + z*mat[2][3] + mat[3][3]*vec[3]; } -void mul_m3_v3(float mat[][3], float *vec) +void mul_v3_m3v3(float r[3], float M[3][3], float a[3]) { - float x,y; + r[0]= M[0][0]*a[0] + M[1][0]*a[1] + M[2][0]*a[2]; + r[1]= M[0][1]*a[0] + M[1][1]*a[1] + M[2][1]*a[2]; + r[2]= M[0][2]*a[0] + M[1][2]*a[1] + M[2][2]*a[2]; +} - x=vec[0]; - y=vec[1]; - vec[0]= x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2]; - vec[1]= x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2]; - vec[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2]; +void mul_m3_v3(float M[3][3], float r[3]) +{ + float tmp[3]; + + mul_v3_m3v3(tmp, M, r); + copy_v3_v3(r, tmp); } void mul_transposed_m3_v3(float mat[][3], float *vec) diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c index 502f241c195..289d8818753 100644 --- a/source/blender/blenlib/intern/math_vector.c +++ b/source/blender/blenlib/intern/math_vector.c @@ -292,20 +292,6 @@ void print_v4(char *str, float v[4]) printf("%s: %.3f %.3f %.3f %.3f\n", str, v[0], v[1], v[2], v[3]); } -void normal_short_to_float_v3(float *out, short *in) -{ - out[0] = in[0]*(1.0f/32767.0f); - out[1] = in[1]*(1.0f/32767.0f); - out[2] = in[2]*(1.0f/32767.0f); -} - -void normal_float_to_short_v3(short *out, float *in) -{ - out[0] = (short)(in[0]*32767.0f); - out[1] = (short)(in[1]*32767.0f); - out[2] = (short)(in[2]*32767.0f); -} - void minmax_v3_v3v3(float *min, float *max, float *vec) { if(min[0]>vec[0]) min[0]= vec[0]; diff --git a/source/blender/blenlib/intern/math_vector_inline.c b/source/blender/blenlib/intern/math_vector_inline.c index 6830f44ae1b..cb629312712 100644 --- a/source/blender/blenlib/intern/math_vector_inline.c +++ b/source/blender/blenlib/intern/math_vector_inline.c @@ -58,6 +58,19 @@ MINLINE void copy_v3_v3(float r[3], float a[3]) r[2]= a[2]; } +MINLINE void swap_v2_v2(float a[2], float b[2]) +{ + SWAP(float, a[0], b[0]); + SWAP(float, a[1], b[1]); +} + +MINLINE void swap_v3_v3(float a[3], float b[3]) +{ + SWAP(float, a[0], b[0]); + SWAP(float, a[1], b[1]); + SWAP(float, a[2], b[2]); +} + /********************************* Arithmetic ********************************/ MINLINE void add_v2_v2(float *r, float *a) @@ -76,7 +89,7 @@ MINLINE void add_v3_v3(float *r, float *a) { r[0] += a[0]; r[1] += a[1]; - r[1] += a[1]; + r[2] += a[2]; } MINLINE void add_v3_v3v3(float *r, float *a, float *b) @@ -102,7 +115,7 @@ MINLINE void sub_v3_v3(float *r, float *a) { r[0] -= a[0]; r[1] -= a[1]; - r[1] -= a[1]; + r[2] -= a[2]; } MINLINE void sub_v3_v3v3(float *r, float *a, float *b) @@ -139,6 +152,34 @@ MINLINE void mul_v3_v3(float r[3], float a[3]) r[2] *= a[2]; } +MINLINE void madd_v3_v3fl(float r[3], float a[3], float f) +{ + r[0] += a[0]*f; + r[1] += a[1]*f; + r[2] += a[2]*f; +} + +MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3]) +{ + r[0] += a[0]*b[0]; + r[1] += a[1]*b[1]; + r[2] += a[2]*b[2]; +} + +MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f) +{ + r[0] = a[0] + b[0]*f; + r[1] = a[1] + b[1]*f; + r[2] = a[2] + b[2]*f; +} + +MINLINE void madd_v3_v3v3v3(float r[3], float a[3], float b[3], float c[3]) +{ + r[0] = a[0] + b[0]*c[0]; + r[1] = a[1] + b[1]*c[1]; + r[2] = a[2] + b[2]*c[2]; +} + MINLINE void mul_v3_v3v3(float *v, float *v1, float *v2) { v[0] = v1[0] * v2[0]; @@ -254,5 +295,19 @@ MINLINE float normalize_v3(float n[3]) return d; } +MINLINE void normal_short_to_float_v3(float *out, short *in) +{ + out[0] = in[0]*(1.0f/32767.0f); + out[1] = in[1]*(1.0f/32767.0f); + out[2] = in[2]*(1.0f/32767.0f); +} + +MINLINE void normal_float_to_short_v3(short *out, float *in) +{ + out[0] = (short)(in[0]*32767.0f); + out[1] = (short)(in[1]*32767.0f); + out[2] = (short)(in[2]*32767.0f); +} + #endif /* BLI_MATH_VECTOR_INLINE */ diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 5dc7cdad8ed..ce760643b3d 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1694,6 +1694,12 @@ static void lib_link_fmodifiers(FileData *fd, ID *id, ListBase *list) data->script = newlibadr(fd, id->lib, data->script); } break; + case FMODIFIER_TYPE_SOUND: + { + FMod_Sound *data= (FMod_Sound *)fcm->data; + data->sound = newlibadr(fd, id->lib, data->sound); + } + break; } } } @@ -1702,6 +1708,9 @@ static void lib_link_fcurves(FileData *fd, ID *id, ListBase *list) { FCurve *fcu; + if (list == NULL) + return; + /* relink ID-block references... */ for (fcu= list->first; fcu; fcu= fcu->next) { /* driver data */ @@ -1848,6 +1857,9 @@ static void lib_link_nladata_strips(FileData *fd, ID *id, ListBase *list) /* check strip's children */ lib_link_nladata_strips(fd, id, &strip->strips); + /* check strip's F-Curves */ + lib_link_fcurves(fd, id, &strip->fcurves); + /* reassign the counted-reference to action */ strip->act = newlibadr_us(fd, id->lib, strip->act); } @@ -2385,7 +2397,9 @@ static void direct_link_armature(FileData *fd, bArmature *arm) link_list(fd, &arm->bonebase); arm->edbo= NULL; arm->sketch = NULL; + arm->adt= newdataadr(fd, arm->adt); + direct_link_animdata(fd, arm->adt); bone=arm->bonebase.first; while (bone) { @@ -10086,6 +10100,14 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ntree= ntree->id.next; } } + { + Object *ob=main->object.first; + while (ob) { + /* shaded mode disabled for now */ + if (ob->dt == OB_SHADED) ob->dt = OB_TEXTURE; + ob=ob->id.next; + } + } } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ @@ -10440,6 +10462,13 @@ static void expand_fmodifiers(FileData *fd, Main *mainvar, ListBase *list) expand_doit(fd, mainvar, data->script); } break; + case FMODIFIER_TYPE_SOUND: + { + FMod_Sound *data= (FMod_Sound *)fcm->data; + + expand_doit(fd, mainvar, data->sound); + } + break; } } } @@ -10499,6 +10528,9 @@ static void expand_animdata_nlastrips(FileData *fd, Main *mainvar, ListBase *lis /* check child strips */ expand_animdata_nlastrips(fd, mainvar, &strip->strips); + /* check F-Curves */ + expand_fcurves(fd, mainvar, &strip->fcurves); + /* check F-Modifiers */ expand_fmodifiers(fd, mainvar, &strip->modifiers); diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index 381632523fa..9ebcc8b191f 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -100,9 +100,6 @@ extern "C" char *CustomData_get_layer_name(const struct CustomData *data, int type, int n); -// armature module internal func, it's not good to use it here? (Arystan) -struct EditBone *addEditBone(struct bArmature *arm, char *name); - const char *primTypeToStr(COLLADAFW::MeshPrimitive::PrimitiveType type) { using namespace COLLADAFW; @@ -555,7 +552,7 @@ private: } DAG_scene_sort(CTX_data_scene(C)); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); } @@ -611,7 +608,7 @@ private: } // TODO rename from Node "name" attrs later - EditBone *bone = addEditBone(arm, (char*)get_joint_name(node)); + EditBone *bone = ED_armature_edit_bone_add(arm, (char*)get_joint_name(node)); totbone++; if (parent) bone->parent = parent; diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c index 9d39911548b..7a96c3b32a3 100644 --- a/source/blender/editors/animation/anim_deps.c +++ b/source/blender/editors/animation/anim_deps.c @@ -55,20 +55,6 @@ #include "WM_api.h" #include "WM_types.h" -/* ***************** depsgraph calls and anim updates ************* */ -/* ***************** only these can be called from editors ******** */ - -void ED_anim_dag_flush_update(const bContext *C) -{ - DAG_ids_flush_update(0); -} - -/* flushes changes from object to all relations in scene */ -void ED_anim_object_flush_update(const bContext *C, Object *ob) -{ - DAG_id_update_flags(&ob->id); -} - /* **************************** pose <-> action syncing ******************************** */ /* Summary of what needs to be synced between poses and actions: * 1) Flags diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index eb3a0377711..6586317b6dc 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -734,7 +734,6 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s ale->flag= nlt->flag; - // XXX or should this be done some other way? ale->key_data= &nlt->strips; ale->datatype= ALE_NLASTRIP; } @@ -755,12 +754,10 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s /* ----------------------------------------- */ - -static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, bActionGroup *grp, void *owner, short ownertype, int filter_mode, ID *owner_id) +/* find the next F-Curve that is usable for inclusion */ +static FCurve *animdata_filter_fcurve_next (bDopeSheet *ads, FCurve *first, bActionGroup *grp, int filter_mode, ID *owner_id) { - bAnimListElem *ale = NULL; - FCurve *fcu; - int items = 0; + FCurve *fcu = NULL; /* loop over F-Curves - assume that the caller of this has already checked that these should be included * NOTE: we need to check if the F-Curves belong to the same group, as this gets called for groups too... @@ -803,18 +800,42 @@ static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve if ( ANIMCHANNEL_SELOK(SEL_FCU(fcu)) && ANIMCHANNEL_SELEDITOK(SEL_FCU(fcu)) ) { /* only include if this curve is active */ if (!(filter_mode & ANIMFILTER_ACTIVE) || (fcu->flag & FCURVE_ACTIVE)) { - ale= make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner, ownertype, owner_id); - - if (ale) { - BLI_addtail(anim_data, ale); - items++; - } + /* this F-Curve can be used, so return it */ + return fcu; } } } } } + /* no (more) F-Curves from the list are suitable... */ + return NULL; +} + +static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, bActionGroup *grp, void *owner, short ownertype, int filter_mode, ID *owner_id) +{ + FCurve *fcu; + int items = 0; + + /* loop over every F-Curve able to be included + * - this for-loop works like this: + * 1) the starting F-Curve is assigned to the fcu pointer so that we have a starting point to search from + * 2) the first valid F-Curve to start from (which may include the one given as 'first') in the remaining + * list of F-Curves is found, and verified to be non-null + * 3) the F-Curve referenced by fcu pointer is added to the list + * 4) the fcu pointer is set to the F-Curve after the one we just added, so that we can keep going through + * the rest of the F-Curve list without an eternal loop. Back to step 2 :) + */ + for (fcu=first; ( (fcu = animdata_filter_fcurve_next(ads, fcu, grp, filter_mode, owner_id)) ); fcu=fcu->next) + { + bAnimListElem *ale = make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner, ownertype, owner_id); + + if (ale) { + BLI_addtail(anim_data, ale); + items++; + } + } + /* return the number of items added to the list */ return items; } @@ -829,50 +850,57 @@ static int animdata_filter_action (ListBase *anim_data, bDopeSheet *ads, bAction /* loop over groups */ // TODO: in future, should we expect to need nested groups? for (agrp= act->groups.first; agrp; agrp= agrp->next) { - /* add this group as a channel first */ - if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) { - /* check if filtering by selection */ - if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) { - ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, NULL, ANIMTYPE_NONE, owner_id); - if (ale) { - BLI_addtail(anim_data, ale); - items++; - } - } - } + FCurve *first_fcu; /* store reference to last channel of group */ if (agrp->channels.last) lastchan= agrp->channels.last; + /* get the first F-Curve in this group we can start to use, + * and if there isn't any F-Curve to start from, then don't + * this group at all... + */ + first_fcu = animdata_filter_fcurve_next(ads, agrp->channels.first, agrp, filter_mode, owner_id); - /* there are some situations, where only the channels of the action group should get considered */ - if (!(filter_mode & ANIMFILTER_ACTGROUPED) || (agrp->flag & AGRP_ACTIVE)) { - /* filters here are a bit convoulted... - * - groups show a "summary" of keyframes beside their name which must accessable for tools which handle keyframes - * - groups can be collapsed (and those tools which are only interested in channels rely on knowing that group is closed) - * - * cases when we should include F-Curves inside group: - * - we don't care about visibility - * - group is expanded - * - we just need the F-Curves present - */ - if ( (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_AGRP(agrp)) || (filter_mode & ANIMFILTER_CURVESONLY) ) - { - /* for the Graph Editor, curves may be set to not be visible in the view to lessen clutter, - * but to do this, we need to check that the group doesn't have it's not-visible flag set preventing - * all its sub-curves to be shown + if (first_fcu) { + /* add this group as a channel first */ + if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) { + /* check if filtering by selection */ + if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) { + ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, NULL, ANIMTYPE_NONE, owner_id); + if (ale) { + BLI_addtail(anim_data, ale); + items++; + } + } + } + + /* there are some situations, where only the channels of the action group should get considered */ + if (!(filter_mode & ANIMFILTER_ACTGROUPED) || (agrp->flag & AGRP_ACTIVE)) { + /* filters here are a bit convoulted... + * - groups show a "summary" of keyframes beside their name which must accessable for tools which handle keyframes + * - groups can be collapsed (and those tools which are only interested in channels rely on knowing that group is closed) + * + * cases when we should include F-Curves inside group: + * - we don't care about visibility + * - group is expanded + * - we just need the F-Curves present */ - if ( !(filter_mode & ANIMFILTER_CURVEVISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) ) + if ( (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_AGRP(agrp)) || (filter_mode & ANIMFILTER_CURVESONLY) ) { - if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) { - items += animdata_filter_fcurves(anim_data, ads, agrp->channels.first, agrp, owner, ownertype, filter_mode, owner_id); + /* for the Graph Editor, curves may be set to not be visible in the view to lessen clutter, + * but to do this, we need to check that the group doesn't have it's not-visible flag set preventing + * all its sub-curves to be shown + */ + if ( !(filter_mode & ANIMFILTER_CURVEVISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) ) + { + if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) { + items += animdata_filter_fcurves(anim_data, ads, first_fcu, agrp, owner, ownertype, filter_mode, owner_id); + } } } } } - - // TODO: but we still need to deal with the case when the group may be closed, but it has no visible curves too } /* loop over un-grouped F-Curves (only if we're not only considering those channels in the animive group) */ diff --git a/source/blender/editors/animation/anim_intern.h b/source/blender/editors/animation/anim_intern.h index 0101e3d0ef7..bc4f528d43f 100644 --- a/source/blender/editors/animation/anim_intern.h +++ b/source/blender/editors/animation/anim_intern.h @@ -45,25 +45,25 @@ short modifykey_get_context_data (bContext *C, ListBase *dsources, KeyingSet *ks * These handle keyframes management from various spaces. They only make use of * Keying Sets. */ -void ANIM_OT_insert_keyframe(struct wmOperatorType *ot); -void ANIM_OT_delete_keyframe(struct wmOperatorType *ot); +void ANIM_OT_keyframe_insert(struct wmOperatorType *ot); +void ANIM_OT_keyframe_delete(struct wmOperatorType *ot); /* Main Keyframe Management operators: * These handle keyframes management from various spaces. They will handle the menus * required for each space. */ -void ANIM_OT_insert_keyframe_menu(struct wmOperatorType *ot); -void ANIM_OT_delete_keyframe_v3d(struct wmOperatorType *ot); +void ANIM_OT_keyframe_insert_menu(struct wmOperatorType *ot); +void ANIM_OT_keyframe_delete_v3d(struct wmOperatorType *ot); /* Keyframe managment operators for UI buttons (RMB menu). */ -void ANIM_OT_insert_keyframe_button(struct wmOperatorType *ot); -void ANIM_OT_delete_keyframe_button(struct wmOperatorType *ot); +void ANIM_OT_keyframe_insert_button(struct wmOperatorType *ot); +void ANIM_OT_keyframe_delete_button(struct wmOperatorType *ot); /* .......... */ /* KeyingSet managment operators for UI buttons (RMB menu) */ -void ANIM_OT_add_keyingset_button(struct wmOperatorType *ot); -void ANIM_OT_remove_keyingset_button(struct wmOperatorType *ot); +void ANIM_OT_keyingset_button_add(struct wmOperatorType *ot); +void ANIM_OT_keyingset_button_remove(struct wmOperatorType *ot); /* KeyingSet management operators for RNA collections/UI buttons */ void ANIM_OT_keying_set_add(struct wmOperatorType *ot); @@ -74,8 +74,8 @@ void ANIM_OT_keying_set_path_remove(struct wmOperatorType *ot); /* .......... */ /* Driver management operators for UI buttons (RMB menu) */ -void ANIM_OT_add_driver_button(struct wmOperatorType *ot); -void ANIM_OT_remove_driver_button(struct wmOperatorType *ot); +void ANIM_OT_driver_button_add(struct wmOperatorType *ot); +void ANIM_OT_driver_button_remove(struct wmOperatorType *ot); void ANIM_OT_copy_driver_button(struct wmOperatorType *ot); void ANIM_OT_paste_driver_button(struct wmOperatorType *ot); diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 0f9b2939260..6c8a982b323 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -402,24 +402,24 @@ void ED_operatortypes_anim(void) WM_operatortype_append(ANIM_OT_previewrange_clear); /* Entire UI --------------------------------------- */ - WM_operatortype_append(ANIM_OT_insert_keyframe); - WM_operatortype_append(ANIM_OT_delete_keyframe); - WM_operatortype_append(ANIM_OT_insert_keyframe_menu); - WM_operatortype_append(ANIM_OT_delete_keyframe_v3d); - WM_operatortype_append(ANIM_OT_insert_keyframe_button); - WM_operatortype_append(ANIM_OT_delete_keyframe_button); + WM_operatortype_append(ANIM_OT_keyframe_insert); + WM_operatortype_append(ANIM_OT_keyframe_delete); + WM_operatortype_append(ANIM_OT_keyframe_insert_menu); + WM_operatortype_append(ANIM_OT_keyframe_delete_v3d); + WM_operatortype_append(ANIM_OT_keyframe_insert_button); + WM_operatortype_append(ANIM_OT_keyframe_delete_button); - WM_operatortype_append(ANIM_OT_add_driver_button); - WM_operatortype_append(ANIM_OT_remove_driver_button); + WM_operatortype_append(ANIM_OT_driver_button_add); + WM_operatortype_append(ANIM_OT_driver_button_remove); WM_operatortype_append(ANIM_OT_copy_driver_button); WM_operatortype_append(ANIM_OT_paste_driver_button); WM_operatortype_append(ANIM_OT_copy_clipboard_button); - WM_operatortype_append(ANIM_OT_add_keyingset_button); - WM_operatortype_append(ANIM_OT_remove_keyingset_button); + WM_operatortype_append(ANIM_OT_keyingset_button_add); + WM_operatortype_append(ANIM_OT_keyingset_button_remove); WM_operatortype_append(ANIM_OT_keying_set_add); WM_operatortype_append(ANIM_OT_keying_set_remove); diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c index a91e67ffc91..bc7005b82c4 100644 --- a/source/blender/editors/animation/drivers.c +++ b/source/blender/editors/animation/drivers.c @@ -53,6 +53,7 @@ #include "BKE_animsys.h" #include "BKE_action.h" #include "BKE_constraint.h" +#include "BKE_depsgraph.h" #include "BKE_fcurve.h" #include "BKE_utildefines.h" #include "BKE_context.h" @@ -175,14 +176,17 @@ short ANIM_add_driver (ID *id, const char rna_path[], int array_index, short fla fcu= verify_driver_fcurve(id, rna_path, array_index, 1); if (fcu && fcu->driver) { - fcu->driver->type= type; + ChannelDriver *driver= fcu->driver; + + /* set the type of the driver */ + driver->type= type; /* fill in current value for python */ if (type == DRIVER_TYPE_PYTHON) { PropertyType proptype= RNA_property_type(prop); int array= RNA_property_array_length(&ptr, prop); - char *expression= fcu->driver->expression; - int val, maxlen= sizeof(fcu->driver->expression); + char *expression= driver->expression; + int val, maxlen= sizeof(driver->expression); float fval; if (proptype == PROP_BOOLEAN) { @@ -398,7 +402,7 @@ static int add_driver_button_exec (bContext *C, wmOperator *op) if (success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, ND_KEYS, NULL); // XXX @@ -407,11 +411,11 @@ static int add_driver_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_add_driver_button (wmOperatorType *ot) +void ANIM_OT_driver_button_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add Driver"; - ot->idname= "ANIM_OT_add_driver_button"; + ot->idname= "ANIM_OT_driver_button_add"; ot->description= "Add driver(s) for the property(s) connected represented by the highlighted button."; /* callbacks */ @@ -462,7 +466,7 @@ static int remove_driver_button_exec (bContext *C, wmOperator *op) if (success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, ND_KEYS, NULL); // XXX @@ -471,11 +475,11 @@ static int remove_driver_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_remove_driver_button (wmOperatorType *ot) +void ANIM_OT_driver_button_remove (wmOperatorType *ot) { /* identifiers */ ot->name= "Remove Driver"; - ot->idname= "ANIM_OT_remove_driver_button"; + ot->idname= "ANIM_OT_driver_button_remove"; ot->description= "Remove the driver(s) for the property(s) connected represented by the highlighted button."; /* callbacks */ diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c index 872722607ce..35f7f424f85 100644 --- a/source/blender/editors/animation/fmodifier_ui.c +++ b/source/blender/editors/animation/fmodifier_ui.c @@ -111,16 +111,6 @@ static void validate_fmodifier_cb (bContext *C, void *fcm_v, void *dummy) fmi->verify_data(fcm); } -/* callback to set the active modifier */ -static void activate_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v) -{ - ListBase *modifiers = (ListBase *)fmods_v; - FModifier *fcm= (FModifier *)fcm_v; - - /* call API function to set the active modifier for active modifier-stack */ - set_active_fmodifier(modifiers, fcm); -} - /* callback to remove the given modifier */ static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v) { @@ -129,6 +119,10 @@ static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v) /* remove the given F-Modifier from the active modifier-stack */ remove_fmodifier(modifiers, fcm); + + /* send notifiers */ + // XXX for now, this is the only way to get updates in all the right places... but would be nice to have a special one in this case + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); } /* --------------- */ @@ -247,7 +241,7 @@ static void draw_modifier__generator(uiLayout *layout, ID *id, FModifier *fcm, s /* --------------- */ -/* draw settings for noise modifier */ +/* draw settings for generator modifier */ static void draw_modifier__fn_generator(uiLayout *layout, ID *id, FModifier *fcm, short width) { uiLayout *col; @@ -327,6 +321,45 @@ static void draw_modifier__noise(uiLayout *layout, ID *id, FModifier *fcm, short /* --------------- */ +/* draw settings for sound modifier */ +static void draw_modifier__sound(const bContext *C, uiLayout *layout, ID *id, FModifier *fcm, short width) +{ + FMod_Sound *data= (FMod_Sound *)fcm->data; + PointerRNA ptr; + + /* init the RNA-pointer */ + RNA_pointer_create(id, &RNA_FModifierSound, fcm, &ptr); + + /* sound */ + uiTemplateID(layout, (bContext*)C, &ptr, "sound", NULL, "sound.open", NULL); + + if (data->sound) + { + /* only sounds that are cached can be used, so display error if not cached */ + if (data->sound->cache) + { + /* blending mode */ + uiItemR(layout, NULL, 0, &ptr, "modification", 0); + + /* settings */ + uiItemR(layout, NULL, 0, &ptr, "strength", 0); + uiItemR(layout, NULL, 0, &ptr, "delay", 0); + } + else + { + PointerRNA id_ptr; + + RNA_id_pointer_create((ID *)data->sound, &id_ptr); + + /* error message with a button underneath allowing users to rectify the issue */ + uiItemL(layout, "Sound must be cached.", ICON_ERROR); + uiItemR(layout, NULL, 0, &id_ptr, "caching", UI_ITEM_R_TOGGLE); + } + } +} + +/* --------------- */ + #define BINARYSEARCH_FRAMEEQ_THRESH 0.0001 /* Binary search algorithm for finding where to insert Envelope Data Point. @@ -590,13 +623,17 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor /* --------------- */ -void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifiers, FModifier *fcm) +void ANIM_uiTemplate_fmodifier_draw (const bContext *C, uiLayout *layout, ID *id, ListBase *modifiers, FModifier *fcm) { FModifierTypeInfo *fmi= fmodifier_get_typeinfo(fcm); uiLayout *box, *row, *subrow; uiBlock *block; uiBut *but; short width= 314; + PointerRNA ptr; + + /* init the RNA-pointer */ + RNA_pointer_create(id, &RNA_FModifierFunctionGenerator, fcm, &ptr); /* draw header */ { @@ -606,31 +643,33 @@ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifie row= uiLayoutRow(box, 0); block= uiLayoutGetBlock(row); // err... - uiBlockSetEmboss(block, UI_EMBOSSN); - /* left-align -------------------------------------------- */ subrow= uiLayoutRow(row, 0); uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT); + uiBlockSetEmboss(block, UI_EMBOSSN); + /* expand */ - uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_EXPANDED, B_REDR, ICON_TRIA_RIGHT, 0, -1, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is expanded."); + uiItemR(subrow, "", 0, &ptr, "expanded", UI_ITEM_R_ICON_ONLY); /* checkbox for 'active' status (for now) */ - but= uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_ACTIVE, B_REDR, ICON_RADIOBUT_OFF, 0, -1, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is active one."); - uiButSetFunc(but, activate_fmodifier_cb, modifiers, fcm); + uiItemR(subrow, "", 0, &ptr, "active", UI_ITEM_R_ICON_ONLY); /* name */ if (fmi) - uiDefBut(block, LABEL, 1, fmi->name, 0, 0, 150, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "F-Curve Modifier Type. Click to make modifier active one."); + uiItemL(subrow, fmi->name, 0); else - uiDefBut(block, LABEL, 1, "<Unknown Modifier>", 0, 0, 150, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "F-Curve Modifier Type. Click to make modifier active one."); + uiItemL(subrow, "<Unknown Modifier>", 0); /* right-align ------------------------------------------- */ subrow= uiLayoutRow(row, 0); uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT); + /* 'mute' button */ - uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_MUTED, B_REDR, ICON_MUTE_IPO_OFF, 0, 0, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is temporarily muted (not evaluated)."); + uiItemR(subrow, "", 0, &ptr, "muted", UI_ITEM_R_ICON_ONLY); + + uiBlockSetEmboss(block, UI_EMBOSSN); /* delete button */ but= uiDefIconBut(block, BUT, B_REDR, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete F-Curve Modifier."); @@ -665,11 +704,15 @@ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifie case FMODIFIER_TYPE_LIMITS: /* Limits */ draw_modifier__limits(box, id, fcm, width); break; - + case FMODIFIER_TYPE_NOISE: /* Noise */ draw_modifier__noise(box, id, fcm, width); break; - + + case FMODIFIER_TYPE_SOUND: /* Sound */ + draw_modifier__sound(C, box, id, fcm, width); + break; + default: /* unknown type */ break; } diff --git a/source/blender/editors/animation/keyframes_edit.c b/source/blender/editors/animation/keyframes_edit.c index 23daa4a9034..83acfbee940 100644 --- a/source/blender/editors/animation/keyframes_edit.c +++ b/source/blender/editors/animation/keyframes_edit.c @@ -382,7 +382,7 @@ short ANIM_animchannel_keys_bezier_loop(BeztEditData *bed, bAnimListElem *ale, B case ALE_GROUP: /* action group */ return agrp_keys_bezier_loop(bed, (bActionGroup *)ale->data, bezt_ok, bezt_cb, fcu_cb); case ALE_ACT: /* action */ - return act_keys_bezier_loop(bed, (bAction *)ale->data, bezt_ok, bezt_cb, fcu_cb); + return act_keys_bezier_loop(bed, (bAction *)ale->key_data, bezt_ok, bezt_cb, fcu_cb); case ALE_OB: /* object */ return ob_keys_bezier_loop(bed, (Object *)ale->key_data, bezt_ok, bezt_cb, fcu_cb, filterflag); diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index b400739e91c..8628e2c506a 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -53,6 +53,7 @@ #include "BKE_animsys.h" #include "BKE_action.h" #include "BKE_constraint.h" +#include "BKE_depsgraph.h" #include "BKE_fcurve.h" #include "BKE_nla.h" #include "BKE_global.h" @@ -501,7 +502,7 @@ static short visualkey_can_use (PointerRNA *ptr, PropertyRNA *prop) /* get first constraint and determine type of keyframe constraints to check for * - constraints can be on either Objects or PoseChannels, so we only check if the - * ptr->type is RNA_Object or RNA_PoseChannel, which are the RNA wrapping-info for + * ptr->type is RNA_Object or RNA_PoseBone, which are the RNA wrapping-info for * those structs, allowing us to identify the owner of the data */ if (ptr->type == &RNA_Object) { @@ -599,7 +600,7 @@ static float visualkey_get_value (PointerRNA *ptr, PropertyRNA *prop, int array_ /* handle for Objects or PoseChannels only * - constraints can be on either Objects or PoseChannels, so we only check if the - * ptr->type is RNA_Object or RNA_PoseChannel, which are the RNA wrapping-info for + * ptr->type is RNA_Object or RNA_PoseBone, which are the RNA wrapping-info for * those structs, allowing us to identify the owner of the data * - assume that array_index will be sane */ @@ -1003,11 +1004,18 @@ static int insert_key_exec (bContext *C, wmOperator *op) if (G.f & G_DEBUG) printf("KeyingSet '%s' - Successfully added %d Keyframes \n", ks->name, success); - /* report failure? */ - if (success == 0) - BKE_report(op->reports, RPT_WARNING, "Keying Set failed to insert any keyframes"); - else + /* report failure or do updates? */ + if (success) { + /* if the appropriate properties have been set, make a note that we've inserted something */ + if (RNA_boolean_get(op->ptr, "confirm_success")) + BKE_reportf(op->reports, RPT_INFO, "Successfully added %d Keyframes for KeyingSet '%s'", success, ks->name); + + /* send notifiers that keyframes have been changed */ WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + } + else + BKE_report(op->reports, RPT_WARNING, "Keying Set failed to insert any keyframes"); + /* free temp context-data if available */ if (dsources.first) { @@ -1016,16 +1024,17 @@ static int insert_key_exec (bContext *C, wmOperator *op) } /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); return OPERATOR_FINISHED; } -void ANIM_OT_insert_keyframe (wmOperatorType *ot) +void ANIM_OT_keyframe_insert (wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Keyframe"; - ot->idname= "ANIM_OT_insert_keyframe"; + ot->idname= "ANIM_OT_keyframe_insert"; + ot->description= "Insert keyframes on the current frame for all properties in the specified Keying Set."; /* callbacks */ ot->exec= insert_key_exec; @@ -1034,19 +1043,22 @@ void ANIM_OT_insert_keyframe (wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - /* settings */ + /* keyingset to use + * - here the type is int not enum, since many of the indicies here are determined dynamically + */ RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1); + /* confirm whether a keyframe was added by showing a popup + * - by default, this is enabled, since this operator is assumed to be called independently + */ + RNA_def_boolean(ot->srna, "confirm_success", 1, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added"); } /* Insert Key Operator (With Menu) ------------------------ */ - -/* XXX - * This operator pops up a menu which sets gets the index of the keyingset to use, - * setting the global settings, and calling the insert-keyframe operator using these - * settings +/* This operator checks if a menu should be shown for choosing the KeyingSet to use, + * then calls the */ -static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) +static void insert_key_menu_prompt (bContext *C) { Scene *scene= CTX_data_scene(C); KeyingSet *ks; @@ -1061,7 +1073,7 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) * - only include entry if it exists */ if (scene->active_keyingset) { - uiItemIntO(layout, "Active Keying Set", 0, "ANIM_OT_insert_keyframe_menu", "type", i++); + uiItemIntO(layout, "Active Keying Set", 0, "ANIM_OT_keyframe_insert_menu", "type", i++); uiItemS(layout); } else @@ -1072,30 +1084,46 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) */ if (scene->keyingsets.first) { for (ks= scene->keyingsets.first; ks; ks= ks->next) - uiItemIntO(layout, ks->name, 0, "ANIM_OT_insert_keyframe_menu", "type", i++); + uiItemIntO(layout, ks->name, 0, "ANIM_OT_keyframe_insert_menu", "type", i++); uiItemS(layout); } /* builtin Keying Sets */ - // XXX polling the entire list may lag i= -1; for (ks= builtin_keyingsets.first; ks; ks= ks->next) { /* only show KeyingSet if context is suitable */ if (keyingset_context_ok_poll(C, ks)) { - uiItemIntO(layout, ks->name, 0, "ANIM_OT_insert_keyframe_menu", "type", i--); + uiItemIntO(layout, ks->name, 0, "ANIM_OT_keyframe_insert_menu", "type", i--); } } uiPupMenuEnd(C, pup); +} + +static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) +{ + Scene *scene= CTX_data_scene(C); - return OPERATOR_CANCELLED; + /* if prompting or no active Keying Set, show the menu */ + if ((scene->active_keyingset == 0) || RNA_boolean_get(op->ptr, "always_prompt")) { + /* call the menu, which will call this operator again, hence the cancelled */ + insert_key_menu_prompt(C); + return OPERATOR_CANCELLED; + } + else { + /* just call the exec() on the active keyingset */ + RNA_int_set(op->ptr, "type", 0); + RNA_boolean_set(op->ptr, "confirm_success", 1); + + return op->type->exec(C, op); + } } -void ANIM_OT_insert_keyframe_menu (wmOperatorType *ot) +void ANIM_OT_keyframe_insert_menu (wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Keyframe Menu"; - ot->idname= "ANIM_OT_insert_keyframe_menu"; + ot->idname= "ANIM_OT_keyframe_insert_menu"; /* callbacks */ ot->invoke= insert_key_menu_invoke; @@ -1105,10 +1133,20 @@ void ANIM_OT_insert_keyframe_menu (wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - /* properties - * - NOTE: here the type is int not enum, since many of the indicies here are determined dynamically + /* keyingset to use + * - here the type is int not enum, since many of the indicies here are determined dynamically */ RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1); + /* confirm whether a keyframe was added by showing a popup + * - by default, this is disabled so that if a menu is shown, this doesn't come up too + */ + // XXX should this just be always on? + RNA_def_boolean(ot->srna, "confirm_success", 0, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added"); + /* whether the menu should always be shown + * - by default, the menu should only be shown when there is no active Keying Set (2.5 behaviour), + * although in some cases it might be useful to always shown (pre 2.5 behaviour) + */ + RNA_def_boolean(ot->srna, "always_prompt", 0, "Always Show Menu", ""); } /* Delete Key Operator ------------------------ */ @@ -1154,11 +1192,17 @@ static int delete_key_exec (bContext *C, wmOperator *op) if (G.f & G_DEBUG) printf("KeyingSet '%s' - Successfully removed %d Keyframes \n", ks->name, success); - /* report failure? */ - if (success == 0) - BKE_report(op->reports, RPT_WARNING, "Keying Set failed to remove any keyframes"); - else + /* report failure or do updates? */ + if (success) { + /* if the appropriate properties have been set, make a note that we've inserted something */ + if (RNA_boolean_get(op->ptr, "confirm_success")) + BKE_reportf(op->reports, RPT_INFO, "Successfully removed %d Keyframes for KeyingSet '%s'", success, ks->name); + + /* send notifiers that keyframes have been changed */ WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + } + else + BKE_report(op->reports, RPT_WARNING, "Keying Set failed to remove any keyframes"); /* free temp context-data if available */ if (dsources.first) { @@ -1167,16 +1211,17 @@ static int delete_key_exec (bContext *C, wmOperator *op) } /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); return OPERATOR_FINISHED; } -void ANIM_OT_delete_keyframe (wmOperatorType *ot) +void ANIM_OT_keyframe_delete (wmOperatorType *ot) { /* identifiers */ ot->name= "Delete Keyframe"; - ot->idname= "ANIM_OT_delete_keyframe"; + ot->idname= "ANIM_OT_keyframe_delete"; + ot->description= "Delete keyframes on the current frame for all properties in the specified Keying Set."; /* callbacks */ ot->exec= delete_key_exec; @@ -1185,10 +1230,14 @@ void ANIM_OT_delete_keyframe (wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - /* properties - * - NOTE: here the type is int not enum, since many of the indicies here are determined dynamically + /* keyingset to use + * - here the type is int not enum, since many of the indicies here are determined dynamically */ RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1); + /* confirm whether a keyframe was added by showing a popup + * - by default, this is enabled, since this operator is assumed to be called independently + */ + RNA_def_boolean(ot->srna, "confirm_success", 1, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added"); } /* Delete Key Operator ------------------------ */ @@ -1229,18 +1278,18 @@ static int delete_key_v3d_exec (bContext *C, wmOperator *op) CTX_DATA_END; /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_KEYS, NULL); return OPERATOR_FINISHED; } -void ANIM_OT_delete_keyframe_v3d (wmOperatorType *ot) +void ANIM_OT_keyframe_delete_v3d (wmOperatorType *ot) { /* identifiers */ ot->name= "Delete Keyframe"; - ot->idname= "ANIM_OT_delete_keyframe_v3d"; + ot->idname= "ANIM_OT_keyframe_delete_v3d"; /* callbacks */ ot->invoke= WM_operator_confirm; @@ -1319,7 +1368,7 @@ static int insert_key_button_exec (bContext *C, wmOperator *op) if (success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, ND_KEYS, NULL); @@ -1328,11 +1377,11 @@ static int insert_key_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_insert_keyframe_button (wmOperatorType *ot) +void ANIM_OT_keyframe_insert_button (wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Keyframe (Buttons)"; - ot->idname= "ANIM_OT_insert_keyframe_button"; + ot->idname= "ANIM_OT_keyframe_insert_button"; /* callbacks */ ot->exec= insert_key_button_exec; @@ -1389,7 +1438,7 @@ static int delete_key_button_exec (bContext *C, wmOperator *op) if(success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, ND_KEYS, NULL); @@ -1398,11 +1447,11 @@ static int delete_key_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_delete_keyframe_button (wmOperatorType *ot) +void ANIM_OT_keyframe_delete_button (wmOperatorType *ot) { /* identifiers */ ot->name= "Delete Keyframe (Buttons)"; - ot->idname= "ANIM_OT_delete_keyframe_button"; + ot->idname= "ANIM_OT_keyframe_delete_button"; /* callbacks */ ot->exec= delete_key_button_exec; diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index bb3182b3d6e..c3606a03d1e 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -53,6 +53,7 @@ #include "BKE_animsys.h" #include "BKE_action.h" #include "BKE_constraint.h" +#include "BKE_depsgraph.h" #include "BKE_fcurve.h" #include "BKE_utildefines.h" #include "BKE_context.h" @@ -366,7 +367,7 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op) if (success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL); @@ -375,11 +376,11 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_add_keyingset_button (wmOperatorType *ot) +void ANIM_OT_keyingset_button_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add to Keying Set"; - ot->idname= "ANIM_OT_add_keyingset_button"; + ot->idname= "ANIM_OT_keyingset_button_add"; /* callbacks */ ot->exec= add_keyingset_button_exec; @@ -444,7 +445,7 @@ static int remove_keyingset_button_exec (bContext *C, wmOperator *op) if (success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL); @@ -453,11 +454,11 @@ static int remove_keyingset_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_remove_keyingset_button (wmOperatorType *ot) +void ANIM_OT_keyingset_button_remove (wmOperatorType *ot) { /* identifiers */ ot->name= "Remove from Keying Set"; - ot->idname= "ANIM_OT_remove_keyingset_button"; + ot->idname= "ANIM_OT_keyingset_button_remove"; /* callbacks */ ot->exec= remove_keyingset_button_exec; @@ -1219,7 +1220,7 @@ static short modifykey_get_context_v3d_data (bContext *C, ListBase *dsources, Ke //} #endif - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { /* add a new keying-source */ cks= MEM_callocN(sizeof(bCommonKeySrc), "bCommonKeySrc"); @@ -1294,6 +1295,10 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet int kflag=0, success= 0; char *groupname= NULL; + /* sanity checks */ + if (ks == NULL) + return 0; + /* get flags to use */ if (mode == MODIFYKEY_MODE_INSERT) { /* use KeyingSet's flags as base */ diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h index 012610bfd25..f53b70120d5 100644 --- a/source/blender/editors/armature/armature_intern.h +++ b/source/blender/editors/armature/armature_intern.h @@ -137,7 +137,6 @@ struct EditBone; struct ListBase; EditBone *make_boneList(struct ListBase *edbo, struct ListBase *bones, struct EditBone *parent, struct Bone *actBone); -struct EditBone *addEditBone(struct bArmature *arm, char *name); void BIF_sk_selectStroke(struct bContext *C, short mval[2], short extend); /* duplicate method */ diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index be6f7d536f8..e3c823283d1 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -241,7 +241,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_forked", EKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_CLICK, KM_CTRL, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_fill", FKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_merge", MKEY, KM_PRESS, KM_ALT, 0); @@ -339,8 +339,8 @@ void ED_keymap_armature(wmKeyConfig *keyconf) RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE); // 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); - WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe_v3d", IKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0); /* Pose -> PoseLib ------------- */ /* only set in posemode, by space_view3d listener */ diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index 8c858536fc5..95b743a7b27 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -33,6 +33,7 @@ #include "MEM_guardedalloc.h" +#include "DNA_anim_types.h" #include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_constraint_types.h" @@ -83,6 +84,7 @@ #include "WM_types.h" #include "ED_armature.h" +#include "ED_keyframing.h" #include "ED_mesh.h" #include "ED_object.h" #include "ED_screen.h" @@ -139,7 +141,7 @@ void ED_armature_validate_active(struct bArmature *arm) } } -void free_edit_bone(bArmature *arm, EditBone *bone) +static void bone_free(bArmature *arm, EditBone *bone) { if(arm->act_edbone==bone) arm->act_edbone= NULL; @@ -152,6 +154,22 @@ void free_edit_bone(bArmature *arm, EditBone *bone) BLI_freelinkN(arm->edbo, bone); } +void ED_armature_edit_bone_remove(bArmature *arm, EditBone* exBone) +{ + EditBone *curBone; + + /* Find any bones that refer to this bone */ + for (curBone=arm->edbo->first; curBone; curBone=curBone->next) { + if (curBone->parent==exBone) { + curBone->parent=exBone->parent; + curBone->flag &= ~BONE_CONNECTED; + } + } + + bone_free(arm, exBone); +} + + /* converts Bones to EditBone list, used for tools as well */ EditBone *make_boneList(ListBase *edbo, ListBase *bones, EditBone *parent, Bone *actBone) { @@ -303,7 +321,7 @@ void ED_armature_from_edit(Object *obedit) fBone->parent= eBone->parent; } printf("Warning: removed zero sized bone: %s\n", eBone->name); - free_edit_bone(arm, eBone); + bone_free(arm, eBone); } } @@ -316,7 +334,7 @@ void ED_armature_from_edit(Object *obedit) memcpy(newBone->head, eBone->head, sizeof(float)*3); memcpy(newBone->tail, eBone->tail, sizeof(float)*3); newBone->flag= eBone->flag; - + if (eBone == arm->act_edbone) { newBone->flag |= BONE_SELECTED; /* important, editbones can be active with only 1 point selected */ arm->act_edbone= NULL; @@ -335,7 +353,7 @@ void ED_armature_from_edit(Object *obedit) newBone->rad_tail= eBone->rad_tail; newBone->segments= eBone->segments; newBone->layer = eBone->layer; - + if(eBone->prop) newBone->prop= IDP_CopyProperty(eBone->prop); } @@ -602,8 +620,9 @@ static int apply_armature_pose2bones_exec (bContext *C, wmOperator *op) curbone->flag |= BONE_UNKEYED; } - /* convert editbones back to bones */ + /* convert editbones back to bones, and then free the edit-data */ ED_armature_from_edit(ob); + ED_armature_edit_free(ob); /* flush positions of posebones */ where_is_pose(scene, ob); @@ -1033,7 +1052,7 @@ static void separate_armature_bones (Scene *scene, Object *ob, short sel) free_pose_channel(pchan); /* get rid of unneeded bone */ - free_edit_bone(arm, curbone); + bone_free(arm, curbone); BLI_freelinkN(&ob->pose->chanbase, pchan); } } @@ -1298,7 +1317,7 @@ static int pose_setflag_exec (bContext *C, wmOperator *op) int mode= RNA_enum_get(op->ptr, "mode"); /* loop over all selected pchans */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones) { bone_setflag(&pchan->bone->flag, flag, mode); } @@ -1669,22 +1688,6 @@ static EditBone *get_nearest_editbonepoint (ViewContext *vc, short mval[2], List return NULL; } -/* warning, wont clear the active bone */ -static void delete_bone(bArmature *arm, EditBone* exBone) -{ - EditBone *curBone; - - /* Find any bones that refer to this bone */ - for (curBone=arm->edbo->first; curBone; curBone=curBone->next) { - if (curBone->parent==exBone) { - curBone->parent=exBone->parent; - curBone->flag &= ~BONE_CONNECTED; - } - } - - free_edit_bone(arm, exBone); -} - /* context: editmode armature */ EditBone *ED_armature_bone_get_mirrored(ListBase *edbo, EditBone *ebo) { @@ -1781,7 +1784,7 @@ static int armature_delete_selected_exec(bContext *C, wmOperator *op) if (arm->layer & curBone->layer) { if (curBone->flag & BONE_SELECTED) { if(curBone==arm->act_edbone) arm->act_edbone= NULL; - delete_bone(arm, curBone); + ED_armature_edit_bone_remove(arm, curBone); } } } @@ -1873,7 +1876,7 @@ void ED_armature_deselectall(Object *obedit, int toggle, int doundo) /* context: editmode armature in view3d */ -void mouse_armature(bContext *C, short mval[2], int extend) +int mouse_armature(bContext *C, short mval[2], int extend) { Object *obedit= CTX_data_edit_object(C); bArmature *arm= obedit->data; @@ -1944,7 +1947,10 @@ void mouse_armature(bContext *C, short mval[2], int extend) } WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, vc.obedit); + return 1; } + + return 0; } void ED_armature_edit_free(struct Object *ob) @@ -2240,7 +2246,7 @@ void undo_push_armature(bContext *C, char *name) /* *************** Adding stuff in editmode *************** */ /* default bone add, returns it selected, but without tail set */ -EditBone *addEditBone(bArmature *arm, char *name) +EditBone *ED_armature_edit_bone_add(bArmature *arm, char *name) { EditBone *bone= MEM_callocN(sizeof(EditBone), "eBone"); @@ -2264,14 +2270,6 @@ EditBone *addEditBone(bArmature *arm, char *name) return bone; } -/* default bone add, returns it selected, but without tail set */ -static EditBone *add_editbone(Object *obedit, char *name) -{ - bArmature *arm= obedit->data; - - return addEditBone(arm, name); -} - /* v3d and rv3d are allowed to be NULL */ void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d) { @@ -2296,7 +2294,7 @@ void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d) ED_armature_deselectall(obedit, 0, 0); /* Create a bone */ - bone= add_editbone(obedit, "Bone"); + bone= ED_armature_edit_bone_add(obedit->data, "Bone"); VECCOPY(bone->head, curs); @@ -2362,7 +2360,7 @@ static int armature_click_extrude_exec(bContext *C, wmOperator *op) } } - newbone= add_editbone(obedit, ebone->name); + newbone= ED_armature_edit_bone_add(arm, ebone->name); arm->act_edbone= newbone; if (to_root) { @@ -2479,7 +2477,7 @@ static EditBone *add_points_bone (Object *obedit, float head[], float tail[]) { EditBone *ebo; - ebo= add_editbone(obedit, "Bone"); + ebo= ED_armature_edit_bone_add(obedit->data, "Bone"); VECCOPY(ebo->head, head); VECCOPY(ebo->tail, tail); @@ -2576,7 +2574,7 @@ void updateDuplicateSubtarget(EditBone *dupBone, ListBase *editbones, Object *ob EditBone *duplicateEditBoneObjects(EditBone *curBone, char *name, ListBase *editbones, Object *src_ob, Object *dst_ob) { - EditBone *eBone = MEM_callocN(sizeof(EditBone), "addup_editbone"); + EditBone *eBone = MEM_mallocN(sizeof(EditBone), "addup_editbone"); /* Copy data from old bone to new bone */ memcpy(eBone, curBone, sizeof(EditBone)); @@ -2592,45 +2590,25 @@ EditBone *duplicateEditBoneObjects(EditBone *curBone, char *name, ListBase *edit unique_editbone_name(editbones, eBone->name, NULL); BLI_addtail(editbones, eBone); + /* copy the ID property */ + if(curBone->prop) + eBone->prop= IDP_CopyProperty(curBone->prop); + /* Lets duplicate the list of constraints that the * current bone has. */ if (src_ob->pose) { bPoseChannel *chanold, *channew; - ListBase *listold, *listnew; chanold = verify_pose_channel(src_ob->pose, curBone->name); if (chanold) { - listold = &chanold->constraints; - if (listold) { - /* WARNING: this creates a new posechannel, but there will not be an attached bone - * yet as the new bones created here are still 'EditBones' not 'Bones'. - */ - channew = - verify_pose_channel(dst_ob->pose, eBone->name); - if (channew) { - /* copy transform locks */ - channew->protectflag = chanold->protectflag; - - /* copy bone group */ - channew->agrp_index= chanold->agrp_index; - - /* ik (dof) settings */ - channew->ikflag = chanold->ikflag; - VECCOPY(channew->limitmin, chanold->limitmin); - VECCOPY(channew->limitmax, chanold->limitmax); - VECCOPY(channew->stiffness, chanold->stiffness); - channew->ikstretch= chanold->ikstretch; - channew->ikrotweight= chanold->ikrotweight; - channew->iklinweight= chanold->iklinweight; - - /* constraints */ - listnew = &channew->constraints; - copy_constraints(listnew, listold); - - /* custom shape */ - channew->custom= chanold->custom; - } + /* WARNING: this creates a new posechannel, but there will not be an attached bone + * yet as the new bones created here are still 'EditBones' not 'Bones'. + */ + channew= verify_pose_channel(dst_ob->pose, eBone->name); + + if(channew) { + duplicate_pose_channel_data(channew, chanold); } } } @@ -2680,65 +2658,12 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *op) for (curBone=arm->edbo->first; curBone && curBone!=firstDup; curBone=curBone->next) { if (EBONE_VISIBLE(arm, curBone)) { if (curBone->flag & BONE_SELECTED) { - eBone=MEM_callocN(sizeof(EditBone), "addup_editbone"); - eBone->flag |= BONE_SELECTED; - - /* Copy data from old bone to new bone */ - memcpy(eBone, curBone, sizeof(EditBone)); - curBone->temp = eBone; - eBone->temp = curBone; + eBone= duplicateEditBone(curBone, curBone->name, arm->edbo, obedit); - unique_editbone_name(arm->edbo, eBone->name, NULL); - BLI_addtail(arm->edbo, eBone); if (!firstDup) firstDup=eBone; - /* Lets duplicate the list of constraints that the - * current bone has. - */ - if (obedit->pose) { - bPoseChannel *chanold, *channew; - ListBase *listold, *listnew; - - chanold = verify_pose_channel(obedit->pose, curBone->name); - if (chanold) { - listold = &chanold->constraints; - if (listold) { - /* WARNING: this creates a new posechannel, but there will not be an attached bone - * yet as the new bones created here are still 'EditBones' not 'Bones'. - */ - channew = - verify_pose_channel(obedit->pose, eBone->name); - if (channew) { - /* copy transform locks */ - channew->protectflag = chanold->protectflag; - - /* copy rotation mode */ - channew->rotmode = chanold->rotmode; - - /* copy bone group */ - channew->agrp_index= chanold->agrp_index; - - /* ik (dof) settings */ - channew->ikflag = chanold->ikflag; - VECCOPY(channew->limitmin, chanold->limitmin); - VECCOPY(channew->limitmax, chanold->limitmax); - VECCOPY(channew->stiffness, chanold->stiffness); - channew->ikstretch= chanold->ikstretch; - channew->ikrotweight= chanold->ikrotweight; - channew->iklinweight= chanold->iklinweight; - - /* constraints */ - listnew = &channew->constraints; - copy_constraints(listnew, listold); - - /* custom shape */ - channew->custom= chanold->custom; - } - } - } - } } } } @@ -3157,7 +3082,7 @@ static void bones_merge(Object *obedit, EditBone *start, EditBone *end, EditBone /* step 3: delete all bones between and including start and end */ for (ebo= end; ebo; ebo= ebone) { ebone= (ebo == start) ? (NULL) : (ebo->parent); - free_edit_bone(arm, ebo); + bone_free(arm, ebo); } } @@ -3512,7 +3437,7 @@ static int armature_bone_primitive_add_exec(bContext *C, wmOperator *op) ED_armature_deselectall(obedit, 0, 0); /* Create a bone */ - bone= add_editbone(obedit, name); + bone= ED_armature_edit_bone_add(obedit->data, name); VECCOPY(bone->head, curs); @@ -4843,10 +4768,19 @@ void create_vgroups_from_armature(Scene *scene, Object *ob, Object *par, int mod static int pose_clear_scale_exec(bContext *C, wmOperator *op) { + Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Scaling"); + bCommonKeySrc cks; + ListBase dsources = {&cks, &cks}; + + /* init common-key-source for use by KeyingSets */ + memset(&cks, 0, sizeof(bCommonKeySrc)); + cks.id= &ob->id; + /* only clear those channels that are not locked */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { if ((pchan->protectflag & OB_LOCK_SCALEX)==0) pchan->size[0]= 1.0f; if ((pchan->protectflag & OB_LOCK_SCALEY)==0) @@ -4854,8 +4788,21 @@ static int pose_clear_scale_exec(bContext *C, wmOperator *op) if ((pchan->protectflag & OB_LOCK_SCALEZ)==0) pchan->size[2]= 1.0f; - /* the current values from IPO's may not be zero, so tag as unkeyed */ - //pchan->bone->flag |= BONE_UNKEYED; + /* do auto-keyframing as appropriate */ + if (autokeyframe_cfra_can_key(scene, &ob->id)) { + /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ + cks.pchan= pchan; + modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + + /* clear any unkeyed tags */ + if (pchan->bone) + pchan->bone->flag &= ~BONE_UNKEYED; + } + else { + /* add unkeyed tags */ + if (pchan->bone) + pchan->bone->flag |= BONE_UNKEYED; + } } CTX_DATA_END; @@ -4884,10 +4831,20 @@ void POSE_OT_scale_clear(wmOperatorType *ot) static int pose_clear_loc_exec(bContext *C, wmOperator *op) { + Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location"); + bCommonKeySrc cks; + ListBase dsources = {&cks, &cks}; + + /* init common-key-source for use by KeyingSets */ + memset(&cks, 0, sizeof(bCommonKeySrc)); + cks.id= &ob->id; + /* only clear those channels that are not locked */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { + /* clear location */ if ((pchan->protectflag & OB_LOCK_LOCX)==0) pchan->loc[0]= 0.0f; if ((pchan->protectflag & OB_LOCK_LOCY)==0) @@ -4895,8 +4852,21 @@ static int pose_clear_loc_exec(bContext *C, wmOperator *op) if ((pchan->protectflag & OB_LOCK_LOCZ)==0) pchan->loc[2]= 0.0f; - /* the current values from IPO's may not be zero, so tag as unkeyed */ - //pchan->bone->flag |= BONE_UNKEYED; + /* do auto-keyframing as appropriate */ + if (autokeyframe_cfra_can_key(scene, &ob->id)) { + /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ + cks.pchan= pchan; + modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + + /* clear any unkeyed tags */ + if (pchan->bone) + pchan->bone->flag &= ~BONE_UNKEYED; + } + else { + /* add unkeyed tags */ + if (pchan->bone) + pchan->bone->flag |= BONE_UNKEYED; + } } CTX_DATA_END; @@ -4925,10 +4895,19 @@ void POSE_OT_loc_clear(wmOperatorType *ot) static int pose_clear_rot_exec(bContext *C, wmOperator *op) { + Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); + bCommonKeySrc cks; + ListBase dsources = {&cks, &cks}; + + /* init common-key-source for use by KeyingSets */ + memset(&cks, 0, sizeof(bCommonKeySrc)); + cks.id= &ob->id; + /* only clear those channels that are not locked */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { if (pchan->protectflag & (OB_LOCK_ROTX|OB_LOCK_ROTY|OB_LOCK_ROTZ|OB_LOCK_ROTW)) { /* check if convert to eulers for locking... */ if (pchan->protectflag & OB_LOCK_ROT4D) { @@ -5021,8 +5000,21 @@ static int pose_clear_rot_exec(bContext *C, wmOperator *op) } } - /* the current values from IPO's may not be zero, so tag as unkeyed */ - //pchan->bone->flag |= BONE_UNKEYED; + /* do auto-keyframing as appropriate */ + if (autokeyframe_cfra_can_key(scene, &ob->id)) { + /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ + cks.pchan= pchan; + modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + + /* clear any unkeyed tags */ + if (pchan->bone) + pchan->bone->flag &= ~BONE_UNKEYED; + } + else { + /* add unkeyed tags */ + if (pchan->bone) + pchan->bone->flag |= BONE_UNKEYED; + } } CTX_DATA_END; @@ -5056,7 +5048,7 @@ static int pose_select_inverse_exec(bContext *C, wmOperator *op) { /* Set the flags */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) { if ((pchan->bone->flag & BONE_UNSELECTABLE) == 0) { pchan->bone->flag ^= (BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL); } @@ -5089,10 +5081,10 @@ static int pose_de_select_all_exec(bContext *C, wmOperator *op) /* Determine if there are any selected bones and therefore whether we are selecting or deselecting */ // NOTE: we have to check for > 1 not > 0, since there is almost always an active bone that can't be cleared... - if (CTX_DATA_COUNT(C, selected_pchans) > 1) sel=0; + if (CTX_DATA_COUNT(C, selected_pose_bones) > 1) sel=0; /* Set the flags */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) { /* select pchan only if selectable, but deselect works always */ if (sel==0) { pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL); @@ -5129,7 +5121,7 @@ static int pose_select_parent_exec(bContext *C, wmOperator *op) bPoseChannel *pchan,*parent; /* Determine if there is an active bone */ - pchan=CTX_data_active_pchan(C); + pchan=CTX_data_active_pose_bone(C); if (pchan) { bArmature *arm= ob->data; parent=pchan->parent; @@ -5603,7 +5595,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode EditBone *root = NULL; float angleLimit = (float)cos(scene->toolsettings->skgen_angle_limit * M_PI / 180.0f); - parent = add_editbone(obedit, "Bone"); + parent = ED_armature_edit_bone_add(arm, "Bone"); parent->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL; VECCOPY(parent->head, head->p); @@ -5632,7 +5624,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode { VECCOPY(parent->tail, previous); - child = add_editbone(obedit, "Bone"); + child = ED_armature_edit_bone_add(arm, "Bone"); VECCOPY(child->head, parent->tail); child->parent = parent; child->flag |= BONE_CONNECTED|BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL; @@ -5648,7 +5640,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode if (parent == root) { if(parent==arm->act_edbone) arm->act_edbone= NULL; - delete_bone(arm, parent); + ED_armature_edit_bone_remove(arm, parent); parent = NULL; } @@ -5838,7 +5830,7 @@ void generateSkeletonFromReebGraph(Scene *scene, ReebGraph *rg) if (lastBone == NULL) { EditBone *bone; - bone = add_editbone(obedit, "Bone"); + bone = ED_armature_edit_bone_add(obedit->data, "Bone"); bone->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL; VECCOPY(bone->head, head->p); diff --git a/source/blender/editors/armature/editarmature_generate.c b/source/blender/editors/armature/editarmature_generate.c index 124528811c7..41907cf06a3 100644 --- a/source/blender/editors/armature/editarmature_generate.c +++ b/source/blender/editors/armature/editarmature_generate.c @@ -294,7 +294,7 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase * IT_head(iter); - parent = addEditBone(arm, "Bone"); + parent = ED_armature_edit_bone_add(arm, "Bone"); VECCOPY(parent->head, iter->p); if (iter->size > 0) @@ -309,7 +309,7 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase * { IT_peek(iter, index); - child = addEditBone(arm, "Bone"); + child = ED_armature_edit_bone_add(arm, "Bone"); VECCOPY(child->head, parent->tail); child->parent = parent; child->flag |= BONE_CONNECTED; diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c index 7bb2fa9009d..eee56070e91 100644 --- a/source/blender/editors/armature/editarmature_sketch.c +++ b/source/blender/editors/armature/editarmature_sketch.c @@ -1538,7 +1538,7 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk) if (bone == NULL) { - bone = addEditBone(arm, "Bone"); + bone = ED_armature_edit_bone_add(arm, "Bone"); VECCOPY(bone->head, head->p); VECCOPY(bone->tail, pt->p); diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c index b9019410348..2ad71881f47 100644 --- a/source/blender/editors/armature/meshlaplacian.c +++ b/source/blender/editors/armature/meshlaplacian.c @@ -93,13 +93,16 @@ struct LaplacianSystem { EdgeHash *edgehash; /* edge hash for construction */ struct HeatWeighting { - Mesh *mesh; + MFace *mface; + int totvert; + int totface; float (*verts)[3]; /* vertex coordinates */ float (*vnors)[3]; /* vertex normals */ float (*root)[3]; /* bone root */ float (*tip)[3]; /* bone tip */ - int numbones; + float (*source)[3]; /* vertex source */ + int numsource; float *H; /* diagonal H matrix */ float *p; /* values from all p vectors */ @@ -394,38 +397,40 @@ float laplacian_system_get_solution(int v) #define WEIGHT_LIMIT_END 0.025f #define DISTANCE_EPSILON 1e-4f -/* Raytracing for vertex to bone visibility */ +/* Raytracing for vertex to bone/vertex visibility */ static void heat_ray_tree_create(LaplacianSystem *sys) { - Mesh *me = sys->heat.mesh; + MFace *mface = sys->heat.mface; + int totface = sys->heat.totface; + int totvert = sys->heat.totvert; int a; - sys->heat.raytree = RE_rayobject_vbvh_create(me->totface); - sys->heat.faces = MEM_callocN(sizeof(RayFace)*me->totface, "Heat RayFaces"); - sys->heat.vface = MEM_callocN(sizeof(MFace*)*me->totvert, "HeatVFaces"); + sys->heat.raytree = RE_rayobject_vbvh_create(totface); + sys->heat.faces = MEM_callocN(sizeof(RayFace)*totface, "Heat RayFaces"); + sys->heat.vface = MEM_callocN(sizeof(MFace*)*totvert, "HeatVFaces"); - for(a=0; a<me->totface; a++) { + for(a=0; a<totface; a++) { - MFace *mface = me->mface+a; + MFace *mf = mface+a; RayFace *rayface = sys->heat.faces+a; RayObject *obj = RE_rayface_from_coords( - rayface, me, mface, - sys->heat.verts[mface->v1], sys->heat.verts[mface->v2], - sys->heat.verts[mface->v3], mface->v4 ? sys->heat.verts[mface->v4] : 0 + rayface, &sys->heat, mf, + sys->heat.verts[mf->v1], sys->heat.verts[mf->v2], + sys->heat.verts[mf->v3], mf->v4 ? sys->heat.verts[mf->v4] : 0 ); RE_rayobject_add(sys->heat.raytree, obj); //Setup inverse pointers to use on isect.orig - sys->heat.vface[mface->v1]= mface; - sys->heat.vface[mface->v2]= mface; - sys->heat.vface[mface->v3]= mface; - if(mface->v4) sys->heat.vface[mface->v4]= mface; + sys->heat.vface[mf->v1]= mf; + sys->heat.vface[mf->v2]= mf; + sys->heat.vface[mf->v3]= mf; + if(mf->v4) sys->heat.vface[mf->v4]= mf; } RE_rayobject_done(sys->heat.raytree); } -static int heat_ray_bone_visible(LaplacianSystem *sys, int vertex, int bone) +static int heat_ray_source_visible(LaplacianSystem *sys, int vertex, int source) { Isect isec; MFace *mface; @@ -440,30 +445,37 @@ static int heat_ray_bone_visible(LaplacianSystem *sys, int vertex, int bone) memset(&isec, 0, sizeof(isec)); isec.mode= RE_RAY_SHADOW; isec.lay= -1; - isec.orig.ob = sys->heat.mesh; + isec.orig.ob = &sys->heat; isec.orig.face = mface; isec.skip = RE_SKIP_CULLFACE; + copy_v3_v3(isec.start, sys->heat.verts[vertex]); - VECCOPY(isec.start, sys->heat.verts[vertex]); - closest_to_line_segment_v3(end, isec.start, sys->heat.root[bone], sys->heat.tip[bone]); + if(sys->heat.root) /* bone */ + closest_to_line_segment_v3(end, isec.start, + sys->heat.root[source], sys->heat.tip[source]); + else /* vertex */ + copy_v3_v3(end, sys->heat.source[source]); - VECSUB(isec.vec, end, isec.start); + sub_v3_v3v3(isec.vec, end, isec.start); isec.labda = 1.0f - 1e-5; - VECADDFAC( isec.start, isec.start, isec.vec, 1e-5); + madd_v3_v3v3fl(isec.start, isec.start, isec.vec, 1e-5); visible= !RE_rayobject_raycast(sys->heat.raytree, &isec); return visible; } -static float heat_bone_distance(LaplacianSystem *sys, int vertex, int bone) +static float heat_source_distance(LaplacianSystem *sys, int vertex, int source) { float closest[3], d[3], dist, cosine; /* compute euclidian distance */ - closest_to_line_segment_v3(closest, sys->heat.verts[vertex], - sys->heat.root[bone], sys->heat.tip[bone]); + if(sys->heat.root) /* bone */ + closest_to_line_segment_v3(closest, sys->heat.verts[vertex], + sys->heat.root[source], sys->heat.tip[source]); + else /* vertex */ + copy_v3_v3(closest, sys->heat.source[source]); sub_v3_v3v3(d, sys->heat.verts[vertex], closest); dist= normalize_v3(d); @@ -474,16 +486,16 @@ static float heat_bone_distance(LaplacianSystem *sys, int vertex, int bone) return dist/(0.5f*(cosine + 1.001f)); } -static int heat_bone_closest(LaplacianSystem *sys, int vertex, int bone) +static int heat_source_closest(LaplacianSystem *sys, int vertex, int source) { float dist; - - dist= heat_bone_distance(sys, vertex, bone); + + dist= heat_source_distance(sys, vertex, source); if(dist <= sys->heat.mindist[vertex]*(1.0f + DISTANCE_EPSILON)) - if(heat_ray_bone_visible(sys, vertex, bone)) + if(heat_ray_source_visible(sys, vertex, source)) return 1; - + return 0; } @@ -495,8 +507,8 @@ static void heat_set_H(LaplacianSystem *sys, int vertex) mindist= 1e10; /* compute minimum distance */ - for(j=0; j<sys->heat.numbones; j++) { - dist= heat_bone_distance(sys, vertex, j); + for(j=0; j<sys->heat.numsource; j++) { + dist= heat_source_distance(sys, vertex, j); if(dist < mindist) mindist= dist; @@ -504,9 +516,9 @@ static void heat_set_H(LaplacianSystem *sys, int vertex) sys->heat.mindist[vertex]= mindist; - /* count number of bones with approximately this minimum distance */ - for(j=0; j<sys->heat.numbones; j++) - if(heat_bone_closest(sys, vertex, j)) + /* count number of sources with approximately this minimum distance */ + for(j=0; j<sys->heat.numsource; j++) + if(heat_source_closest(sys, vertex, j)) numclosest++; sys->heat.p[vertex]= (numclosest > 0)? 1.0f/numclosest: 0.0f; @@ -549,32 +561,45 @@ void heat_calc_vnormals(LaplacianSystem *sys) static void heat_laplacian_create(LaplacianSystem *sys) { - Mesh *me = sys->heat.mesh; - MFace *mface; + MFace *mface = sys->heat.mface, *mf; + int totface= sys->heat.totface; + int totvert= sys->heat.totvert; int a; /* heat specific definitions */ - sys->heat.mindist= MEM_callocN(sizeof(float)*me->totvert, "HeatMinDist"); - sys->heat.H= MEM_callocN(sizeof(float)*me->totvert, "HeatH"); - sys->heat.p= MEM_callocN(sizeof(float)*me->totvert, "HeatP"); + sys->heat.mindist= MEM_callocN(sizeof(float)*totvert, "HeatMinDist"); + sys->heat.H= MEM_callocN(sizeof(float)*totvert, "HeatH"); + sys->heat.p= MEM_callocN(sizeof(float)*totvert, "HeatP"); /* add verts and faces to laplacian */ - for(a=0; a<me->totvert; a++) + for(a=0; a<totvert; a++) laplacian_add_vertex(sys, sys->heat.verts[a], 0); - for(a=0, mface=me->mface; a<me->totface; a++, mface++) { - laplacian_add_triangle(sys, mface->v1, mface->v2, mface->v3); - if(mface->v4) - laplacian_add_triangle(sys, mface->v1, mface->v3, mface->v4); + for(a=0, mf=mface; a<totface; a++, mf++) { + laplacian_add_triangle(sys, mf->v1, mf->v2, mf->v3); + if(mf->v4) + laplacian_add_triangle(sys, mf->v1, mf->v3, mf->v4); } /* for distance computation in set_H */ heat_calc_vnormals(sys); - for(a=0; a<me->totvert; a++) + for(a=0; a<totvert; a++) heat_set_H(sys, a); } +static void heat_system_free(LaplacianSystem *sys) +{ + RE_rayobject_free(sys->heat.raytree); + MEM_freeN(sys->heat.vface); + MEM_freeN(sys->heat.faces); + + MEM_freeN(sys->heat.mindist); + MEM_freeN(sys->heat.H); + MEM_freeN(sys->heat.p); + MEM_freeN(sys->heat.vnors); +} + static float heat_limit_weight(float weight) { float t; @@ -590,7 +615,7 @@ static float heat_limit_weight(float weight) return weight; } -void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, bDeformGroup **dgrouplist, bDeformGroup **dgroupflip, float (*root)[3], float (*tip)[3], int *selected) +void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource, bDeformGroup **dgrouplist, bDeformGroup **dgroupflip, float (*root)[3], float (*tip)[3], int *selected) { LaplacianSystem *sys; MFace *mface; @@ -607,11 +632,13 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, /* create laplacian */ sys = laplacian_system_construct_begin(me->totvert, totface, 1); - sys->heat.mesh= me; + sys->heat.mface= me->mface; + sys->heat.totface= me->totface; + sys->heat.totvert= me->totvert; sys->heat.verts= verts; sys->heat.root= root; sys->heat.tip= tip; - sys->heat.numbones= numbones; + sys->heat.numsource= numsource; heat_ray_tree_create(sys); heat_laplacian_create(sys); @@ -625,12 +652,12 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, } /* compute weights per bone */ - for(j=0; j<numbones; j++) { + for(j=0; j<numsource; j++) { if(!selected[j]) continue; firstsegment= (j == 0 || dgrouplist[j-1] != dgrouplist[j]); - lastsegment= (j == numbones-1 || dgrouplist[j] != dgrouplist[j+1]); + lastsegment= (j == numsource-1 || dgrouplist[j] != dgrouplist[j+1]); bbone= !(firstsegment && lastsegment); /* clear weights */ @@ -646,7 +673,7 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, laplacian_begin_solve(sys, -1); for(a=0; a<me->totvert; a++) - if(heat_bone_closest(sys, a, j)) + if(heat_source_closest(sys, a, j)) laplacian_add_right_hand_side(sys, a, sys->heat.H[a]*sys->heat.p[a]); @@ -716,14 +743,7 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, /* free */ if(vertsflipped) MEM_freeN(vertsflipped); - RE_rayobject_free(sys->heat.raytree); - MEM_freeN(sys->heat.vface); - MEM_freeN(sys->heat.faces); - - MEM_freeN(sys->heat.mindist); - MEM_freeN(sys->heat.H); - MEM_freeN(sys->heat.p); - MEM_freeN(sys->heat.vnors); + heat_system_free(sys); laplacian_system_delete(sys); } @@ -1027,11 +1047,11 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3], float edge1[3], edge2[3], tvec[3], pvec[3], qvec[3]; float det,inv_det, u, v, dir[3], isectdir[3]; - VECSUB(dir, end, orig); + sub_v3_v3v3(dir, end, orig); /* find vectors for two edges sharing vert0 */ - VECSUB(edge1, vert1, vert0); - VECSUB(edge2, vert2, vert0); + sub_v3_v3v3(edge1, vert1, vert0); + sub_v3_v3v3(edge2, vert2, vert0); /* begin calculating determinant - also used to calculate U parameter */ cross_v3_v3v3(pvec, dir, edge2); @@ -1044,7 +1064,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3], inv_det = 1.0f / det; /* calculate distance from vert0 to ray origin */ - VECSUB(tvec, orig, vert0); + sub_v3_v3v3(tvec, orig, vert0); /* calculate U parameter and test bounds */ u = INPR(tvec, pvec) * inv_det; @@ -1068,7 +1088,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3], uvw[2]= v; /* check if it is within the length of the line segment */ - VECSUB(isectdir, isectco, orig); + sub_v3_v3v3(isectdir, isectco, orig); if(INPR(dir, isectdir) < -EPSILON) return 0; @@ -1149,12 +1169,12 @@ static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec) VECADDFAC( end, isec->start, isec->vec, isec->labda ); for(f=0; f<totface; f++, mface++) { - VECCOPY(face[0], mdb->cagecos[mface->v1]); - VECCOPY(face[1], mdb->cagecos[mface->v2]); - VECCOPY(face[2], mdb->cagecos[mface->v3]); + copy_v3_v3(face[0], mdb->cagecos[mface->v1]); + copy_v3_v3(face[1], mdb->cagecos[mface->v2]); + copy_v3_v3(face[2], mdb->cagecos[mface->v3]); if(mface->v4) { - VECCOPY(face[3], mdb->cagecos[mface->v4]); + copy_v3_v3(face[3], mdb->cagecos[mface->v4]); hit = meshdeform_tri_intersect(isec->start, end, face[0], face[1], face[2], co, uvw); if(hit) { @@ -1201,7 +1221,7 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float VECADD(isec.start, co1, epsilon); VECADD(end, co2, epsilon); - VECSUB(isec.vec, end, isec.start); + sub_v3_v3v3(isec.vec, end, isec.start); #if 0 /*if(RE_ray_tree_intersect(mdb->raytree, &isec)) {*/ @@ -1233,10 +1253,10 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float /* compute mean value coordinates for interpolation */ cagecos= mdb->cagecos; - VECCOPY(vert[0], cagecos[mface->v1]); - VECCOPY(vert[1], cagecos[mface->v2]); - VECCOPY(vert[2], cagecos[mface->v3]); - if(mface->v4) VECCOPY(vert[3], cagecos[mface->v4]); + copy_v3_v3(vert[0], cagecos[mface->v1]); + copy_v3_v3(vert[1], cagecos[mface->v2]); + copy_v3_v3(vert[2], cagecos[mface->v3]); + if(mface->v4) copy_v3_v3(vert[3], cagecos[mface->v4]); interp_weights_poly_v3( isect->uvw,vert, isect->nvert, isect->co); return isect; @@ -1258,8 +1278,8 @@ static int meshdeform_inside_cage(MeshDeformBind *mdb, float *co) outside[1] = co[1] + (mdb->max[1] - mdb->min[1] + 1.0f)*MESHDEFORM_OFFSET[i][1]; outside[2] = co[2] + (mdb->max[2] - mdb->min[2] + 1.0f)*MESHDEFORM_OFFSET[i][2]; - VECCOPY(start, co); - VECSUB(dir, outside, start); + copy_v3_v3(start, co); + sub_v3_v3v3(dir, outside, start); normalize_v3(dir); isect = meshdeform_ray_tree_intersect(mdb, start, outside); @@ -1649,7 +1669,7 @@ static void meshdeform_matrix_solve(MeshDeformBind *mdb) /* static bind : compute weights for each vertex */ for(b=0; b<mdb->totvert; b++) { if(mdb->inside[b]) { - VECCOPY(vec, mdb->vertexcos[b]); + copy_v3_v3(vec, mdb->vertexcos[b]); mul_m4_v3(mdb->cagemat, vec); gridvec[0]= (vec[0] - mdb->min[0] - mdb->halfwidth[0])/mdb->width[0]; gridvec[1]= (vec[1] - mdb->min[1] - mdb->halfwidth[1])/mdb->width[1]; @@ -1698,148 +1718,123 @@ static void meshdeform_matrix_solve(MeshDeformBind *mdb) nlDeleteContext(context); } -void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) +static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, MeshDeformBind *mdb) { - MeshDeformBind mdb; MDefBindInfluence *inf; MDefInfluence *mdinf; MDefCell *cell; - MVert *mvert; float center[3], vec[3], maxwidth, totweight; int a, b, x, y, z, totinside, offset; - waitcursor(1); - start_progress_bar(); - - memset(&mdb, 0, sizeof(MeshDeformBind)); - - /* get mesh and cage mesh */ - mdb.vertexcos= (float(*)[3])vertexcos; - mdb.totvert= totvert; - - mdb.cagedm= mesh_create_derived_no_deform(scene, mmd->object, NULL, CD_MASK_BAREMESH); - mdb.totcagevert= mdb.cagedm->getNumVerts(mdb.cagedm); - mdb.cagecos= MEM_callocN(sizeof(*mdb.cagecos)*mdb.totcagevert, "MeshDeformBindCos"); - copy_m4_m4(mdb.cagemat, cagemat); - - mvert= mdb.cagedm->getVertArray(mdb.cagedm); - for(a=0; a<mdb.totcagevert; a++) - VECCOPY(mdb.cagecos[a], mvert[a].co) - /* compute bounding box of the cage mesh */ - INIT_MINMAX(mdb.min, mdb.max); + INIT_MINMAX(mdb->min, mdb->max); - for(a=0; a<mdb.totcagevert; a++) - DO_MINMAX(mdb.cagecos[a], mdb.min, mdb.max); + for(a=0; a<mdb->totcagevert; a++) + DO_MINMAX(mdb->cagecos[a], mdb->min, mdb->max); /* allocate memory */ - mdb.size= (2<<(mmd->gridsize-1)) + 2; - mdb.size3= mdb.size*mdb.size*mdb.size; - mdb.tag= MEM_callocN(sizeof(int)*mdb.size3, "MeshDeformBindTag"); - mdb.phi= MEM_callocN(sizeof(float)*mdb.size3, "MeshDeformBindPhi"); - mdb.totalphi= MEM_callocN(sizeof(float)*mdb.size3, "MeshDeformBindTotalPhi"); - mdb.boundisect= MEM_callocN(sizeof(*mdb.boundisect)*mdb.size3, "MDefBoundIsect"); - mdb.semibound= MEM_callocN(sizeof(int)*mdb.size3, "MDefSemiBound"); + mdb->size= (2<<(mmd->gridsize-1)) + 2; + mdb->size3= mdb->size*mdb->size*mdb->size; + mdb->tag= MEM_callocN(sizeof(int)*mdb->size3, "MeshDeformBindTag"); + mdb->phi= MEM_callocN(sizeof(float)*mdb->size3, "MeshDeformBindPhi"); + mdb->totalphi= MEM_callocN(sizeof(float)*mdb->size3, "MeshDeformBindTotalPhi"); + mdb->boundisect= MEM_callocN(sizeof(*mdb->boundisect)*mdb->size3, "MDefBoundIsect"); + mdb->semibound= MEM_callocN(sizeof(int)*mdb->size3, "MDefSemiBound"); - mdb.inside= MEM_callocN(sizeof(int)*mdb.totvert, "MDefInside"); + mdb->inside= MEM_callocN(sizeof(int)*mdb->totvert, "MDefInside"); if(mmd->flag & MOD_MDEF_DYNAMIC_BIND) - mdb.dyngrid= MEM_callocN(sizeof(MDefBindInfluence*)*mdb.size3, "MDefDynGrid"); + mdb->dyngrid= MEM_callocN(sizeof(MDefBindInfluence*)*mdb->size3, "MDefDynGrid"); else - mdb.weights= MEM_callocN(sizeof(float)*mdb.totvert*mdb.totcagevert, "MDefWeights"); + mdb->weights= MEM_callocN(sizeof(float)*mdb->totvert*mdb->totcagevert, "MDefWeights"); - mdb.memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE); - BLI_memarena_use_calloc(mdb.memarena); + mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE); + BLI_memarena_use_calloc(mdb->memarena); /* make bounding box equal size in all directions, add padding, and compute * width of the cells */ maxwidth = -1.0f; for(a=0; a<3; a++) - if(mdb.max[a]-mdb.min[a] > maxwidth) - maxwidth= mdb.max[a]-mdb.min[a]; + if(mdb->max[a]-mdb->min[a] > maxwidth) + maxwidth= mdb->max[a]-mdb->min[a]; for(a=0; a<3; a++) { - center[a]= (mdb.min[a]+mdb.max[a])*0.5f; - mdb.min[a]= center[a] - maxwidth*0.5f; - mdb.max[a]= center[a] + maxwidth*0.5f; + center[a]= (mdb->min[a]+mdb->max[a])*0.5f; + mdb->min[a]= center[a] - maxwidth*0.5f; + mdb->max[a]= center[a] + maxwidth*0.5f; - mdb.width[a]= (mdb.max[a]-mdb.min[a])/(mdb.size-4); - mdb.min[a] -= 2.1f*mdb.width[a]; - mdb.max[a] += 2.1f*mdb.width[a]; + mdb->width[a]= (mdb->max[a]-mdb->min[a])/(mdb->size-4); + mdb->min[a] -= 2.1f*mdb->width[a]; + mdb->max[a] += 2.1f*mdb->width[a]; - mdb.width[a]= (mdb.max[a]-mdb.min[a])/mdb.size; - mdb.halfwidth[a]= mdb.width[a]*0.5f; + mdb->width[a]= (mdb->max[a]-mdb->min[a])/mdb->size; + mdb->halfwidth[a]= mdb->width[a]*0.5f; } progress_bar(0, "Setting up mesh deform system"); #if 0 /* create ray tree */ - meshdeform_ray_tree_create(&mdb); + meshdeform_ray_tree_create(mdb); #endif totinside= 0; - for(a=0; a<mdb.totvert; a++) { - VECCOPY(vec, mdb.vertexcos[a]); - mul_m4_v3(mdb.cagemat, vec); - mdb.inside[a]= meshdeform_inside_cage(&mdb, vec); - if(mdb.inside[a]) + for(a=0; a<mdb->totvert; a++) { + copy_v3_v3(vec, mdb->vertexcos[a]); + mul_m4_v3(mdb->cagemat, vec); + mdb->inside[a]= meshdeform_inside_cage(mdb, vec); + if(mdb->inside[a]) totinside++; } /* free temporary MDefBoundIsects */ - BLI_memarena_free(mdb.memarena); - mdb.memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE); + BLI_memarena_free(mdb->memarena); + mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE); /* start with all cells untyped */ - for(a=0; a<mdb.size3; a++) - mdb.tag[a]= MESHDEFORM_TAG_UNTYPED; + for(a=0; a<mdb->size3; a++) + mdb->tag[a]= MESHDEFORM_TAG_UNTYPED; /* detect intersections and tag boundary cells */ - for(z=0; z<mdb.size; z++) - for(y=0; y<mdb.size; y++) - for(x=0; x<mdb.size; x++) - meshdeform_add_intersections(&mdb, x, y, z); + for(z=0; z<mdb->size; z++) + for(y=0; y<mdb->size; y++) + for(x=0; x<mdb->size; x++) + meshdeform_add_intersections(mdb, x, y, z); #if 0 /* free ray tree */ - meshdeform_ray_tree_free(&mdb); + meshdeform_ray_tree_free(mdb); #endif /* compute exterior and interior tags */ - meshdeform_bind_floodfill(&mdb); + meshdeform_bind_floodfill(mdb); - for(z=0; z<mdb.size; z++) - for(y=0; y<mdb.size; y++) - for(x=0; x<mdb.size; x++) - meshdeform_check_semibound(&mdb, x, y, z); + for(z=0; z<mdb->size; z++) + for(y=0; y<mdb->size; y++) + for(x=0; x<mdb->size; x++) + meshdeform_check_semibound(mdb, x, y, z); /* solve */ - meshdeform_matrix_solve(&mdb); + meshdeform_matrix_solve(mdb); /* assign results */ - mmd->bindcos= (float*)mdb.cagecos; - mmd->totvert= mdb.totvert; - mmd->totcagevert= mdb.totcagevert; - copy_m4_m4(mmd->bindmat, mmd->object->obmat); - if(mmd->flag & MOD_MDEF_DYNAMIC_BIND) { mmd->totinfluence= 0; - for(a=0; a<mdb.size3; a++) - for(inf=mdb.dyngrid[a]; inf; inf=inf->next) + for(a=0; a<mdb->size3; a++) + for(inf=mdb->dyngrid[a]; inf; inf=inf->next) mmd->totinfluence++; /* convert MDefBindInfluences to smaller MDefInfluences */ - mmd->dyngrid= MEM_callocN(sizeof(MDefCell)*mdb.size3, "MDefDynGrid"); + mmd->dyngrid= MEM_callocN(sizeof(MDefCell)*mdb->size3, "MDefDynGrid"); mmd->dyninfluences= MEM_callocN(sizeof(MDefInfluence)*mmd->totinfluence, "MDefInfluence"); offset= 0; - for(a=0; a<mdb.size3; a++) { + for(a=0; a<mdb->size3; a++) { cell= &mmd->dyngrid[a]; cell->offset= offset; totweight= 0.0f; mdinf= mmd->dyninfluences + cell->offset; - for(inf=mdb.dyngrid[a]; inf; inf=inf->next, mdinf++) { + for(inf=mdb->dyngrid[a]; inf; inf=inf->next, mdinf++) { mdinf->weight= inf->weight; mdinf->vertex= inf->vertex; totweight += mdinf->weight; @@ -1855,29 +1850,138 @@ void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float offset += cell->totinfluence; } - mmd->dynverts= mdb.inside; - mmd->dyngridsize= mdb.size; - VECCOPY(mmd->dyncellmin, mdb.min); - mmd->dyncellwidth= mdb.width[0]; - MEM_freeN(mdb.dyngrid); + mmd->dynverts= mdb->inside; + mmd->dyngridsize= mdb->size; + copy_v3_v3(mmd->dyncellmin, mdb->min); + mmd->dyncellwidth= mdb->width[0]; + MEM_freeN(mdb->dyngrid); } else { - mmd->bindweights= mdb.weights; - MEM_freeN(mdb.inside); + mmd->bindweights= mdb->weights; + MEM_freeN(mdb->inside); } + MEM_freeN(mdb->tag); + MEM_freeN(mdb->phi); + MEM_freeN(mdb->totalphi); + MEM_freeN(mdb->boundisect); + MEM_freeN(mdb->semibound); + BLI_memarena_free(mdb->memarena); +} + +static void heat_weighting_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, MeshDeformBind *mdb) +{ + LaplacianSystem *sys; + MFace *mface= dm->getFaceArray(dm), *mf; + int totvert= dm->getNumVerts(dm); + int totface= dm->getNumFaces(dm); + float solution, weight; + int a, tottri, j, thrownerror = 0; + + mdb->weights= MEM_callocN(sizeof(float)*mdb->totvert*mdb->totcagevert, "MDefWeights"); + + /* count triangles */ + for(tottri=0, a=0, mf=mface; a<totface; a++, mf++) { + tottri++; + if(mf->v4) tottri++; + } + + /* create laplacian */ + sys = laplacian_system_construct_begin(totvert, tottri, 1); + + sys->heat.mface= mface; + sys->heat.totface= totface; + sys->heat.totvert= totvert; + sys->heat.verts= mdb->vertexcos; + sys->heat.source = mdb->cagecos; + sys->heat.numsource= mdb->totcagevert; + + heat_ray_tree_create(sys); + heat_laplacian_create(sys); + + laplacian_system_construct_end(sys); + + /* compute weights per bone */ + for(j=0; j<mdb->totcagevert; j++) { + /* fill right hand side */ + laplacian_begin_solve(sys, -1); + + for(a=0; a<totvert; a++) + if(heat_source_closest(sys, a, j)) + laplacian_add_right_hand_side(sys, a, + sys->heat.H[a]*sys->heat.p[a]); + + /* solve */ + if(laplacian_system_solve(sys)) { + /* load solution into vertex groups */ + for(a=0; a<totvert; a++) { + solution= laplacian_system_get_solution(a); + + weight= heat_limit_weight(solution); + if(weight > 0.0f) + mdb->weights[a*mdb->totcagevert + j] = weight; + } + } + else if(!thrownerror) { + error("Mesh Deform Heat Weighting:" + " failed to find solution for one or more vertices"); + thrownerror= 1; + break; + } + } + + /* free */ + heat_system_free(sys); + laplacian_system_delete(sys); + + mmd->bindweights= mdb->weights; +} + +void mesh_deform_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) +{ + MeshDeformBind mdb; + MVert *mvert; + int a; + + waitcursor(1); + start_progress_bar(); + + memset(&mdb, 0, sizeof(MeshDeformBind)); + + /* get mesh and cage mesh */ + mdb.vertexcos= MEM_callocN(sizeof(float)*3*totvert, "MeshDeformCos"); + mdb.totvert= totvert; + + mdb.cagedm= mesh_create_derived_no_deform(scene, mmd->object, NULL, CD_MASK_BAREMESH); + mdb.totcagevert= mdb.cagedm->getNumVerts(mdb.cagedm); + mdb.cagecos= MEM_callocN(sizeof(*mdb.cagecos)*mdb.totcagevert, "MeshDeformBindCos"); + copy_m4_m4(mdb.cagemat, cagemat); + + mvert= mdb.cagedm->getVertArray(mdb.cagedm); + for(a=0; a<mdb.totcagevert; a++) + copy_v3_v3(mdb.cagecos[a], mvert[a].co); + for(a=0; a<mdb.totvert; a++) + mul_v3_m4v3(mdb.vertexcos[a], mdb.cagemat, vertexcos + a*3); + + /* solve */ + if(mmd->mode == MOD_MDEF_VOLUME) + harmonic_coordinates_bind(scene, mmd, &mdb); + else + heat_weighting_bind(scene, dm, mmd, &mdb); + + /* assign bind variables */ + mmd->bindcos= (float*)mdb.cagecos; + mmd->totvert= mdb.totvert; + mmd->totcagevert= mdb.totcagevert; + copy_m4_m4(mmd->bindmat, mmd->object->obmat); + /* transform bindcos to world space */ for(a=0; a<mdb.totcagevert; a++) mul_m4_v3(mmd->object->obmat, mmd->bindcos+a*3); /* free */ mdb.cagedm->release(mdb.cagedm); - MEM_freeN(mdb.tag); - MEM_freeN(mdb.phi); - MEM_freeN(mdb.totalphi); - MEM_freeN(mdb.boundisect); - MEM_freeN(mdb.semibound); - BLI_memarena_free(mdb.memarena); + MEM_freeN(mdb.vertexcos); end_progress_bar(); waitcursor(0); diff --git a/source/blender/editors/armature/meshlaplacian.h b/source/blender/editors/armature/meshlaplacian.h index 1ee01561cd4..215a3579cab 100644 --- a/source/blender/editors/armature/meshlaplacian.h +++ b/source/blender/editors/armature/meshlaplacian.h @@ -78,7 +78,8 @@ void rigid_deform_end(int cancel); /* Harmonic Coordinates */ -void harmonic_coordinates_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, +void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm, + struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); #endif diff --git a/source/blender/editors/armature/poseSlide.c b/source/blender/editors/armature/poseSlide.c index ac4cfd2c3e3..7ceb50057ce 100644 --- a/source/blender/editors/armature/poseSlide.c +++ b/source/blender/editors/armature/poseSlide.c @@ -178,7 +178,7 @@ static int pose_slide_init (bContext *C, wmOperator *op, short mode) /* for each Pose-Channel which gets affected, get the F-Curves for that channel * and set the relevant transform flags... */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { ListBase curves = {NULL, NULL}; int transFlags = action_get_item_transforms(act, pso->ob, pchan, &curves); diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index 18750d96f86..aeb42142abd 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -241,10 +241,10 @@ void ED_pose_recalculate_paths(bContext *C, Scene *scene, Object *ob) /* hack: for unsaved files, set OB_RECALC so that paths can get calculated */ if ((ob->recalc & OB_RECALC)==0) { ob->recalc |= OB_RECALC; - ED_anim_object_flush_update(C, ob); + DAG_id_update_flags(&ob->id); } else - ED_anim_object_flush_update(C, ob); + DAG_id_update_flags(&ob->id); /* calculate path over requested range */ for (CFRA=sfra; CFRA<=efra; CFRA++) { @@ -355,10 +355,10 @@ static int pose_calculate_paths_exec (bContext *C, wmOperator *op) /* hack: for unsaved files, set OB_RECALC so that paths can get calculated */ if ((ob->recalc & OB_RECALC)==0) { ob->recalc |= OB_RECALC; - ED_anim_object_flush_update(C, ob); + DAG_id_update_flags(&ob->id); } else - ED_anim_object_flush_update(C, ob); + DAG_id_update_flags(&ob->id); /* alloc the path cache arrays */ for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { @@ -1329,7 +1329,7 @@ static int pose_group_assign_exec (bContext *C, wmOperator *op) /* add selected bones to group then */ // NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined... - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { pchan->agrp_index= pose->active_group; done= 1; } @@ -1388,7 +1388,7 @@ static int pose_group_unassign_exec (bContext *C, wmOperator *op) /* add selected bones to ungroup then */ // NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined... - // CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + // CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) { /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ // NOTE: sync this view3d_context() in space_view3d.c @@ -1464,7 +1464,7 @@ static short pose_select_same_layer (Object *ob) bPose *pose= (ob)? ob->pose : NULL; bArmature *arm= (ob)? ob->data : NULL; bPoseChannel *pchan; - short layers= 0, changed= 0; + int layers= 0, changed= 0; if (ELEM3(NULL, ob, pose, arm)) return 0; @@ -1530,7 +1530,7 @@ static int pose_flip_names_exec (bContext *C, wmOperator *op) arm= ob->data; /* loop through selected bones, auto-naming them */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { BLI_strncpy(newname, pchan->name, sizeof(newname)); bone_flip_name(newname, 1); // 1 = do strip off number extensions @@ -1577,7 +1577,7 @@ static int pose_autoside_names_exec (bContext *C, wmOperator *op) arm= ob->data; /* loop through selected bones, auto-naming them */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { BLI_strncpy(newname, pchan->name, sizeof(newname)); bone_autoside_name(newname, 1, axis, pchan->bone->head[axis], pchan->bone->tail[axis]); @@ -1670,7 +1670,7 @@ static int pose_armature_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev Object *ob= CTX_data_active_object(C); bArmature *arm= (ob)? ob->data : NULL; PointerRNA ptr; - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* sanity checking */ if (arm == NULL) @@ -1691,7 +1691,7 @@ static int pose_armature_layers_exec (bContext *C, wmOperator *op) Object *ob= CTX_data_active_object(C); bArmature *arm= (ob)? ob->data : NULL; PointerRNA ptr; - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get the values set in the operator properties */ RNA_boolean_get_array(op->ptr, "layers", layers); @@ -1723,7 +1723,7 @@ void POSE_OT_armature_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers to make visible"); + RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers to make visible"); } void ARMATURE_OT_armature_layers (wmOperatorType *ot) @@ -1742,7 +1742,7 @@ void ARMATURE_OT_armature_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers to make visible"); + RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers to make visible"); } /* ------------------- */ @@ -1750,17 +1750,17 @@ void ARMATURE_OT_armature_layers (wmOperatorType *ot) /* Present a popup to get the layers that should be used */ static int pose_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt) { - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get layers that are active already */ memset(&layers, 0, sizeof(layers)); /* set all layers to be off by default */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones) { short bit; /* loop over the bits for this pchan's layers, adding layers where they're needed */ - for (bit= 0; bit < 16; bit++) { + for (bit= 0; bit < 32; bit++) { if (pchan->bone->layer & (1<<bit)) layers[bit]= 1; } @@ -1780,13 +1780,13 @@ static int pose_bone_layers_exec (bContext *C, wmOperator *op) Object *ob= CTX_data_active_object(C); bArmature *arm= (ob)? ob->data : NULL; PointerRNA ptr; - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get the values set in the operator properties */ RNA_boolean_get_array(op->ptr, "layers", layers); /* set layers of pchans based on the values set in the operator props */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones) { /* get pointer for pchan, and write flags this way */ RNA_pointer_create((ID *)arm, &RNA_Bone, pchan->bone, &ptr); @@ -1816,7 +1816,7 @@ void POSE_OT_bone_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers that bone belongs to"); + RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers that bone belongs to"); } /* ------------------- */ @@ -1824,7 +1824,7 @@ void POSE_OT_bone_layers (wmOperatorType *ot) /* Present a popup to get the layers that should be used */ static int armature_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt) { - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get layers that are active already */ memset(&layers, 0, sizeof(layers)); /* set all layers to be off by default */ @@ -1834,7 +1834,7 @@ static int armature_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev short bit; /* loop over the bits for this pchan's layers, adding layers where they're needed */ - for (bit= 0; bit < 16; bit++) { + for (bit= 0; bit < 32; bit++) { if (ebone->layer & (1<<bit)) layers[bit]= 1; } @@ -1854,7 +1854,7 @@ static int armature_bone_layers_exec (bContext *C, wmOperator *op) Object *ob= CTX_data_edit_object(C); bArmature *arm= (ob)? ob->data : NULL; PointerRNA ptr; - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get the values set in the operator properties */ RNA_boolean_get_array(op->ptr, "layers", layers); @@ -1890,7 +1890,7 @@ void ARMATURE_OT_bone_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers that bone belongs to"); + RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers that bone belongs to"); } /* ********************************************** */ diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index ac0d4c21e27..15ff971b9cf 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -220,7 +220,7 @@ void ED_keymap_curve(wmKeyConfig *keyconf) keymap->poll= ED_operator_editsurfcurve; WM_keymap_add_item(keymap, "OBJECT_OT_curve_add", AKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", LEFTMOUSE, KM_CLICK, KM_CTRL, 0); WM_keymap_add_item(keymap, "CURVE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "CURVE_OT_select_row", RKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 7801168dd83..e53b419c6ea 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -3055,7 +3055,7 @@ void CURVE_OT_make_segment(wmOperatorType *ot) /***************** pick select from 3d view **********************/ -void mouse_nurb(bContext *C, short mval[2], int extend) +int mouse_nurb(bContext *C, short mval[2], int extend) { Object *obedit= CTX_data_edit_object(C); Curve *cu= obedit->data; @@ -3111,12 +3111,15 @@ void mouse_nurb(bContext *C, short mval[2], int extend) } - } + if(nu!=get_actNurb(obedit)) + set_actNurb(obedit, nu); - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); + + return 1; + } - if(nu!=get_actNurb(obedit)) - set_actNurb(obedit, nu); + return 0; } /******************** spin operator ***********************/ diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c index 28d6e2c70c4..4e57645b791 100644 --- a/source/blender/editors/datafiles/blenderbuttons.c +++ b/source/blender/editors/datafiles/blenderbuttons.c @@ -1,6103 +1,6541 @@ /* DataToC output of file <blenderbuttons> */ -int datatoc_blenderbuttons_size= 195097; +int datatoc_blenderbuttons_size= 209099; 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, 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,239, 68, 73, 68, 65, 84,120,218,236, 93,119,116, 20, 85, 31,189,111,118,182,111,178,233, 61,180,208, 33, -128, 52,165,247, 34, 29,145, 34,124, 40, 34, 42, 29, 69, 65, 80, 68,165, 5, 16,233, 82, 20,149,162,116, 20, 68,165, 41,189, 10, - 72,239,157, 16,210,251,102,235,204,188,239,143,236,172,155,101,147,221, 64, 64,196,185,231,204,217,157,118,231,245,119,223,239, - 53, 66, 41,133, 4, 9, 18, 36, 72,144, 32, 65,130,132,146, 3,145, 4,150, 4, 9, 18, 36, 72,144, 32, 65, 66,201,130, 41,182, - 34, 35,132, 22,227,217, 54,222,114,218,143,230, 79, 59,231, 99,244, 59, 45, 65,206,230,118,206, 79,255, 37,238,108,254,180,114, -138,254,245,150,183, 56,156,222,166,169, 98,186,147,150,180, 59, 31, 23,103, 73,229, 35, 55,238,164,143, 33,222, 63,253,151,184, -179,249,211,198,233,154,126,188,225, 45, 46,167, 55,105,234, 33,220, 73, 75,218,157,143,139,243, 81,243, 81, 17,238,164,143,154, -150, 10,137,251, 79,241, 31, 0,251,184,196, 85,113, 64, 41, 37, 78,252,228,105,229,116, 14, 7,145,191, 36,221, 90,130,216, 83, -210,156, 46,225, 89, 82,248,148, 82, 74, 8, 33,123, 1, 52, 47, 73,191,151, 68,188,187,248,181, 68,120,139, 43,174,138,203, 89, - 82,233,254,113,115,150, 84, 94,114,229, 44,137,116,239, 46,222, 31, 99, 28,149,148, 59, 75, 36, 47, 61,142, 52,239, 38,253, 60, - 50,175, 43,103, 73,228, 37, 87,206,146, 72,247, 79,130,179, 36,242,146, 59,206,146, 72,247,133,197,189,100,193,122, 50, 66,192, - 53, 99,183,120,154,133,208,227, 18,153,222, 90, 92,158, 6,206, 18,142,163, 79,237,156, 37,217,154,105, 81, 82,113,244, 56,210, -187, 51,103, 73,241,187,242,148, 68, 60,185,227,124, 84,247, 22,226,206, 18,247,251,163,166,251, 39,197, 89,194,113, 84, 34,121, -201,133,179, 69, 9, 55, 2, 90, 56,157,127, 90,146,156, 37,149,151,220,184,243,145,227,201, 29,231,163,186,183, 16,119,150,184, -223, 75,162, 14,121, 92,188,207,156, 5,235,113,138,171,199, 85,153,149, 36,247,227,176,226, 60, 46, 75, 91, 73, 89,113,220,240, -238, 45, 65,186, 61, 37,237, 78,187,251,200,227,178,182, 62,237,144,242,146,148,151,158,182,188,228, 46,221, 80, 74, 63, 37,132, -124,242,180, 53,158,157, 57, 75, 74, 8,185,241,251, 35,229, 37,215,119, 75, 34, 47,121,224, 36,143,195,255, 37,157,159,158, 70, - 48, 79,139, 67,188, 29,223,243, 16,124, 45,158,230, 8,120, 76,238,108,241,111,240,251,227,112, 39, 33,228,211,199,228,247,127, - 75,152, 74,121, 73,202, 75, 79, 93, 94,114, 73,147, 45, 74,202, 50, 84,210, 13, 41, 87,206,146,248,134, 51, 71, 73,165,209,199, -237,247,146,204, 75,143, 35,238,255, 45, 40,182, 5,235,113,119,155, 60,205,156,143,131,251, 49,249,125,239,227,104, 29, 60,134, -113, 93, 37,238, 78, 74,233,167, 40,193, 46, 71,209,207, 37,233,214,199,217, 77,248, 56,210,230,227, 76,239, 37, 57,206,227, 49, -249,253,223, 18,239, 37,238,206,146,202, 75,110,226,252,145,221,234, 46,252, 74,186, 11,187, 36,211,230,227,228, 44, 9,238,199, -225,206,199, 21,247,255, 38, 48,144, 32, 65,130, 4, 9, 18, 36, 72,144, 80,162,144,214,193,146, 32, 65,130, 4, 9, 18, 36, 72, -120, 82, 2, 43, 42, 42,106,171, 86,171,173, 80,216,139, 6,131,225,126, 66, 66, 66, 75, 41, 8, 37, 72,144,224,177,160, 33,132, -193,223, 22,115, 1, 0,165, 82,235, 78,130, 4, 9,207, 48, 10, 29,131,165, 82,169, 98, 46, 94,188, 88, 73, 16, 4,240, 60, 15, -142,227, 28,191, 22,139, 5,205,154, 53, 43,246,248,173,240,240,240,125, 50,153,172,108,113,222,225,121,254, 78, 98, 98, 98,147, - 34, 10,238, 67, 0, 98, 8, 33,206,215,138,252, 5,144, 96,181, 90,235, 20,197, 73, 8,137,113,229, 43,132, 75,252, 95, 36,167, -191,191,255,113,150,101,163,221,113, 21,246, 95, 16,132, 27,201,201,201,141,164,100,250,100, 16, 30, 30,190,143,101,217, 98,167, -207,251,247,239, 23,154, 62, 35, 35, 35,255, 98, 24, 38,178, 24,148, 50, 65, 16, 46,223,191,127,191, 73, 97, 2, 68, 76,243, 30, - 4, 77,129,255,132,144,120,142,227,234,121,202, 71, 69,113,185, 73,163, 69,114, 58,139, 43,150,101,167,135,134,134, 14,201,203, -203, 51, 1,160, 50,153,140, 6, 5, 5,137,110, 3, 0,112, 28,151,146,145,145, 81, 67, 74,137, 18, 36, 72,120,166, 5,150, 32, - 8,140,217,108,198,149, 43, 87, 80, 72, 57,207, 63,196,247, 42,157,248,125,103,168,111,104, 24, 56,171, 21,186,224, 16, 7,119, -210,133,115,224,108, 86,112, 22, 11, 74,215,111, 32, 86, 94,168, 94,189,186,204, 3,103,244,140, 25, 51, 66,125,125,125, 97, 50, -153, 96, 50,153, 96, 54,155, 97, 50,153, 96,177, 88, 96,177, 88, 96,181, 90, 97,181, 90,193,113, 28,204,102, 51,118,237,218,229, -201,237,209, 83,167, 78, 13,213,235,245, 14, 62,241, 16, 57, 69, 94,155,205, 6,147,201,132, 63,254,248,163, 72, 78,150,101,163, - 19, 18, 18, 66, 21, 10, 5, 40,165, 16, 4, 1,148,210, 2,135, 43,202,151, 47,111,149,146,232, 19, 69,165,169,171,127, 9,245, -211,168,192, 9, 2, 58,215, 42,239,184,113, 99,217,122, 80,142,135,192,113,168, 56,188, 63,144,111,130, 65,181,106,213,138, 76, -159,148,210, 50, 83, 87,255,226,239, 45,103,106,106,170,177,106,213,170, 9,200, 31, 8, 90,152,133, 39,218,104, 52,134,138,110, -112, 21, 66, 12,195, 20, 56,182,111,223,142,206,157, 59,123,242,123,244,187,239,190, 27,106,179,217, 96,177, 88, 96, 54,155, 97, -179,217,192,113,156,227,224,121,222,113, 88, 44, 22, 28, 61,122,212, 91,203,213,140,182,109,219, 14,252,229,151, 95,116, 63,253, -244,147,174,108,217,178, 80, 40, 20,144,201,100,144,201,100, 96, 24, 6, 44,203,226,133, 23, 94, 32, 82, 18,148, 32, 65,194, 51, - 47,176,204,102,243,205,218,181,107, 83,251,255, 40,149, 74,165,112, 41, 56, 35, 43, 85,170,116,217,245, 61, 79, 93,135,190,161, - 97, 24, 95, 42, 16, 0, 48,241,118,154,163, 98,152,217,232, 57,199, 51,147,238,101, 1, 0, 52, 26, 13,136,115,179,185, 16,232, -116, 58,180,109,219, 22, 74,165, 18,245,234,213,131, 92, 46,119,123, 40, 20, 10,200,229,114,111, 42, 5,248,248,248,224,179,207, - 62, 19,197, 17,116,106, 21, 70, 52,170, 7, 53, 40,190, 58,119, 21, 22,129,130,101, 89,199,225, 13,167, 66,161,192,217,179,103, -193,178, 44,100, 50,153,227, 87,252,191,101,203, 22,244,236,217, 19, 44,203, 66,163,209, 0,255,161,217, 22, 79, 11,252, 52, 42, -188,182,248, 71, 0,192,221, 57,195, 29,113,119,116,232, 68,199, 51,101,222,234, 13, 66, 8,228,114, 57, 24,134, 41, 49,206,244, -244,116,227, 43,175,188,114,192,215,215,119,123,118,118, 54, 60, 8, 55,220,189,123, 23, 44,203, 22,154,222, 25,134,193,236,217, -179,113,237,218, 53,175,252,110, 50,153,240,245,215, 95,131,231,249, 2,188,226,127,215,107, 94,138,171, 41,237,218,181,235,255, -203, 47,191, 4, 16, 66,176,112,225, 66,200,229,114,116,234,212, 9, 65, 65, 65,216,177, 99, 7, 20, 10, 5,198,142, 29, 43, 37, - 62, 9, 18, 36, 20, 5, 57,128,231, 0,132,216, 13, 60, 57, 0,252,157,238,167,216,127, 67,156,206,255,116,195, 83,223,254,140, -120, 95, 60,183, 0, 80,186,185,158, 6, 64, 99, 63,204, 0, 14, 1,136,117,250,142,248, 30, 92,191,203,218, 11,194,230, 0,246, - 0,104, 33, 46,126,119,255,254,253, 14, 78,150,148,139,151, 47, 95,174, 34,106, 29,123, 87,161,130,227,184, 74, 98,183,161,104, - 29,106,211,166, 77,145, 45,122,206,106,125, 64,120,184,211, 80,238,186, 37, 10, 19, 46, 86,171, 21,189,123,247,206,143,129, 66, - 42, 27,231,195, 11,205, 6,139,197, 2,150,101, 81,185, 84, 8, 62,110, 95, 27,207, 83, 27, 12,185, 4, 92,150, 1,221,124,108, -184, 88,173, 14,150,222, 73,193,237,236, 92,176, 44,235, 21,167, 32, 8,133,138, 43,153, 76,134,197,139, 23,227,149, 87, 94,129, - 76, 38,243,138, 79, 66,201,131, 19, 4,183,233,176,176, 52,235, 77, 60,121,195,153,158,158,110,236,220,185,243, 17,149, 74,181, - 34, 44, 44, 44, 33, 62, 62,222,163,192,114, 21, 61,174,141,137, 47,190,248, 2,243,231,207, 71,203,150, 45,189,114,167,217,108, - 6, 33, 4, 75,151, 46,125,224,222,228,201,147, 31,248, 94, 81,156,246,134, 17, 19, 25, 25, 57,116,219,182,109,122,241,217,224, -224, 96,200,229,114,212,168, 81, 3,190,190,190, 56,112,224, 0,120,158,247, 58, 95, 74,144, 32,225,217,133, 59, 45,226,132,102, -227,199,143,175, 55,125,250,244,105, 13, 27, 54, 92,115,232,208,161,213,132,144,173, 78,101, 98,103, 59,199, 86,167,243,250, 46, - 34, 75, 14, 32,132, 16,178, 85,124,222,249,220,233,122, 27, 0, 74,241,124,252,248,241,177,211,167, 79,159, 54,110,220,184, 15, -227,226,226, 20,227,199,143,175, 57,125,250,244,105,226,119,220,185,195,217,130, 85,228, 42,192, 98,119,225,165, 75,151,224,105, - 92,170,167,245, 51,116,193, 33, 14,203,213,164, 50, 65,142,235,159,197,103, 58, 42,174, 5,117, 43, 64,167,211,161,253,164,207, -189,178, 12, 89, 44, 22, 36, 39, 39, 59,172, 10,158, 14,111, 57,181, 26, 53,118,189, 91, 3,119,211,148,248,244,112, 58,126, 57, -117, 13,114,185, 28, 47, 86,171,129, 14, 10, 95, 76, 40,163,196,187, 87,111,193,230,229, 88, 93, 74,169, 91, 97, 37,254, 23,187, - 74, 36,129,245,207,161,115,173,242, 14, 43,211, 81,223,214,142,235, 61, 13,103, 29,113,242,222,226,153, 0,128,150,117, 94,128, - 55,227,180, 61,113,166,165,165, 25,155,180,110,177,151, 55, 90,150,247,239,223,255,230,238,221,187, 53, 94, 53,231,220, 8, 44, -209, 74, 43,138, 43,150,101, 97,177, 88,188,242,187,197, 98, 41, 52,127, 40, 20,138, 98, 91,176, 0,192, 96, 48, 88, 54,111,222, -140, 5, 11, 22, 32, 40, 40, 8,237,218,181, 67, 68, 68, 4,214,175, 95, 15, 74, 41,134, 15, 31, 14,141, 70, 35, 90,171,165, 4, - 40, 65,194,127, 27, 69,105, 17,213,244,233,211,167, 57, 11, 24, 87, 65,227, 44,156, 92, 68,148,179, 72,139,245, 80,255,111,117, - 21, 77,226,119, 9, 33, 91,227,226,226, 58,123,112, 71,138,171,192, 42,114,153,125,179,217,124,179, 86,173, 90, 94,169,136,188, -188,188, 68, 79, 34,195, 93, 43,222,217, 42,224,227,227, 3,157,222, 7,140,151,229,173,205,102,115, 8,148,157, 59,119, 66,163, -209,160, 99,199,142,143,100,193,178, 90,173, 80, 42,228, 96,130,195,240,218,156,221, 72,203, 49, 58, 42,150, 61, 55,110,226,100, - 82, 50,222,109,216, 26, 58, 77, 50,114, 45, 22,175, 44,109,130, 32, 60, 32,174, 88,150, 69,239,222,189, 29,214, 3,231,113, 41, -144,186, 8,255,201,150,148,219,115,231,235,130,139,101,234, 97, 56,211,210,210,140,157, 59,119, 62,194, 27, 45,203,239,221,187, -119, 4,128,250,249,231,159, 47,182,192, 18,133,149, 92, 46,199,236,217,179, 49,127,254,124,199,125,111, 5, 22,199,113, 5,132, -211,213,171, 87, 11,124,203, 85,208, 21,213, 61, 74,243, 75, 73, 1,128, 16, 19, 19,227,120, 39, 60, 60, 28,254,254,254, 16, 4, - 1,130, 32, 64,173, 86, 67,163,209, 64,161, 80, 72,137, 78,130, 4, 9, 69,105, 17,227,184,113,227, 62, 36,132,108,181, 91,146, -206, 21, 33,164,220,161,190,139, 72, 75, 41,164,236,234,236, 78,100, 57,255, 23, 49,126,252,248, 88, 55,238,248,243, 1,129,229, -164, 26, 31,128,115,119, 97, 73, 85, 94, 69, 85, 96, 62,254,122,104,116, 58,200,100,140,199,253,149,196, 46, 66,177,192, 31, 50, -100, 72,145,227, 82,188, 29, 47,101,181, 90,193,176, 50,220, 15, 47, 7,158,217,239,120, 87, 60, 24, 86,142,219,225, 85, 32,187, -244, 23,228, 94, 86,180,174, 22,172,225,195,135,227,235,175,191, 6,195, 48,142, 48, 97, 89, 22, 21, 43, 86,196,205,155, 55,165, -156,246,148,136,171,194,174,243,188,224,181,213,197,221,115,105,105,105,198, 94,189,122,237,205,202,202, 90, 94,189,122,245,171, -200, 95,198,128,241,150,143,101,217, 2,194, 74, 20, 87,243,230,205, 43, 32,134,108, 54,155, 87, 13, 0,155,205,246,128,208,153, - 53,107, 86,129, 95, 0,104,212,168,145, 87,150, 96, 0,148, 97, 24,170, 80, 40,208,182,109, 91,212,172, 89, 19, 63,253,244, 19, - 4, 65,192,176, 97,195,160,209,104, 48,119,238, 92,112, 28,135, 25, 51,102, 72, 22, 44, 9, 18, 36, 20,165, 69,204,113,113,113, -231,226,226,226, 28,150, 36, 87, 11, 86, 33,232,100, 23, 83, 33,162, 56, 67,254, 88,170, 63,139,112, 67,231,194,132,151,243,181, -233,211,167, 79,115,227, 14, 71,183,228, 19,223,236, 57,241,252, 89,124,222,184, 54,128,130,221,130,139, 95,168, 2,157,143, 14, - 58, 95, 31,244,218,178, 31, 0,236,133,253, 56,175, 44, 88,162,192, 74, 75, 75, 43, 82, 92, 21,199,130,197, 40, 89,108,136,206, - 0, 85,202,193, 90,108, 5, 4,150,140,149,227,110, 80, 57, 48,114, 5, 88,158,243,138,147, 82,250, 64,151,224,128, 1, 3, 64, - 8,113,204,248,170, 85,171,150, 51,151, 84,227, 60,233,244,121,124, 25, 46,110, 28, 10, 0,104, 98, 48, 56,226, 98,106,173,191, -231,109,204, 57,187,215, 97,109,156,132,247, 31,138, 51, 45, 45,205,248,124,213,216, 35,138, 64,191,229,119,238,220, 57, 2,128, -233,211,167,143,127,173, 90,181,188,202,147,226,164, 9, 87,113,229,108,185, 18,127,109, 54,155, 87,126, 23,199, 66,121,130,216, - 93,232, 41,205, 83, 74,105, 96, 96, 32, 24,134,129, 94,175,135,143,143,143, 99, 6,173, 90,173,134, 86,171,117,140,223,244, 82, -176, 73,144, 32,225,191,139, 0, 81,224,216, 69, 82, 1,203, 18,165,180,179,179, 8, 42,172,171,208,110,113,218,231,225, 91,191, -216,133,153, 91,136,150, 52,151, 50,121,171,171, 56, 99, 69,197,232,252, 27, 17, 17,241,155,143,143, 79, 57,111,125, 93,156, 69, - 71,121,155,245, 1, 75, 22, 33, 4, 62,190, 62,208,248,232,160,241,245, 41,212,202, 85,148,192, 18, 45, 67, 98,101,179, 98,197, - 10,248,248,248,224,245,215, 95, 47,246, 24, 44,135,192, 82, 48,216,161,250, 3, 50, 37, 91, 64, 92,177, 44, 11,153, 92,142, 68, -159, 8, 48,114, 57, 88,206, 59,171, 88, 86, 86, 22, 88,150,197,199, 31,127,236,104,177, 59,139,171,226,248, 89,194, 99,106, 61, -241,182, 7,172, 78,133, 89, 91, 31,150, 83,180, 92, 41, 2,253,150, 87,169, 82,197, 97,185,210,106,181,226,236, 81,143, 96, 24, -198,173,184,114,157,241,199,178,108,126, 90,246, 48,219,209,217,130, 21, 23, 23,231,224,117,182, 92,137, 40, 78, 62, 18,221,186, -119,239, 94,156, 60,121, 18, 67,134, 12,129, 70,163,193,252,249,243,193,113, 28, 38, 79,158, 12,141, 70, 3,165, 82, 41, 37, 62, - 9, 18, 36,235, 85, 81,251,138,166,184,140,115, 34, 46,150,166, 20,119,194,202,185, 59,208,233,191,205, 13,175,197,165,235,208, -245,186,248,155, 22, 23, 23,183, 91,180, 92, 57, 93, 47,224,142, 66, 45, 88, 42,149,170,220,149, 43, 87, 28,139,140, 22,245,107, -177, 88,208,178,101, 75,175, 45, 97,226, 44, 66,150,149, 21, 16, 20, 90, 95, 31,104,245,190,208,248,248,184, 10, 13,226,169,240, - 22, 91,192,206, 2,235,147, 79, 62, 1,203,178,248,250,235,175, 1, 0,239,191,255,190,215, 99,176, 68, 78,240, 4,241,244, 58, -106,207,233, 9,203,247, 54, 36, 29, 60, 13,150,101, 17,218,160, 3,132,231,123, 34, 79,227, 3,150,231,188,158, 69,152,158,158, -142,155, 55,111, 66, 38,147, 97,244,232,209, 5,214, 42,114,157,153,182,115,231, 78,201,130,245, 79,100,112,129,243, 74, 76, 21, -199,202,232,204, 41,142,185,202,202,202, 90,126,231,206,157,163, 0,152,254,253,251,251,107,181, 90,124,243,205, 55,121, 0,148, -235,215,175,215,120, 18, 67, 98,186,241, 36,174,228,114,121,126, 90,246,174,112, 43,208,136,240, 52,224,221,155, 52, 47,186,149, - 16, 2,158,231,161,209,104, 10, 88,174,212,106, 53, 84, 42,149,148,240, 36, 72,144,224, 9,127, 22,227,217,250, 78, 98,233,207, -135,228,253,243, 81, 29,204, 22, 38, 48,204,102, 51, 46, 92,184,224, 45,143,215,139,142,150,170,247, 2, 38,221,203, 2, 33, 4, - 95, 53,170, 14,157,222, 7, 90,157, 14, 47,255,180,215, 81, 96,159,157,246, 62, 84, 58, 31, 68, 54,109,231, 85, 1, 46,118, 17, - 58, 11,172,204,204, 76,200,229,114, 76,153, 50, 5, 12,195, 96,198,140, 25,136,138,138,194,253,251,247,177,126,253,122,175, 44, - 88, 50, 94,134,136, 87,171, 66, 59,192, 15,250, 87,155, 33,160,237, 39,184,103, 97,113,200,164, 69, 51,211,121, 40,119,204,131, - 69,224,189,158, 81,197,113, 28,246,238,221,235, 58,144, 29,148, 82,199, 42,249, 54,155, 13, 86,171, 21, 51,102,204,128,180,147, -200,147, 71, 68,131,225, 8,169, 55, 24, 0,176, 37,238, 13,199,245,143,207,254,157, 62,103,127,159,191, 96,127,149,178,237,138, -197,153,150,150,102,124,177,101,163,125, 38, 65,254, 93,141, 26, 53, 10, 88,174,212,106, 53,177,159,123, 37,170, 25,134,129, 76, - 38,123,160, 91,176, 48,145,229,205, 24, 44,142,227, 28, 11,128, 22, 53, 94,241, 97, 44, 88,111,188,241, 6, 34, 34, 34, 28,150, -171, 73,147, 38, 65,163,209, 96,252,248,241,176,217,108,152, 55,111,158,148,248, 36, 72,144,240, 79,136,177,199, 6,183, 37,168, -201,100,186, 85,179,102, 77, 20,114, 47, 74,173, 86,203, 93, 10,231,200, 74,149, 42, 93,118,237, 42, 36,132,180,161,148,238,114, - 87,152, 19, 66,224,171,247,133,218, 71, 7,173,139,213, 74,237,171,135,202,199, 7,140, 66,238,174, 34,120,128, 83, 28, 59,226, - 44,176,196, 35, 43, 43, 11,114,185, 28, 11, 22, 44,128, 94,175,135,217,108,246,200, 41, 86, 54, 50,153, 12,121,119,115,112,113, -218, 46, 40,213,135, 80,161,221, 43,136,144,107,160, 56,176, 9, 70,222, 86,228, 66,163,238, 56, 43, 85,170,132,137, 19, 39, 62, -176, 60, 67, 97,136,138,138,242,232,247, 71,133,196,233,158,179,168, 89,174, 34, 4,202,187,123,206, 45,167,104,185, 50, 9,242, -239,110,222,188, 41, 90,174,252,180, 90, 45,150, 44, 89,146, 7,128,153, 60,121,178,182, 76,153, 50, 50,111,210,146, 76, 38,195, -156, 57,115,220,142,185,114, 39,182,138,147,143,156,223,109,222,188,185,219,133, 70,221,137, 54,119,156,162, 91,131,130,130, 28, -150, 43,158,231, 29,179, 7,197,213,226, 11,107, 76, 72,233, 83,226,148, 56,255, 59,156,207, 26,220,214,238, 9, 9, 9, 47, 22, -246, 66,133, 10, 21,174, 92,185,114,165,162,184,101,134,189,192, 84,152, 76,166, 74,141, 26, 53,242,104,202, 17, 4, 1, 42,149, - 10,148, 82,180,154, 56, 29,132, 1, 24, 20,172,188, 66, 27,183,134, 76,198, 66,200,223,146,195,227, 44, 66,163,209, 88,160, 82, -112,119,228,230,230,194,108, 54,123,189,250,182,201,100, 42,176,148, 2,161, 2,110,255,190,238,129,217,132,226,225,237,184, 28, -181, 90, 93,160,139,167, 40,120, 90, 83, 76, 66,201, 67,156,136, 0, 0,149, 27,117,132, 32,240,160, 60, 95, 96, 59,163,170,229, - 94,132, 64,121, 88,109,121, 48,155,205,158,204,140, 36, 53, 53,213,216,171, 87,175,189, 0,190,237,214,173,219,101,228,207, 96, -161, 62, 62, 62, 42,185, 92, 46, 0, 72, 7, 64, 51, 50, 50,252,238,221,187, 39,152, 76,166,210,158,220,249,203, 47,191,224,194, -133, 11,104,218,180,105,129,109,155, 68, 43,168,243,106,236,222,164, 79,177, 91,220,221, 10,238,133, 9, 56,111, 33,147,201,224, -231,231, 7,133, 66,129, 41, 83,166, 64,161, 80, 64,171,213, 2, 0,230,205,155,231, 88, 52, 85,130, 4, 9, 18,158,121,129,229, -169,188, 44,162,251,176,200,174, 66,142,227,226,203,148, 41, 83,172,143,241, 60,159,228, 65,176,197,175, 95,191, 94,225,108,117, -240,244, 75, 41, 77,242, 80,201,198,111,217,178, 69,225,206,154, 81,216,198,207,158, 56,121,158,143, 47, 91,182,108,161, 22, 18, -119,176,217,108,247,164, 36,250,228,192,243,124, 17,233,243,163,135, 77,159, 87, 43, 87,174,124,207,223,223,255,215,176,176,176, -180,131, 7, 15, 6,213,175, 95, 63,200,249,153,250,245,235, 71,184,188,102, 65,225,251, 16,130, 16, 18,223,173, 91, 55,183,105, - 94, 20, 75,110,210,103,188,167, 52,127,236,216, 49,133,243,251,133,241, 59,229,163,120, 47, 4,235,237,218,181,107, 51,206, 60, -133,165,125,155,205,150, 34,165, 66, 9, 18, 36,252,103, 5,150,209,104,188, 91,179,102, 77,174,144,123,119,138,122, 55, 53, 53, -181, 94, 73,123,192,106,181, 54,250, 55,112,166,164,164,212,147,146,219,211,141,199, 17, 71, 73, 73, 73,207,151, 52, 39,199,113, - 37,158, 62,109, 54, 91,163,199, 17,166,105,105,105, 13,165,148, 37, 65,130, 4, 73, 96,121, 1,111,151, 99,144, 32, 65,130, 4, - 9, 18, 36, 72,248,175,130,145,130, 64,130, 4, 9, 18, 36, 72,144, 32,161,100, 65,144,191,107,244, 3, 40,206,236, 0, 66, 72, -155,226,126,216, 19,191,196, 41,113, 74,156, 18,167,196, 41,113, 74,156,207, 30,167, 39,238,103,102,118,162, 56, 59,234,113, 28, - 0,218, 72,156, 18,167,196, 41,113, 74,156, 18,167,196, 41,113,254,215, 14,169,139, 80,130, 4, 9, 18, 36, 72,144, 32,161,132, -193, 74, 65,240,207,128, 16, 34,163,148,242, 37, 72, 25, 0,160,176, 13,221, 44, 0, 50, 30,198,153, 0, 20,246, 67, 92,168,200, - 6,192,106, 63,188, 88,106,254, 51, 38, 33, 33, 32,150,242,242,250,148, 16,185, 32,224, 84,233,210,165,254, 2, 94,180, 0,128, - 79,120,181,106, 62, 58, 77, 27,179,213, 82, 78, 37, 87, 94,200, 52,228,238, 52, 37, 93,190, 37,165, 16, 9, 18,254,145,114,169, - 11,128,207,236,121, 63,142, 82,186, 78, 10, 21, 9, 18, 74, 88, 96,249,250,250, 30,103, 24, 38,218,211,250, 58, 78, 25, 19, 60, -207,199,167,167,167,215,243, 50, 35,179, 0,122,249,248,248,180,148,203,229,141, 1,192,102,179, 29,204,205,205,221, 13, 96, 61, -165,148,123,200, 2, 66, 15,160, 55,128,126,246, 75, 63, 0, 88, 71, 41,205,126, 72,190,154,126,126,126, 27,229,114, 57, 77, 77, - 77,109, 0, 0, 65, 65, 65, 71,108, 54, 27,201,206,206,126,153, 82,122,166,152,124,140, 66,161,152,222,180,105,211, 38,132,144, -149,148,210,197, 37, 20,151, 42,134, 97,220, 10, 19, 65, 16,202, 62, 4,159, 2,128,223,130, 5, 11,130, 86,173, 90, 85, 59, 62, - 62,190, 6, 0, 68, 71, 71,159,237,223,191,255, 95, 35, 70,140, 72, 3,144,101, 23, 90,133, 34, 33, 33, 32, 54, 57,241,198,144, -164,228, 11,189, 1, 32, 60,162,198, 58,153,140, 81, 68, 69,157, 60,172, 13,238, 23, 92,185, 74,249,193,107,190, 89,160, 40, 91, -174, 20,254, 56,116,242,185, 17,163, 62,140, 85,135, 85,254, 66, 18, 89, 79, 14,122,189,254, 56,195, 48,209, 69,229,113,119,121, -158,231,249,248,180,180,180,122,133,113,178, 44, 27, 93, 84,121,225,238,154, 32, 8, 55, 82, 82, 82,220, 46, 25,225,231,231,119, -152,101,217,114,222,114,137,191, 28,199,197, 23,182, 68,140,159,159,223,113,153, 76, 22, 93,148, 63,221,221, 19, 4,225, 70,114, -114,114, 97,238,124,192,239, 37,225,206,135,225, 44,202,157, 98,121, 4, 96, 94, 80, 80,208, 11,105,105,105,255, 3,240, 97,118, -118,118, 45,153, 76,134,192,192,192, 15, 9, 33,215,252,252,252,150,101,101,101, 29, 2, 48,138, 82, 42, 72, 57, 70,130,132, 71, - 20, 88, 12,195, 68,223,187,119, 47, 84,167,211, 1,248,123,191, 60,113,147,103, 65, 16, 64, 41,117,252,114, 28,135,170, 85,171, -122, 43, 50,106,232,245,250, 13,227,199,143, 47,221,171, 87, 47,165,184, 37, 76, 66, 66, 66,165,141, 27, 55,254,111,202,148, 41, -159, 16, 66,122, 82, 74,207,122, 43, 90, 0,180, 6, 48,160,118,237,218, 61, 38, 77,154,164,104,213,170, 21,120,158,199,175,191, -254,218,116,242,228,201, 11, 8, 33,155, 0, 44, 7,240,187,183,133, 4, 33,164, 73,120,120,248,234, 3, 7, 14, 68,220,188,121, -147,239,213,171,215, 90, 0, 56,126,252,120, 12,207,243,164, 65,131, 6,191, 16, 66,250, 82, 74, 15, 20, 35,204,187,141, 24, 49, -162,231,240,225,195, 67, 94,127,253,245, 87, 1, 44,182,127, 75,220, 69,188,184, 27, 16, 58, 44, 87,148, 82, 69, 17,207,133, 23, -195,146,165,187,121,243,102, 64,163, 70,141,134, 38, 39, 39,191,235,204,155,148,148,132, 19, 39, 78, 88,167, 77,155, 54,231,208, -161, 67,139,202,149, 43,151, 1,192, 80, 24, 17,229,229,245,147,146, 47,244,110,214,112,129, 31, 0,172,223, 50,244,149, 99,127, -165,248,110,221,182,244,127, 74,181,194,188,234,171, 57,138,138, 21,202, 98,207,241,171, 56,122, 33,157,212,104,210,153,205,218, -186,178, 45,128,165, 82,246,124, 50,144,201,100, 81,241,241,241,161, 90,173,214,237,134,238, 46,227, 46,196,133, 75, 81,169, 82, -165,194, 11, 22,150,141,190,119,239, 94,168, 90,173,118,148, 29,174,101,134, 88,174, 56,210, 10,165,168, 92,185,178,181,136, 50, -169,204,157, 59,119, 66,181, 90,173,131,199,157,251, 92,133, 70,229,202,149,139,242,123, 1,119,122,195, 73, 41, 69,197,138, 21, -121, 79,126, 23,119,172,240,228,111,145,179, 92,185,114,180, 56,156,222,184,179,124,249,242, 86, 15,209, 63,239,242,229,203,195, - 75,149, 42,133,138, 21, 43, 30,122,225,133, 23,244, 58,157, 14,219,182,109, 67,181,106,213, 98,245,122,253,209,245,235,215,203, -199,142, 29,251,220,119,223,125, 7, 0, 35,164, 28, 35, 65,194, 35, 10, 44, 66, 8,116, 58, 29,214,174, 93, 91,232,182, 25,206, -255, 75,151, 46,237,213, 7, 9, 33,245,202,149, 43,183,247,192,129, 3,154,136,136,191, 23,176,182, 88, 44, 8, 8, 8,192,176, - 97,195,148, 93,186,116,169,216,174, 93,187, 35,132,144,230,148,210,227, 30,248,122,132,132,132, 44,252,248,227,143,195,250,244, -233,131,160,160, 2,139,100,163, 87,175, 94,120,249,229,151, 21,151, 47, 95,126,101,197,138, 21,175, 44, 94,188, 56,145, 16, 50, -130, 82,186,169, 40, 94,173, 86,219,173, 66,133, 10, 75, 14, 28, 56, 16, 26, 26, 26,138,152,152, 24,102,236,216,177, 21, 43, 85, -170,164,137,142,142,102,238,223,191,143,159,126,250, 41,170,111,223,190, 27,148, 74,229, 96,139,197,178,217, 11,191, 43, 3, 3, - 3,199,188,253,246,219, 65,217,217,217,220,201,147, 39,175,138,215, 85, 42,213,196, 6, 13, 26,212, 33,132,172,165,148, 46,127, - 24,203,149,221, 74,231,186,231,136, 77,188,239,165, 37, 75,121,234,212,169,192,134, 13, 27,110, 50,155,205,117,134, 12, 25,114, -103,218,180,105, 26,189, 94,175, 7, 64,178,179,179, 51, 62,251,236, 51,203,220,185,115, 63,168, 86,173, 90,235,195,135, 15,247, -120,238,185,231,108,118,241,246,160,192, 34,196,225,158,187,247, 82,176,247,144,160,156, 56,254,253,232,153, 83,203,221,254,243, -252, 93,129,213,232,241,243,190,115, 72, 74,203,197,111,135,207, 35, 60,200,151, 40, 84,242, 88,255,232,216,230, 89,247,206,239, -163,210,142,215,143, 29,132, 16,104,181, 90,252,252,243,207, 15,108, 49,229,110,251, 41,150,101,225,239,239,239,113, 55, 2,181, - 90,141,157, 59,119,186,221, 27,209,221,214, 59,126,126,126, 64, 17,155, 93, 19, 66,160, 86,171,113,240,224, 65, 48, 12,227,118, - 11, 31,215,107, 58,157, 14, 76, 17,123, 82,137,156,251,246,237,243,200, 37,254,250,248,248, 0,128,172,200, 76,169, 82,225,192, -129, 3,133,250,217,245,191,143,125, 63, 86, 79,156, 7, 15, 30, 44,176, 69,151,235,214, 93,206,231, 58,157,206,209,112, 43,180, -117, 22, 16,208, 32, 58, 58, 26,199,142, 29,195,250,245,235, 3, 99, 99, 99,113,245,234, 85, 16, 66, 48,109,218, 52, 82,189,122, -117,121, 98, 98, 34,154, 54,109,138, 31,127,252,177,145,148, 91, 36,252,131,144, 3,120, 14, 64, 8,242,119,141,201, 1,224,111, -175,123,148, 0,210, 0,104,236,135, 25, 64, 46,128, 96,251,187,169,246,178,197, 89, 32,164,160,224,166,208,245,237,220,226,142, - 18, 33, 78,247,196,111,184,158,187,254, 22,224,102,237,133,140, 88,137,181,160,148,238, 45,224, 35, 47,196,149,184,143,152,107, - 94,118,179,241,171, 74,167,211,109, 60,114,228,136, 38, 36,228,111,183,155,205,102,228,228,228, 32, 55, 55, 23, 57, 57, 57,240, -245,245,197,250,245,235, 53,173, 91,183,222, 72, 8,169, 68, 41, 53, 23,198, 9, 96,206,253,251,247,195, 56,142,131, 82,169, 44, -172,229,139,170, 85,171,226,195, 15, 63, 68,251,246,237,195, 91,182,108, 57, 7,192,166, 34, 56,161,213,106,151,156, 56,113, 34, - 84,171,213,226,202,149, 43,136,143,143,199,123,239,189, 87, 74, 16, 4,220,189,123, 23, 87,175, 94,197,189,123,247,176, 98,197, -138,208,238,221,187, 47, 1,176,185, 40,191,219,241,230,232,209,163, 43, 5, 6, 6, 50,159,127,254,121, 86,110,110,238, 87,246, -235,227,231,205,155,215,183, 89,179,102, 33,131, 6, 13, 2, 33,100, 13,165,244, 1,193,226,194,233,206,114,197, 3,184,232,242, - 90, 85, 23,203, 86,184, 61,241,101,186,225, 36, 0,252,218,181,107, 55,218,108, 54,215, 57,112,224,192,181,198,141, 27,151, 1, -112, 95, 76,116,126,126,126,186, 57,115,230,132,117,238,220,249,114,171, 86,173,234,180,107,215,110,116, 74, 74,202, 52,251,125, -234,202, 41, 8, 56, 21, 30, 81, 99,221,190,195, 35,122,239, 57,104, 81,188, 63,234,147, 59,165, 75,149,205, 58,117, 37,157, 63, -127, 35, 5, 57, 70, 14, 47,181,202,223, 88,188, 65,141,210, 88,184,246, 0,134,189,243,145,124,211,186,149, 47, 95,163,208, 1, -248,165,136,240,124, 36, 72,156,127,139, 12, 65, 16, 32,151,203,209,161, 67, 7, 16, 66, 30,216,107, 83, 46,151,227,240,225,195, -104,213,170, 21,228,114, 57,222,120,227, 13,175, 56, 89,150, 69,187,118,237, 28,251, 28, 58,243,185,138, 5,119, 90,192,213,239, -148, 82,176, 44, 11,134, 97, 10,221,224,218,149,211, 83,185, 36,186,179, 40, 46,231,123,158,220, 41, 90,143,188, 21, 87,222,114, -138,238,100, 89, 22,141, 26, 53,194, 95,127,253, 85,164,216,114,167, 43, 93,253,158,145,145,241, 90,165, 74,149,246, 45, 88,176, - 32, 16, 0,210,210,210, 28, 27,209,203,100, 50, 92,186,116, 9, 22,139, 5,159,126,250,169, 53, 59, 59,123,144,148,143, 36,206, -199,201, 89,148, 22, 1,208,108,252,248,241,245,166, 79,159, 62,173, 97,195,134,107, 14, 29, 58,180,154, 16,178,149, 82,218, 89, -252, 29, 63,126,124,236,244,233,211,167,141, 27, 55,238,195,184,184,184,115,132,144,173, 0,224,122,110,119,127,103, 23,241, 22, - 34,242,216,221, 82,224, 89,119,231,174,191,174,220,172,211, 5, 98,247, 28,113, 46,204,188, 21, 88,222,236,173,199,178,236,240, -105,211,166,133, 21, 37,174,114,115,115,145,144,144,128, 50,101,202,224,141, 55,222, 8, 91,176, 96,193,112, 0,179,138,160, 85, -200,100, 50, 28, 59,118, 12,201,201,201,168, 89,179, 38,202,149, 43, 87,224,129,235,215,175,227,215, 95,127, 69,102,102, 38,234, -214,173, 11,228,143, 47,114,139,231,158,123,238,211,170, 85,171,182,107,215,174, 29,167,209,104,112,234,212, 41,212,169, 83, 7, -107,215,174, 69,233,210,165,161,213,106,113,249,242,101,212,172, 89, 19,123,247,238, 69, 72, 72, 8,106,215,174,205,213,173, 91, -119,127,122,122,250,238, 91,183,110,125, 90, 72,194, 81, 68, 69, 69,125,248,246,219,111, 43, 19, 18, 18,132, 21, 43, 86, 28,162, -148, 30, 34,132, 12,254,232,163,143, 94,109,223,190,125,200,201,147, 39,179,255,252,243,207, 63,221,137, 43, 47, 45, 87,156,107, -101,196,243,188,217,104, 52, 90,204,102,179,141, 97,152, 91,132, 16, 11,207,243,133,245,237,168, 7, 12, 24, 80, 62, 53, 53,117, -216, 59,239,188,115,211, 46,174, 46, 33,127, 96, 59, 0,128,227, 56,115,110,110,110,118,195,134, 13,203,244,237,219,247,218,234, -213,171,135, 13, 24, 48, 96,253,242,229,203,115, 1, 24, 93, 9, 75,151, 46,245,151, 76,198, 40, 12, 57,129, 55, 54,172, 95,246, -238,175, 91,134,151,186,123,247, 94,197,160,224, 16,131,194, 39, 36, 97,253, 15,223, 29, 7, 96, 73, 72,201,198,153,235,137,144, -203,101,184,112, 55, 11,205, 94,236, 37,191,118,101,106, 19, 81, 96, 73,120,172,160,226,230,208,123,246,236, 41,210,130,117,248, -240, 97,200,229,114,104, 52, 26,204,157, 59,183, 72, 82, 81, 16,136,214, 33, 79, 34,134, 97,152, 34,203, 17, 81,100,136, 27,176, -187, 30, 95,126,249, 37,222,121,231,157, 2,223,176,139, 12,226,137,179, 48,247,149, 41, 91, 22,201, 73, 73, 5,174,121,179, 89, - 60,207,243,144,203,229,248,250,235,175,209,185,115,103,108,221,186,181,200,223, 14, 29, 58,128, 97, 24,234, 77,120, 54,106,212, - 8, 86,171,213,225,230, 75,151, 46,185,229, 93,188,120,177,167,202,172, 11,128,207,234,212,169,163,111,217,178, 37,246,237,219, -135,151, 95,126,217,108,181, 90,175, 0, 64,167, 78,157, 42, 47, 88,176, 64,121,226,196, 9, 4, 5, 5,201,239,220,185,243, 45, - 33, 68, 26,248, 46,225,241, 22, 70,110,180,136, 88,231, 77,159, 62,125,154,139, 48, 42, 0,241, 62, 33,100,107, 92, 92, 92,103, -103, 49,228,124,238,100,101,114, 22,111,177,206, 22, 40,103,241, 84,136, 40,115,117,183,243,243, 41, 5, 4,150,221, 67, 45,156, -173, 62, 98,161,235, 73, 92, 21,214, 82,116,133,159,159, 95,199,151, 94,122,201, 33,110, 76, 38,147, 67, 88,137,226, 74, 60,191, -124,249, 50,234,213,171,167,240,243,243,235,232, 65, 96,137,226, 13,145,145,145, 72, 77, 77,197,217,179,103, 81,166, 76, 25,216, -108, 54,108,223,190, 29, 89, 89, 89,144,203,229, 80, 40, 20,176, 90,139, 30,146, 80,181,106,213, 14,171, 86,173,170,183,114,229, -202, 12,177, 5,247,195, 15, 63,128, 82,138,144,144, 16,228,229,229, 33, 41, 41, 9,187,119,239, 6,199,113,240,241,241, 65, 76, - 76,140,178, 91,183,110, 77, 62,251,236, 51, 57,128, 79, 11,161,126,225,229,151, 95,214,235,245,122,140, 26, 53,138, 90,173,214, - 89,132,144, 6, 61,122,244,248,112,196,136, 17,129,183,110,221,178,188,249,230,155,199,173, 86,235, 28,123,124,200, 41,165, 54, - 15, 9,177, 80,203,149,205,102, 19,195,244,102,110,110, 46,130,131,131,203,120, 24,163, 5, 0,138,131, 7, 15, 54, 2, 32,155, - 60,121,178, 26, 64,146,179,184,178, 88, 44,200,205,205,133,193, 96,176,101,101,101, 37,143, 25, 51,134, 91,189,122,181,204,254, -206, 5,119, 2, 11,120,209, 82,189,186, 78, 73,169,236,163,165, 75,151,250,180,111,223,158,241,241,241, 65, 78, 78,142,254,183, -109,219,124, 90,183,108, 18, 51,109,250,204, 29,250,232,154, 73, 7, 79,221,192,189,196, 44, 88,108, 54,196, 68,248,229,219,191, - 36, 60,118,216, 39,168, 56, 44, 88,206, 98, 98,223,190,125,120,241,197, 23, 29,121, 93,161, 80, 20,176,116,121,226,100, 89, 22, - 47,190,248,226, 3, 22,157, 61,123,246,184,181, 54,121,130,179, 24,114, 21, 69,238,132, 23,195, 48,240,212,203, 44, 90,239,220, -137, 44,103, 43,190,139,104,243, 84, 73,128,101, 89,140, 24, 49, 2,114,185, 28, 99,199,142, 5,203,178,168, 93,187, 54, 88,150, - 69,195,134, 13, 33,151,203,209,170, 85,171, 98,251,253,200,145, 35,168, 83,167,142,195, 77,181,107,215, 70,253,250,245,193,178, - 44,154, 54,109, 10,185, 92,142,118,237,218,121,195,249, 97, 78, 78, 78, 45, 31, 31, 31, 92,190,124, 25, 50,153, 12,132,144,171, -148,210, 90, 0,240,246,219,111, 95,203,203,203, 43,111, 50,153,240,246,219,111, 19,139,197, 82,115,236,216,177, 31, 1,144, 4, -150,132,199, 89, 30, 21,208, 34, 78, 48,142, 27, 55,238, 67, 66,200, 86,209, 34,229,106,105,114,119,238,134, 95, 20, 65, 98,247, - 96,125, 23,241, 38,118, 29,118, 42,226, 93,139,139,160,114,237, 34,252,211,163, 5, 75, 44,116,189, 21, 88,158, 96, 50,153,158, - 11, 13, 13, 45, 84, 92, 57,255, 90, 44, 22,148, 43, 87, 14, 38,147,233,185,226, 86, 22, 17, 17, 17,176, 90,173, 88,182,108, 25, - 20, 10, 5, 20,138,191,117,133,197, 82,180,113,232,252,249,243, 55,143, 28, 57, 82,167,110,221,186, 1, 63,254,248, 99, 74,243, -230,205, 67,218,183,111, 15,141, 70, 3,163,209, 8,155,205,134, 6, 13, 26,160,106,213,170,136,143,143,199,111,191,253,150, 90, -169, 82,165,224,163, 71,143, 10,137,137,137,183,139,160,110,221,186,117,107, 16, 66,240,219,111,191,165, 81, 74, 79,104, 52,154, - 31,167, 77,155,230,111,177, 88,132, 87, 95,125,245,110,122,122,250, 24, 0, 54,149, 74, 53,171,125,251,246, 47,200,100,178,181, - 60,207, 47, 44,110, 2,117, 13, 91,131,193, 0,181, 90,237,205,146, 16,242,244,244,244, 26, 0,160,211,233, 2, 1, 92,115,164, -108,163,177,128, 8,182, 88, 44,166,192,192, 64, 29, 0,216,223,145, 23, 18, 31, 33, 90,173,118,195,237,219, 55,124,157,199,199, -249,251,251,163, 95,223,190, 76,227, 70,141,148,181,158,123,174,221,132, 47, 86,174,141, 12,210, 91, 98, 34,131, 96,227,109,216, -181, 99,187, 64, 5,219, 14,169,184,121, 50, 2, 75, 20, 25,174, 22, 44,185, 92,142,189,123,247, 62,112, 77,161, 80,224,171,175, -190,242, 74, 16,136, 98,170,176, 46, 50,151, 46, 45,226, 73,184,200,229,114,200,100, 50,124,253,245,215, 16, 4, 1,239,190,251, -110,129,110, 67,103,126, 47, 91,204,142,119,170,126, 34, 0,176, 32,126,182,202,241,190,171,123,197,242,210, 27,171,216,130, 5, - 11,188,178, 96,117,234,212,201,163, 96,117,238, 81,112,118,215, 95,127,253,229,150,119,233,210,165, 30,195,147,231,121,252,242, -203, 47, 14,113, 42,226,227,143, 63,126, 59, 58, 58, 58,108,255,254,253, 72, 76, 76,132,193, 96, 64,110,110, 46, 26, 52,104, 16, -211,166, 77,155, 83,137,137,137,183,206,159, 63,255,146,148,123, 36, 60, 65, 11,150, 57, 46, 46,238, 92, 92, 92,156, 91, 11,149, -171, 37,169, 40, 75,147,147,176,250, 19,246,174,193,113,227,198,125,136,252,225, 51,127,122,241,174,210,181,139,208,173,225,199, - 69, 53,126,230,174,208,245,166,155,208, 75,179, 57, 75, 8,129,201,100,114, 43,172,156, 69,129,213,106, 69,122,122, 58,120,158, -103, 31, 33,162, 30,184,230, 73, 96,157, 61,123,246,245,129, 3, 7, 38,248,249,249,213, 74, 73, 73, 73, 22, 4,161,213,225,195, -135, 67, 88,150,133, 94,175,135, 94,175,199,175,191,254, 10,173, 86,139, 17, 35, 70, 36,243, 60,191,207,215,215, 55,200,104, 52, -158, 78, 76, 76,156, 80,168,114,145,203, 91, 55,107,214, 12, 39, 78,156, 64,102,102,230, 31,132,144, 90,131, 6, 13,106, 91,170, - 84, 41, 50,117,234, 84,211,181,107,215,190, 4,144,162,211,233,150,173, 90,181,170,121,221,186,117,125,250,247,239, 15, 66,200, - 55,148, 82,147,183,126, 54, 24, 12, 5,132, 85,118,118, 54,114,114,114,160,211,233, 56, 47,195, 76,142,252,177, 84,226,120, 42, - 71,220,216,173, 87, 98,252, 80,150,101,105,254, 35, 84, 94, 24,159, 78,167,155,188,114,229, 74,141,235,228, 3,158,231,145,148, -148, 4,189, 94,143,143, 39, 76, 80, 76,122,111, 80, 29,153, 79,216, 97,134, 33,176, 88,105, 38, 21, 44,219, 13, 73,125,246, 75, -197,205,147,129, 40, 8,186,118,237,250, 64,183,160, 66,161,192,206,157, 59,209,189,123,119, 71,131,165,110,221,186, 30, 27, 85, -162, 32,232,210,165,139,195, 18,180,125,251,118,183,221,123,162, 5,202, 27, 33, 40, 62, 59,114,228, 72,176, 44,139,133, 11, 23, - 98,244,232,209, 96, 24, 6,179,103,207, 6,195, 48,152, 56,113,162,215,226,210, 89,184,220,154,153,255, 27, 61, 58, 27,105,139, -195, 0, 0,190,122,189,232,161, 98,149, 61, 44,203, 58, 44, 87,207, 61,247, 28,228,114, 57, 26, 54,108, 8,150,101, 29,150,171, -142, 29, 59, 58,135, 35,245,134,147,101, 89, 92,185,114,197,225,230,134, 13, 27, 22,176, 92,177, 44,139, 78,157, 58,121,227,204, -105,254,254,254,159, 85,173, 90,181,218,156, 57,115,228, 50,153, 12,173, 91,183,174,252,230,155,111,222, 14, 10, 10, 10,154, 60, -121,178,214,205, 59, 26, 0,181,170, 85,171,166,147,114,141,132,199,104,193,250,204,205,173, 0,231, 49, 85,197,224,219,234,252, -188,200,225, 42,138,236, 22,177,125,158,184,220,189, 91, 24,216,162, 90, 99,197, 17, 88,118,243,114,145, 31,211,106,181,103,146, -147,147, 27,106, 52,154, 2,226,202,157,208,146,201,100, 72, 76, 76,132, 86,171, 61, 83,146,145,231,169,139,208, 46,102,222,115, - 10,208, 54, 29, 59,118, 92,190,115,231,206,136, 93,187,118,225,232,209,163, 8, 9, 9,193,130, 5, 11,238, 39, 37, 37,189, 78, - 41,221,233,205,119,203,151, 47, 95, 93,167,211,225,208,161, 67, 0,176, 31,192,128, 97,195,134, 17,142,227,176,104,209,162, 60, - 0, 59,253,252,252, 54,109,220,184,241,185,154, 53,107, 42,119,237,218,149,115,244,232,209, 61, 94,138, 43, 94, 16,132, 7,132, -149,115,152,250,250,250,122, 99,193,178,249,249,249,157,205,206,206,238,101, 52, 26,179, 85, 42,149,111,118,118,182,217, 89, 88, -137,252, 44,203,202,175, 92,185,146, 0, 32,198,207,207,239, 44,156,186, 18, 11, 36, 48,150,109,221,186,117,107,214, 53, 14,146, -146,146,144,152,152, 8,171,213,138,186,117,235, 18, 25,177,201,210,239,156,126, 91, 42, 94,254,153, 2, 77,204,235,226,172, 63, -119, 51, 7,183,111,223,238, 56,103, 24, 6,246,105,251, 30,197,208,206,157, 59,139, 28,136,238,210, 69,232,209, 20, 46, 62,191, -104,209,162,252,237, 40,236,150, 43,134, 97, 48,110,220, 56,168, 84, 42, 76,157, 58, 21,227,198,141, 3,203,178, 30,187, 8,157, -133, 75,217,177,121,206,141,162,252, 76, 97, 31,239, 68, 8,113, 22, 89,196, 91,209, 86,148,245,206, 27,203,191, 51,167,248,158, - 90,173, 46,116,128,187, 11, 39, 41,194,223, 63, 19, 66,110, 68, 68, 68, 28,108,216,176,161,223,241,227,199, 49,123,246,108,133, -217,108, 46,189,107,215, 46,199,119,221,133,151,193, 96,208, 72, 57, 71,194,227,176, 94, 21,113, 59,197,101,252, 20,113,238,174, - 43,226,215,245,121, 56, 93,115,230, 77,113,169,199,156,175,187,138, 42,215,111, 56, 63,147,242,128, 5,203, 83, 33,225, 73,104, -121, 99,193,202,203,203,251,125,219,182,109,245,251,246,237,203, 22,213, 61,104, 48, 24, 16, 22, 22,134,115,231,206,113,121,121, -121,191,123, 97, 25, 43, 49,129,229, 38,194,119,133,135,135,203,108, 54, 27, 42, 86,172,136,168,168, 40,152, 76, 38,100,102,102, -202,188, 21, 87,132, 16, 69,189,122,245,100, 0,144,145,145, 1,228, 79, 39,173, 84,169, 82, 37,156, 56,113, 2, 25, 25, 25,155, - 1,180,153, 52,105, 82,237, 23, 94,120, 65,177,118,237,218,188, 33, 67,134,108,182,217,108, 83,189,180, 62, 88, 56,142, 43,199, - 48,140, 53, 51, 51,243,158,115,120,134,133,133, 5,234,116, 58,146,148,148,100,243, 70, 96,213,170, 85,235,216,157, 59,119, 48, -121,242,228,148,105,211,166, 85,202,201,201,201,200,202,202,226,156, 69,150,201,100, 98,130,131,131, 85,139, 23, 47,214, 0, 64, -173, 90,181,142, 21, 38,176, 12, 6, 67, 41,173,246,239,134,176,217,108, 70, 98, 98, 34, 18, 19, 19,145,148,148,132,156,156, 28, -196,196,196, 32, 47, 47,175,140, 84,188,252, 99, 2,171, 64, 55,153,115,254,118,174,192,139,147,215,157,133, 75,215,174, 93, 29, - 99,183, 68,139,152,120,108,216,176,193,117,224,184, 87, 2,107,209,162, 69, 24, 57,114, 36,212,106, 53,230,204,153, 83,160,139, -208, 85, 20, 8,130, 64,188,241,123,185, 15,140, 72,156, 31, 8,185, 92,142,160, 33, 73, 5,186,226,220, 8, 13,175,220, 57,109, -218,180, 18,233, 34,116,230, 44, 83, 38, 63,171,124,253,245,215,232,213,171, 23,246,239,223,255,208, 93,132,177,177,177, 63,108, -221,186,213,239,252,249,243,200,206,206, 70, 74, 74, 10,204,102, 51,226,227,227, 11,237, 5,176,151,229,106, 41,231, 72,120,194, -248,243, 9,243, 62,242,247, 88, 15, 21,183,215, 2,203, 27, 11,150,217,108,158, 51,106,212,168, 97,109,218,180, 9,244,245,245, - 69, 66, 66,194, 3,226, 42, 55, 55, 23, 62, 62, 62, 48, 26,141,216,178,101, 75,182,217,108,158,227, 73, 20,216,108, 54,132,134, -134, 34, 53, 53, 21, 66, 33,227,162, 25,134,129, 70,163, 65,110,110, 46, 10, 19, 3, 69, 85, 20, 86,171, 21, 54,155, 13, 54,155, - 13, 86,171, 21,197, 92,158, 73, 35, 46,216,106, 48, 24, 0,192, 16, 25, 25, 89, 94,173, 86,227,230,205,155, 0,112, 5, 64,203, -246,237,219,203,211,210,210,232,155,111,190,121,152, 82, 58,194,195,106,246,150,125,251,246,149, 3, 0,141, 70,115, 25, 0,226, -227,227,109,153,153,153, 5, 44,131, 90,173,150,118,239,222, 61,130, 82,138,125,251,246,149, 83, 40, 20, 20,133,172, 89, 5,192, -180,121,243,230,243,126,126,126,171,167, 79,159,222,183,115,231,206,231,106,212,168, 81,206, 96, 48, 36, 27,141, 70,163,201,100, -162, 50,153, 76, 17, 16, 16,160,222,177, 99,199,181,195,135, 15,183,209,235,245,171, 55,111,222,124, 30,128, 91, 75,155, 78,167, -139,207,203,203, 43, 43,198,169,179,184, 74, 76, 76, 4,165, 20, 55,110,220,128, 86,171,189, 35,149, 31,255,104,203,241, 1, 97, -229, 78,108,121, 43,174,156, 5,193,142, 29, 59,138, 92, 3,203, 91, 78,103, 49, 52,122,244,104,204,159, 63,255, 1, 11,214,212, -169,249,109,146, 9, 19, 38,120, 61, 6, 75,180, 86, 37,206, 15, 68,248,200,244, 2,110, 7, 0, 34,186,175,152, 75,178,177, 44, -139,201,147, 39, 63, 48,248,220,185, 11,207,203,174,188, 2,238, 76, 78, 78, 6,203,178, 8, 12, 12, 68,191,126,253,208,174, 93, - 59, 71, 87, 99,113,121, 47, 94,188,120,240,131, 15, 62,168, 25, 27, 27,139, 41, 83,166,164,251,251,251,251,190,245,214, 91,108, -102,102, 38, 41,202,130, 37, 9, 44, 9, 18, 30, 65, 96,137, 25,203,219, 89,132,238, 10, 73, 66, 72, 27,231,181, 50, 40,165, 89, -132,144,126,109,219,182,253,113,221,186,117,154,242,229,203,227,226,197,139, 72, 79, 79,135,197, 98,129, 66,161, 64, 68, 68, 4, - 50, 51, 51,241,221,119,223, 25,243,242,242,250, 81, 74,179,138,226, 4,240, 81,189,122,245,150,204,154, 53, 75, 93,187,118,109, -164,167,167, 35, 55, 55,183,192,170,211,122,189, 30, 26,141, 6,199,142, 29,195,246,237,219,141, 0, 62,242,192,233, 78,197,193, -106,181, 58,132,150, 39,129,229,194,169, 19,173, 56,121,121,121, 0,192,149, 46, 93, 58, 12, 0,110,220,184, 1, 0,183, 99, 98, - 98, 38, 84,168, 80,129,172, 90,181,138, 82, 74,119,185, 19, 87, 46,156,233, 77,155, 54,205, 0, 16,110,177, 88, 20, 0,144,149, -149,101, 13, 14, 14, 14, 85,169, 84,130, 70,163, 17,212,106,181,144,144,144,192,113, 28,167, 0,128,166, 77,155, 90, 0, 36,194, -105,172,135, 11,167, 0, 32,123,233,210,165,159,245,239,223,191, 97,163, 70,141, 98,135, 14, 29,122,246,205, 55,223,100,162,162, -162, 2,114,114,114, 76, 87,175, 94,205,248,226,139, 47,114,142, 28, 57,210, 70, 46,151,223, 94,186,116,233,103, 0,178,237,239, - 62,192,201,113,220,239,187,118,237,122,189,115,231,206,236,189,123,247,144,148,148,228, 16, 87, 73, 73, 73,168, 90,181, 42, 14, - 31, 62,204, 91,173,214, 93,197, 8,207,146,178,220, 72,156,249,141, 15, 42,230,245,194,132,149,216,136,242,150,211, 89, 12,245, -234,213,171,128,213, 74,161, 80, 96,227,198,141,110,203, 13, 55, 43,146,183,113, 93, 15, 74,116,211, 7, 31,124, 80, 64,172,125, -252,241,199,133, 58,205, 83,120,138, 60, 89, 95, 71, 21,156, 69, 88, 72, 62, 47,202,157, 98,217, 41,151,203,241,241,199, 31,123, -109,193,130,203, 24, 44,119,156,162,223,155, 55,111,142,188,188, 60,135,128, 45,204,130,229, 41, 60,121,158, 31, 57,127,254,124, -170,215,235, 95,200,206,206,254,223,157, 59,119, 86,228,229,229, 61,159,149,149, 85,164, 5,203,108, 54,171,164,124, 36,113, 62, -142,181,176,254, 19, 2,203, 94, 57,162, 84,169, 82, 5,246,182, 98, 24,166,192, 81,156,113, 4,246, 12,187,131, 16,210,163,113, -227,198,223,143, 28, 57,210,183,118,237,218,242,178,101,203,194, 96, 48,224,230,205,155, 56,119,238, 28,183,121,243,230,236,188, -188,188,255, 81, 74,119,120,193,183,146, 16,178,189,125,251,246, 19, 27, 52,104, 48,248,147, 79, 62,145, 85,174, 92, 25, 89, 89, - 89, 8, 8, 8, 64,104,104, 40, 46, 93,186,132, 45, 91,182,240,169,169,169, 75, 0, 76,162,148,166, 20,183,129,111,181, 90,241, -202, 43,175, 64, 16, 4,204,157, 59,215,121, 65, 52,111, 96,181, 90,173, 20, 0, 73, 77, 77, 5,128, 60, 81,112, 93,189,122, 21, - 0,238,148, 45, 91,214, 7, 0,118,237,218, 69, 0, 28,242,214, 93,206,150,172,170, 85,171,222,116, 45, 20, 69,203,149,104,245, -130,231, 13,154, 77,189,123,247, 78,206,203,203,107, 63,122,244,232,137,139, 22, 45,234,187,104,209,162, 7, 30,210,235,245,171, -103,207,158, 61,169,119,239,222,201,133, 89,175,236, 22,187, 9,175,189,246, 90,239, 51,103,206,248,170,213,106, 24, 12, 6,164, -165,165,193,106,181, 34, 38, 38, 6,201,201,201, 88,185,114,101,142,209,104,252, 84,202,142,255, 12,156, 5, 65, 97, 86, 44, 79, -226,170, 40, 43,206,207, 63,255,236,118,141,169,226,114,186,138, 12,111,215,166, 42,170, 49, 36, 46, 47,227,110,233,135,226,148, -107,238,120, 89,150,197,231,159,127,238, 88,108,213,157,229,170, 56, 22, 44,145, 51, 48, 48, 16, 0, 32,110,109,212,169, 83,167, -135,230,181,111, 27, 54,194,233, 27,211,198,140, 25,243, 89,213,170, 85, 43, 3, 80, 57,135,129,180,169,130, 4, 9, 37, 36,176, -120,158,143,175, 82,165, 74,129,130,205,211, 38,163, 54,155, 45,222,203, 76,189,157, 16, 18, 51,123,246,236, 81, 58,157,174, 77, - 94, 94, 94, 77,123,129,113,198, 96, 48,236, 50,155,205,243,138,179, 57,179, 93, 48, 13, 39,132,204,109,223,190,253,212, 86,173, - 90,245,124,239,189,247, 8,165, 20,139, 23, 47,166,215,175, 95,223, 0,224, 35, 74,233,245,135, 9,164,192,192,192,243,223,125, -247, 93,216,143, 63,254, 8,155,205,134,121,243,230,193,215,215,247,124,113,220,199,178,236,247,141, 26, 53,234,123,248,240,225, -213,148,210,179, 42,149,234,135,166, 77,155,246, 59,116,232,208, 58, 74,233, 5,150,101,127,104,216,176, 97,191, 99,199,142,109, -162,148,158, 46,134,243, 28,150, 44,142,115,223,163,232,206,114,229, 1,217, 3, 7, 14,180, 14, 28, 56,240,189,222,189,123, 47, -251,243,207, 63,159,207,204,204,172, 9, 0,254,254,254,103,234,215,175,127,108,221,186,117,151,236,150, 43,147, 39,191, 19, 66, -186,215,172, 89,115,211,148, 41, 83,116,177,177,177,108,197,138, 21,113,235,214, 45,156, 61,123,150,251,246,219,111,115,141, 70, - 99, 87, 74,105,134,148, 29,255, 57,129, 69, 41,133,191,191,127,129,198,147, 56,117,191,184,221,130,206, 21,178,184,165,142, 43, -111, 97,156, 30, 6,185, 2, 0,124,124,124, 28,139,146,122, 51, 52, 65, 16,138, 94, 79,141, 82,234,224, 20, 15, 47,196,149,199, - 25,127,246,173,106,188,230,244,102,153, 6,157, 78, 7,155,205,230,224,245, 98, 38, 39, 41,102,156,253, 12,224,231,138, 21, 43, - 94, 5, 80, 65, 18, 85, 18, 36, 60, 6,129,149,158,158, 94,239,113,126,216, 46,160, 38,217,143,146,226,188, 14,160, 55, 33,100, -214, 31,127,252, 33,246, 23, 76,246,180,159,161, 39, 92,188,120,177,179, 92, 46,255,106,245,234,213, 13, 40,165,240,243,243, 59, -114,235,214,173,183,138,195,193,113,220, 96, 66,200,187,226,172, 64,179,217, 60,152, 16,242, 62,165,212,224,116,223,113, 94, 92, -175, 3, 48, 83, 74, 35, 11,185,111, 46,134,184,114, 88,178, 0, 88,214,173, 91,151, 11,224, 20,254, 94,231,202,102, 63, 76,112, -234, 22,244, 16, 47,187, 9, 33, 21, 63,254,248,227,105, 50,153,172,181,193, 96,136,210,233,116,119, 57,142,251, 61, 47, 47,239, - 35, 74,105,154,148, 21,255, 57, 88, 44,150,123, 85,170, 84, 97,221, 53,156,138,170,192,139,106, 80,241, 60, 31, 95,169, 82, 37, -143,141, 50, 55,156,247,138, 72, 71,183, 99, 98, 98, 24,111,185, 68, 88,173,214,228,162,220, 25, 19, 19,131,226,114,122,242,123, -185,114,229,220,250,221,131, 16,188, 87, 68,249,241, 80,156, 69,133,103, 81, 48, 26,141, 25, 33, 33, 33,185, 38,147, 73,110, 54, -155,229, 28,199, 21, 48, 55,106, 52,154, 20, 41,231, 72,144,240,144, 2,235,223, 12,187,160,234, 82,130,124,102, 0,175,150, 0, -143,201,229,220, 80,212,121, 49,241, 56, 44, 64, 2,128,188, 18, 10,195, 84, 0,111, 74, 89,238,233, 67,106,106,234, 11, 37,205, -153,150,150, 86,226, 13,180,148,148,148,134,143,193,239,245,254,171,156, 69,225,222,189,123, 47, 72, 57, 67,130,132, 71, 3, 35, - 5,129, 4, 9, 18, 36, 72,144, 32, 65, 66,201,130, 0,104,227,238, 70,113,102, 7, 16, 66,218, 20,247,195,158,248, 37, 78,137, - 83,226,148, 56, 37, 78,137, 83,226,124,246, 56, 61,113, 63, 51,179, 19, 41,165,143,237, 0,208, 70,226,148, 56, 37, 78,137, 83, -226,148, 56, 37, 78,137,243,191,118, 72, 93,132, 18, 36, 72,144, 32, 65,130, 4, 9, 37, 12, 73, 96, 73,144, 32, 65,130, 4, 9, - 18, 36, 72, 2, 75,130, 4, 9, 18,158, 12, 8, 33, 1, 79, 51,159, 4, 9, 18, 36,129, 37, 65,130, 4, 9,255, 54,113, 85, 3, -192,148, 18,166,157, 98,231,149, 32,225, 63,145,135, 8, 33, 53, 37,129, 37, 65,130, 4, 9, 18,196,138,161, 99,249,242,229, 39, - 3,240, 41, 97,106,159,242,229,203, 79, 38,132,116,148, 66, 89,194, 51,154,119, 84,132,144, 87, 25,134, 57, 86,163, 70,141, 51, -177,177,177,167, 25,134, 57, 76, 8,233, 69, 8, 97,255, 83, 97,225,180, 41,242, 94, 0,160,148, 54,151,146,136, 4, 9, 18,254, -163,149, 3, 11, 96,112,223,190,125,187, 76,159, 62, 93, 89,170, 84,169,187,148,210,254, 37,200,191,234,238,221,187,209, 3, 6, - 12,200,221,189,123,247, 14, 0, 75,220,109,236, 46, 65,194,191, 48,239,148, 5, 48,216,199,199,103, 80,139, 22, 45, 2,186,118, -237,138,160,160, 32,112, 28,135,187,119,239, 98,235,214,173, 56,116,232, 80,130,197, 98,153, 15,224,107, 74,105,102, 33, 60,207, -140, 22, 33,148, 82,113,227,226, 22,118, 79,237,149,146,138, 4, 9, 18,254,131, 21,132, 30,192,248, 57,115,230, 52, 24, 60,120, -112, 57,147,201, 20, 31, 16, 16,112,163,164, 5,150,213,106,109,147,146,146,114,124,234,212,169, 88,188,120,241, 5, 0,113,197, -217,123, 85,130,132,167, 48,239,140,235,209,163,199,212,176,176, 48,166, 70,141, 26,136,136,136,128,217,108,134,209,104, 4,165, - 20, 44,203,130, 82,138,172,172, 44,236,219,183, 15,187,119,239, 54,103,100,100,124, 7, 96, 30,165,244,138, 19,207, 51,165, 69, - 28, 2,171,184,155,130, 74,144, 32, 65,194, 51, 84, 65,148,211,104, 52, 31,111,217,178,165,122,147, 38, 77, 66,115,114,114,110, -216,108, 54, 67,100,100, 36, 69,254,166,230,238,144, 69, 41, 29,225,134,107, 1, 0,191, 66,222,209, 91,173,214,250,169,169,169, -199, 1, 96,227,198,141, 24, 63,126,124,154,209,104,156, 76, 41,189, 41,197,132,132,127,105,254,185,124,241,226,197, 74, 60,207, - 35, 53, 53, 21,102,179, 25,121,121,121, 14,129, 37,147,201, 64, 41, 5,199,229, 27,107, 5, 65,192,137, 19, 39,176,107,215, 46, -122,227,198,141, 79, 40,165,147, 69,129,245, 44,105, 17, 73, 96, 73,144, 32,225,191, 94, 57, 52, 14, 15, 15,127,247,143, 63,254, - 40, 91,166, 76, 25,125,110,110,238, 53,142,227,108, 0, 16, 16, 16, 16, 43,147,201, 84,174,239,240, 60,111, 86,171,213, 7,220, - 89,183, 8, 33,171, 76, 38, 83, 19,119,239,217,223,229, 50, 50, 50, 78,137,231,167, 79,159,198,160, 65,131,172,137,137,137,115, - 40,165, 7,165, 24,145,240,111, 20, 88,167, 78,157,170,180,102,205, 26,212,169, 83, 7,213,170, 85, 67,110,110,174, 67,108, 89, - 44, 22,216,108,182, 7,222,203,206,206,198,187,239,190,123,133, 82, 90,249, 89, 20, 88,226,128,179,207,164, 49, 88, 18, 36, 72, -248, 47, 35, 49, 49, 49,213,223,223,255,190, 32, 8, 84,188,150,145,145,113,238, 97,184, 30,246, 61, 9, 18,254,165,176, 89, 44, - 22,212,171, 87, 15, 55,111,222,196,137, 19, 39, 28, 66, 43, 53, 53, 21, 9, 9, 9, 5, 30, 62,118,236, 24, 78,158, 60,137,102, -205,154,185,242,124,246,204,141,193,178, 43,199,230,118, 79,237,149,210,138, 4, 9, 18,254, 99, 45,240,114, 26,141,230,227,184, -184,184,160,151, 95,126,217,113,253,113,116, 17, 38, 36, 36, 56, 90,232, 82, 23,161,132,103, 36,255,116,143,140,140,252,118,216, -176, 97,126, 13, 26, 52, 64,124,124, 60,238,221,187,135,140,140, 12,212,174, 93, 27,177,177,177,184,126,253, 58,182,111,223,142, -147, 39, 79, 66,165, 82, 33, 58, 58, 26, 62,171,215,224, 43,130,243,148,210, 88, 39,174,103, 70,139, 56, 4,150, 4, 9, 18, 36, -252,199, 43, 9, 61,128,241, 67,134, 12,169,246,209, 71, 31,129, 16,130,200,200,200,172,146, 30,228,158,144,144,224, 71, 41,133, - 52,200, 93,194, 51,150,127,124, 1,140,137,137,137,121,127,200,144, 33,170,234,213,171, 35, 62, 62, 30, 41, 41, 41,200,200,200, -192,145, 35, 71, 0, 0, 81, 81, 81,136,138,138,194,165, 75,151,112,240,224,193,236,220,220,220,129,148,210, 31,159,201, 48,145, - 4,150, 4, 9, 18, 36, 56, 42, 9, 22,192,224,150, 45, 91,182, 91,188,120, 49, 42, 85,170, 84,226, 2,235,202,149, 43,126, 67, -134, 12,129,180, 76,131,132,103, 52, 15,133, 2,152, 80,189,122,245,193,131, 6, 13, 98,203,148, 41,131,123,247,238,225,143, 63, -254, 64,133, 10, 21,112,247,238, 93,236,222,189,219,146,146,146, 50, 23,192,116, 74,105,214,179, 26, 22,204, 99, 14,232, 54, 18, -167,196, 41,113, 74,156,255, 22, 78, 74, 41, 71, 41, 93,184,123,247,238, 37, 29, 59,118, 20, 30,135, 59, 59,118,236, 40,236,222, -189,123, 9,165,116, 97, 81,226, 74,138, 35,137,243,223,200, 73, 41, 77,166,148,142, 56,127,254,124,197,119,222,121,231,251, 41, - 83,166, 8,130, 32, 32, 52, 52, 20,235,215,175, 23,214,174, 93,251,109, 74, 74, 74,121, 74,233,184,103, 89, 92, 1,127, 15,114, -151, 32, 65,130, 4, 9,127, 87, 18,191, 18, 66,226, 1, 12, 46, 97,234,220,235,215,175,127, 78, 41, 61, 43,133,178,132,103, 60, - 15,221, 2,208,159, 16, 50,243,196,137, 19, 31, 1,160, 0,166, 80, 74, 47,252, 87,194, 64, 18, 88, 18, 36, 72,144,224,190,130, - 56, 75, 8,153, 80,194,180, 19, 40,165, 25, 82,232, 74,248, 15,229,163,115, 0,250,252, 23,253, 46,237, 69, 40, 65,130, 4, 9, -133, 87, 14, 25, 79, 51,159, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, 72,144, 32, 9, 44, 9, 18, 36, 72,144, 32, 65,130, - 4, 9, 15, 7, 2,160,176,153, 0,187,188, 38,121,136, 25, 10,158,248, 37, 78,137, 83,226,148, 56, 37, 78,137, 83,226,124,246, - 56, 61,113, 23, 71,127, 60,213,160,148,122, 60, 96, 95, 47,171,184, 7,128, 54, 15,243,158,196, 41,113, 74,156, 18,167,196,249, -239,229,180, 55,222, 9,242,123, 73, 24,241,252,105,246,251,195,212,115, 79,202,239,255, 21,206,103,237, 96, 61,168, 75, 71, 32, - 17, 66, 4, 0, 2, 45,129,149, 73, 9, 33, 98, 4,148, 8,159,132,199, 96,218,204,143, 35,242,183, 14,151,226, 73,130, 4, 9, -197, 42, 59,100, 78,149, 44, 15,128, 39,132,224,105, 43, 75, 74,178,158,123, 28,126,255, 47,115,254,219,193, 22, 21, 80, 50,153, -108, 71,112,112,112,203,212,212, 84,193,126, 29, 74,165, 18, 12,195, 64, 46,151, 27,115,114,114,244, 15, 17, 9,223,132,133,133, - 13, 72, 75, 75, 19, 24,134,129, 90,173, 6, 33,196,193,153,153,153,169,255,167, 3,165,108,217,178, 25, 70,163,209,199,245,186, - 90,173, 54,221,190,125,219,247,191, 80, 64, 42, 20,138, 30,129,129,129,254, 41, 41, 41,148, 97, 24, 40, 20, 10,200,100, 50,216, -255,115,153,153,153,203,189,229, 11, 12, 12, 60, 22, 24, 24,232, 47,190, 79, 8, 65, 90, 90, 90,102, 82, 82,210,243, 0,160,209, -104, 14,234,116,186, 32,150,101, 33,147,201, 32,147,201,144,151,151,151,150,154,154,218, 88,170,174,254,157,216,176, 97,131,172, -125,212, 27, 21, 88,106,172,197, 48,212, 79, 16, 72, 22, 71, 52,167,183,223,251,230,154, 55,239,247,236,217,147,255,135,243, 64, - 99,123,203,226, 96, 9,241, 57,239, 79,104, 2,144, 10,224, 26,128,245,148, 82,227, 63, 29, 95, 42,149,106,110, 88, 88,216,160, -220,220,220, 60, 66, 8, 37,132, 32,191, 26,192, 3,191, 60,207,199,167,166,166,214,243, 80,201,202,149, 74,229,236,240,240,240, -215,242,242,242,242,236,124,148, 16,130,136,136,136, 2,124, 0, 96,179,217,226, 83, 82, 82,234,121,227,214,208,208,208,165, 26, -141,230,127,121,121,121, 6,187, 32,114,238,145,113,174,196,175,167,164,164, 52,245, 36, 8,148, 74,229,188,176,176,176,215,237, -126, 7, 33,132,134,132,132, 60,178,223,195,194,194, 94, 51, 24, 12, 5,252, 30, 26, 26,234,150,179, 48,191,187,227,116,118, 39, - 33, 4, 33, 33, 33,143,236,206,167,145,243,153, 21, 88, 0, 24, 66,200,230,198,141, 27,183,216,187,119, 47,115,241,226, 69,166, -106,213,170,224,121, 30,130,144,159,158,163,163,163,181, 15, 81,200,172,104,218,180,233, 43,251,246,237, 99, 54,111,222,204,212, -175, 95, 31,132, 16,240, 60, 15,158,231, 81,163, 70, 13,205, 35, 22, 98, 62, 44,203,190,171, 84, 42,155,115, 28, 87, 13, 0,228, -114,249, 5,179,217,188,151,227,184, 57,148,210, 92,111,120,172, 86,171, 54, 57, 57,249,129,176,137,137,137, 81, 62,172,219,244, -122,253, 33,134, 97, 98, 28, 1,108, 23, 26,238, 50,177,248, 75, 41,189,145,146,146,210,168, 48,206,128,128, 0, 7,103, 97, 28, -174,215, 4, 65,184,145,156,156,220,200,131,184,122,185,105,211,166,126,187,118,237, 34,119,239,222, 37, 26,141, 6,130, 32,128, -231,121,216,108, 54, 84,175, 94,189, 88,235,167,249,251,251,235,199,141, 27, 87,161, 67,135, 14,216,184,113, 35, 94,125,245, 85, - 52,105,210,228,138,120, 95,167,211, 5,157, 63,127,190, 82, 96, 96, 32,242,242,242,144,149,149,133,182,109,219,254,235, 51, 87, -131, 58,165,166, 16,134, 4, 58, 10,127,142, 79, 63,114,234,222, 35,175,171,228,239,239,127, 82,169, 84,134,137,241,202, 48,140, -219,184,118,190,102, 50,153,146, 82, 83, 83,235,120,200, 63,101, 1,116,145,201,100, 21, 89,150,173, 2,160, 44,199,113, 97, 0, -160, 80, 40,146,100, 50,217, 45,155,205,118,201, 98,177, 92, 5,240,179,125, 33, 65,183,104, 31,245, 70, 5,194,229,245,204, 49, - 11, 29,181,229,167, 87,206,187, 62,238,178, 86,149,247,107,251,168, 55, 54,120, 43,178,254, 65,113, 85, 46, 60, 60,252, 93,251, -255,251, 37,180, 9,179,159,201,100,106, 34,147,201, 84, 28,199, 33, 41, 41, 41,117,201,146, 37,183, 23, 44, 88,208,146, 16, 50, -203,211,194,163, 13,235,149, 62,206, 48, 76, 52,236,242, 65,160,124,252,225,227,119, 75,164, 98,146,201,100,243, 94,122,233,165, -215, 55,108,216,160, 61,113,226,132,182, 90,181,106,142,242, 73, 16, 4,184, 26, 30,202,149, 43, 87,100,240, 1, 96, 25,134,153, -219,179,103,207,190,171, 86,173,210,222,190,125, 91, 27, 25, 25,233,224,116, 22,111, 34, 34, 35, 35,189,114,107, 80, 80,208, 55, - 29, 58,116,232,191,114,229, 74,249,150, 45, 91, 52,193,193,193, 8, 10, 10,130, 66,161,120,224,217,198,141, 27,123, 90,137,159, - 97, 24,102, 94,183,110,221,250,175, 93,187, 86,123,244,232, 81,109,141, 26, 53, 32,147,201, 30,217,239,221,187,119,239,187,102, -205, 26,237,153, 51,103,180, 21, 43, 86, 4,195, 48, 96, 24,230, 1, 62,134, 97, 80,170, 84, 41,175, 56,187,118,237,218,119,221, -186,117,218,147, 39, 79,106,171, 84,169,226, 8, 79,167,238,185, 98,187,243, 41,231,124,246, 4,150,221, 92,186,170,113,227,198, -237,247,238,221, 43, 3,128,147, 39, 79, 34, 61, 61, 29, 81, 81, 81,240,241,241,129, 74,165,130,201,100,162,197, 44,180,190,177, -139, 43, 57, 0,108,250, 95,119,220,144, 3, 35,146, 45, 80, 40, 20,184,126,253, 58,100, 50, 25,125,132, 66,177,153, 94,175, 95, -249,227,143, 63, 6,212,169, 83,135, 73, 73, 73, 65, 76, 76, 12,210,211,211,159,223,183,111, 95,221, 55,222,120,227, 13, 66,200, -171,148,210,125,222,114,254,250,235,175,208,233,116,208,106,181,208,233,116,176, 88, 44,228,161, 3,154,101,163,111,221,186, 21, -234,227,227, 3, 65, 16, 28,135, 75,255,181, 3,130, 32,160, 82,165, 74, 86, 15, 5, 99,244,237,219,183, 67, 53, 26, 13, 40,165, - 5,248,120,158,135, 74,165,114,110, 41,128,231,121,196,196,196, 88, 61, 89,174, 68,113, 5, 0,171, 87,175, 70,120,120, 56, 66, - 67, 67,161,211,233,160,209,104, 10, 84,232, 94, 22,224,104,223,190, 61, 62,253,244, 83, 76,159, 62, 29, 99,198,140, 41, 80,192, -202,229,114, 4, 6, 6, 98,219,182,109,208,235,245, 40, 83,166, 12,228,114,249,191,223, 18,200,144,192,195,199,239, 56, 44,178, - 47,182,170,202, 54,168, 91,102,145, 61,134,193, 48,128, 32,228, 87,153,132,128,114, 54, 33,227,207,211,247, 38,122, 17,158,145, -183,111,223, 14, 85,169, 84, 94,185,131,231,121, 68, 69, 69,201, 60,228,159,142,177,177,177,155,134, 14, 29,170,168, 88,177, 34, - 81, 40, 20, 96, 89, 22, 44,203,138,233,177, 12,165,180,140, 32, 8, 45,146,146,146,232,130, 5, 11,102, 18, 66, 94,162,148,254, -234, 54,189, 83, 99,173, 28,179,208,113,255, 95,120,190,103,155, 15,176,109,253,184,231,155,214, 22,224,171, 53, 94,179, 91,110, -158, 86,113,165,215,104, 52, 31,239,223,191,191, 82, 78, 78, 78,118,147, 38, 77, 62, 38,132,188, 83, 18,155, 49,103,100,100,156, - 19,255, 43,149, 74,140, 26, 53, 10, 29, 58,116,240,111,219,182,237,104, 66,200, 91,148, 82,107,225, 74, 64, 22,125,240,216,205, - 80,241,188,107,251,154,138, 70,245,203, 36,229, 55,196, 92,159,166, 16,120, 33,254,232, 95,241,245,188,240,239,204, 30, 61,122, -244,219,176, 97,131, 15, 0, 44, 94,188, 24, 61,122,244, 64, 96, 96, 32,180, 90, 45, 20, 10, 5,228,114,121,129, 95, 15, 22, 33, - 25,128,153,125,250,244,233,185,106,213, 42, 95, 0, 88,181,106, 21,186,119,239,142,160,160, 32,248,250,250, 66,169, 84, 66, 38, -147, 21, 59,252,130,130,130,190,105,242,252,243, 3, 87,174, 92, 9, 0,248,232,157,119,208,225,133, 23,224,163,213, 64,171, 81, - 66, 12, 11,165, 76,142, 23, 71,140,244,228,111, 6,192,172, 30, 61,122,244, 94,187,118,173, 47, 0,156, 56,113, 2,201,201,201, - 8, 11, 11,131, 70,163,129, 82,169,116,248,153, 16, 2,141, 70,227,149,223,123,244,232,209,115,205,154, 53,190, 0,176, 98,197, - 10,180,111,223,222,225,119,149, 74, 5,133, 66, 81,224,112, 21,155,238, 56, 95,122,233,165,158,235,214,173,243, 5,128,229,203, -151,163, 77,155, 54, 8, 8, 8,112,132,167,200, 85,156, 56,122,154, 57,159, 73,129, 37,142,141, 10, 11, 11,235,189,127,255,126, -198, 73, 28, 64,165, 82, 65,165, 82, 65,169, 84, 58,186, 9,139, 81,104,145,176,176,176, 1,251,246,237,115,188,100,161, 15,152, -168,139, 93,113, 59,241,183,105,217,178,229,154,173, 91,183,170, 21, 10, 5,140, 70, 35,206,157, 59, 7,127,127,127, 40,149, 74, -116,235,214, 77,214,184,113,227,160, 22, 45, 90,108, 36,132,244,245,102,134, 2,165, 20, 62, 62, 62, 5, 4,214,163,118, 33,107, - 52, 26,108,217,178, 5, 50,153,204,109,193,229,252, 63, 52, 52,212, 27,127, 67,165, 82,225,208,161, 67,144,201,100,144,203,229, - 96, 89, 22,114,185, 28,191,252,242, 11,222,123,239, 61,164,166,166,130, 16, 2,185, 92, 14, 95, 95,143,189,155, 36, 48, 48,208, - 95, 20, 87,162,248,209,104, 52,144,203,229,132,101, 89, 34,118,225, 17, 66,136,183,125,234, 12,195,224,251,239,191,199,140, 25, - 51, 48,118,236, 88, 44, 93,186, 20,181,106,213,114, 22,159,200,206,206, 70, 64, 64, 0, 2, 2, 2,160, 86,171, 31, 58, 45, 60, - 77,112, 13,157,217,115,230,107, 33, 80,228, 15,242, 16, 0, 1,160,160, 16,168,128,164,123,215,240,201,167,159,123, 93,235,168, - 84, 42, 28, 60,120,208, 33,130, 88,150, 5, 33, 4,206,194, 72, 60,194,195,195, 61,242, 41, 20,138,207,126,250,233, 39,229,247, -223,127,143,181,107,215, 58,210,150, 78,167,131,191,191, 63,130,130,130, 28, 71,116,116, 52,249,246,219,111, 21,181,106,213,250, - 12,192,175,238,227,156,250,105,203, 79,175,220,179,205, 7, 0,128,158, 31, 80,100, 92,153,250, 28,147, 57,209,239, 41, 22, 87, - 44,128,241, 91,182,108,169, 30, 25, 25,169,214,233,116,183,227,226,226,130, 70,141, 26, 53,158, 16, 50,225, 17, 55,101,206, 18, -173, 52,106,181, 90,221,188,121,115,229,180,105,211, 80,161, 66, 5,188,241,198, 27,129,139, 23, 47,238, 6, 96,125, 81,229,145, - 51, 22, 44, 92,228, 79,105,126,250,161, 2, 45,240,155,158,124, 11,239,140,254,196, 43, 71,149, 42, 85,106,240,198,141, 27,125, -156, 45, 73,206,149,191,115, 25, 37, 30,133, 9, 2,187, 21,131, 41, 93,186,244,192, 31,126,248,193,193, 25, 28, 28,236, 40,151, - 88,150, 5,195, 48,216,191,127, 63,226, 62, 27,143,128,144, 72,204, 95,184,216,163, 59, 67, 67, 67,151,118,236,216,241,127, 43, - 86,172,112, 92,171, 89,190, 60, 58, 53,126, 1,161,193,122, 4, 7,228,151,109, 84, 32, 56,125,233,166,199,250, 8, 0, 83,170, - 84,169, 55,214,175, 95,239,227,220, 16, 20,253, 10, 0,121,121,121, 14,171,189,197, 98, 65,189,122,245,188,242,187, 51,167,104, - 93, 19,197,154,107, 89, 47, 54, 96,138,226, 44, 85,170,212, 64, 81, 0, 3, 64, 96, 96, 96, 1, 14,185, 92,142,245,219, 86, 62, - 80, 55, 60, 42,103,113,227,221,149,243,230,205,155,152, 54,109, 90,129,120, 23,173, 89, 81, 81, 81, 88,176, 96, 65, 81,156,238, - 80, 31, 64,136,211,185, 5,128,210,233, 55, 5,192,159,110,158, 19,175,203, 1, 60,103,191,199, 3,200, 1,224,239,134,175, 48, -158, 84,228,111,247, 19,226,242,188,235,119, 10, 10, 44, 66,136,152,123, 91, 2, 56,152,154,154, 42, 92,188,120,145, 57,113,226, - 4,228,114, 57, 66, 67, 67, 81,191,126,125,177,251, 12,114,185, 28, 58,157,142,248,251,251, 39,137, 21,174, 24,120,206,125,233, - 78, 66,134, 73, 79, 79, 23,118,238,220,201,172,122,169, 29, 44, 20,168,253,113, 28,218,119,238,140,237, 81, 74,200, 0, 60,127, - 49, 21, 90,173,150,149,203,229, 54, 49, 18, 68, 78,231,177, 89,174,226,136, 16,226,171,211,233,190,253,249,231,159,213, 12,195, - 32, 39, 39, 7,130, 32,160, 73,147, 38, 96, 24, 6,103,207,158,197, 71, 31,125,132, 77,155, 54,225,167,159,126,210,212,169, 83, -231, 91, 66, 72, 53, 74,105,142, 83,225,181,203, 93,226,244,245,245,133, 86,171,117, 8, 44,209,207,206,166,110,241,121, 74,233, -189,212,212,212,186, 69,113,242, 60,143,238,221,187,131, 16, 2,153, 76, 86,160,208,113,254, 85, 40, 20, 56,123,246,236, 3,137, -207,157, 48, 20,253, 10, 0, 90,173, 22, 62, 62, 62,216,179,103,143,227,126,237,218,181, 97,177, 88, 16, 28, 28,140, 11, 23, 46, -184, 43,184, 11,112,166,164,164,208,132,132, 4,178,106,213, 42,200,229,114, 4, 5, 5, 65,171,213,146,149, 43, 87,142, 87, 40, - 20,209, 38,147, 73,176, 88, 44, 80, 42,149,243, 69,107, 22,203,178,134,172,172,172,160,194, 56,101, 50, 25,134, 14, 29,138,247, -223,127, 31, 75,151, 46,197,219,111,191,253,128,133,203,100, 50, 33, 56, 56,216, 33,178,188,241,251,163, 11,160,199,204, 41, 80, -156, 59,185, 29,231,207,236,130,192, 11,224, 5, 10, 74,121, 8, 28,112, 98,231,145, 74,247,111, 36, 68, 81, 80,192,222,145,161, -202,202,229, 90, 4,171,170, 0,216,188, 39,213, 60,215, 83,250,100, 89, 22, 54,155, 13, 63,255,252, 51,174, 93,187,134, 29, 59, -118,192,104, 52, 58,194,177, 97,195,134, 24, 56,112,160, 91,129,229,202, 73, 41, 93,113,247,238,221,218, 77,154, 52, 33,153,153, -153,200,204,204,132,209,104, 4,207,243,224, 56, 14, 44,203, 66,173, 86, 67,163,209, 32, 44, 44, 12, 38,147,137,154,205,230, 21, -133,113, 10, 2,201,202,187, 62,238,242,182,245,227,158,239,249, 1,197,134, 25, 4, 21, 74,171,242,126, 63,238, 59,112,243,129, - 49,109, 1, 80,193, 94,234, 48, 0,181,241, 66,234,251,227,191, 24,254,196,227,168, 32, 6,207,153, 51,167, 65,147, 38, 77, 66, -179,179,179, 47, 10,130, 64, 95,126,249,101, 92,190,124,185,218,226,197,139, 7, 3, 88, 88, 92, 78, 66, 72, 75,251,253, 17,206, - 21,252,182,109,219, 94, 2, 48, 96,217,178,101,232,209,163, 7, 22, 47, 94, 28,235, 42,176,156, 57, 41,165,184,117,101, 63,110, - 93, 61, 0, 65,160, 78, 86,112,247,255,169,151,238, 52, 24, 12,166,191,254,250,203,103,217,178,101, 8, 13, 13, 69,185,114,229, -160,213,106,161, 86,171, 11, 84,174,206, 21,174,167,188,105, 52, 26, 77,183,110,221,242, 89,179,102, 13,130,130,130, 80,182,108, - 89,104,181, 90, 40,149, 74, 71, 67, 96,213,170, 85, 88,253,105, 63,220,186,116, 6,221, 59,181,245,232, 78,173, 86,251,191, 21, - 43, 86, 20, 48,121,132, 5, 4,128,149, 51,144,201, 9, 2, 90,191,148,111, 37,252,227,199, 66, 87,119,116,225, 36, 57, 57, 57, -166,163, 71,143,250, 28, 63,126, 28,130, 32,160,108,217,178,200,203,203,131, 94,175,119,248,127,231,206,157,232,214,173, 27,190, -255,254,123, 52,108,216,208,163,223,115,115,115, 77,103,206,156,241,249,225,135, 31, 16, 24, 24,136, 82,165, 74, 57,252, 46, 30, -114,185, 28, 50,153, 12, 49, 49, 49,200,202,202,130,143,143,143,199, 56, 58,113,226,132,207, 15, 63,252,128,128,128, 0, 68, 71, - 71, 59, 44,108,162, 40,154,177,232,211, 2, 28,106, 18,241,200,156,197,141,119, 87,206,151, 94,122, 9, 21, 42, 84,128, 94,175, -135, 78,167,115,112, 23,197,233,164, 69, 90, 80, 74,247,186, 68, 97, 8, 33,100,171,211,247, 59, 19, 66,182, 58,255, 22,246,156, -253,111,179,241,227,199,215,155, 62,125,250,180,134, 13, 27,174, 57,116,232,208,234,194,248, 10,227, 25, 63,126,124,236,244,233, -211,167, 57, 63,239,230, 59, 15, 90,176, 40,165,196,238, 57, 22, 0,170, 86,173,138,244,244,116,168, 84, 42,212,175, 95, 31,169, -169,169,240,241,241,129, 66,161, 0,165, 20,195,135, 15,151,141, 25, 51, 38,148, 97, 24,112, 28,231, 40,240, 11,233, 75, 23, 24, -134, 65,163, 70,141,112,206,222,243,211,190,115,103, 68, 71, 71, 67, 28,196,161, 86,171, 49,124,248,112,242,222,123,239,177,162, -245,130, 82, 10,163,209,136,136,136, 8, 77, 17, 93,111,239,108,220,184,209, 79,169, 84, 34, 39, 39,199,209, 69, 38,147,201,112, -241,226, 69,204,154, 53, 11,175,189,246, 26,238,220,185,131,200,200, 72,188,255,254,251, 62,211,167, 79,127, 7,192, 36, 79, 5, -177,143,143,143, 67, 92,105,181, 90,188,243,206, 59,108,227,198,141, 67,125,124,124,224,235,235, 11,177,187,143,231,121,148, 47, - 95,222,163, 20, 23, 4, 1,219,183,111, 7,203,178, 30, 45, 88,246,132,231, 21,231,209,163, 71, 29,226,204,185, 85, 68, 8,193, -185,115,231, 28, 98,206, 11, 78,202, 48, 12,116, 58, 29,194,195,195,161,209,104,160,213,106,201,154, 53,107, 38,148, 43, 87, 46, -226,189,247,222, 99,178,179,179,153, 70,141, 26,161, 71,143, 30,172, 32, 8,176, 90,173,136,141,141,245,104,105,219,187,119, 47, -150, 44, 89,130,183,223,126,219,173, 5, 75, 28, 4,169,215,255,227,115, 28, 74, 12, 2, 0, 43,103, 67, 94,174,209,209,133,203, -243, 60,206,236, 57, 85,233,198,169, 43,177, 91,215,124, 47, 7, 0,211,158, 31,157, 95,139,232,177,104, 93,229, 22,129,138,163, -123,210,173, 71, 61, 89, 6, 71,142, 28,137,137, 19, 39,162, 79,159, 62,216,185,115, 39, 62,250,232, 35,188,241,198, 27, 5, 44, - 88,222,192,102,179,125,245,234,171,175,190,189, 97,195,134, 42, 31,124,240, 1, 35, 90,176,180, 90,173, 56,134, 11,102,179, 25, - 70,163, 17,151, 46, 93, 18,222,124,243,205,203, 22,139,229,171,194,248, 56,162, 57,173, 85,229,253, 90, 62,154,169, 96,184,249, -185,111,147, 23,202, 26,137,166,110,214, 75,149,219,208,142, 3,202, 6,128, 82, 80, 1, 16, 40, 96, 54, 27, 48,124,248, 40,217, - 63, 25, 87,132,144,142,125,251,246,237, 50,120,240,224,114, 57, 57, 57,215, 57,142,179,137,247, 62,250,232, 35, 92,185,114,165, - 29, 33,228, 86, 97, 93,162,133,112, 70,151, 47, 95,126, 20,207,243,148, 16,114,141, 82, 26,111,191, 53, 31,128,223,222,189,249, -245, 71,116,116, 52, 0,196, 18, 66, 86, 1,200,114, 22, 99,206,230, 80,155,141,131,209,104, 46, 82, 88,137,231,148, 10,222,186, -145, 86,169, 82, 5, 93,186,116,129, 92, 46,119, 52,210,156,187,199, 92,133, 86, 81,229, 7, 0,129, 16,130,200,200, 72,116,236, -216, 17, 10,133,162, 0,167, 88,161,118,236,216, 17, 35, 39,125,140,175, 70,182,194,146, 87, 43,161,205,148,164, 34,221,153,151, -151,151,187,123,247,110,205,251,111,191,141,231, 42, 86, 68,176, 94,143,210, 97, 33,208,168,148, 80, 56,187,137,120, 54,170,211, -252,202, 78,144,201,100,168, 81,163, 6,146,146,146,112,243,230, 77,220,188,121, 19, 12,195,160, 73,147, 38, 14, 75,240,213,171, - 87, 49,105,210, 36,152,205,102,175,253, 94,177, 98, 69,180,106,213, 10, 74,165, 18, 90,173,182, 64,215,160, 24,166, 57, 57, 57, -168, 80,161, 2, 54,111,222,140,202,149, 43,123,228,172, 90,181, 42,154, 55,111, 94, 32, 60, 53, 26,141,163,222, 0,128,187, 71, -115, 29,223,136,138,138, 42, 22,231,142, 99,119,176,108,231,110,152, 45, 2,178,243,108, 5, 94,136, 8,214,227,192, 15, 31,120, -229,119,145,243,171,175,190, 66, 86, 86,150,163,238, 17,141, 37,162,113,162, 84,169, 82, 88,178,100, 73, 97,241, 35,106, 17, 82, -200,253,206, 94, 54,164,196,231,196,196,165,154, 62,125,250, 52,215,247, 61,241, 57,223,119,121,223,226, 34,202,146,138,236, 34, - 20,235, 5, 49, 19, 68, 69, 69, 65, 28,231, 33,102, 16, 71, 1,202,113,216,180,105, 19, 66, 67, 67, 29,135,159,159, 95,161, 9, - 90, 28, 39, 52, 50, 37,127,152,193,182, 72, 5,110, 1,232,148, 66, 29,227, 68,120,158,199,198,141, 27,225, 44, 96,124,125,125, -139,236, 46, 82, 42,149, 45,234,215,175,207,152,205,230, 7,196,213,244,233,211,209,183,111, 95, 84,174, 92, 25,130, 32, 32, 55, - 55, 23, 45, 91,182,148,207,159, 63,191, 69,113, 4,150, 86,155, 63,158,223, 98,177, 96,207,158, 61, 8, 8, 8, 64, 80, 80, 16, - 2, 3, 3,225,235,235, 43,206,132,164,158, 68, 6,165, 20,221,187,119,119, 84,124,206, 86, 43, 87,177,117,232,208, 33,175,186, -222, 40,165,120,225,133, 23,160,211,233,224,227,227, 3, 31, 31, 31,108,223,190,221,241,204,243,207, 63, 15, 65, 16, 16, 26, 26, -138,195,135, 15, 23,217,205, 73, 41,165, 10,133,194,241,188, 92, 46, 39, 43, 87,174, 28, 31, 19, 19, 19, 49,122,244,104, 70, 38, -147,225,228,201,147, 56,127,254, 60,202,150, 45,235,245,152,172,204,204,204,251,227,199,143,231,199,143, 31, 15, 0,136,141,141, - 69,102,102,102,178,120, 63, 59, 59, 59,173, 93,187,118, 5,198,101,164,166,166,166,253,235, 5,150, 32,128,179,114,200, 51,153, -144,155,147,231,176, 6, 37, 39, 36,249,127,240,222,187,242, 89,195, 95, 7, 0,188, 55,119, 33,114,150,254, 93,128,253,248,126, -223,208,151,102,173, 25, 7,160,155,135, 74, 7,102,179, 25,101,202,148,193,177, 99,199,144,147,147,131, 54,109,218, 20,176,144, -138, 97,234,201, 20, 79, 41,181, 16, 66, 26,119,238,220,249,207, 57,115,230,148,175, 86,173, 26, 49, 24, 12,200,203,203,131,243, -239,153, 51,103,232,234,213,171,111,228,229,229, 53,162,148, 90, 10,227,219,126,239,155,107,237,163,222,216,240,251, 73, 89,231, -208, 10,151,245,247, 50,202,115,105,247, 84,134,108,227, 37, 19, 79,207,131,242, 0, 15, 1,148, 19,192,219,187,183,254, 65,113, - 85,163,124,249,242,111,205,159, 63, 63,204,100, 50,221,179,217,108, 6,215,188,187,120,241, 98,116,236,216,241, 45, 66, 72,188, -167, 1,233,246,119,148,254,254,254, 31,237,217,179, 39,246,254,253,251,137,141, 27, 55, 30, 71, 8, 25, 77, 41,181, 84,169, 82, -197,239,248,241,227, 77,228,114,185, 50, 51, 51,243,172, 94,175,135,197, 98,169, 97,179,217, 44,245,234,213, 59,224, 54,126, 4, -192,102,179,193,104, 52, 35, 43, 43, 7, 22,171,205, 94,102, 10,224,121,206,254, 43,128,179,151,163, 74, 5,235, 91,183,102, 68, - 46,165, 20, 12, 33,153,199,207,220, 47, 85, 88,185, 84, 88, 87,150, 55,214, 43, 55,224,197, 89, 99, 65, 65, 65,144,203,229,248, -254,251,239,113,250,224,118, 40,101, 20, 60,103, 3,103,179,130,183, 89, 32,151,201,240,251,201,155,104, 91,213,215,155, 56,162, -193,193,193,232,212,176, 33, 58, 55,108,152, 63, 93,141,101,225,163, 82, 65,171, 80,231, 91,174, 0, 80,158, 1,188, 75, 74,130, -232,206,176,176, 48, 28, 63,126, 28, 35, 71,142,196,140, 25, 51,160,209,104, 28,179,153, 47, 94,188,136,117,235,214,161,109,219, -182,197,246,187,104,177, 27, 55,110, 28, 18, 18, 18, 48,119,238, 92,212,173, 91, 23,114,185, 28,153,153,153,104,212,168, 17,146, -146,146,188,226,116,238,198, 83, 42,149, 5,172, 77,162,240, 43,110, 28, 57,115,190,222, 61, 2, 91, 14,174, 6, 1,193,145, 31, -222, 45, 80, 23, 45, 94,187,191,216,156,159,124,242, 73, 1,119,122, 99,189, 42, 70,126,221,234,141,200,114,122,238,132,104, 92, - 29, 55,110,220,135,132,144,173,227,198,141,251, 48, 46, 46,238,156, 55,124,133,220,255,197,254,219,201,233,218, 9,143, 2,139, - 82, 74,149, 74, 37, 4, 65, 40, 32,170, 92, 7,212,138, 38, 63,103,147,162, 39, 49, 32, 8,130, 35, 49,184, 54, 87,101, 50, 25, - 14, 31, 62,140,195,135, 15, 23,184,190,108,217,178, 34, 43,112,142,227,170,249,250,250, 22,176, 94, 41, 20, 10,140, 27, 55, 14, -253,251,247,119,136, 43,133, 66,129,229,203,151,163, 94,189,122,176, 88, 44,213, 60,140, 71,201, 11, 15, 15,103,196, 2, 72,167, -211,145,145, 35, 71,202, 56,142,115,132,137,120,136, 99,211, 60, 37, 22,113, 86,202,142, 29, 59,188,178, 96,121, 59, 6,137, 82, -138, 83,167, 78, 21, 16,109,226, 44, 24, 0, 56,117,234,148, 99,124,150, 55,156, 50,153, 12, 60,207, 67,163,209, 16,133, 66, 65, - 20, 10, 69,180, 40,174,100, 50,153, 35,190,157,199,228,121,242,251,189,123,247, 90, 22,117, 63, 57, 57,249,153, 93,142,193,106, -179,193,152,103, 65, 78,174, 17,159,197,125,151,127,241, 51, 28, 5,112,180,241,224,145, 24,218,190,109, 43,151,126,126,111, 10, - 24, 71,165,184,113,227, 70,200,229,114,108,222,188, 25,122,189, 30, 93,187,118,133, 94,175,199, 7, 31,124,128, 62,125,250,120, -109,193,178,167,165, 44, 66, 72,227,119,222,121,231,207,207, 63,255,188,116,169, 82,165, 96,177, 88, 96,181, 90, 97,177, 88,112, -237,218, 53,172, 94,189,250,110, 94, 94, 94, 99, 74,105,150, 39,190,237,247,190,185,182,105,223,123, 9,109,250,244, 48, 94, 76, -218,134,196,196, 52,112,220, 61, 8, 60, 7, 43,151, 63, 35,153,231, 56,112, 28, 15,133, 66,166,255,124,234,187, 59, 5, 80, 48, - 12,177,244,236,217,179,195, 19, 18, 87, 1, 0, 6, 95,191,126, 61, 39, 40, 40,232,140,253,178, 62, 33, 33,129, 0, 64,100,100, - 36, 5,224, 60,192,125,176,125, 60,150,167, 77,155, 7,255,252,243,207,141,252,253,253, 45, 12,195,100,124,244,209, 71,165, 62, -253,244,211,193, 0,230, 93,186,116,233,187, 87, 94,121,197,207,185, 5,159,150,150,118, 98,240,224,193,184,116,233,210,119,238, - 77, 4,118, 11,150,201,132,148,180, 12, 12, 26, 60,193, 97, 58, 0,104, 1, 81, 65, 65, 49,100, 4,212, 0,144,154,116, 13,175, - 15, 26,169,242,212, 16,112, 87, 1, 22, 99, 12,142,179,101,200,145, 70,125,124,124,242,187,217, 54,175,198, 47, 95, 12, 6,120, - 43,168,205, 8, 88,243, 0,107, 46, 4, 75, 30,136, 66, 3,216,140,222,196, 19,245,241,241,129,143, 70,131, 80,127,255,252, 69, - 28,101, 50,200,229, 44, 4, 27, 64,120,226, 16,162, 2,239, 85, 90,167,193,193,193, 16, 4, 1, 26,141, 6,183,110,221,194,208, -161, 67, 97,181, 90,209,189,123,119, 88, 44, 22,152, 76, 38, 24,141, 70,196,196,196, 32, 47, 47,207, 43,191,139,229,188,216,219, -243,238,187,239,162, 94,189,122,152, 52,105, 18,198,142, 29,139,152,152, 24, 12, 25, 50, 4,171, 87,175, 70,108,108,108,145,188, -206,225, 41,114,138,241,226,218,149, 7,160,216,113,228,202,153, 63,238, 31, 15,196,251,168, 87, 91, 23,155, 51, 46, 46, 14, 41, - 41, 41, 15, 88,174,196,255, 81, 81, 81, 88,188,120,241, 67,229, 89, 39,107, 81,152,155,219,157,220, 88,158,234, 35,127,108,148, - 57, 46, 46,238, 92, 92, 92, 92,103, 66,200,214,184,184,184,206, 69, 88,176, 58,121,176,112,117, 66,254,152,171, 34,193,186,244, -125,182,112,182,140,136, 21,168, 88,145, 59, 23,238, 90,173, 22,155, 54,109,130, 56,163,195,249,153,162, 4,214,175, 33,118, 19, -177,221,114,229,124,222,165, 75, 23,148, 43, 87,174,128,245, 74,163,209, 20,153,104, 4, 65,192,237,219,183,113,246,236, 89, 52, -108,216, 16, 89, 89, 89,144, 51, 12,222, 59,115, 6,213, 95,125, 21, 22,187, 69, 70,169, 84,226,237,183,223,246,106,160,250,205, -155, 55, 3,156,207,131,131,131,227,155, 54,109, 26,117,236,216, 49,199,192,119,123,247,153, 67,104,120, 35, 94, 40,165,120,249, -229,151, 11, 88,173,156,197,149,243,177,109,219, 54,175,186, 8, 41,165,104,218,180,169,195,122,229,235,235,139,159,126,250,201, - 17, 87,205,154, 53,203, 31,175, 16, 22,230, 21,167,232, 15,251,192,118,152, 76, 38, 33, 39, 39,135, 57,113,226, 4,148, 74,165, -195, 98,167,209,104,160, 86,171,161, 82,169, 30,106, 70,208,127, 1,148, 10,176,216,108, 48, 26,141,200,205,205, 95, 33,228,218, -217,141, 5, 5,152,249,225, 39,167,137, 86,170,156,156, 28,252,254,251,239,248,241,199, 31, 81,183,110,221, 7, 6,185,123, 99, -193,114, 74, 79, 41,132,144, 38, 99,198,140, 57, 50,101,202,148,200,192,192, 64, 88,173, 86,220,185,115, 7,223,126,251,109, 66, - 94, 94, 94, 19, 74,105,138,247,129, 0,216,108, 28, 76,121,102,100,101,231,224,211,169,203, 11, 77,122, 0,144,158,124, 9, 93, -186,246, 82, 62,185, 56,162, 25, 0,134,186, 84,230,171,240,247,154, 85,217,148,210,254,197, 20,109, 45,103,204,152,209,167,110, -221,186,190, 89, 89, 89, 23, 0,224,205, 55,223,196,201,147, 39, 91, 19, 66,206, 81, 74,119, 19, 66, 98,235,212,169,211,250,205, - 55,223, 4, 0,124,253,245,215,216,186,117,235,239,148,210,221,133,165, 37,177,139, 48, 55,215, 8,189,127, 4,238,221,220,235, -209, 45, 10,153, 9, 84, 16, 60, 54,252,220, 89,173,156,203,167, 98,164, 31, 42,142,249, 19, 43,234, 14, 47,191,138, 14, 67,167, - 67, 43, 7,166,189,222, 24, 49,254, 0, 52,129, 80, 52,251, 0,196,191, 76,254,139, 67,127,246,138,127,236,146, 37, 56,121, 37, -127,133,151,232,144, 16,140,233,211, 7,212, 6, 28, 58,127, 30,107,119,239, 70,159,150, 45,161, 85,171,189,110,168,136,141,239, -107,215,174,225,208,161, 67,168, 90,181, 42,174, 94,189, 90, 96, 57, 9, 74,169, 87,254,167,148, 82,113,114,146, 74,165,130, 92, - 46, 71, 98, 98, 34, 58,119,238,236,104,224,239,221,187, 23, 99,198,140,193,192,129, 3,209,162, 69, 11,183,227, 98, 93, 57, 67, - 66, 66, 28,134, 3,215, 9, 8,206,221,182,197,137, 35,119,156, 34, 30, 54,222,157, 57,167, 78,157,234,118,162,132, 55,156,206, - 90,164, 8,156,112,177, 30, 65, 28, 15, 37, 10, 34,215,115, 0, 1,226,181,113,227,198,125,232,237,123,206,231,162, 5,204,219, -174, 74, 86,236,243,116, 87,201,138,230, 98,119,208,233,116, 24, 54,108, 24, 38, 78,156,136,224,224, 96,143, 99,103, 68,229, 90, - 20,126,254,249,193, 76,182,121,243,102, 79, 93,132, 23,253,252,252,234,181,106,213, 10, 89, 89, 89,184,123,247, 46,116, 58, 29, -170,127,241, 5,206, 12, 29,138,231,150, 44, 1,211,170,149, 99,145,212, 51,103,206, 64,163,209, 92, 44,174,197,192,215,215, 23, - 1, 1, 1,142, 62,117, 81,104, 57, 89,176,168, 23,137, 16,191,254,250,171,219, 86,226,195,140,193, 18, 51,255,145, 35, 71, 10, -140,191,114, 22, 60, 71,142, 28,113, 88,176,196,215,188,233,218,210,104, 52, 84,228,211,106,181, 8, 12, 12,132, 74,165,130, 70, -163, 41, 32,174,188,177,222,121, 90, 72, 84,163,209, 28,211,233,116,254,226,125,185, 92,142,156,156,156,204,180,180,180,231,255, -213, 93,132,160,224,172, 28,140, 70, 19,114,115, 74,126, 45, 73,113,194,201,166, 77,155,240,194, 11, 47, 60, 32,174,196,176,126, - 8,209, 17, 79, 8,105, 49,111,222,188,163,179,103,207, 14,200,205,205,197,119,223,125,151,149,155,155,219,194,105, 28,145,119, - 92, 2,133,205,106, 69,158,201, 12, 67,110,126, 24, 92, 63,183,241,153, 22,214, 85,170, 84,121,125,200,144, 33, 33, 57, 57, 57, -215, 5,225,111,123,202,236,217,179,113,253,250,245,215, 1,236, 6,176,100,234,212,169, 21,107,214,172, 89, 10, 0,166, 78,157, -122, 23,192,146,162,202, 14,171,189,139, 48, 55, 55,223,234, 97, 50,164,150, 76, 58,181,139,140,194,198, 92, 61, 76, 87,142, 56, -115, 89, 38,147, 97,248,240,225, 56,115,250, 52, 90, 71,102, 35, 38,220, 23, 52,251, 30, 20,173, 62,193,169, 20, 13,102,205,249, -181,216,220,235,156, 38,241,204, 90,183,206,237,189,235,221,186, 21,203,239,151, 47, 95,134, 70,163, 1,207,243, 15,212, 55,197, -245,191,179,112,153, 51,103, 14,198,140, 25,131,229,203,151,227,204,153, 51,120,238,185,231,208,166, 77, 27, 36, 39, 39,227,244, -233,211, 48,155,205, 94,187,211,121, 92,220,229, 27,231,177,235,208,111,184, 29,127, 19, 9,137,119, 31, 58,222,157, 57, 93, 5, -214,166, 93,127,225,229,182,117, 30,138,243,147, 79, 62, 65,114,114,114, 1,203,149,243,196,176,194, 44, 88,174, 90,196, 5,169, - 46, 99,157,196,115,139,139,216,113, 61,119,125, 30, 0,146, 1,200, 60,188,231,122,158, 26, 23, 23,183, 71,180,124,217,121,101, -133,141,191,114,219, 69, 40,138, 33, 49,131,184, 90,166,196,255, 58,157, 14,190,190,190,240,245,245,133, 94,175,247,104, 25, 18, - 5, 86,211, 27, 57, 5,198,114,137,150, 44, 0, 24, 56,112,224, 3, 22, 44,231, 5, 57,221,193,108, 54,239,221,187,119,111,237, - 46, 93,186,200, 46, 94,188, 8,153, 76, 6, 65, 16, 96,105,216, 16,207, 45, 89,130,179,239,190,139,230,183,110,193,100,181, 66, -173, 86, 99,251,246,237,214,188,188,188,189,197, 45, 47,156, 5,150, 78,167,131,159,159,159, 67, 96,120,163,202,197, 76, 91,212, -248, 6,241,112, 30,228,239, 77,102, 22, 43, 82,231,113, 55,132, 16, 24,141, 70,199, 96, 77,111,172,140,206, 93,132,206, 25,143, - 97, 24,248,251,251, 59, 10, 13,209,130,229,173,245,206,211, 66,162, 90,173, 86,127,233,210,165, 10,226, 50, 18,169,169,169,104, -213,170,213,149,127,125, 77, 43, 0, 86,142, 71,174,209,132, 92, 99, 94, 73,118,107, 1, 0,190,255,254,123, 92,187,118, 13, 86, -171, 21,113,113,113, 15, 8,171,226, 12,114,119,147,174,174,213,169, 83, 71,120,241,197, 23,113,228,200, 17,168, 84, 42, 27,165, -180,216,235, 87, 9, 84,128,149,227, 96, 50, 26,145,107, 48,252, 39, 44,151,151, 46, 93,202,242,245,245, 61, 12,192,231,202,149, - 43, 50,157, 78,135,242,229,203,195,100, 50,101, 1,200,178,135,175,133, 16, 50,253,237,183,223,158, 11, 0, 54,155,109,122, 81, - 99,218, 40,165,176,113,118,177, 94,130,225, 40,166,165,194,202,164,135, 89, 46,197,185, 66, 21, 4, 1,111,189,249, 38,218, 68, -102,227,165,186, 33, 48,220,191, 2,173, 95, 8,136,127, 89,204,154,243, 43,206,221,240,122,168, 37, 5,128,246,205,186,161, 86, -213, 7,151,247,106,210, 58,191, 45,118,224,247, 99, 72, 74, 77, 40,182,223, 13, 6, 67,161,150, 42,111, 45, 88, 34,167,184, 92, -138, 92, 46, 71,237,218,181, 81,169, 82, 37,236,217,179, 7,117,234,212,193,213,171, 87,113,245,234, 85,220,186,117, 11,103,206, -156, 65, 70, 70, 70,177,227,232,167, 29,107,145,145,147, 14,165, 66,137,244,204, 84,220,190,119, 19, 97, 65,225,143, 28,239,142, - 6, 66,167, 79, 1, 0,145, 33,126,197, 18, 88,206,156,159,127,254,249, 3,162,189, 4,150,222, 57,230,225,188,184,239, 63,118, -176,133, 88,133,140,129,129,129, 26,231,254, 83,134, 97,224,231,231, 71,102,204,152, 33, 99, 24, 6,190,190,190,240,243,243,131, -104, 22,244, 4,165, 82,105, 44, 91,182,172, 70, 76,128, 98, 6,212,235,245,178, 25, 51,102,144,101,203,150, 21,106,213,242, 48, - 6,107,118,255,254,253,223,136,143,143, 15, 8, 13, 13,197,253,251,247,161, 84, 42,243, 51, 69,203,150,104,122,227, 6,172,249, - 99,138,112,249,242,101,124,245,213, 87, 6,179,217, 60,187,184, 1,229,227,227,131,160,160, 32, 71,215,160,104,193,113, 18,139, - 94, 13,173, 44,202, 20, 47,182,248, 30,166,171,200, 85,100, 13, 30, 60,184,128,216,242, 22, 10,133,130, 19, 87,106,103, 24, 6, - 86,171, 21,117,234,212, 65,114,114,178, 35,179, 56, 91,238,188, 17, 88,158, 22, 18,101, 89, 22, 22,139, 5,205,154, 53, 3, 33, - 4, 11, 23, 46,124, 54,186, 29, 5,129,248,248, 4, 33, 50,178, 50, 66, 66, 77, 16,132,146,219,253,133,227, 56, 12, 25, 50,164, -128,197, 74,156,169, 40,118,241, 83, 74, 97,179,217, 30,122,209, 86, 49, 95, 63,202,250,111, 20,112,116,109, 25, 12,166,127, 93, - 20, 70, 71, 71,235,237, 93,134,174,112, 63,219, 15,127, 47,201, 64, 8,153, 18, 31, 31, 95,179, 74,149, 42,104,222,188, 57,182, -109,219,182, 25,192,143, 46,150,194, 47,197,255, 69,199,133, 61, 28, 77,102, 24, 12, 37,111, 13, 45,170,161,247, 40,194,109,226, -196,143,209, 38, 34, 19,221,159,243,195,138,173, 7,209,175,182, 6,176,168,138,205, 39,186, 37, 40,170, 28,202,213,104,240,192, -125,181, 95,126,215, 92,185, 26, 13, 32,187,123,181,216,126,119,118,179,155,165, 3, 30, 41, 60, 7, 13, 26,132, 15, 62,248, 0, -237,218,181,195,213,171, 87,177,111,223, 62, 92,189,122, 21, 35, 71,142, 68,108,108, 44,158,123,238,185, 98,113,110,217,181, 1, -217,185, 89, 96, 8,131,244,172, 52,152,204, 70,140, 29, 50,241,145,227, 93,196,205, 93,113, 0,128,141, 59, 79, 62, 52,231,135, - 31,126,136,196,196,196, 2,150,171, 71, 25,119,245,111,133, 91,129,149,150,150,230,182,191, 47, 36, 36, 36,169,109,219,182,161, -247,239,223,135,143,143,143, 71,113, 69, 8,105, 35,174,149,145,152,152,232,150,211,215,215,215,218,182,109, 91,121, 68, 68, 68, -129,217,131, 58,157,238,129,204,229,202,105, 47,152,114, 8, 33,111, 53,110,220,120,197,182,109,219,180,149, 42, 85, 66,118,118, - 54, 40,165, 88,190,124, 57,134, 15, 31, 14,181, 90,141,203,151, 47,163,107,215,174,121,121,121,121,111, 57,175,129,229,142,179, -176, 22,153,184,138,189, 27,113, 85,164,223,157, 51,233,188,121,243, 48,109,218, 52,124,248,225,135, 69, 70,204,210,165, 75, 1, -151,238, 60,119,156,148, 82,204,154, 53,171,196, 56,211,210,210,150,187, 88,159, 22,190,244,210, 75,236,221,187,119, 11,136, 42, -231,195, 77,129, 84,128,211,211, 66,162, 50,153, 12, 97, 97, 97,152, 50,101, 10,130,130,130, 16, 30, 30,254,128,229,197, 83, 28, - 61,100, 37,240, 88, 57,121, 42,156,248,124,250,199, 77,190, 91,181, 69,174, 82, 2,135,247,109, 68,118, 70, 98, 65, 11,172,245, -239, 41,209,202, 58,173, 97, 57,249,187, 87,238, 52,155,205,152, 57,115, 38, 62,253,244, 83,124,250,233,167,222,196,251, 35,249, -221, 27,145,229,150, 83,160, 68,171, 11,128, 90, 23,137,234,177, 1, 16,138,185, 86,231, 63, 20,239, 66, 66, 66, 2, 34, 35, 35, -113,245,234,213, 26, 50,153,172,128, 34,224,121,222,172, 86,171, 15,120,193,121,118,211,166, 77, 53, 39, 76,152,128,105,211,166, - 1,192,128,189,123,247,190, 66, 8, 49,121, 18,105,174,156, 2,165, 68,163,245,135, 90, 23,129,234, 53,252, 33, 8, 92,137,248, - 93,172,252, 92,173, 87,197, 92, 72,218,109, 89, 7, 0,127,254,190, 25, 19,223,173,129,229,191, 28,197,252, 99, 64, 45,255,100, - 84, 15, 73,129,144,114, 17,239,247,171,135, 89, 63, 28, 7, 0,236,219,235, 49,142,138, 92,215,216,100,180, 62,146,223,157, 45, - 85,206,223,241, 52, 6,203, 29,167,216, 56,204,201,201, 65,102,102, 38, 86,172, 88,129,215, 95,127, 29,201,201,201,184,117,235, - 22,174, 92,185,130, 53,107,214, 56,102,167, 23, 55,142,222,123,243, 35, 76,152, 53, 26, 20, 20, 85, 42, 84,199,184,161,159,162, -126,173,134,143, 28,239,174,240,100,189, 42,138,115,222,188,121, 15,149,150,254, 19, 2,171,168, 86, 4,195, 48, 8, 14, 14,118, - 36, 14,231,132,247, 48, 45, 93,153, 76, 6,142,227, 28, 99,123,196, 3, 0,186,116,233,130,159,127,254,217,155,153, 17,219, 8, - 33,255,171, 86,173,218,183,159,125,246,153, 79,243,230,205,217,200,200, 72,212,175, 95, 31,151, 47, 95,198, 47,191,252, 98, 91, -180,104,145, 33, 47, 47,111, 32,165,116,231,195,148, 75,226,214, 51,206, 71,113, 90, 57, 86,171,245,238,213,171, 87, 35,102,205, -154, 37, 99, 24, 6,115,231,206,117,100, 70,113,161, 86,103,236,219,183,143, 19, 4,161,200, 46, 25,155,205,118,247,234,213,171, - 17, 95,124,241,133,140, 16,226,224,100, 24, 6,206, 27, 43, 23,135,211,157,184, 20, 39, 60,184, 59,220,185,221, 93, 28, 23,181, -144, 40,203,178,184,124,249, 50, 38, 78,156, 8, 66, 8, 54,110,124, 54,198,232,156,185,152,186,236,185,234,161, 1, 93, 58, 52, -169, 9, 66, 96,181, 60,216, 3,228,147,145,235, 16, 87, 47,125,177, 22, 63,190,215,199, 27,177,115,237,192,129, 3,129, 51,103, -206,100,101, 50, 25,230,204,153, 83, 96,177, 95,215,120,223,191,127, 63,247, 48,221,123, 98,126,182, 90,173, 48, 26, 31,206,106, - 66, 41, 61, 20, 55,117, 66,219,149,223,255, 42, 39,196,130,195,123, 55, 34, 43,211,253,212,116,165,156,197,178, 21,155, 56,133, - 92,118,247, 31,142,186,249, 61,123,246,156,176, 97,195, 6, 22,192,185, 71,224,217,252,205, 55,223,116,232,213,171, 87, 96,197, -138, 21,241,221,119,223, 41,252,253,253,235, 18, 66,136, 59,145,230, 33, 28, 55, 79,159, 58,225,181, 21, 63,252,170,100,136, 21, -135,247,109, 68,150,139, 88,127,208, 26, 45,199, 55,203, 55, 89, 21, 10,249, 37, 79,229,186,179,245,170, 36, 43,196,174,253,135, -226,165,121,243, 81,190,126,123, 76,159,209, 6,223, 76,237,133,217, 47, 42, 96, 93,223, 15,181,122,174,196,234, 73, 29, 1, 0, -145,223,120,105, 29, 97, 21,184,227,198, 66,149,153,165,182,139,154,226, 89, 73, 69,191, 23, 85,134, 23,215,130,197, 48, 12,202, -149, 43,135,242,229,203,163,113,227,198,168, 83,167, 14, 90,182,108,137,211,167, 79,227,244,233,211, 24, 57,114,100,161,226,202, -155, 56,106,209,168, 45,142, 54,189,244,200,113,227, 26,239, 37, 1,111,210,210,144, 33, 67, 0,224, 63, 97,205, 98, 31, 38,240, -196, 4,249,168, 91,199,136,156, 22,139,197,209,245,230,188,174,146, 56,232,221,203, 25,122, 59, 9, 33,177, 31,127,252,241,187, -106,181,186,101, 94, 94, 94,101,187, 5,230,178,217,108,222,109, 52, 26,231, 80, 74, 51, 31,197,173,206,203, 50,184,115, 66, 81, -239,102,100,100,180,111,223,190,253, 78,150,101,203,185,110,196,235, 46, 3, 11,130,112, 43, 41, 41,169,200,169,234,105,105,105, -237,219,181,107,231,150,211, 93,193,224, 13,167,187,248, 17, 4,161, 80,113,229, 77, 1,228,105, 33, 81,150,101,161,211,233,240, -211, 79, 63, 33, 56, 56,248,153,202, 96,167,206, 39,207, 44,234,126,139, 96,213, 94, 0, 33, 47,125,177,246,206,158, 84, 75,153, - 22,193,202,219, 63,190,255, 74,233,162,222, 73, 77, 77,109,247,250,235,175,255,198,178,108, 57,215,240,119, 23, 23, 28,199,221, - 76, 76, 76, 44,246,178, 7,148, 82, 92,186,116, 73, 24, 52,104, 80,106, 74, 74, 74,175,135,241,255,184,137,243,103, 79,251,108, -120,208,139,109, 27,212, 7, 3, 88, 10, 31,212, 75, 9, 64, 89,185,236,238,152, 15,231,190,249, 79,198, 25,165,244, 36, 33,100, - 74,253,250,245, 71,162,208,117,193,243,199, 82,121,224,177, 18, 66,102,119,232,208,225,253, 17, 35, 70,248,183,107,215,206, 26, - 21, 21,117,194,217, 58,239,125, 58, 74,122,251,185,106, 33,209, 47,182,121,161, 61, 8,161, 22,139,217, 67,195, 8, 20,148, 82, -133, 66,126,233,216,169,132, 90,158,172,243,246, 29, 51, 74,188,107,126,216,176, 97, 24, 54,108,152, 35, 61, 45, 92,216, 20, 27, -206, 30, 64,207, 90,241, 48,127,213, 4, 68, 95,218,235,134, 30, 0,124,244,241,160,146,180,100, 22,152,124, 85, 82, 99,176,100, - 50, 25, 82, 83, 83,113,249,242,101, 36, 37, 37, 33, 47, 47, 15, 23, 46, 92,128,213,106, 69, 70, 70, 6,106,212,168,241,208,238, - 44,169, 56,250, 39, 57,255, 75,221,132,197, 18, 88, 28,199,197,123,218,245,220,102,179, 21,107,150,145, 92, 46, 55, 85,170, 84, -137,184,155,109, 32,254,215,233,116, 70, 47, 11,198, 76, 0, 19, 1, 76,180,239, 55,133,244,244,244, 71, 86,129, 60,207, 39,148, - 41, 83, 70, 86,152,112,177,135, 77,146, 7,183, 25, 0, 52, 44,225,138,160,196, 57,221,196,143,161,106,213,170,142,177, 92,174, -107,154,216, 55, 65, 45,114,212,173,167,133, 68, 13, 6,195,253,246,237,219,243,206,247,157, 23, 34,125,166, 65,232,237,142,175, -188, 81,102, 79,170,165, 12, 0,136, 34, 11,148,222, 46, 34,222,141, 0,154, 63,110,167,221,184,113,195,242,194, 11, 47,124,159, -147,147, 51,148, 82,250,208,163,244, 63,252,100,225,135,255,182,104,161,148,158, 4,240, 90, 9,240,156, 37,132, 12,158, 57,115, -102,175,153, 51,103, 86, 0, 16, 12, 64,237,173, 72, 43, 32,178, 46,164,148,248,218, 96, 28,199,197,151, 47, 95,190, 88,150, 26, - 79,101,188,205,102, 43,178,158, 56, 7, 63,124,120, 4,200,223,198, 45,205, 43, 78,147,201,148,222,176, 97, 67,121, 49,253,150, -236,173,223, 35, 34, 34, 16, 25, 25,233,248, 21,225,122,221,147, 59, 57,142,139,143,142,142, 70,112,112,112,161, 43,180,187,142, -185,242,134,179,164,227,168, 40,206,200,200,149, 37,206, 89, 82,122,225,153, 22, 88,226, 30,131, 37,137,164,164,164,199,178, 55, - 10, 45, 9,243,218,223,150,162,250,248,143, 34, 45, 45, 45,232, 81, 57, 60, 45, 36,154,148,148,212,242,191, 26,190,123, 82, 44, - 3, 30,184,102, 23, 91,255, 52, 12, 6, 67,105, 74,233, 67,141,204,239,217,179, 39, 15, 9,206,130,120,249,211,232,182,212,212, -212, 18, 47,211, 31, 71, 61,145,158,158, 94,243,191,234,247,199,225,206,127, 11,231,191, 29,140, 20, 4, 18, 36, 72, 40, 68, 24, - 72, 34, 73,130, 4, 9, 18, 30, 18, 4, 64,155, 66, 10, 87,175,103,238, 16, 66,218, 60, 68,225,189, 75,226,148, 56, 37, 78,137, - 83,226,148, 56, 37,206,255, 22,167, 39,238,146,158, 57,252, 79,182, 82, 31,219, 1,160,141,196, 41,113, 74,156, 18,167,196, 41, -113, 74,156, 18,231,127,237,144,186, 8, 37, 72,144, 32, 65,130, 4, 9, 18, 74, 24,146,192,146, 32, 65,130, 4, 9, 18, 36, 72, -144, 4,150, 4, 9, 18, 36, 72,144, 32, 65,130, 36,176, 36, 72,144, 32, 65,130, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, - 72,144, 32,225,225, 65, 74,112, 61, 78, 9, 18, 36, 72,144, 32, 65,130, 4, 9,162,192, 34,132, 56, 84, 22,165,148, 72,193, 34, - 65,130, 4, 9, 18, 36, 72,120,162,130,228, 25,211, 34, 14,129, 37, 9, 43, 9, 18, 36, 72,144, 32, 65,194, 63, 41,176,158, 37, - 45, 82,192,130, 37,137, 44, 9, 18, 36, 72,144, 32, 65,194, 63, 37,176,158, 37, 45, 34, 89,176, 36, 72,144, 32, 65,130, 4, 9, - 79,133,192,122,102, 45, 88,207,146,114,148, 32, 65,130, 4, 9, 18, 36,252,187, 4,214,179,164, 69,164, 89,132, 18, 36, 72,144, - 32, 65,130, 4, 9,146,192,146, 32, 65,130, 4, 9, 18, 36, 72,120,186,241, 88, 23, 26, 37,132,180,145, 56, 37, 78,137, 83,226, -148, 56, 37, 78,137, 83,226,148, 4,150, 4, 9, 18, 36, 72,144, 32, 65,130, 4, 73, 96, 73,144, 32, 65,130, 4, 9, 18, 36, 72, - 2, 75,130, 4, 9, 18, 36, 72,144, 32, 65, 18, 88, 18, 36, 72,144, 32, 65,130, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, - 72,144,240, 15,129, 0,112, 59, 19,128, 82,186,203,107,146,135,152, 77,224,137, 95,226,148, 56, 37, 78,137, 83,226,148, 56, 37, -206,103,143,211, 19,119,113,244,199, 83, 13, 74,233, 99, 59, 0,180,145, 56, 37, 78,137, 83,226,148, 56, 37, 78,137, 83,226,252, -175, 29, 82, 23,161, 4, 79, 45, 12,150, 16,194, 62,236,253, 39,197, 41, 65,130, 4, 9, 18, 36, 60, 77, 96, 11,169,224, 42, 2, -248, 16,128,159,211,229, 99,148,210, 56,151,231,126, 0,160,117,186,100, 0, 48,137, 82,122,213,139,111, 43,236,252, 42,251, 33, - 0, 48, 1, 48, 3,200, 1, 96,147,162,231, 31, 23, 87, 13, 1,116,182,255,223, 74, 41, 61, 92,156,251, 79,138,243, 73, 33, 50, - 50, 82, 19, 16, 16,208,238,228,201,147,202, 11, 23, 46, 96,255,254,253,116,217,178,101,214,140,140,140, 29, 9, 9, 9, 70, 41, -197, 60, 19,105,190, 61,128,113,246,211,233,148,210,237,143,200, 71,180, 90,237, 72,157, 78,215, 81,165, 82, 69,114, 28, 71,242, -242,242, 18, 12, 6,195, 78,142,227,190,160,148, 10, 15,193, 89, 63, 56, 56,120,112,108,108,108,165, 27, 55,110,220,189,115,231, -206, 42, 0,219, 1,180, 47, 93,186,116,255,152,152,152, 82,231,206,157,187,146,154,154,186,132, 82,250,231, 63,229, 78, 9, 18, - 36,129,229, 30, 19, 41,165,253, 92, 50,224, 3, 15,181,106,213,170,235,142, 29, 59,180,130, 32, 64, 60, 52, 26, 13, 7, 96,128, -135,239, 6, 29, 58,116,168,204,208,161, 67, 95, 74, 72, 72,168,151,147,147,243, 60, 0,104,181,218,163,161,161,161,127,206,155, - 55,111, 77,187,118,237,226,237, 66,171, 88,150, 17,185, 92,254,122, 64, 64, 64, 71,142,227,234, 80, 74, 33,151,203, 79,102,100, -100,108,183,217,108,223, 80, 74,109, 15, 81,152, 41, 89,150, 29,166, 82,169,218,115, 28, 87, 19, 0, 88,150, 61, 99, 54,155,183, -115, 28,247, 37,165,212,242, 16,156,106,165, 82, 57, 76,175,215,183,181, 88, 44, 53, 1, 64,169, 84,158,201,206,206,222,105,177, - 88,190,164,148,154,158,130,138,134, 5,208,153, 82, 42, 7, 0,153, 76,214,173, 97,195,134,101, 8, 33,130,184,227, 57,195, 48, -181,121,158,103,236,207,119, 38,132,252, 73, 41,229,138,195,249,194, 11, 47,148, 98, 89,150, 82, 74, 9,165,148, 97, 24,166, 86, -113, 56, 75, 10, 33, 33, 33,211, 4, 65,136, 44,234, 25, 63, 63,191,122, 39, 79,158,172,178,110,221, 58,254,171,175,190,202, 28, - 56,112,160,207,208,161, 67,217,133, 11, 23,126, 9, 96,148,235,243,193,193,193,179, 25,134, 9,246,230,251,130, 32,164,166,166, -166,142,150,138,164,127, 28,227, 22,237,202,105, 70, 41, 48,172,173, 47, 99, 23, 46, 15,141,168,168,168, 21,175,189,246,218, 43, - 53,107,214,100, 41,165,176,217,108, 48,155,205, 85, 14, 31, 62,220, 98,227,198,141,245, 0,244, 42,102,190,236, 60,110,220,184, -175, 39, 77,154, 20, 34,151,203,137,205,102,107,176,110,221,186, 23, 7, 15, 30,124,106,201,146, 37,207,245,238,221,219, 87,188, -254,201, 39,159,116, 32,132,188, 75, 41, 93,243,164,221, 41, 65,130,132,194, 5,150,206,158,153,147, 0, 28, 19, 45, 88,174, 15, -253,241,199, 31, 91, 88,150, 21, 45, 88,207, 27, 12,134, 48, 23,171,151, 59,148,237,223,191,127,195, 13, 27, 54, 76,235,221,187, -119,162, 86,171,173,212,163, 71,143, 28, 66,136,108,221,186,117,181,203,151, 47,175,233,210,165, 75,255, 86,173, 90,189,247,219, -111,191,237, 7,144,226,101,193, 83, 61, 48, 48,112,211,204,153, 51,203,180,111,223, 94, 17, 28, 28, 12, 74, 41, 18, 18, 18,162, -126,249,229,151, 23, 63,251,236,179,247, 8, 33,221, 41,165,231,139,211, 82,212,104, 52, 27, 62,251,236,179,136, 23, 95,124,145, - 13, 15, 15,135,201,100,194,133, 11, 23,218,108,223,190,189,217,210,165, 75, 71, 17, 66,122,122,219, 74,180,115, 62,239,231,231, -183,241,187, 15, 62, 8,107,240,250,235,108, 96, 96, 32, 40,165, 72, 73, 73,105,115, 96,229,202, 22, 67,102,206, 28, 69, 8,121, -153, 82,122,236,105, 74, 40, 74,165,146, 89,181,106,213,115, 74,165, 18, 0, 96,177, 88, 16, 27, 27,251, 72,187,157,203,229,114, -230,139, 47,190,168,195,178, 44,172, 86,171,144,147,147, 67,123,244,232,241,143,116, 91, 19, 66,162, 19, 18, 18,252, 20, 10,133, -219,251, 60,207,163, 89,179,102,229, 20, 10, 5,190,248,226, 11, 91,106,106,106,237, 5, 11, 22,156, 92,189,122,117,240,151, 95, -126,217,211,157,192, 98, 24, 38, 56, 62, 62,222, 45, 39,207,243,176, 90,173,224, 56, 14, 22,139, 5,213,170, 85,147, 74,163,167, - 3,101, 0,224,215,211, 38, 0, 8,124, 84, 50,157, 78, 87,181,111,223,190,108, 74, 74, 10,228,114, 57,172, 86, 43, 18, 19, 19, - 17, 27, 27, 43,251,254,251,239, 43, 23,151,175, 74,149, 42,131,227,226,226, 66,127,253,245, 87,235,247,223,127,111,110,211,166, -141, 98,224,192,129,250,102,205,154, 53,141,142,142,102,190,253,246, 91,243,174, 93,187,172,255,251,223,255, 84,211,166, 77, 11, -253,237,183,223, 94, 1,176,230, 73,187, 83,130, 4, 9,133, 11, 44, 17,199, 40,165,221, 0, 64,161, 80,212, 46, 85,170,212, 10, -142,227,194,237, 86,156, 68,185, 92,254,133,213,106,253,203, 94, 65,109, 22, 4,161,171, 39,203, 85,255,254,253, 27,254,246,219, -111,179, 14, 31, 62,156,149,150,150, 22,190,101,203, 22,211,123,239,189,119, 11, 0,110,220,184, 17,211,165, 75,151,168,225,195, -135,199,183,107,215,110, 94,203,150, 45, 71,236,222,189,123, 39,242,187, 30,139, 20, 87,177,177,177,135,246,237,219,231,235,239, -239, 95, 80,205,149, 45,139, 17, 35, 70, 40,186,118,237, 90,190,117,235,214, 7, 9, 33, 77, 41,165,103,189, 17, 66, 21, 43, 86, -220,245,199, 31,127,248, 4, 4, 4, 32, 51, 51, 19,137,137,137,200,203,203,131, 94,175, 71,239,222,189, 21,205,155, 52, 46, 53, -124,228,168, 93,132,144, 54,222,136, 44, 66,200,243,141,171, 87,223,181, 58, 46,206,199,118,231, 14, 52, 26, 13,114,115,115, 1, - 0,190,190,190,168, 87,174, 28,123,124,229,202,168,126, 99,199,138,156, 79, 92,100, 17, 66, 84, 0, 64, 41, 53, 19, 66,182,202, -100,178,110, 74,165,146,233,214,173, 27,118,237,218, 69, 76, 38, 19, 11, 0,106,181,154,235,214,173, 27, 52, 26, 13, 44, 22,139, - 0, 96,107, 97,150, 38,119,156,114,185,156,105,217,178,101,222,177, 99,199,210, 69, 78,173, 86,107,107,217,178,101,144, 82,169, -212,112, 28, 71,139,226,124, 76, 34, 18,215,174, 93, 43,112, 45, 39, 39, 7, 41, 41, 41, 72, 75, 75,131,217,108, 70,102,102, 38, - 4, 65, 32, 26,141, 38, 69, 16, 4, 48, 76,190,177,173, 48, 78,133, 66,129,203,151, 47, 23,184,198,113, 28, 12, 6, 3,204,102, - 51,172, 86, 43,114,114,114, 52,190,190,190, 21,171, 87,175, 30, 15, 96,115,122,122,250, 23,137,137,137,183,165,226,233, 31,193, -157,173,127,153, 74, 3,176, 0,184, 89, 2,124, 2, 0,236,223,191, 31, 73, 73, 73, 72, 77, 77, 69, 74, 74, 10,162,163,163,241, - 48,221,110,151, 46, 93,154, 87,187,118,109,114,234,212,169,159, 1,124,189,118,237,218,151,210,211,211, 23,143, 25, 51, 38,240, -243,207, 63, 79, 31, 59,118,236, 16, 0, 63,174, 93,187,246,245,154, 53,107,118, 57,115,230,204,220,127,194,157, 18, 36, 60, 6, -212, 7, 16, 98,255,159,106, 47,119,131,156,206, 79,219,243,173,248,156, 5,128,210,205,175, 8,241, 60, 5,192,159, 78,239,137, -231,143, 12,177, 43,134,138,135,187,135,194,194,194, 70,182,106,213,106,214,137, 19, 39,170,221,191,127, 63,224,254,253,251, 1, - 39, 78,156,168,214,170, 85,171, 89, 97, 97, 97, 35,197,231,236, 51, 11,224,116,238, 60,213, 82,113,232,208,161, 50,155, 54,109, -154,190,107,215,174,172,218,181,107, 91,254,248,227, 15,174, 93,187,118,201, 0, 56, 0, 92,187,118,237,146,119,239,222,205, 55, -104,208, 64,243,219,111,191,221, 61,120,240,224,236, 13, 27, 54,132, 1,144, 21,194, 9, 66,136,220,223,223,255,167,189,123,247, - 62, 32,174,156, 81,170, 84, 41,108,221,186, 85,239,239,239,191,153, 16,162, 40,194,157, 32,132,168,213,106,245,198,221,187,119, -251,248,250,250, 34, 57, 57, 25,114,185, 28,161,161,161,200,202,202, 66,226,253,251,184,125,229, 10, 24,139, 5,115,166, 78,246, -213,104, 52, 27, 8, 33, 74, 79,156,126,126,126, 27, 87, 79,155,230,147,182,107, 23, 78, 77,153, 2,171,213,234,232, 90,181, 90, -173, 56, 56,116, 40, 82,126,255, 29,223, 78,156,232,227,231,231,183,145, 16,162, 46,138,179, 36,224,204, 73, 8, 25, 10, 32, 29, - 64, 58, 33,100, 40,165,244,112,108,108,236,137, 11, 23, 46,160,105,211,166, 88,191,126,125,173, 49, 99,198, 12, 29, 51,102,204, -208,245,235,215,215,106,218,180, 41, 46, 92,184,128,216,216,216, 19,206, 99,165,188,225,220,187,119, 47, 90,181,106,149,177,126, -253,250,152,137, 19, 39, 78,155, 56,113,226,180,181,107,215,150,111,213,170, 85,198,220,185,115,205, 69,113, 62, 14,191, 59, 91, -150,156, 15, 65,248,187,110,137,140,140, 76,222,180,105, 19,122,247,238,205, 40,149,202,251,125,250,244, 81, 29, 56,112,128, 2, -216, 90, 28,119,154, 76, 38, 24,141, 70, 24, 12, 6,220,184,113, 67, 51,115,230,204, 38,159,126,250,105,133, 93,187,118, 69,125, -248,225,135, 67, 66, 66, 66, 78,134,135,135,151,121,210,126,151, 56, 1, 0,137, 0,172,246, 70,221,237, 71,225,108,221,186,117, -141, 10, 21, 42,132,173, 59, 23,128, 12, 69, 21, 8, 10,127, 8, 10,127,240, 65,245,113, 77,217, 1,165, 75,151, 14,243,245,245, -109, 88, 28, 78, 74,233,206,191,254,250,171, 3,165,116, 9,165,148,167,148,110, 24, 59,118,236, 32, 66,200,198,177, 99,199,190, - 77, 41,221, 96,191,190,236,244,233,211, 93, 40,165,187,255, 9,119, 74,105, 73,226,124,200, 6,126, 81, 90, 36,132, 16,178,149, - 16,178,117,252,248,241, 45, 1, 4,185,156, 55,114,126, 14,128,210,221,175,120, 56, 93, 15, 1,208,201,233,189,144,146,242, 15, -227, 20, 88,132, 82, 42,182,196,143, 17, 66,182, 0, 56,166, 80, 40,106, 63,247,220,115,221,182,109,219,230, 27, 18,242,247,119, - 67, 66, 66,176, 97,195, 6,223,234,213,171,119, 83, 40, 20,181, 1, 28,211,235,245, 91,224,166, 43,209, 14,255,161, 67,135,190, -244,234,171,175,102,215,174, 93, 27, 0, 50,207,159, 63,175,109,208,160,129,129,227, 56,194,113, 28,105,208,160,129,225,252,249, -243, 90,155,205,150, 83,191,126,125, 93,235,214,173,111,141, 30, 61,186, 63, 0,117, 17,126,232, 59, 99,198,140,232,128,128,128, -162, 18, 2,114,114,114, 16, 22, 22,134,161, 67,135,134,203,229,242, 55,138, 52,235,177,236,176, 25, 51,102,132,250,251,251, 35, - 35, 35, 3,209,209,209,176, 88, 44,184,124,249, 50, 76,134, 92,216,114,178, 97,203,206, 68,202,245,171,240,151,179,232,223,181, -115, 24,203,178,195, 60, 88, 71,134,125, 51,118,108,152,229,214, 45,220, 88,191, 30, 60,247,160, 97,134,179, 90,113,230,235,175, - 97,138,143,199,244, 65,131,194,148, 74,229,176, 39,108,185,250,156, 82,170,161,148,106, 8, 33,243, 26, 53,106,244,189, 70,163, - 25, 26, 23, 23,215,126,199,142, 29, 47,238,219,183,175, 5,199,113,114,142,227,228,251,247,239,111,106, 50,153, 88,149, 74, 5, -150,101,169,183,156, 13, 27, 54, 92,161,209,104,134, 44, 94,188,184,253,238,221,187,251, 31, 63,126,124, 24,207,243, 74,158,231, -149,199,143, 31,127,219,104, 52,202, 41,165,124, 97,156, 79, 26,114,185, 28, 10,133, 2, 26,141, 6, 77,154, 52,185,190,108,217, - 50, 91,116,116,180,124,227,198,141, 1,145,145,145,186,133, 11, 23,102,230,228,228,204,240,150,207,106,181,194,108, 54,195,104, - 52,194,100, 50,225,143, 63,254, 40, 55,124,248,112,214,100, 50,241, 93,186,116, 73,183,217,108,230,177, 99,199,234, 3, 3, 3, -223,147, 26,172,255, 8, 56, 0,185,118,129,101,118, 78,203,132,144,154,162, 53,214, 27,100,102,102, 46,253,230,155,111,162, 25, -149, 63, 14, 88, 58, 98,141,240, 25,118,248, 45, 68,114,153,247, 17, 26, 93, 1,175,188,242, 74, 40,165,116, 97, 9, 84,116,155, - 41,165, 61, 41,165,155, 30,230,253,199,237, 78, 66, 72, 25, 31, 31,159,245,122,189,254,128,143,143,207,122, 66, 72,153, 71,245, -115,187,138,164, 77,183,106,178,248,118, 21, 8,237, 86, 77, 22,223,174, 98,241,215,106,146,240,116,194, 69,139, 56, 35,133, 82, -218,153, 82,218,121,250,244,233,211,156,158, 23,207, 53, 94,242,119,166,148,118,118, 73,163, 91, 31,135, 95, 88,103,229, 40,122, -202,121,182, 96,169, 82,165, 86,172, 88,177,194,215,245,197,251,247,239, 35, 59, 59, 27, 19, 38, 76,240,125,245,213, 87, 71,221, -189,123,247, 53, 15,223, 82, 38, 38, 38,214,233,215,175,159,218,106,181,102, 8,130,192,100,103,103,179,126,126,126,188,248,128, -159,159, 31,159,149,149, 37, 55, 24, 12, 50,158,231,205,175,190,250,170,114,208,160, 65,245,156, 45, 88, 15, 72,218,144,144,182, - 29, 59,118, 84, 22,118,223,102,179,193, 96, 48,192, 96, 48,192,106,181,162, 73,147, 38,170,101,203,150,181, 3,176,184,176,119, - 84, 42, 85,219,182,109,219,202,211,211,211,225,231,231,135,219,183,111,227,230,205,155, 48,231,230,194,154,155, 13,107,110, 14, -184,156,108,208,236, 44,164, 93,189,132, 6, 85,171, 40,126, 80,169,218, 3,152, 93, 24,167, 94,175,111,219, 96,192, 0, 86,167, -211,161, 69,191,252,249, 3,191, 85,173, 10,202,243, 16,120, 30, 60,199,161,253,229,203,176,217,108, 96, 24, 6,245,211,211, 89, -253,202,149,109, 1,204,250, 39, 18,185, 74,165, 98, 87,173, 90,213, 87,169, 84,130, 82, 74, 44, 22, 11,118,236,216,241,200,156, - 43, 87,174,236, 47,114, 90,173, 86, 90,163, 70,141, 7, 50,146,217,108,166, 79, 75,102, 87, 42,149, 80,171,213,176, 90,173, 40, - 91,182,172,177, 95,191,126,135,166, 78,157, 90,154, 97, 24,157, 66,161,216,150,150,150, 54, 45, 33, 33,225,134,183,124, 54,155, - 13, 22,139, 5, 22,139, 5, 70,163, 17,215,175, 95, 15, 47, 87,174, 28, 25, 58,116, 40,159,151,151, 23, 51,127,254,252,107, 59, -118,236,208,206,152, 49,163, 7,128, 17, 82,113,251,228, 96,183, 66,251,149, 14, 98, 13,114, 25,114, 1,248,218,197, 64, 15, 66, - 72,131,106,213,170, 5, 92,184,112, 33,131, 16,114, 4,192, 26, 74,233,253,162,248, 4, 65, 32,130, 32,224,237,231, 51, 49,180, -161, 12, 54, 91, 22,178,178,178,112,251,246,109,156, 63,127, 30, 71,143,158,127, 40,119,170,213,234, 55,124,124,124,218,169,213, -234,178, 28,199, 49,185,185,185,183,243,242,242,118, 9,130,176,148,186,118, 35,120,129,199,229, 78, 17, 58,157,110,230,135, 31, -126,216,216,207,207, 15,127,253,245, 87,204,218,181,107,103,226, 17, 7,205,171,229,204,183,179,231, 46,140,138, 10,245,199,233, -125, 63, 71, 77, 91,178,238, 91, 0,209, 82, 42,126, 38,242, 33, 45, 68, 96,253, 9,160,147,125,118,121,231, 71,224,127,164,247, - 31, 74, 96, 21,226, 33,112, 28, 23,238,108,185,162,148,226,254,253,251,184,119,239, 30, 82, 82, 82, 16, 16, 16, 0,171,213, 26, -238, 77,253,154,147,147,243,124, 80, 80, 80,158, 92, 46, 55, 27,141, 70,104,181, 90, 65, 46,151, 83,251,119,136,125, 22, 34,111, - 54,155, 9,203,178, 54, 95, 95, 95, 31,179,217, 92, 5, 69,140, 21,163,148, 62, 31, 20, 20,228,246,158,217,108, 70,110,110, 46, - 12, 6, 3,114,115,115, 97, 54,155, 17, 22, 22, 6,142,227,234, 20,217,132,229,184,154, 33, 33, 33, 72, 72, 72,128, 70,163, 65, -124,124, 60, 44,185, 57,176,230,228,128, 51,100,131,207,202,130,144,157, 13,193,144, 13,155, 37, 15, 81,149,170, 66,156, 97, 88, - 24, 44, 22, 75,205,160,160, 32, 24, 12,127, 15, 39,163,118, 97,197,113, 28, 56,251,160,103,177,219, 48, 56, 56, 24,226, 12,195, - 39,212,106, 48, 19, 66,198, 48, 12, 51, 79,165, 82,177, 67,134, 12,193,253,251,247, 11,164,137, 33, 67,134, 56,198, 92, 53,107, -214,108,191, 90,173,230, 82, 82, 82, 96, 54,155,229,222,112,150, 45, 91,246,246,132, 9, 19,142, 89, 44,150,232,200,200, 72,127, -179,217,108,172, 92,185,114,164, 70,163, 9,179, 88, 44,124,189,122,245,150,106, 52, 26, 91,110,110, 46,229, 56,142, 60, 37,153, - 29,132,144,252, 56,226, 56, 4, 7, 7, 27, 82, 83, 83,143,102,100,100,244,125, 24, 62,155,205, 38,206,208,130,209,104, 4,165, - 20,127,253,245, 23,212,106,181,156,231,249,115, 28,199,105,229,114, 57, 24,251,224, 46, 9, 79, 44,158, 91, 84,241, 87,206,142, -107, 16,234,255, 92, 23,157, 65,171,148, 25,132,219,207,149,253,238,243,243,107, 95,237,255,134,239,164, 73,147,202, 4, 7, 7, -171,175, 93,187,102,154, 60,121,114,185, 85,171, 86, 17, 79,141,159,187,119,239,110,252,240,195, 15, 3, 59,118,236, 24,163, 82, -169, 72, 86, 86, 22, 82, 82, 82,144,148,148,132,155, 55,111,210,211,167, 79, 95, 55,155,205,235,139,227,206,200,200,200,101,195, -135, 15,127,181,110,221,186,114,209, 34,106, 48, 24,106,239,221,187,183,235,111,191,253,214, 20, 64,177,211,229,221,187,119,215, -127,244,209, 71,186, 14, 29, 58, 84, 81,169, 84, 76, 73,184,211, 25, 12,195,132,249,248,248, 96,215,174, 93,240,247,247, 7,195, - 48, 97,143, 26, 95, 38,171, 16, 21, 25, 30, 4,211,193,217,168, 18, 82, 6, 38,171, 16, 37,165,226,103,199,130, 85,200,173,250, -162, 5,202,131, 72, 50,142, 27, 55,238, 67, 66,200,214,113,227,198,125,232,206,130,101,255,203, 59, 63,231,244,188,185,196, 5, -150,151, 45, 29,220,187,119, 15, 9, 9, 9,184,119,239, 30,210,210,210,192, 48, 76, 81, 1, 82,192, 95,132, 16, 97,231,206,157, - 1,135, 14, 29, 50,212,175, 95, 63, 83, 28,223,194,113, 28,177,217,108,196, 62,238,133,220,190,125, 91,113,224,192, 1,255,139, - 23, 47,134, 33,127, 32,154,224, 33, 66, 30,184, 38, 10, 43,231,195,100, 50, 65,173, 86,123,229, 87,177, 2,252,235,196,137,124, -113,149,155, 99,239, 26,204, 2,159,157, 5,106,200,129,146,183, 65, 9, 10, 98,202,243, 58,252,156, 33,138, 43,171, 93, 96, 89, - 44, 22,216,108, 54, 8,130, 0,142,227,254,137,132,189,168,118,237,218,117,126,252,241,199,129,247,238,221,123,224,126,247,238, -221, 49, 98,196, 8, 12, 31, 62,252, 98,167, 78,157, 78,255,252,243,207, 24, 54,108, 24, 4, 65,120,142, 16,146, 69, 41,253,173, - 40,206,113,227,198, 29,191,123,247,238,158, 43, 87,174, 12, 9, 13, 13, 85,213,172, 89,243,106,205,154, 53,101, 63,254,248, 99, -216,155,111,190,121,226,197, 23, 95,188,245,251,239,191, 7,238,218,181, 75, 45, 8, 66, 93, 66,200,189,127,122, 29, 44,179,217, -236,176, 56,153, 76, 38, 88,173, 86,160,136, 65,237,158,210,166, 24,183, 28,199,137,220,228,199, 31, 55, 97,255,254,253,204,249, -243,231,162,135, 12, 25, 42, 14,164,151, 74,218, 39, 35,172, 58, 40, 25,242,213,152,231,130,212,239,213, 10, 50, 40, 89,146,123, -249,171, 15,115,111,150,214, 27,194, 74,105, 45,209,229,252, 35,167, 77,155, 26,113,241,226, 37,243,132, 9, 19, 46,244,233,211, - 39,244,189,247,222,171,182,113,227,198,166,132,144,111, 40,165,153,133,240, 42, 6, 14, 28,120, 52, 52, 52,180,252,146, 37, 75, -146,239,222,189, 27, 96,179,217,180, 54,155,205,106, 48, 24,174,229,229,229, 29,176, 90,173,187, 40,165, 39,138,227, 94, 95, 95, -223, 90, 3, 6, 12,144,103,102,102,194, 62,251, 22,201,201,201,104,220,184,177,108,203,150, 45,213, 31, 38, 12,210,211,211,103, - 19, 66,246,172, 94,189,186,157, 94,175,175,171, 82,169,194, 1,240, 57, 57, 57, 73, 6,131,225,212,195,184,179, 64, 57,199,243, - 73, 39, 78,156, 40,175,215,235,113,231,206, 29,240, 60,159,244,168,241,166, 86, 48,119,207,236,219, 82,170,106,112, 57, 28, 56, -116, 4,106, 5,115, 87, 74,205,207, 60,196, 49, 82,112, 22, 78,110,132,209,161,184,184, 56,205,244,233,211, 17, 23, 23,119,206, -157, 5, 75, 20, 90,113,113,113,231,196,231,156,158,223, 87,162, 2,171, 40,129,196,178,108, 98, 74, 74, 74,128,191,191,191, 67, - 88, 37, 36, 36, 32, 33, 33, 1, 74,165, 18,183,111,223,134, 82,169,188,239, 77,163, 67,163,209, 28,175, 93,187,118,229, 27, 55, -110, 40, 38, 79,158, 92,234,196,137, 19,250,198,141, 27,215,208,104, 52, 60,165, 20, 38,147,137,185,112,225,130,207,172, 89,179, -162,158,127,254,121,203,243,207, 63,127,114,221,186,117, 70, 20,177,232, 40, 33,228,216,253,251,247, 99,202,150, 45, 43,138,181, - 2,162,202, 89,104, 1,249, 93,155, 44,203,158, 44, 50, 80, 88,246,204,229,203,151,219,104,213, 42, 88,114,178, 97,205,205, 6, -151,147, 3, 62, 39, 11,124, 86, 22, 96,200,134,146,227, 32,231,109,208,168,213,184, 23, 31, 15,150,101,207, 20,197,169, 84, 42, -207, 36, 37, 37,181,241,247,247,119, 84,158, 54,142,203, 63,120, 30, 22,142,115, 88,176,228,114, 57,238,222,189, 11,165, 82,121, -230, 73,167, 96,134, 97,120,113, 41,134, 66,252,129,176,176, 48,161, 65,131, 6, 24, 54,108, 24,120,158,183, 71, 3,105, 65, 8, - 57, 64, 41,205, 45,140, 83, 16, 4,230,194,133, 11, 47, 93,187,118, 77, 38,151,203,153, 23, 94,120, 33,182, 73,147, 38, 22,165, - 82, 9,133, 66,193,230,230,230,250,238,218,181, 75,109,179,217,136,157,243,137,173,131, 37,166,157, 7,154, 66,246,193,232, 70, -163, 17,185,185,185,200,200,200, 96, 53, 26, 77,229, 26, 53,106, 28,177, 88, 44,235, 57,142,251,246,198,141, 27,217,133,113,218, - 5,153, 67,108, 9,130, 0, 74, 41,120,158,135,205,102,131, 66,161, 16,246,238,221,135, 89,115,102, 98,197,183,171,104,215,174, - 93,201,150, 45, 91, 32, 8, 66,188, 84,158, 62, 17,124,145,185,102,170, 26, 28,111, 48,239, 93,157,251,253,149,108,195,164,239, -231, 30,183, 40,101,217,245,154,135,213,140, 41, 87, 89,230,239, 31,192, 44, 94, 58, 47,237,135, 85, 27,174,221,185,115, 39,251, -203, 47,191,108, 88,185,114,101,191, 83,167, 78, 69, 1,112, 43,176,124,124,124,202,190,254,250,235,175,103,100,100, 40, 86,173, - 90,181,252,222,189,123,123, 41,165,215, 93,202,174, 58,132,144,207, 1,200, 1,132, 33,127,252,215, 78, 74,233,202,162,218,105, -132, 16,236,222,189,251,129,217,126,194,163,169,242,140,154, 53,107,214,186,114,229,202,230,196,196,196,239, 93,111,106,181,218, -174,177,177,177,175, 28, 59,118,236, 99, 74,233,181,226, 16,231,229,229,141,221,176, 97,195,231, 50,153, 44,146,231,249, 4,163, -209, 56,246,145, 45, 88, 54, 97, 80,220,226,181, 95, 27, 45,124,105,141, 82,118,199,100, 19,222,148,146,242, 51,109,189, 2,236, - 99,176,196,255, 0,136,203,249, 41,251,127,139,211,179, 41, 78, 86, 43,139,139,213,203,221,189, 20,148,224, 34,231,133,173,228, - 62, 30,192,243, 0,142,201,229,242,121,175,190,250,234,172, 31,126,248,193, 55, 59, 59, 27, 73, 73, 73, 72, 78, 78, 6,203,178, -208,235,245, 88,180,104,145, 49, 41, 41,105,158,243, 59,174, 43,190,139,121, 34, 56, 56,248,248,170, 85,171,194,191,250,234, 43, -246,181,215, 94,187,221,169, 83,167, 42,139, 22, 45,186,161, 80, 40, 40,207,243,196,108, 54,147,183,223,126,187,252,156, 57,115, -110,201,100, 50,109,239,222,189,137, 78,167, 59,102, 47,120,220,135,120, 74,202,206,159,126,250,233,165,209,163, 71,171, 44, 22, -139, 91,203,149,120,205,223,223, 31, 7, 15, 30,180,100,100,100,236,240, 96,181,216,185,237,215, 95,154,253,175, 79, 31,133, 45, - 39, 27,182,156,108,112,217,217,224,115, 50, 65,114,179, 33,231, 57,104, 20, 2,194,163,213,224,140, 62,248,229,207, 83, 54,179, -217, 92,228,130,132,217,217,217, 59, 15,172, 88,209,226,249, 50,101,216,131, 35, 71,194,106,179,161,195,229,203, 14, 81,101,181, - 90,177,185,102, 77,240,132,224,185,183,222,194, 85,142,227,178,179,179,119, 62,141,153,224,244,233,211,201,253,250,245, 59, 33, - 8, 66,157,226, 88,115,156, 42,159,156,220,220, 92,164,166,166,242,105,105,105, 38, 0, 72, 78, 78,206,216,178,101,203, 5, 65, - 16,158,127, 24,206,146,128,205,102,123,192,250,196,243,124,190,149, 49,223, 82,160,252,229,151, 95,154, 93,184,112, 65,113,246, -236, 89,236,223,191,255,185, 31,126,248, 97,124,153, 50,101,106,222,190,125, 59,209,147,104,115,183, 88, 47,236,227, 11,215,173, - 94,143,193,131, 7,147,196,196, 68,172, 89,179, 6,158, 22, 61,149, 80, 98, 48,128,227, 53,150,189,171,115, 59,253,122, 39,231, -240,125,227,100, 0,219,169,145,163,165, 74,149, 58, 93,183,110, 64, 48, 0,152, 77,124,120,197,138, 21,155,179, 44,171,180,167, -225,186, 65, 65, 65,139, 0, 52,113, 71,218,189,123,247, 70,161,161,161,181,127,251,237,183, 83,247,238,221,219,231, 42,174, 0, -160,114,229,202,159,157, 61,123,182,131, 92, 46, 39, 78,105,132, 2,112, 43,176, 90,180,104, 81,185, 76,153, 50, 65,191, 94,241, - 67,182,162, 2,168, 44, 11, 96,213,224,253,107,225,182,162, 26,162,163,143, 4,249,251,251, 63,151,153,153,121,170,152, 86,188, -210,189,123,247,254,101,217,178,101, 85, 95,124,241, 69, 37,128, 7, 4, 86,213,170, 85,123,252,254,251,239, 61,135, 12, 25, 82, -139, 16,210,197,203,221, 58,196,124,116, 27, 64,207,146,140,180, 29, 87,233, 46,216,215, 44,147,240,159,193,159,143,233,217,199, -134,194,186, 8,159, 23, 4,161, 43,195, 48,176, 90,173,113, 97, 97, 97,155,123,247,238,221,125,252,248,241, 62, 65, 65, 65, 14, -203,213,162, 69,139,140, 55,111,222,220,104,181, 90,255, 34,132, 76, 76, 72, 72,232, 26, 25, 89,104,189,144, 51,127,254,252,181, - 93,186,116,121,237,173,183,222, 50,214,172, 89, 83, 95,165, 74,149,188, 67,135, 14,249,180,109,219, 54, 91, 38,147,209,131, 7, - 15,250,150, 47, 95,222, 68, 8, 81,253,254,251,239,105, 71,142, 28, 41, 31, 23, 23,247, 13,242,167, 77, 23,134,213, 83,166, 76, -153,208,181,107,215,242, 65, 65, 65,200,206,206, 46, 32,178,196,255,106,181, 26,137,137,137,216,180,105,211,125,155,205,246,141, - 7, 75,198,151, 11, 23, 45, 30,213,178,193, 11, 81,122,173, 6,137,241,183,193,103,101, 0,134, 92, 40, 57, 27, 52, 74,138,168, - 10, 90,176, 50, 29,174, 37,230, 98,197,161, 63, 19, 57,142,251,178, 40, 78,139,197,242,229,136, 57,115, 70, 29, 94,188, 56,170, - 76,175, 94, 56,191,114,165,163, 75, 80, 20, 88, 60, 33, 40,221,186, 53, 24, 63, 63, 76, 91,178, 36,201, 98,177,124,249,164, 19, -132, 32, 8, 50,139,197, 82,148, 63, 32, 8, 66,252,249,243,231,215, 18, 66,114, 8, 33, 45,236,183,246,184,179, 94, 57,115, 50, - 12, 35, 84,171, 86,237,199,176,176,176,151, 0, 24,170, 85,171,246,163, 74,165,106,101,177, 88, 94, 16, 4, 33,254,175,191,254, -218, 68, 8, 73, 36,132,136,173,140, 39,186, 14,150,205,102,195,196,137, 19, 49,125,250,116,140, 27, 55,206,225, 95,177,155, 48, - 51, 51,179,220,129, 3, 7, 20,123,247,238,165, 75,150, 44, 73,123,237,181,215,252,223,122,235, 45,255,175,190,250,234, 93, 0, - 99, 11,227, 28, 59,118, 44,150, 44, 89,130,193,131, 7, 63,168,174,100, 50, 33, 62,254, 46, 76, 38, 19,157, 63,127,126,130, 92, - 46, 15,248,230,155,111, 52,111,190,249, 38,145,202,211, 39,130,143, 52,253, 62,126,199, 94,198,204,163,148,238, 17,111,232,245, -122,205,143, 63,254,196, 2,192,198, 13,155,228,148, 82, 63,113, 97,216,239,191,255, 94,221,184,113,227,208,194, 72, 55,108,216, -144, 57,121,242,228,160, 65,131, 6,189,184,103,207, 30, 45, 33,228, 87,123,161,159, 10,128, 7, 16, 12,224, 96, 72, 72, 72,196, -218,181,107, 43,180,107,215, 78,231,201,161, 57, 57, 57,223,172, 93,187,182,236,156, 3,126,248,213,240, 18,238, 10,189, 64,253, - 41, 2, 67,115, 80,205,231, 14,250,246,237, 27, 57,111,222,188,175, 1,212, 45,134,184,170,254,242,203, 47,255,180,108,217,178, -114,111,189,245, 86,252,193,131, 7,239, 18, 66, 62,115,243,104,218,128, 1, 3,110, 47, 95,190,188,130, 32, 8,219, 9, 33, 47, - 82, 74,175, 72,201, 71,130,132, 34,242,151,187,241, 75,132,144,205, 28,199,117,101, 89,118,139,243, 66,163, 97, 97, 97,163, 44, - 22, 75, 4, 33,132, 42, 20,138,196,164,164,164,121,206, 11,141,198,199,199,119,141,142,142,118,188, 99, 95, 44,211,121,173, 12, -125,135, 14, 29,218, 28, 62,124,120,193,214,173, 91,147,115,114,114,124, 54,108,216,160,153, 62,125,250,109, 65, 16,232, 7, 31, -124, 80,166,125,251,246,121, 60,207,223,127,235,173,183,202,151, 43, 87,238,173,139, 23, 47,238,114, 22, 88,110, 56, 65, 8,169, - 94,161, 66,133,131, 27, 55,110,212,251,251,251, 35, 57, 57, 25,233,233,233, 48, 24, 12,224,121, 30,114,185, 28, 41, 41, 41,152, - 60,121,114,118, 66, 66,194, 3, 11,141, 22,194,249,124,217,168,168,157,243, 62,155,232,235,207, 50, 72,187,116, 1, 92, 70, 26, -228,156, 13,165,170,251, 65,161,212,224,234,229, 28,188,187,122, 83,206,157,244,204, 7, 22, 26, 45,140,179, 94,197,138,187,150, -140, 25,227, 99,186,123, 23, 17,175,191,142,188,188, 60, 88,173, 86, 48, 12,131,235,243,230, 65, 17, 18,130, 9,235,214, 25,206, -221,185,211,218,117,161, 81,119,156,143,156, 0,156, 56, 9, 33, 67, 9, 33,142, 65,238,221,187,119, 47,240,236, 79, 63,253,132, -197,139, 23,195,108, 54,115,148,210, 81,148,210, 69,132, 16, 31,123, 43, 53,215, 19,103,217,178,101,239,196,198,198,254,201,243, - 60,107, 23, 23,244,252,249,243,117,111,222,188, 89,202,133, 83,236,186,230,158,148,223,131,130,130,230,253,246,219,111,101, 67, - 67, 67,137,243, 10,235,118,129, 8, 0, 24, 54,108, 88,235, 35, 71,142,168,106,215,174,109, 78, 77, 77,173, 31, 18, 18,242,199, -170, 85,171,130,123,247,238,157,112,238,220,185, 40, 87,206,224,224,224, 89, 27, 55,110,172, 80,161, 66, 5, 70,180,130,185,118, - 67, 14, 28, 56,176,205,170, 85,171,148, 47,189,244,146,217, 96, 48,132,249,250,250, 94,219,184,113, 99,112,183,110,221, 18,207, -157, 59, 23,241, 36,252, 46,113,186, 71,108,108,236,213,115,231,206, 85, 16,207,141, 70, 35, 82, 82, 82,144,154,154, 10,127,127, -127,180,109,219,246,250,205,155, 55, 43,184,227,180, 91,133,230, 46, 93,186,244, 69,157, 78,167,216,183,111,159, 97,215,174, 93, -166,219,183,111,115, 54,155,141, 70, 68, 68,176, 77,154, 52, 81,119,236,216, 81,167, 82,169,152,143, 63,254, 56,117,234,212,169, -193,132,144,185,148,210,119,221,113,214,169, 83,231,232,182,109,219,158, 39,132, 64, 38,147,193, 98,177, 34, 51, 51, 19,247,238, -197,227,252,249,243, 56,124,248, 48,118,236,216,113, 42, 55, 55,183,182,183,126, 39,132,252, 97, 54,155, 91, 40,149, 74,175, 5, - 61,207,243, 96, 89,118, 55,128, 54,148, 82, 65, 74, 75, 18,167,132,226, 89,176,196,193,185,207, 19, 66, 54,219, 47, 29,115, 93, -138,129, 16, 50,158, 16, 50,209,201,234,229,233,123,217,191,253,246,219,254, 54,109,218, 12,107,221,186,245,156,118,237,218,221, -191,127,255,126,204,236,217,179,163, 57,142,179,158, 63,127,158,185,118,237,218,237,227,199,143, 87,168, 84,169,210, 91, 23, 47, - 94,220,235,193,122, 37,186,245, 60, 33,164,113,203,150, 45, 55,189,245,214, 91,165, 27, 52,104,160,244,247,247, 7,203,178,184, -113,227, 6, 78,157, 58,101, 89,183,110, 93,124,102,102,166,215, 91,229, 80, 74,143, 17, 66,218,246, 30, 62,106,227, 91,221,187, - 4,191, 80,165,178, 50, 34, 34, 2, 48, 26,113,233, 78, 34,142, 92, 58,101, 93,182,255, 72,138,217,108,126,217,219,173,114,236, -156,109, 90,141, 25,179,113,210,255,254, 23,134,251,247,217,136,136, 8, 40,149, 74,220,188,121, 19,215, 4,129,155,177,116,105, - 82,118,118,246, 19,223, 42, 71, 92,179, 74, 16, 4, 22, 0, 52, 26, 13, 70,140, 24, 1,231,173,113, 22, 47, 94, 12,163,209, 8, - 0, 44, 33,228,115, 66,200,183,133, 89,173, 10,225, 44,253,235,175,191,150,118,230,172, 90,181,170, 59, 78,243,147,206, 8,233, -233,233, 19, 58,116,232, 16,199,178,108,161,171,213, 6, 4, 4, 32, 39, 39, 7, 28,199,241,247,238,221,187, 20, 16, 16, 0,185, - 92, 14, 74,169,219,124,148,150,150, 54,225,229,151, 95,158,194, 48, 76,161,150, 14,189, 94,127,251,143, 63,254,168,248,230,155, -111, 50,223,125,247,221,141, 65,131, 6,169,254,248,227, 15,254, 97,215, 52,146,240,248,224,220, 24,181, 55,222,104, 17,207,222, - 33,132,140, 61,113,226,132,122,240,224,193,117,255,247,191,255,233, 91,182,108,233,227,252,140,209,104, 20,126,254,249,103,195, -146, 37, 75,210,246,237,219,247,231,192,129, 3, 95, 66,254,248, 17,183,184,115,231,206, 47,211,166, 77,243,235,216,177, 99, 37, - 0,142,241, 87, 41, 41, 41,184,125,251, 54,206,158, 61,123,219,106,181,110, 41,166,183,134,245,235,215,239,215,229,203,151,151, -121,235,173,183,226,215,172, 89,179, 5, 64,150,155,231,124,122,244,232,209,117,249,242,229,101,222,126,251,237, 59, 0, 70, 74, - 43,188, 75,144,240,112, 2, 43, 75, 16, 4,152, 76,166, 48, 65, 16,186, 10,130, 0, 31, 31, 31,119,207, 61,159,144,144,208,213, -121,179,103,120,216,214, 6, 64,202,174, 93,187,118,174, 94,189,186,245, 7, 31,124,240,191,204,204,204,231, 79,159, 62,221, 0, - 0,228,114,249, 97,157, 78,119, 52, 46, 46,238,245,177, 99,199,166,120, 35,174, 92, 68, 86,181, 89,179,102,149,216,102,207,118, - 65, 84,241,203,245,155,134,125,163, 82,181,117,217,236,121,167,125,179,103,211,195,112,142,249,250,235, 97,250,245,235,159,218, -205,158,205,102, 51,247,210, 75, 47,125,195, 48,140, 96,111,181,178,102,179,249,117, 20,115,230,169, 43,103,247,238,221,191,147, -201,100,156,221, 50,196,152,205,230, 55, 30,133,179, 4, 43,207, 92, 0,195,139,122,166, 70,141, 26,171,182,108,217,210,175,107, -215,174,188,213,106, 77,238,210,165, 11,123,244,232, 81,202, 48,204,174, 66, 56,205, 0,222, 47,138, 51, 60, 60,188,204,194,133, - 11, 79,142, 28, 57, 82,191,122,245,234,192, 3, 7, 14,240,243,231,207,207, 78, 79, 79,255, 66, 42,158,158, 46,200,229,114,104, -181, 90, 88, 44, 22,164,164,164,192,211,146, 83,148,210,107,132,144, 78, 99,198,140,105, 58,102,204,152, 78,209,209,209,213, 75, -151, 46, 93,154, 97, 24,230,254,253,251, 41,119,239,222,189,101,181, 90,127, 7,240, 11, 0, 69,249,242,229,255, 2,176,170, 48, -190,180,180,180, 41,132,144,221, 43, 87,174,236,164,211,233,170,169,213,234, 64,155,205,198,228,228,228,164, 27,141,198, 11, 38, -147,105, 43,165,244, 80, 49,211,253,101, 66, 72, 75,150,101,127, 89,182,108, 89,213,251,247,239,151,221,187,119,111, 23,215,231, -234,214,173,187,124,249,242,229,101,134, 12, 25,114,109,245,234,213,197, 26,131, 37, 65,130, 36,176, 10, 98,154, 82,169,100, 97, -223,244, 89,180, 96,185,121,238,152,203,152,171, 44, 0,211,188,248,174,161,111,223,190, 55,251,246,237,251,185,221, 13, 50,228, - 47,197,192, 33,127, 4,191, 21, 30,150,102, 40,164,176,224, 0,124,109, 63, 74,170,226, 53, 33,127,189,155, 89, 79, 51,103, 9, -184,201, 76, 8, 25, 99,159,213, 4, 0, 99,254,250,235,175, 69, 46, 22,169,211,206,247, 61, 89,154,220,113,158, 58,117,202,149, -243,108,113, 56,255, 73,100,102,102,142, 90,184,112,225,177,113,227,198,169, 6, 12, 24,128,179,103,207, 98,250,244,233,230,204, -204,204,213, 15,203,153,152,152,120, 59, 60, 60,188,206,220,185,115,223,155, 51,103, 78, 55, 66,136,180, 23,225, 83, 2,163,209, -120,189, 86,173, 90, 32,249,179, 19, 40,199,113,142,217,159,246, 21,249,175,123, 89, 38,237,182, 31,158,240,185, 23,124,135, 1, - 28, 46,225,188,127,135, 16,210,233,214,173, 91,211, 46, 95,190,188,205,221, 51,231,206,157,251,169, 93,187,118,218,195,135, 15, -127, 88,220, 89,132, 18, 36, 72, 2,171, 96,134,187, 10,224,127, 94,100,204,184, 71,248, 54,239,133,181, 75,194,147, 21, 89,139, - 8, 33,223, 58, 89, 95,138,117,255, 73,113,254, 83,136,143,143,207, 0,224,216, 50, 36, 38, 38,230,129,113,106, 15, 43,178,144, -191,106,187,180,114,251, 83,132, 27, 55,110,116,248, 15,229,253, 59, 0,250, 21,118,223, 98,177,108, 1,176, 69, 74, 21, 18, 36, - 60,162,192,146,240,159, 22, 89,230, 71,185,255,164, 56, 37, 72,144, 32, 65,130,132,167, 25, 4, 64,155, 66, 42, 61,175,103, 7, - 16, 82,252,141, 54, 61,241, 75,156, 18,167,196, 41,113, 74,156, 18,167,196,249,236,113, 58,113,207, 41,228,214, 37, 23,190,175, -254,173, 22,139,199,118, 32,127, 26,175,196, 41,113, 74,156, 18,167,196, 41,113, 74,156, 18,231,195,124,231,173, 39,241,157,199, -113, 72, 27,202, 74,144, 32, 65,130, 4, 9, 18, 36,148, 48,220,142,193,218,176, 97,131, 76,252,255,202, 43,175, 12,228,121,222, - 49,125, 93, 38,147, 45, 92,179,102,205,183, 69,145,246,236,217,147, 47,138,211, 29, 60,125,199, 29,103,108,101,191, 33, 65,126, -218, 81,153, 89,121,115,111, 36,240,251, 77, 38, 83, 53,241,158, 90,173,190,240,237,183,223, 94, 41,105,119, 14, 28, 56,176,146, -235,119,202, 70,203, 91, 4,250,170, 71,164,103,230,206, 62,123, 37,231, 43, 41, 89, 61, 94,244,234,213, 75, 86,156,231,111,222, -244,103, 78, 34,226, 11,189, 78,209, 37,215, 96,251,130, 63, 49,113,193,179, 16, 14, 17, 17, 17, 85,244,122,125,127, 0,213,243, -242,242, 66,181, 90,109, 50,128,243,217,217,217,171,238,223,191,127,201, 91,158, 22,229,200,109, 0,165,237,167,119,246,220,164, -101,188,185,231, 9,237, 43, 16, 19, 5, 84,132,192,186,253, 42,117,108,112,249, 98, 69, 98, 18,232,131,215,219, 87, 36, 22, 74, -161, 32,128,121,251, 53,170,126, 86,210, 43, 33, 68, 15,160, 45,128, 88, 0,167, 1,236,160,148,230, 73, 57, 89,130,132,255,160, -192, 26, 56,112, 96, 51, 37, 75, 23, 64,160,254,160, 52,200,108, 54,203,149, 74, 37, 44, 22, 11,180, 26,205,151,131,223, 24,240, - 25, 8, 50,173, 2, 51,226,219,111,191,125,232,157,167,139,243,157,158, 61,123, 62, 48,205, 57, 64,175,153,178,231,231, 15, 2, -154,117,138,155,110,185,153, 62, 54, 39, 39,135, 81,169, 84, 48,155,205,240,243,243,107, 60,252,173, 65,117, 41, 67, 44, 10,181, -238,208,156, 57,115, 18, 31,214,157,239,190,251,110, 56,103, 53, 52,162, 54,170,180, 88, 44, 42,215,239,248,107,117, 51,246,252, -252,129,182,121,231,233,159, 1,144, 4,214, 83,132,124,113, 21,254,213, 59,125, 95, 24, 48,115,100, 27,248,183,152, 49, 22,192, -191, 90, 96, 17, 66,100, 49, 49, 49,195,202,148, 41,211,103,233,210,165,138,152,152, 24,168,213,106, 24,141,198,136,235,215,175, - 71, 12, 25, 50,164,121,249,242,229,215,222,184,113,227, 75, 74, 41,239, 5,101,233, 61,203, 63, 6, 0, 52,238, 63,185, 52, 33, -228,125, 0,121, 0,208,188,236,223,247, 90, 12,152, 92,154, 16, 50, 6, 5,103,255,222,167,148,186,157, 93, 70, 1,229,214,149, -179,208,245,213,247, 89, 66,200, 16,241,122,199, 74,192,182,239,231,225,197, 87, 70, 21,184,222,190, 60,216,159, 87,206, 66,231, - 87,223, 47,116,183,241, 23, 43, 49, 54, 65,160,133, 78,206, 97, 24,194,109,191, 74,221,109,252,155, 68, 41,221,238, 38, 44,219, - 35,127,163,101,183,207,119,174,202, 38, 89,109,188,219,133, 98, 21,114, 89,242,214,139,220, 3,239, 14,168, 67,108, 54, 62,191, -108, 85,176,224,253,252,252,246,124,244,209, 71,108,231,206,157,177,108,217,178, 38, 95,125,245,213, 91,132,144,223, 1,108,145, -150, 60,144, 32,225, 63, 38,176,148, 12, 93,178,125,245,226, 10,137, 41,233,232, 51,100, 60, 86,175, 94,141,140,140, 12, 4, 4, - 4, 64,169, 84,200, 23, 77, 27, 27,238,239,171, 13,239, 61,124,226, 18, 0, 85, 30,246,227,197,252, 78,197, 7, 10, 71,251, 66, -164,172,140,149, 43,149,114,102,237,218,181,200,204,204,132,191,191, 63,148, 74, 57, 51,111,242,104,141,191, 94,167,249,223,168, - 73, 77, 0,172,127, 88,119,114,198,220, 38, 63,127,191, 80,159,148,146,134,126, 35, 38,192,245, 59,114,133,130, 23, 43, 20, 41, - 73,253,115, 72, 77, 77, 37, 0, 16, 28, 28, 76, 11,138,171, 6, 3,230,140,110,135,119,103,239, 64,158,201,242,253,191,221,159, - 49, 49, 49,195,122,245,234,213,103,202,148, 41, 10,134,201,239,229, 55, 24, 12, 48, 26,141,136,138,138,194,158, 61,123, 20, 19, - 38, 76,232,243,211, 79, 63, 1,192,252,226,242,159, 59,119,174,108,233,210,165, 77, 0,208,165,166,175,235,189, 50,226, 61, 0, -240,245,245,245,200, 23,228,175, 51,159, 59,119,164,186,248,222,176,214, 81,124, 33,215, 77, 0,180, 69,113, 9, 2,101,119, 44, - 24, 82,232,253, 55,167,252,192,157, 94,191,191, 74, 76, 76,140,209,249,122, 33, 11, 37, 3, 64, 88,110,110,110,105,215,139,226, -243, 86, 27, 31, 90,216,247,218,141, 88,236, 86,120,217,120,176, 63,252,240, 3, 0,224,139,247,251,201,190, 62,154,202,178,108, -126, 81,251,249,231,159, 99,210,164, 73,202,237,219,183,119, 92,185,114,101, 71,251,214, 56,210,242, 7, 18, 36,252, 87, 4, 22, - 33,240,213,251,234,208,245,181, 17,248,109,219,118, 52,107,214,204,113,175, 92,185,114,120,165, 71, 23,252,180, 52, 14, 12,136, -239,163,124,252, 81,191,147,145,101,248,164, 67,159,249,147,239, 36,230, 30,222,186,245, 87, 52,109,218,180,192,251,255,235,253, - 18, 54, 46,154, 10, 66,169,226, 81,220, 41, 48, 84,161,215,235,240,242,160, 81,112,247,157,193, 3,186,110,125,177,231,188, 54, - 73,105,134, 57, 82,146,122,178,184,120,241,162,204,108, 54,191,162,215,235, 27,200,229,242, 48,149,127,105, 33,129,125, 62, 45, -133,196,220, 72, 14,205,107, 54,186, 77,216,139, 95,188,211, 18,239,206,222,129,185,171,143, 44,175,131,196,137,255,102,255, 70, - 68, 68, 84, 41, 83,166, 76, 1,113,149,147,147,131,220,220, 92,100,103,103, 35, 39, 39, 7, 12,195, 96,236,216,177,138,189,123, -247,246,137,136,136,216,229, 69,119,225,157,198,253, 39,231,139, 12,153, 60,119,226,196,137,230,208,208, 80,179, 86,171,165,172, - 66,149,211, 98,192,100, 95, 0, 96, 88, 69,206,220,185,115, 45, 81, 81, 81, 38,150,101,149,163, 70,141,242,106, 12,167,217,108, -166,206,156, 22,139,217,113,125,198,140, 25,150,176,176, 48,179, 86,171,165, 86,171,197,235,112, 56,115, 51, 29, 42,133, 12, 42, -133, 12,106,165, 28,190,101,235, 67,149,113, 22, 28,199, 97,230,204,153,214,240,240,112,139, 86,171,165, 74,165, 82, 49,114,228, - 72,143,238, 28, 56,112, 32,245,247,247,183,106,181, 90,197,164, 73,147, 30,216,151,239,143,211,247,160, 81,202,161, 85,177,168, - 88, 46, 26, 42,106,244,218,173, 50, 89,193, 30,109,149, 74,133, 38, 77,154,160,122,245,234,216,188,121,115, 11, 72,235, 75, 73, -144,240,236, 10, 44, 66, 72,115, 0,123, 0,128, 82, 74, 0,128, 1,197,167,131, 94,196, 91,175,246, 2,207, 11,249,163,226, 1, -200, 8,193,251,125,154, 65,224, 57, 8,240,184, 85,132,199,169,154,197,253,142, 51, 39, 37,140, 12, 0,170,148, 14,162,131, 95, -239, 11,129,207,239, 13,225, 1,200, 1,188,215,171, 9,120,222, 6,193,195,162,240,222,185, 83,192,199, 3,219,193,221,119,170, -148, 15, 99,204, 60, 7,226,180, 25,227,227,216, 4, 83,226, 44,136, 67,135, 14, 69,104,181,218,217,253,250,245,139, 28, 57,114, -164,146,103,253,217, 13,135,211,252, 62, 88,116, 56, 50,207,108,149,245,109, 89, 22,163,255, 87, 19,163,231,254, 33,138,171,183, -202,149,203,252, 87,199,145, 94,175,239,191,116,233,210, 7,196, 85, 82, 82, 18,147,155,155, 11,171,213, 42,228,228,228,128,231, -121,140, 27, 55, 78, 62, 97,194,132,254,132,144, 73,118, 30,179, 59,206, 61, 55,105, 25, 66,200,152,115,231,206,149,249,232,163, -143,172,173, 90,181,186, 83,174, 92, 57,131, 76, 38, 67, 68, 68,196,188,182,109,219, 6, 78,153, 50,197,218,177, 99,199, 91, 50, -153, 12, 21, 43, 86, 52,156, 61,123,182, 12, 0,141,183,126,119,230,252,246,143,133,212, 94,238,160,109,219,182,183, 43, 86,172, -104,144,201,100,184,242,243, 12,234,109,120,202, 89, 6,149,162,252, 28, 45, 53,104,124,128,140,252,211,182,109,219,198, 87,169, - 82, 37,151, 97, 24,156, 57,115, 38, 26,128,218, 19,167, 70,163,177,245,237,219,247,206,165, 75,151, 30,120, 30, 0, 88, 25,131, - 6, 85,236, 6,171,168, 58, 64,252,129, 66,221, 41,151,129,155, 48,172, 31,235,175, 6, 84,190,193,230,236,236,108,232,245,250, -124,139,152,213,138,191,254,250, 11, 13, 27, 54,108,190,126,253,250,189, 82,126,151, 56, 37, 78,103,163,203,131, 90,228, 89,176, - 96,237,113,245,140,192,115,168, 16, 21,132, 69,239,191, 12,142,227,193,243,130,253,224,193,113, 2,108, 86, 11, 60,232, 43,239, -172, 67,143,240,157, 0,189,102,202,111,107, 71, 6,180,238,246,121,235, 5,239,245,216, 41,216,108,224, 5,128,227, 5,240, 54, - 30,130, 32,192,102, 41,153, 53, 44, 5, 27,143, 10,145, 65, 88,240, 94, 15,184,126,103,225, 47, 59,186,252,177,101,172,182, 89, -231,233,239, 1,152, 41,233,246, 39, 99,185,210,106,181,179, 87,173, 90, 85,166,126,253,250, 12, 0,236,191,204,169, 62, 88,116, - 56,114,123, 92, 99,210,184,122, 16,146, 51,205, 24,245,229, 41,252,118, 56,121,155,171,184,250, 23,163,122, 76, 76, 76, 1,113, - 53,107,214,172,224, 69,139, 22, 69, 1,192,203, 47,191,124,175,117,235,214,169,151, 47, 95, 70, 68, 68, 4, 73, 77, 77,237, 4, - 96,148,189,240, 26, 67, 41, 93, 84, 8,175,161,116,233,210,166,144,144, 16,179, 40,132, 24,134, 1,203,178, 40, 93,186,180, 41, - 52, 52,212, 92,177, 98, 69,131, 66,161, 0,195, 48, 16, 5,158,151,133, 38,100, 50, 25, 68, 78, 87,235,142,200, 89, 28,200, 89, -167,231,233,131, 22, 35,134, 97,220,126,175, 48,168,213,106, 10,160,208,231,101,140, 83,241,200, 22, 61, 18, 96,249, 73, 42, 39, -132,236,161,148,226,228,201,147,184,113,227, 6, 20, 10, 5,194,195,195, 49,105,210, 36,152,205,249,101, 82,175, 94,189,154, 3, - 56, 35,229,102, 9, 18, 28,216,243, 44, 8, 43, 87,129,229, 80,143,148,210,189, 0,192,115, 54,240,188,224, 86,244, 88,109, 28, -108, 86,107,137, 56,160,168,239,240, 60, 95,228,119,196, 49, 88, 2,165,172, 91,113, 37,228,239, 27, 86, 34,238, 20,108,176,241, -128,187,239, 16,194,240,246,130, 94, 33,229,143, 39, 3,179,217,220,183, 95,191,126,145,162,184, 2,128,212, 28, 27,155,103,182, -201, 26, 87, 15, 66,221,150,189,112, 98,247,122,172,219,119, 15,229, 67,180,251,202,233,158, 9,113,133,188,188,188, 80,181, 90, - 13,131,193,224,176, 92, 45, 90,180, 40,202, 98,177, 48, 0,192,178,242,232, 20, 33, 74,205, 11,128,159,254, 62, 50, 50,178,130, -196, 2,139, 16,242, 57, 33,228,219,162, 86,206, 87, 40, 20, 14, 97,226, 44,124, 84, 42,213, 67, 9, 23, 17,162, 40, 83, 40, 20, -110,175,187,118,163,121,130,194, 89, 96,129,230, 91,177, 92, 68,150, 76, 38,131, 56,246,201, 19,148, 74,165,195,239,110, 11, 74, -153,211,247,100,197, 31,106,105,181, 90,145,155,155,139,204,204, 76,168,213,106,209, 2, 0, 66,200, 40, 0,239, 72, 57, 90,130, - 4,247, 90,228,153, 17, 88,200, 55,205, 17, 0,224,108, 86,183,162,103,229,142, 19,184,150,102, 67, 84,192,121,136,207,122,139, - 62,125,250, 44,143,136,136,104,224, 40, 36,181,190, 65,253,223,159, 1,222,106,129,191,138,226,157,158, 77, 11,136, 43,158, 23, - 96,181, 22,110,129,202,200, 50,124,242, 98,175,121,147,131,116,190,135, 93, 69,207,132, 13,151,122,166,101, 89,162, 9,123, 17, -153, 36,138,239,245,246,167, 3,157, 10,245,211,107, 23, 79, 28,237,173,187, 41, 97,228, 93, 70,126,245, 22,175,240,173,166,167, - 25,251, 38,189, 82,237, 71,103, 17, 23,234,227,179,181,253,203,115,218, 36,165, 75, 99,176,158, 20,148, 74,101,155,145, 35, 71, - 22,168,233,130,125,229,156, 86, 37,231, 15,158, 79, 37, 39,118,175,103,246,159, 75, 21,212, 10, 25, 13,161, 55, 98,158, 21,127, -107,181,218,228,188,188,188, 8,163,209,136,236,236,108,100,103,103, 23,204,208,114, 57,121,107,240,240, 96,185, 66, 9,155,213, -130,223, 86, 77,245,200,217,162, 28,185,221,188, 44, 74,119,169,233, 11,153, 92,153,115, 62, 38,102, 30,203,178, 96, 24, 6, 63, -127,249,193,168, 77,179, 71,248, 2,192,233,173, 95,102,191, 50,118,225,124,134, 97, 96, 54,155, 85,197,113,247,221,187,119,163, -205,102,179,201, 46,204, 68,193,135,155, 55,111,150, 50,155,205, 70,231,235,222, 64,163,245, 5,252,203, 1,218,208, 7,172,101, -183,110,221,138,180,217,108,121, 44,203,194, 98,177,120,165,134, 24,134, 81,156, 57,115, 38, 90, 16, 4,183,207, 87, 47, 31, 9, -132,215, 4,148,126, 94,251,217,190, 72,162,199,103, 8, 33,244, 89,106,181, 75,144, 80, 18,150,172,226,234,139,167, 89, 96,181, - 32,132,208,191, 51, 61,192, 89,173, 14, 97,149,111, 97,202,255,127, 51, 75,192,165, 43, 87, 49,119,238, 92,236, 61,254,158,223, -148, 41, 83, 84, 19, 38, 76, 48,247,233,211,103,182, 32, 8,181, 24,134, 57,221,179,103,207, 81,238, 62, 38, 8, 66,169, 19, 39, - 78, 56, 42, 59,155,205, 6, 95, 95, 95,248,250,250, 34, 54, 38,252, 1,113,197,217, 45, 88,180,112,225, 35, 3, 5, 64, 65, 57, -222, 6,222, 6,135,232, 73,203,178, 68,255,180,251, 84, 5,167,199, 43,139,127,154,212,175, 86,184, 8, 28, 50,201,225,143,181, -139, 39,142,158,178,108,153, 42,131, 15, 27,249, 74,239, 65,177,189, 94,233,143,126, 61, 94,108,110, 50,217, 54,179, 12, 4,155, -192,131,183, 9, 16, 40,101, 40, 80, 96, 12,150,132,199,135,212,212, 84, 98, 52, 26,203,250,251,251, 23,168,168, 34,116, 6,243, -216,222,149, 18,218,126,112, 32,210,100,229,161,146, 51,116, 84,183, 50, 9, 71,127, 90, 23,148,106, 78, 37,226,236,194,127, 57, -206, 95,187,118, 45,162, 84,169, 82,200,206,206, 6,199,113,194,203, 47,191,124,143,101,229,209,172, 92, 78, 58,191, 50, 92, 72, - 76, 76,176, 49,140, 12,148,242,232,208,107, 40, 81,169, 53, 10,171,197,194, 1, 24, 83,136,245,202,121, 41, 6,223,182,109,219, - 6,138, 51,251, 54,205, 30,225,235,116, 79, 95,183,110,221, 64,231, 89,132, 94,138, 97,210,167, 79, 31, 77,233,210,165, 9, 0, -252,185,234, 35,209, 90, 70,186,116,233,162, 46, 93, 58,127,124,253,239, 95,122,191,215,117,176,150, 2, 89, 55,129,172, 91, 15, - 88,174,186,116,233,162,138,137,137, 41, 86, 94,180, 15,108, 47,116,237, 45, 29,203, 1,137, 39,189,226, 26, 80,135,216, 62,106, - 6,118,118, 7, 6, 74,159, 32,115,131, 15,182, 31,149, 68,150, 4, 9, 94,161,128, 22,121, 38, 4,150,221, 20, 87, 32,115,115, - 54,235, 3,226,138,231, 5,168,121, 3,230,206,157,139,119,222,121, 7, 0, 20,163, 71,143,254,113,202,148, 41, 47, 9,130, 80, -139, 82,218,148, 16, 82, 84, 43,113, 79, 68, 68, 68, 18,165, 84,206, 48, 76,211, 47,191,252, 50,176, 67,135, 14,240,245,245, 5, - 21,232, 3,226,138,231, 5,216,204,150,124,197,231, 6, 1,122,205,148,109, 27, 70, 5,180,234, 54,179, 53,111,195, 78, 81, 92, -241,182,191,135,197,167, 37,197, 99,199,182,205, 88,178,120,105, 6, 8,189, 8, 10,129, 97,152,211,133,185, 81, 16,132, 90, 7, -254,188,208,180, 73,253,106,152,178,108,153,234,220,137,251, 63, 14,127,247,163,216, 94,175,244,199,250, 53,171, 32,179,102,156, -100,153,176,191,197, 21,207, 35, 37, 39,187,203, 31, 63,127, 32,141,193,250,135, 96,179,217,144,145,145, 1, 91,110, 6, 87, 47, -194,144,245,105,175, 80,115, 82,134,137,149, 11,121, 92, 85,125,178,121,119,250, 45,153, 86,171,125, 38,252,154,157,157,189,106, -200,144, 33,205,247,237,219,167, 96, 24, 6,217,217,217,104,217,178,101,106,138, 16,165,126,107,240,240,224,132,132,123,156, 94, -195,154, 21, 10, 57,146,147,147,133,230, 29,251, 26, 95, 25, 56, 42,242,157, 15,167,125,149,112,104,241, 34,111,190,225, 60,179, -207,245,222,215, 95,127,109,137,138,138, 50,169, 84, 42,229,128, 1, 3,188,234, 39,180, 88, 44,116,198,140, 25,102,215,217,130, - 22,139,133,206,157, 59,215, 18, 29, 29,109,214,104, 52,212,102,243, 60,236,128, 97, 8,247,230,148, 31, 56,142,227, 10, 88,173, - 68,113,101, 19, 72,238,130, 5, 11,172,209,209,209, 22,173, 86, 75, 85, 42,149,194, 27,119, 14, 31, 62,156, 6, 4, 4, 88,117, - 58,157, 98,236,216,177,143, 52,139,208,198,131,157,242,165, 99,153, 6,149,175,175, 47,114,114,114, 28,110,141,136,136,144, 68, -150, 4, 9,238, 27, 27,123,159, 5,203,149,171, 5,171,160,200,160, 66,110, 82,114,106,168,127,100, 5,216,108, 28,120,206, 6, -206,198,193,198,217, 48,230,245,238,136, 91,156,223, 19,102, 23, 89,109, 71,143, 30,253, 35,224,121,219,157,181,107,215, 78, 30, - 61,122,180, 62, 41, 41,105,251,242,229,203, 3,251,245,235,135, 49, 99,198,224,243,207, 63, 7,171, 84,195, 47,188,140,227, 59, -156,141, 3,111,227,144,156,150, 1, 74,105,174, 59, 62,113, 12, 22,165, 96,245,225,229,192,243,226,187, 54, 48,178,252,153,233, - 59,182,109, 70,191,215, 71, 64,174,242, 11, 88, 56,119,166, 49,182, 94,196, 75, 19, 6, 13,242, 60,242,157,128, 57,119,226,254, -143,195,223, 25,219, 86, 20, 87,155, 86,126,121,241,203, 81,109, 87,107,149,172,227, 59,188,205, 6,134,145, 73, 99,176,158, 32, -130,131,131,105, 74, 74,202,173,204,204,204,202, 58,157, 14,105,105,105, 72, 79, 79, 71,102,102, 38,204,217, 25, 92, 16,159,105, - 32, 92, 58, 88,150, 69,242, 93, 14, 60,207, 39, 62, 35,214, 43,220,191,127,255, 82,249,242,229,215,126,248,225,135,175,140, 27, - 55, 78, 46, 8, 2, 46, 95,190, 12, 10, 80,185, 66, 9,134, 97, 32,151,179,200,202,202, 22,180, 62,254,247,173, 84,166,149, 43, -148, 96,100,138,162, 22, 28,189,211, 98, 64,254, 50, 13, 12,171,200, 17,103,246, 41, 20, 10, 28, 89, 63, 43,187,197,128,201,122, - 0, 80,168, 52, 25,237,218,181,187, 93,173, 90, 53,195,241,227,199,203,192,101, 22,161,155,252,201,117, 31, 48, 86,166,213,168, - 13,109,219,182,189, 35,114,222,218,185, 48,187,255,208,143, 8,145, 41, 13,157, 59,119,190, 29, 27, 27,107,144,201,100,184,176, -121,102,118,247, 1, 99,213, 36,127,130,174, 91,108,191, 74,223, 60,189,126,127,149,169, 83,167,218, 58,118,236,120, 87, 28, 15, -118,235,214,173,200, 78,157, 58,169,230,204,153, 99,235,212,169, 83,124,141, 26, 53,114, 25,134,193,137, 19, 39,162,139,178, 76, -137,208,104, 52,182, 55,222,120,227,206,217,179,103, 31,106, 22,161, 39,148, 42, 85, 10,130, 32,160,101,203,150, 48,153, 76,146, - 37, 75,130,132,255, 0,220, 10, 44,171, 32, 12,127,245,131, 89, 11, 9,136,143, 0, 90, 96,150, 14,205, 47, 9,200,251,239,191, -167, 3,160, 17, 69,214,187,239,190,155,225,233, 99, 78,226,170, 94,191,126,253, 48,126,252,120,124,241,197, 23,252,231,159,127, - 46,187,112,253,174,181,231,232,207, 51, 93,190, 3, 74,105, 46,207, 99,184, 59,190,140, 44,195, 39, 77, 59, 77,255,236, 94, 82, -222,129, 94,239,197, 21, 40,181, 50, 73,254, 98,134, 75, 22, 47, 49,200, 85,126,186, 94,175,244, 7,128,182, 11,231,206,252,113, - 10,150,121, 22, 89,148, 84, 29,254,238,216, 0, 81, 92,125, 57,103,234,217, 0,146,180, 96,208,199,231, 31, 24, 53,239,231,131, - 31,155,118,154,222, 62, 57,221, 48, 79, 74, 82, 79, 6, 22,139,101,215,252,249,243,203, 78,152, 48, 65,153,158,158,142,212,212, - 84,100,100,100, 56,142,220,220, 92,132,135,135, 99,219,182,109,214,236,236,236, 35,207,146,223,111,220,184,241,229,150, 45, 91, -176,119,239,222, 62,227,198,141,147,135,135,135, 19, 63,191, 68, 98,179, 90, 0, 80,154,146,146, 34,104,125,252,239, 7,135, 69, -223, 73, 72, 76,174,106,179, 90, 32,240,214, 66, 71,145,219,151,105,120,255,220,185,115,101,103,205,154,101,113,158,217,247,202, -216,133,243,235,214,173, 27,184, 96,193, 2, 75,231,206,157,111,139,131,210,189, 25,228,190,227, 58, 70,157, 59,119,166,186, 43, -103,139,183,102,125, 35,114, 58,207, 46,236,242,222,210,111, 42, 86,172, 24, 24, 27, 27,123,187, 40,222,152,152, 24, 99, 68, 68, -132,165, 74,149, 42,185,114,185, 60,223,114,101,179,229,197,196,196, 8, 97, 97, 97,150,106,213,170,229, 22,119, 48,190, 70,163, -161,162, 21,204, 29,138, 51,139, 80, 46, 3,215,175, 95, 63,199, 74,238,239, 87,172,120,191,127,255,254, 17,163, 71,143,198, 55, -223,124,131,131, 7, 15,166,187,190,211,188,121,115,236,219,183,239, 51, 0,159, 72,185, 91,130,132,103, 88, 96,125,247,221,170, -223,225, 52,102,201, 29,166, 76,153,162,178, 91,174,218,190,243,206, 59, 48, 26,141, 1, 15,180, 96, 9,105, 35,174,149,225, 78, - 92,205,156, 57,115, 53,165, 52, 26, 64, 19,142, 23,142,126,245,237,138,150, 30, 13, 75, 78,156,148, 48, 50,134, 33,185, 74, 57, -253,107,241, 87,223, 21, 88,161,219, 62,168,189, 50, 8, 78, 47,156, 59,211, 8,160,173,171,200,234,217,179,103,158, 43,167,136, -193, 67,222,118,136,171,133,115,103,238,140,173, 87,250,165, 9,131, 38,187, 21,101,147, 63,121, 91,199, 48,164,145,243, 24, 44, -119,156,143, 10,137,243,111, 78,149, 74,181,122,205,154, 53, 29,155, 54,109, 90,166, 86,173, 90, 76,122,122, 58,114,115,115,145, -155,155, 43, 90,185,112,225,194, 5,225,246,237,219,247, 84, 42,213,154,103,201,239,246,237,111,230, 71, 68, 68,236,154, 56,113, - 98,255,212,212,212, 78, 25, 25,153, 65,191, 44,159,130, 23,123, 13, 33,205, 59,246, 53, 88, 40,171,142,191,159, 84,101,207,175, - 63, 4,254,182,246, 75, 88, 45,150,183, 8, 89,114, 65, 92,166,193,141, 59,243,196,229, 24,170, 84,169, 98,112, 22, 40,165, 75, -151, 54, 69, 70, 70,154, 99, 99, 99, 29,215,221,205,206,115,231,247,226,114,218,199,119, 25, 60,133,167, 40,214, 92,151,127,208, -106,181, 16, 69, 87,113,220,233, 60,123,210,109, 65,233, 97, 22,161, 51,231,242,147, 84,238,124,111, 57, 33,178, 85,171, 86,181, - 89,181,106, 85, 61, 0,127, 1,216, 1,192,102,127,207, 49, 24,158, 82,250, 41,128, 79,165,252, 46,113,254, 87, 57,255, 19, 2, -203, 19,196, 1,237, 0,152,119,223,125, 55,195,104, 52, 6,244,239,223,191,200,119, 18, 19, 19,191, 89,177, 98, 69, 1,113,213, -163, 71,143,215, 55,108,216,176, 43, 57, 57,249,161, 28, 31,160,215, 76,217,251,243, 7, 1,205, 59, 79,127, 7,192,231,238, 45, - 81, 16, 98,235, 69,188,180,112,238,204, 31, 93, 68,214, 74, 0, 61,220,165, 27, 0,104,247, 98, 55,252,240,221, 2,113,236,150, -230,236,241,123,191,245, 57, 57,201,237,236, 67,127, 31,213, 36,187, 59, 70, 67, 26,131,245, 68, 80,181,106, 85,254,208,161, 67, -163,135, 12, 25, 50,187,117,235,214, 81,221,186,117, 83,148, 42, 85, 10, 42,149, 10,215,175, 95,199,254,253,251,173, 55,110,220, -184,151,151,151, 55,186, 86,173, 90,252,179, 24, 6,247,239,223,191,100, 95, 68,116,148,216,173,164, 82,107, 20,125, 7,190, 19, -237,152, 69,184,246, 75,152, 77, 70, 0, 96,189, 89,166,129,101, 89,197,169, 83,167,202,136, 86, 42,171,213,170, 18,175, 31, 63, -126,188,140,184, 54,150,201,100,242,122, 22,225,227,226, 60,115,230, 76,180, 56,219, 81,156, 45,200,178,172,226,196,137, 19,209, - 34,167,217,108,246,106, 22,161, 82,169, 84,156, 58,117, 42,154,231,249, 18,155, 69,232, 34,136,183,219, 15,177,114, 18,197, 21, -177,119, 11, 74,221,131, 18, 36, 72, 2, 43,127, 32, 56,165,180,105, 49,148, 46, 91,182,108,217,118,175,188,242, 74, 1,113,213, -179,103, 79,126,211,166, 77,123, 34, 34, 34,146, 24,134,185, 84, 92,119, 56,198, 96,229, 47,168, 94, 0, 12,195,156,110, 82,191, - 26, 24,134, 57, 61, 97,208, 32,243, 20, 44, 43, 32,178, 54,255,184,174,125, 97,229, 33, 0, 4,133, 69,255,159,189,179, 14,143, -226,106,163,248,185,235, 30,119, 66, 66, 32, 68, 72,112,119,105,208, 98,165,184,182, 20,107, 11, 45, 20,135, 98,197,138, 21, 47, - 20, 40, 80, 28, 74,113,119,183,160, 9, 9, 16,226,238,182, 46,115,191, 63, 72,248, 66, 26,217, 13,180,165,116,126,207, 51,207, -238,222,153, 57,115,199,207,190,215, 48,240,179,177, 24,248,217, 88, 91, 0,205,129,210, 91, 31,150,149, 15,150,191,142,102,205, -154, 37,133,133,133, 13, 60,123,246,236,128, 43, 87,174, 4,169, 84,170, 42,132, 16, 72, 36,146,104,157, 78,119, 78, 36, 18,237, -254, 80,205, 85,105,232,245,122,227,212,185,203,182,115,185,124, 19,195,232,137, 94,175,255,204,146,251,124,234,212,169, 28,148, - 80,183,106,236,216,177, 37,166,255, 83,154,211,167, 79, 47,177,213,223,216,177, 99,203,108, 13, 88, 26,223,125,247,221, 59,107, - 69,104,166,233, 98,141, 20, 11, 11,107,176,254, 12,135,195,121, 84, 66,107, 65, 2,128,150,212, 66,143, 82,106,228,114,185,115, -109,108,108, 70, 41,149,202, 83,189,122,245, 26,223,187,119,111, 19,240,170,226,123, 69, 51,159,149,163,156,221,166,219,143, 19, -178,243,181,107,138,207, 43, 30,105, 42, 52, 89,235, 86, 45, 89,255,199,129, 61,189,147, 19,227,215,151,182,111,165, 25,169,210, - 90, 31,230,228,170,231,182,233,246,227,183, 89,185,106,182, 14,214, 63, 16,201, 2,176, 3,192,142,226,131, 61,255, 23,160,148, -106, 9, 33,147, 8, 33,133, 17,220, 73,145, 23, 87,173,255,255,159,155, 53,143,138,206, 43, 35,122,149,100,206,192,205, 37,173, - 87,214,188,191, 64, 51,165,140,129,155,203, 34,197, 66,189, 20, 0, 16,240,185,169,165, 13,234, 44,224,115, 83,223,209, 57, 36, - 5, 77,211,231,178,119, 52, 11,203, 7,110,176, 10,205, 79,105,148,214,207, 85, 89,152, 76,166, 31, 1,252,248, 46, 51,255,228, -121,222, 47, 0,126, 49,119,249,130, 58, 87, 67, 11,166,146,243,153, 17, 98,241,190,245,238,221,123, 3,128, 13,236,229,244,247, -176,127,255,126, 19,123, 20,222,120, 65,175, 39,132,252, 90,104,184,204,157, 87,108,185, 35,127, 65,190,254, 10,205,211,127,167, -222,177, 48,163,243,223,116, 14,217,136, 22, 11,203,127,193, 96,177,176,176,252,235, 76,150,182, 34,243, 88, 88, 88, 88, 88,254, - 26, 8,128,160, 82, 30,202,102,183, 14, 32,132, 4, 85,224,133,112,142,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,150, -102,121,218, 69,215, 39,132,140,164,148,254,130,127, 35,244, 85, 95, 83,127,201, 4, 32,136,213,100, 53, 89, 77, 86,147,213,100, - 53, 89, 77, 86,179,130,219, 25,249,119,108,231,175,152, 56, 96, 97, 97, 97, 97, 97, 97, 97, 97,121,167,176,117,176,204,132, 84, -238,249, 61, 64,167, 21,196, 44,151,208,216, 67,115,216,163, 82,193, 99, 73,136, 3,128,174, 10,177,160,123,128,141,160,233,147, - 12,205, 13,165,222,116, 20,192, 97, 74,105, 22,123,132, 88, 88,254,134,251,208, 54,160, 50, 8,249, 28,160,255,111, 70,201,208, - 80,154,253,116,235, 27,203,217,212,248, 12, 28, 18, 80, 36, 73, 13,138, 77, 52, 43, 52,174,148,251,187,176,194,190, 77, 68, 68, -132,167,183,183,119, 12,128,236, 98,139,253,105, 30,165,148,150,241,204, 32, 14, 85,235, 13,145,138,165, 95,234,116, 58, 47,185, - 66,145,154,153,145,182, 33, 51,246,241,186, 34,139, 89,221,190,125,219,181,113,227,198,137, 0,242,202,211,100, 97,121,239, 13, - 22,241,249,212, 11, 70,206, 80, 80, 12, 2,193, 67, 26,185,255,211, 10,233,120,247,170, 4,134,215, 8, 64, 61,128,214,147, 73, -196,117,213, 58,125, 42, 67,233, 16, 26,177,247,129,197,122, 85,251, 28, 7,208,165,148,185,115,105,228, 62, 11, 13, 18,157,126, -247,202, 65,145,141,148,192,187,254, 39,147, 81,164,199,229,247,204,188, 72, 0, 12, 35,132,124, 36,149, 74,125, 84, 42, 85, 52, -165,244, 49,128,245,148,210,196, 10,106,114, 0, 12,151,203,100,157, 60, 21,194,122,177,233, 57, 9,121, 6,211, 85, 0, 75, 45, - 53, 68,132, 16,161,167,173,236,242,202,254,109,252,155, 6, 84, 7, 19,122, 5, 26,157,190,251,165,248,252,238,179,111, 38, 78, - 32,132,212,163,148,234,204,212,114, 5,192,163,148,198, 21,252,150, 1, 8, 4, 80, 21, 64, 36,128, 16, 74,169,242, 45,143,231, -191, 66,211,221,221,221,141, 97,152, 47,156,157,157, 63, 78, 73, 73, 57,206,225,112, 54,199,199,199, 39,254,195,151,227,198,194, -250, 19,230,126, 2, 24,101,201, 6, 36, 18, 73,138, 70,163,113, 2, 0,177, 88,156,170, 86,171,255,178, 86,127,127,231,182,254, -158,135, 5, 70,156,185, 22,210,169,104, 82,135, 22, 1,127, 94,142, 67, 2,206, 92, 11,109,245,230,114,129,166,146,158,129, 5, -189,166, 98,238,220,185,100,222,188,121,159, 85,171, 86,173, 58,135,195,121, 54,107,214,172, 55,186,176, 41, 62,111,246,236,217, -255,239,113,181, 4, 77,119,223,102,135,251,245,239,211,230,171,145,195,228,149, 28,229, 72, 74, 87,218,255,188,101,199,178, 29, - 59,118,117,253,162, 95,251, 78, 0,240,195, 15, 63,244,172, 92,185,114, 21, 46,151, 27,245,253,247,223,255, 86,150, 38, 11,203, -123,107,176, 72, 64, 31, 25, 52,180, 55, 64,134,181,110, 90,191,197,168, 33,221, 8,229,138, 49, 96,196, 20,163,197, 90, 85, 62, - 19,129,171,158, 95, 43, 48, 96,124,159,110, 65,156, 6,129, 85,224,234,104, 13,112,248,216,120, 34,218,126,205,146,239,215, 3, -104, 92,129,108,118,121,121,115, 55,146,178, 77, 32, 4, 32, 4,224, 16, 32, 95,195,160, 67,207,161,179, 45, 55, 72,132, 99, 35, - 37, 24,191, 91, 3,128,112,223, 83,115, 85,207,209,209,113,221,184,113,227,108,107,213,170,229, 42, 22,139,165,106,181,186,122, - 68, 68,132,215,204,153, 51,219, 19, 66, 22, 83, 74, 15, 90,168,233,225,237,238,182,111,205,248,225,141,106, 87,245, 4, 95,151, - 15, 70,171,172,252, 60,226, 69,211,209,235,247,143, 32,132,244,183,112,184,132, 25, 27,199, 14,241,175,169, 0,244, 33,215,193, -231,114, 33,181,182, 69,123, 30, 23, 92,130, 26, 67, 79, 71, 79,135, 25,227,177, 21,244, 96, 62,189,224,249,187,139,203,229,158, - 13, 10, 10,242,250,226,139, 47, 72,253,250,245, 17, 28, 28, 92,117,247,238,221, 65, 60, 30, 47,202,100, 50, 61, 6,240,140, 82, -106, 48,115,159,249, 0,124,185, 92,110,173,247, 89,211,205,205, 77,162,211,233,134,186,187,187,143,236,222,189,123,173,110,221, -186, 17, 95, 95, 95,132,135,135,215, 63,121,242,228,236, 58,117,234, 60,142,143,143,255, 69, 40, 20,110, 79, 76, 76, 84,155,163, -217,175, 38, 9,223,251,132,250, 85,116,126,177,125, 30, 9,192,173, 32,160, 49,215,140,207, 68, 0,115, 41,165, 73,230, 94, 76, - 26,141,198,169,240,253, 73, 8,113,250, 43,239, 47, 75,182, 69, 8,121, 74, 8,177, 43,248,142,178, 62, 57, 28, 14,140, 70,163, -210,104, 52, 86, 43, 71,211, 23,176,168, 90, 7,165,148,150,213,129,179, 4, 0, 58, 52, 15,200, 4, 65,104, 97, 4,235, 79, 75, - 49, 52,244,181,241,162, 8, 56,115, 61,212,238,141,168, 87, 49,230,206,157, 75,102,207,158,141, 57,115,230,116, 3,208,146, 97, -152,171,254,254,254,171,223,144,100,152,215,243,102,207,158,189,106,238,220,185, 4,111,140,122,251,127,236,170,212, 25,252,201, - 39, 61,218, 44,152, 49, 86,158,144,161,199,195, 40, 53,236,228, 2,204,158, 52, 70,168,213, 26,154,174,255,109,199,200,181,139, -167,108, 50,153, 76,237, 0, 52, 48,153, 76,247, 0,252, 86,150, 38, 11,203,123,101,176, 8, 33, 4,213, 62,109, 5, 19,134,121, - 86,118,238, 61,238,139,190,146, 64,127,111,104, 32, 71,116,186, 9, 39,142,157, 4,128,189,150, 69,153,250, 53,224, 9,176,125, -201,156, 73,126, 45, 27, 5,226, 73,130, 1,247, 18, 76, 80, 69, 25,192,229, 24, 96, 98, 40, 64,161,169,232,206,197,103, 25,113, -237,153, 14, 28, 2,112, 57, 0,135, 67,192,173,104,173, 51,147,238,249, 15, 91,131, 3,211, 83, 24,192,164,123,254, 30,154,171, -118, 62, 62, 62, 43,231,205,155,231,146,146,146, 98,119,239,222, 61,136, 68, 34,216,218,218,242,220,220,220,252, 86,174, 92,153, - 51,118,236,216, 73,132,144, 7,148,210,104, 51, 53,253,187, 52,168,117,227,151, 37, 63, 88, 27,110,159, 68,246,158,223,193,229, - 80, 8,100,114,120, 73, 36, 56,249,137,183, 93,239, 99, 81, 7, 9, 33,254,148,210, 4,115, 52,189, 93,236, 59,212,242,247, 71, -214, 31,107,241, 48, 75,131,147,137,106,124,222,190, 9,106,218, 73,208,210,104,130,139,140,223,174, 60,131, 69, 8,177, 5, 48, - 69,167,211,113, 4, 2, 1, 17,139,197,131, 23, 44, 88,160, 31, 48, 96, 64,124,225, 50, 45, 91,182, 68,203,150, 45, 73, 94, 94, - 94,213,139, 23, 47, 86,221,177, 99,135,145, 16,242,148, 82,122,184,244, 8,133, 52, 86,163, 81, 87, 22, 75, 36,170,159,215,175, - 95,222,170, 85, 43, 70, 36,250,255,232, 45, 21,209, 4, 0, 27, 27,155, 77, 62, 62, 62,100,218,180,105,137,239, 74,211,203,203, -235, 76,203,150, 45,219,118,232,208,129,215,188,121,115,184,185,185,189,158,231,224,224,128,150, 45, 91,146,184,184,184,218, 87, -175, 94, 93,127,230,204,153,213, 94, 94, 94, 23,163,162,162, 58,148,251, 70, 46,103, 12,210,242,230, 23,123,187,255, 82, 48, 28, -140,185,134,233,151, 18, 58, 48,254,119, 6,135, 8,145,111,220,184,209,169,112,204, 68,131,193, 0,147,201,244,250,179,112, 98, - 24, 6, 38,147, 9, 11, 22, 44, 48,153,121, 76,149, 40,232,212,185,200,196,148,244, 41, 20, 10, 29,204,140,100,133,186,138,178, -107,200,100, 50, 79, 0, 93,124,124,124,166, 20,157, 93,221,241,213,167, 82,169,140, 73,210,218,132, 2,104, 85,214,229, 62,111, -222,188,161,115,230,204,233,129,255,143, 41, 89,171, 79,159, 62, 23,139, 45, 87,171,224, 83, 73, 8,185,196,225,112,142, 2,216, - 10,224, 79, 17,113,169, 84, 62,106,220,151, 95,200,227,211,245,152,127, 48, 29, 91,175,228, 98,104, 75, 5,198,119,182,198,192, - 1,253,100,251,127, 63, 48, 10,192,166, 34,171,132,251,251,251,147,176,176, 48,214, 92,125, 88, 52, 4,224, 88,228,183, 14, 64, -225,208, 86,233, 5,247,133,125,177,244,162,203, 21,126,166, 21,164, 59, 22,172, 71,139,232,166, 1,184,251, 78, 13, 86,225, 24, - 88,101,142,133,229,213,251,196,240, 1,221, 59,125,252, 81, 51,112,196,182,120,158, 10,220,140,165,224,113, 12,224,128,226,246, -245,139, 20, 60,102,123,177,135, 65,169,145, 13,226,213,251,187, 90, 53, 3,127,220,188,228, 27,238,211, 84, 30,182, 94, 85, 65, -175,201, 71, 90,114, 44, 82, 19, 99,144, 20, 31,137,132,216,200,199, 0,153,109,174,230,159, 31, 70,128,137, 41,248,207,199, 20, -188, 30, 64, 74,122,104,149,175,105, 80,134, 85,243,171, 25,152, 37, 52, 1, 6,101,152, 25, 15,194,119, 62, 8,102,105,154,132, -144,246,222,222,222, 75,103,204,152,225, 30, 18, 18, 98,165, 84, 42,149, 39, 79,158,188, 28, 19, 19,227,236,226,226, 18, 55,102, -204,152,102,149, 42, 85,114,234,217,179,167,116,223,190,125, 51, 0,124, 97,134,102, 96,247, 38,117,111,110, 89,253,147, 44, 99, -255, 26,232, 34, 30,225, 68,146, 18,215, 83, 84,180,170,181,136,124, 93,219, 17,114, 17, 15, 63, 52,119,147,119,249, 35,226, 71, - 0, 3,205,217,247,128,202,174,213, 12,106, 21, 52,106, 3,182,135,103,170,207, 38, 40,157,136, 77,116,218,234,222, 77,196,220, -180, 68,120, 42,132,213, 43,114, 60,197,226,146, 71, 57,177,181,181, 69,235,214,173,225,239,239,207,107,213,170, 85, 45, 0,135, - 75,211,212,235,117,174, 12, 67,161, 80, 40, 36,246,246,246,182, 10,133, 34, 67,175,215,191,149, 38, 0,216,217,217,125,218,186, -117,107,222,238,221,187,211,163,162,162,110, 15, 24, 48, 32,210,202,202,234,141,104,175, 76, 38, 67,245,234,213,241,253,247,223, -243, 58,117,234, 84,174,166,179,179,115,251, 29, 59,118,128, 16,242,250,101, 93, 28, 79, 79, 79,184,184,184,160, 75,151, 46,188, - 79, 63,253,180,125, 89,199,179, 95, 77, 18, 94,104,158,250,214, 36,101,190,152,250,214, 36,148, 0,207,138, 71,178,138,107, 22, - 68,176,230,190,105, 98, 75, 47,102, 43,105,121, 51,206,123,106, 97, 52, 73, 44, 22,167,190,205,125, 84, 64,169,197,154, 34,145, -232,117,212,169,248,182, 74,210,228,112, 56,152, 57,115, 38, 8, 33,224,243,249, 16, 8, 4, 37,126,182,105,211,198,210,124,198, - 17, 66, 56, 2,129, 96, 10,143,199,251, 66,171,213,186,139,197,226, 68,147,201,180, 77,171,213, 46, 40,136,128,218,148,116,237, -150,166, 41,147,201, 60,159, 63,127,238, 83,218, 65,209,106,181,168, 85,171, 22,160,197,211,178, 52, 35, 34, 34, 60,171, 85,171, -230, 11,160,112, 40,181, 43,148,210, 86, 69,126, 23,229, 10,165,180,115,193,247,103, 47, 95,190,244, 44, 52, 88, 69, 53, 13,122, -189,151,187,147, 21, 30, 70,171,177,245, 74, 46,206,207,112,195, 71, 11, 18,209,171, 30, 15,254, 30,114, 24,245, 6,223, 62,125, -250,108,199,171,235,247, 46,128,158,125,250,244,241,227,114,185, 23, 0, 28, 2,144,243,119, 63,147, 89,205, 10,255, 49, 41,203, -139, 56, 18, 66,142, 21,217,126,215,194,223, 83,167, 78,157,190,104,209,162, 16, 66,200,177,162,233, 69,151, 43,250, 89,176,173, - 99,148,210,174,211,166, 77, 11, 92,188,120,241,194,194,101,255,145, 8, 22, 0,171, 52,141, 12, 87, 99,173,192,227,154,192,227, - 16,240,184, 0, 40, 65, 76,116, 4,242,114,179,175,209,200,223,163,204,139, 92,245,105, 94,167,110,173, 37,187, 86, 78,230,252, -122, 85,133,108,165, 6, 97, 15, 46,225,238,165, 67,201, 38,163,233, 16, 8,189, 7,112,130, 17,201,132, 83, 90,241, 94,187, 95, - 25,172, 2, 83,245,134,201,250,112, 32,132,116,246,243,243, 91, 52,115,230, 76,207, 7, 15, 30, 40,114,115,115,211,118,238,220, - 25,174,213,106, 31, 0, 88, 21, 27, 27,219,122,213,170, 85,210,101,203,150,117,168, 85,171,150,239,254,253,251, 85,102,104,214, -158, 52,108,224,205, 47,198,125, 43,126,186,111, 29,132, 79,131, 49,243, 81,186,233,124,146,106, 6,128,149,136,203,111,158,166, - 49,158,253,169,117,101, 78, 21,133, 0,222, 54,194, 54,230,230, 87, 44, 20,241, 40, 79, 12,157,206,136, 60, 29,163,163,148, 42, -123, 55,242,215, 83,153,131, 24, 0,120, 28,194, 51,227,198,206, 34,132,252, 40, 20, 10,103, 18, 66,104,195,134, 13, 31,214,172, - 89, 51,223,214,214, 22,106,181, 26, 90,173, 22, 2,129, 0,106,181, 26, 49, 49, 49,184,125,251, 54,108,109,109, 45, 58,174,249, -249,249, 80, 40, 20, 96, 24,230,173, 53, 77, 38, 19,217,176, 97,131, 44, 36, 36, 68,118,224,192, 1,231,241,227,199,103,212,168, - 81,227, 94,191,126,253, 94, 56, 57, 57,105, 31, 61,122,132, 27, 55,110, 32, 43, 43, 11, 77,154, 52, 49, 75, 83,167,211,129,199, -227, 65,173, 86, 67, 36, 18,129,199,227,193,104, 52,130, 97,152,215,166, 43, 63, 63, 31,153,153,153, 16, 8, 4,208,233,202,174, -214, 86,104,150,250,214, 36,116,223,169, 27,169, 48, 49,128, 62,215, 0,109,206,171, 73,151, 99,128, 38,219,208,119,194,242,218, -251,158,152,215,235,120, 97, 4,171, 40,101, 21,179,149,180,124,121,188,235,122, 80,101, 21,107,102,103,103, 75,108,108,108,166, -152, 19,145, 35,132,128,203,229, 66, 32, 16,128, 16,130, 86,173, 90, 97,248,240,225,168, 87,175, 30, 34, 34, 34,176,103,207, 30, -220,189,123, 23,124, 62,255,245,242,230,210,166, 77, 27,174, 88, 44,190,209,189,123,247,192, 25, 51,102,136,171, 84,169,130,167, - 79,159,122, 44, 94,188,120,202,185,115,231,122, 16, 66, 26, 80, 74,153,114,133, 10,139,254, 94, 21, 11,118,209,106,181,120,250, -244,169, 37,235,252, 57, 66,237,237, 29,195,225,112, 94, 48, 12,115, 21, 64, 45, 74,105, 43, 66,200, 73, 0,178, 98,139, 42, 41, -165,157, 9, 33,185, 0, 30,115, 56,156,103, 12,195,196,148, 84, 93, 74,161, 80,164,197,167,230, 58,219,203,197, 24,210, 66,142, -143, 22, 36,162,119, 3, 17, 68, 2,130,240,168,100,120, 87,171, 66, 30, 94, 59,220,160,192, 92, 53, 76, 74, 74, 2,128, 6, 0, -162,226,226,226, 92, 11, 13, 22,203,135, 65,113, 19, 84,104,156, 22, 45, 90,212,181, 36, 83, 85,194,189,249, 70,250,226,197,139, - 23, 22,249,253, 78, 27, 89,241,138, 58,199,178,111, 44,244, 58,118,112,247,173,143,244,196, 51,176,126,139, 34,209, 32,138,224, -219, 55, 0,208,109,102, 61,192,220,186, 73, 56, 82,217,182, 13, 11,199,114, 54, 94, 82, 33, 46, 49, 21, 55, 78,108, 67, 90, 82, -244, 86,128,142,167,145,251,115,223,250, 33, 89,181, 79,160,147,131, 61, 52,122, 10,134, 2,248,147,201,250, 96,204, 85, 55, 95, - 95,223,121, 55,111,222,244,212,104, 52,138,235,215,175,103,239,216,177,227,133, 78,167,219, 76, 41,221, 89,176,204,145,244,244, -244, 31, 40,165, 80, 40, 20, 60, 62,159, 47, 41,171,226, 39, 33,164,222,164, 47,134, 94,251,113,195, 22,241,139, 39, 15,177,234, -192, 9,100,171, 84,166, 75,169,234,158,148,210,194,127, 5, 23,188,109, 68, 9, 20,180, 50,159, 67,224, 42,227,187, 16, 66,196, -148,210,114,139,115, 93, 43,123,114, 12, 30, 94,184,106,212,160,146,189, 72, 8, 0, 85,125, 3,184, 15,212, 6, 92,127,244, 20, - 14,114, 43,129,153, 55,217, 44, 66,136,243,246,237,219, 57, 6,131, 33, 63, 34, 34, 2, 46, 46, 46,112,118,118,134,181,181, 53, -194,194,194,112,254,252,121,132,135,135,131, 97, 24,212,169, 83,199,162, 99,155,145,145,129, 71,143, 30,161, 75,151,143,199,167, -165,165, 90,217,218,217, 43,175, 93,189,178,172, 34,154, 12,195, 16, 0, 8, 12, 12, 68, 96, 96,160, 56, 33, 33,193,253,216,177, - 99, 78,243,231,207,143,245,244,244,220,165, 86,171,223,136, 20,152,107,176, 10, 12,203,107,243, 39, 22,139, 33, 16, 8,144,155, -155,139,148,148, 20,228,229,229,189, 42,179,177,177, 41,215, 96,189,233, 8, 25, 96, 71,139,123,127, 74,175, 57,204,201,194,235, -243, 79, 17,169,119,185,252, 95,244,240, 46,181, 88,147, 16, 50, 8,192, 20, 51,247, 5, 70,163, 17, 2,129, 0,141, 27, 55,198, -154, 53,107,112,247,238, 93, 28, 58,116, 8, 30, 30, 30, 24, 54,108, 24, 56, 28, 14, 66, 66, 66, 44,205, 34,115,243,230,205, 41, - 61,123,246, 12,220,190,125,187, 56, 38, 38, 6,225,225,225,176,177,177,193,154, 53,107, 68, 35, 71,142,244,190,120,241,226, 44, - 0, 75,203,221,215, 34,173, 5,221,220,220,250,214,170, 85,235, 79,203,184,184,184, 88,159, 62,125,218,169,208,120, 21,111, 97, - 88, 2,217,179,102,205,250,201,223,223,127,101, 65,177, 96, 75, 0, 50, 74,105,155, 3, 7, 14, 16, 0,232,221,187, 55, 37,132, - 92, 42, 88,254,241,254,253,251,219,134,133,133,209, 57,115,230,148,248, 76, 74, 75, 77,218,240,211,154,141, 63,253, 56,119,146, -112, 66, 23,107,244,110,192,135, 88, 64, 96, 37,229, 99,193,234, 77,134,251,183,175, 60,114,117,117, 61, 6,160,103, 82, 82, 18, - 92, 93, 93,243, 1, 60,227,114,185, 81, 38,147, 41,145,173,227,254,175,123,175,149,212,208, 97,100,225, 61, 89,154,113,178,196, -160, 21,141,112, 21, 50,109,218,180,192, 69,139, 22,221,121,151,251,194, 41,178,209,178,255, 66,241, 56,174, 46,206, 14,118, 83, -135, 53, 7,195, 0, 70, 19, 96, 52, 81, 40, 85,106, 60,125,114, 87, 5, 49, 57, 96,214, 22, 69,194, 37,243,103,124, 91,245, 97, - 60, 7,137, 89,122, 92, 62,188,145,166, 37, 69,127, 74, 35,247,125,254,174,204,149,139,147,195,165,221, 27,127,192,221, 72, 29, - 76,204, 43,127,197, 48,244,245,247, 15,228, 34,172,238,224,224,176,236,214,173, 91, 85, 68, 34,145,226,249,243,231,166,253,251, -247, 39,234,116,186,245,133,230,170,128, 65,245,235,215, 55,200,100, 50,228,231,231,107,245,122,125,126, 25,230,202,189, 77,189, -218, 87,126,220,176, 69,172,209,233,144,163,214,130,107,239, 84,220, 92,129, 16,210,172,173, 79,165, 74, 68,172, 0, 5, 16,157, -171, 79, 52,199, 92, 1,128,220,218,134,227,222,160, 13, 26,124,179, 6,185, 68, 65, 1,192,222,181, 18,167,237,151, 11,208,105, -213,101, 40, 57, 10, 75, 44,112,226,192,129, 3,227, 3, 2, 2,114,252,253,253,115, 50, 50, 50, 16, 26, 26,138,172,172, 44,172, - 90,181, 10, 79,159, 62, 5,195,188,146, 43,169,184,196, 12, 99,132,172,172, 76, 57,165, 20, 89,153, 25,178, 25, 51,102, 88, 87, - 68,211,100, 50,189,113,111, 85,170, 84, 9, 99,198,140, 17,168, 84, 42,155,216,216, 88,171,162,243,204,213,212,233,116,133,157, -240,129, 82, 10,157, 78,135,156,156, 28,232,116, 58,188,120,241,226,181,185, 42,216,190,101, 6, 75,159, 91,114, 37,123,117,134, -193,194, 7,217,235,222,151, 37, 18, 73, 74,225,131, 83, 44, 22,131, 16, 82, 82, 49,219, 59,233,173,185,112, 91,132, 16, 42,145, - 72, 82, 42, 96, 10,203,221, 31, 51,207, 59, 4, 2, 1,134, 15, 31,142, 59,119,238, 32, 34, 34, 2, 92, 46, 23, 74,165, 18, 42, -149, 10,237,219,183,135, 80, 40,180, 52,130, 69, 5, 2,193,160,233,211,167,139,163,162,162,144,158,158, 94, 88, 73, 30, 38,147, - 9,227,199,143,151,136, 68,162, 65,150,134,234, 19, 19, 19, 59, 62,127,254,220,183,248,148,156,156,156, 83,180,206, 96, 69, 57, -112,224, 0,233,221,187, 55,237,221,187, 55, 45, 52, 90,230,146, 29, 31,186,225,208,145, 99,103,191,251,126, 73,190, 74,153,135, -106,110, 18,228,231,229, 96,193,162, 31, 13, 55,111, 94,189, 52,101,252,232,166,251,247,239, 95, 12,224, 89,193, 42,207,246,239, -223, 63,244,251,239,191,255, 13, 5,221, 53,176,252,171, 34, 84,164,172,123,239, 93, 20,227,149,164, 81, 80, 76, 40,249, 75, 34, - 88,101, 62,116,188,251,213,117,118,176,191,184,125,237, 92,249,177, 39, 64,124, 92, 52,210,146, 98,208,160,105, 27, 60,125,242, - 16,140,193,116,144, 62,223, 95,110, 51,115,226,213,199,199,191, 70,192,151,173,155,214,196,146, 99,249,120, 30,124, 26,217,105, - 73,107,105,212,190,131,239, 98,103, 72,213, 62,129,206,142, 14,151,126, 91, 55,207,238,100, 40, 7,113,113,209, 56,252,219, 74, - 24,244,127,122,247,159,176,248,161,205,232,132,249,217, 41,208,229,153, 32,230,168,196,239,193, 69,248,194,209,209,113,251, 79, - 63,253, 52,186,105,211,166,210, 1, 3, 6, 60,207,202,202,154, 79, 41,221, 87,228,101,209,206,215,215,119,226,218,181,107,189, -227,226,226,112,254,252,249,231, 0,238,149,161, 25,207,229,114,215,159,255,109,211, 36, 73, 85, 63,172,154,254,157,241,192,221, -208,238,148,210,147, 69, 52,253,131,106,249, 28,155, 63,241, 43, 14,115,255, 20, 30,197,164, 32, 50, 71,123,222,220,124, 71,100, - 43, 13,124,145, 4,114,151, 42,120,158,111, 18,240,120,188, 59, 95,124, 49, 92,192,225,242,192,225, 9, 16,154,165,177,228, 37, - 46,191,115,231, 14,135,203,229,190, 97,204,139, 70,132, 44,141, 12, 89,130,185,154,197, 13, 86, 33, 70,163,145, 84, 84, 83,171, -213,162, 36,159, 92, 82, 93, 44,134, 97, 44,219,127, 93, 78,201, 46, 79, 99,153,193, 42, 26,145, 42, 90, 52, 88, 88, 95, 78,163, -209, 56, 73, 36,146,148,194, 98,190,119, 21,193,122,155,150,133,101, 21, 83, 90,146, 63, 14,135, 3,134, 97, 32, 16, 8, 80,167, - 78, 29, 28, 59,118, 12,118,118,118,176,178,178,130,149,149, 21, 36, 18, 9,236,237,237, 95, 27, 44, 14,199,236,214, 55, 84,171, -213,122,120,120,120,224,197,139, 23, 16,139,197,175, 39,145, 72,132,192,192, 64, 40,149,202, 74,248,160, 98,245,192,136,126, 65, - 61,214,237,248, 99,200,177, 99,199,191,212,107, 53, 53,253,252,124,233,189,155, 23, 31, 77, 25, 63,186, 19,107, 73,254,115, 17, -174, 99, 69, 77, 18, 33,228,216,212,169, 83,167, 87, 84,111,234,212,169,211, 75,138,104,189, 51,131, 85,232, 24, 75,114,142,133, -230,106,235,154, 57, 86,127, 60, 0,226,227,163,112,118,223,234, 60,131, 94,151,197, 48, 6,207,200,240,135, 0, 7,219,204,139, -151,209, 70, 61,186,180, 37,103, 67,116,200,205, 78,195,179,123,167,163,161, 22, 78,123,151,230,106,251,186,185,118, 71,159, 16, -196,197, 69,227,228,158,149, 57, 6,163,190, 29,141,220,255,224,109,180, 7, 11,133, 61,250,213,176,233, 58,188, 69, 34, 76, 45, - 77, 24,244, 52,172,179, 91, 75,210, 35,241,106,217, 45,189,254,106,210,210,210, 22,200,229,114,206,210,165, 75, 63,215,104, 52, -115, 40,165, 7,138, 92,132,237,171, 85,171,182,100,195,134, 13,238,177,177,177,194,107,215,174,101, 94,186,116,137, 2, 88, 84, -142, 25,152, 76, 8,225,214,171, 82,105,236,253,232,132,238,148,210, 83, 69, 52, 3,187,214, 15,184,190,101,209, 44,133,225,250, - 1,228, 39,197, 97,218,245,248, 92, 0,211,204,188, 49,236, 28, 28, 28,200,224,193,131,153,188,188, 60, 8,132, 66,198, 96, 48, -112,155, 53,107,102,250,246,219,111, 57,201,201,201,200,205,203,231, 17, 66,236, 40,165,153,229,104,205, 3, 48,190, 89,179,102, -164,113,227,198,183, 87,174, 92,121,166, 44,147, 82,145, 8, 86,185,129, 30, 51, 53, 25,134, 41,241,237,105, 48, 24, 72, 69, 53, -139, 70,176,202, 51, 88, 22, 71,176,180,165, 69,176,210, 44,142, 96,149,100, 86,138,154,195,162, 6,168, 34,117,176,254,130,135, -119,169, 38,202,146,252, 21,214,131, 19, 8, 4,120,248,240, 33, 42, 87,174, 12,189, 94, 15,133, 66, 1,133, 66, 1,185, 92,142, -188,188, 60,240,249,124, 88,184,207,140, 88, 44,142, 13, 13, 13,245,117,116,116,132,201,100,122,195,100, 61,127,254, 28, 50,153, - 44,193,210, 8,150,155,155,219,233,130, 86,132,111,224,226,226, 98,253, 46,142,107,209,200, 85,239,222,189, 43, 84,142,176,110, -209,164, 29, 0,118,244,233,211,103,251,227,155,199, 27,184,186,186, 30,247,247,247, 39, 0,192,182, 24,252,176,162, 87,165,148, -168,165, 21,139, 60,233,138,252, 78, 3, 64, 10,126,167, 21, 49, 96, 69,191,235, 74, 72,203, 88,180,104,209,197, 34,245,183,210, -254,182, 8, 22,241,238, 87,215,201,222,238,226,230, 85,115,172,246, 5, 3, 9,113, 81,184,124,112, 77,142,209,164,111, 7,134, - 38,221, 60,119,240, 0, 8, 84,136, 60,112, 25,216,103,198,163, 1,245,234,213,240,196,161, 16, 3,210,226,159,131, 82,102, 43, - 77,249, 77,245,214, 15,197, 2,115,181,117,205, 28,187, 63, 30, 18,196,199, 69,225,236,190,213, 57, 70,147,190, 93, 69, 58, 41, - 45,228, 11, 66,108, 57, 10,233,207, 67, 58, 54,234,227, 89,181, 18, 24,106, 0, 35,160,232, 53,217,129,247,236,190,234,144, 71, - 7,238, 62, 38,159,249, 50,254,230, 63,215,251,120,126,126,254, 15,132,144, 63, 40,165, 79,139, 60,220, 59,123,123,123, 47,252, -249,231,159,171, 36, 36, 36, 40,238,223,191,159,251,203, 47,191, 68, 49, 12, 51,143, 82,154,106,198, 69,254, 29, 33,100,115,209, - 62,116, 8, 33,181, 39,125, 62,240,230,192,207,190, 16, 71,157,219, 1,219,168,167,152,120, 61,209,244, 44, 75, 55,128, 82,154, -108,142,185, 18,137, 68, 7, 78,156, 56,241,162, 94,189,122, 68,169, 84,194, 96, 48, 32, 61, 61, 29,127,252,241, 71, 40,165, 20, -182,182,182, 56,113,226, 4, 51,112,224,192, 3,132,144,222,165,153,172, 34,221, 52,144,130,110, 26,154,156, 58,117, 42,172, 83, -167, 78,241, 37,153, 20,145, 72, 4,141,198,178,222, 62, 74,107,149, 88, 17,205,210, 34, 88,197,211, 45,209, 44, 44,166, 44,172, -220, 94, 60,189, 16, 46,151, 11,134, 97,254,148, 94,182,193,202, 46,217, 72, 41, 83, 43, 28,193, 42,218,218,175, 34,230,166, 40, -229,117,248, 89,145,150,133,239, 58,130, 85,120, 46, 4, 2, 1,142, 28, 57,130,207, 62,251, 12, 38,147, 9, 82,169, 20,114,185, - 28, 50,153, 12, 7, 15, 30, 68, 97, 55, 14,150,100,209, 96, 48,236, 92,180,104,209,244, 13, 27, 54, 72, 40,165, 16, 10,133,175, - 13,214,156, 57,115,212,122,189,126,167, 57, 6,235,117, 15,237, 12, 13,173,238, 88,118, 43,194,146,214, 41,165, 62,150,205,188, -121,243,134, 50, 12,211, 3,197,186, 98, 40,126, 53, 21,124,214,234,211,167,207,197,178,186,105, 0, 96, 59,111,222,188, 17, 12, -195, 20,246,130,250, 70,107,193, 34,203, 21,190, 75,124,251,244,233,179,189,120, 43, 66,150,127, 61,119,255,109, 25,230,149,110, -174,250,248, 59,217, 59, 92,220,180,114,142,213,174, 59, 64, 98, 92, 36,110, 28, 89,155, 99, 98, 12, 69, 77, 75, 11, 11,255, 30, -214,115,115,178, 65,230, 45, 53,114,211, 99, 1,138,251,111,111,174,250, 85,119,114,176,191,180,101,245, 28,187,253, 15, 56, 72, -136,141,194,165, 2, 19,248, 54,230,106,176, 80,216, 35,208,199,125, 75,255,206, 45,108,173,137, 1,198,152, 48,108, 30,214, 23, -193,221,244,104,222,207, 26,141,186, 40,224, 93, 87,220,247,196,166,204,143,220, 90,146, 47,254,201,104, 86, 49,115,213,173, 74, -149, 42,115,111,223,190,237,201, 48,140,226,242,229,203,121, 27, 54,108,136,212,104, 52,171, 41,165,199, 45,208, 44,106,174,234, - 77, 29, 57,236,218,194,159, 55,139, 67,131,239, 98,201,206,163, 80, 27,116,166,211,241,249,125,138, 22, 31,150,133, 80, 40,252, -225,194,133, 11,178, 90,181,106,145,140,140,140,215,145, 22,189, 94,143,156,156, 28,228,229,229, 65,171,213,162,126,253,250,156, -213,171, 87,203,198,142, 29,251, 3,128, 47,205,205,175, 66,161,128, 64, 32,128, 94,175,127, 29,193, 18,137, 68,176,182,182, 70, - 70, 70, 6,246,238,221, 11, 0,101, 70,197, 4, 2, 97, 18,135, 67, 42, 75,164, 82,173, 88, 44,102, 92, 93, 93, 75, 52, 86,150, -104, 22, 16,223,185,115,103,247,121,243,230,137,235,215,175,255,167, 8, 86, 69, 52, 41,165,170, 14, 29, 58, 72, 87,175, 94, 13, - 79, 79, 79,232,116,186, 55,140, 20,135,195,129, 64, 32, 64, 92, 92, 28,230,207,159, 15, 74,169,249,127,100, 52, 89, 6,212, 26, -234, 8,117,134,225,213,148,110,128, 42,213, 0,189,202,100,225,117,249,218,172, 20, 53, 65, 5,117,164,254,100,128,204,141, 16, -149, 87, 4,104,105,203,194,162,134, 77, 36, 18, 33, 59, 59, 91, 66, 8, 25, 84, 74,143,243,102, 71,176, 10, 13,214,211,167, 79, -177,125,251,118,116,233,210, 5,182,182,182,200,202,202,194,190,125,251, 16, 22, 22, 6,161, 80, 8, 66,136, 37, 81, 44,166,113, -227,198, 63, 94,189,122,181,219,128, 1, 3, 2, 38, 78,156, 40,169, 89,179, 38,158, 61,123,134,121,243,230,105,130,131,131, 35, -212,106,245, 60,152,211, 33,105, 65, 15,237,133,157,136,154,213,138,176,216, 58,197, 41,165,155,134,206,165,168, 21,237,194,225, -141,110, 26,138,114,227,198, 13,175, 42, 85,170,248,227, 85,203,192,194, 23,109,209,214,130,111,188,132,147,146,146, 26,130,109, - 69,200,242, 62, 27, 44, 80, 50,126,192,176,145, 86, 59,239, 16,196,197, 68,224,222,137,245,197,205,149, 57, 15,153,160,162,125, -101,136, 37,178,154, 12,121,213, 44, 57, 55, 61, 14,160, 92,139, 13, 86,113, 77, 80,230,187, 1, 67, 71,218,237,190, 71,144, 24, -247, 18,215, 15,175,179,216, 92, 21,213, 28, 34, 20,206,226,243, 56, 51, 62,110, 85, 79,208,178,174, 47,164,169, 81, 72,142, 79, -196,222,167,105,153, 17, 89,218, 47,174, 19, 61, 98, 94,106, 55,119, 25, 97,103,103,235,194, 71,215,209,246,118,183,142,230, 30, -170,212,142,163,167,122,186, 40,241, 26,157, 83, 98, 62,223, 1,229,105, 18, 66,170, 91, 89, 89, 45, 13, 14, 14,118, 20,139,197, - 86,247,238,221, 51,109,220,184, 49, 78,163,209, 44,163,148,238,169,160,166,123, 67,159,106,151, 23,174,219, 36,206, 87,170,160, -212,233, 33,114,118, 53,253,113,243,201,167,165,117,134, 89, 92,147, 16,210,246,243,207, 63,175,221,184,113, 99, 78, 81,115,165, -211,233,144,155,155,139,188,188, 60,228,230,230, 34, 55, 55, 23, 9, 9, 9,104,221,186, 53,167,118,237,218, 53, 9, 33,109, 41, -165, 23,139,107, 22,233,166, 97, 58, 0, 14, 33,228,238,195,135, 15,243, 59,117,234, 4,137, 68, 2,165, 82, 9, 15, 15, 15, 24, -141, 70,156, 56,113, 2,193,193,193, 74,134, 97, 46, 3,120, 88, 86, 62,213,106,149, 7, 33,132,163, 86,169,234, 12, 29, 58,180, -245,132, 9, 19,222,104, 90,238,228,228, 4, 59, 59, 59,139, 52, 1, 32, 51, 51,179,198,169, 83,167,190,125,248,240,225,119, 93, -186,116,177,158, 62,125,186,200,203,203, 11, 38,147,137, 83, 81,205,172,172, 44,235,251,247,239, 47,107,209,162,197, 87,157, 58, -117,226, 45, 92,184, 16,214,214,214, 48,153, 76,144, 72, 36,200,205,205,197,188,121,243,112,237,218, 53, 35,165,116, 93, 78, 78, -206,196,178, 52,223,232, 7,107,194,138, 50,155, 71,150,214, 15, 86, 9,231,189,196,136, 79,105, 6,168,164,229,255,142,251,168, -152, 97,131,141,141,205, 20, 0, 83, 74,233,113,222,236,123,179,208, 96,113,185, 92, 68, 71, 71, 99,227,198,141,127,234, 7,171, -176, 27,135,146,180, 75,217,119,122,233,210, 37, 19, 33,164,233,189,123,247,166, 12, 25, 50,228, 11,165, 82,233, 46,147,201, 18, - 13, 6,195, 54,181, 90, 93,216, 15,150,192,146,251, 93,169, 84,198,148,212,138,176,248, 50,128, 77,153,154,197,186,105,120,163, - 43,134, 98,171,189,209,133, 67,241,110, 26,138,106, 54,107,214, 44,138,195,225,132, 23, 20,181,135,163, 88,107,193, 34,154,190, - 73, 73, 73, 13, 93, 93, 93, 47, 3,144, 22,111, 69,248, 79, 60,147, 89, 77,214, 96,149, 98,176, 32, 62,119, 59, 26, 66, 73, 38, - 30,157,223,106,177,185, 42,177,228, 65,163,138,152,181, 59,182,174, 78,171,129, 50, 39,229, 25,141,218,147,250,246,103, 25,178, -115,119, 99, 32,150,101,227,193,185, 95,179, 77, 38, 77, 59, 26,241,251,195,138,203, 97,234,250, 19,251, 5,196,218, 14,143,190, -253, 12,137,217, 74,156,140,204,218, 71, 85,218, 47,119, 20,140,187,231,222,148, 92,221, 50, 35,121,125,203, 94,214,125, 29, 42, -241,177, 98,210, 54,136,167,218, 11, 26,125,212,234, 31, 29,163,176,176,226,251,170, 85,171,198,180,108,217, 82,222,183,111,223, -231,153,153,153,111, 84,124,175,128,102, 60, 33,228,231,227, 27,150, 79,178,175,213, 4,107,191,159,108,218,125,243,201, 27,173, - 10,203, 67, 32, 16,180,153, 58,117,170, 64,169, 84,254,201, 92, 21, 55, 88,185,185,185,120,244,232, 17,134, 13, 27, 38,122,248, -240, 97, 27, 0, 23, 75,201,215, 44, 66,200, 6,188, 26,139, 48,121,199,142, 29, 77, 15, 31, 62,220,116,252,248,241,130, 46, 93, -186,224,214,173, 91, 56,123,246,172, 94,175,215,223, 4,112,211,220,225,103, 10,250, 15,186, 79, 8,121,178,100,201,146,166, 92, - 46,119, 86,225,188,208,208, 80,108,221,186,181, 34,154, 70, 0,203, 8, 33, 63,239,216,177, 99,214,185,115,231, 62, 31, 58,116, -168,149,193, 96,192,211,167, 79,241,235,175,191, 86, 84,243, 91, 71, 71,199,153, 39, 78,156,216,118,230,204,153,158,131, 7, 15, -230,140, 27, 55, 14,107,214,172,193,239,191,255,206,152, 76,166,195,124, 62,127,104, 90, 90, 90,185, 13, 80,222,232, 7,171,140, -126,174,202,155, 95, 66, 4, 43, 17,175,122,104, 55,119, 76,194,114,117,223,166, 8,208,204,124, 39,189,245, 99,169, 96, 63,218, -180,105,243, 58,170, 72, 41,125,163,222, 92,161,177,178,180,136, 16,128, 77,193,117,186, 14,192, 26,188,217,139, 59, 23,255,239, -233,221, 92,197,128, 36,173, 77, 40,180,120, 90,246, 96,207, 54, 0, 69, 64, 57,106,217,179,102,205,250,105,246,236,217, 63, 21, -239,138,161,232, 66,197,187,112,152, 59,119, 46, 74,235,166, 1, 64,214,172, 89,179,126, 4, 0,127,127,127, 82, 80, 44,216, 0, - 5,173, 5,139,104,110, 47, 72,151,206,153, 51,103, 8,128,178, 52, 89, 88,254, 65,131, 5, 58, 61,244,234,110, 3, 0,123, 16, -206, 52,250,114,111,232, 91, 63,184, 24, 58,245,194,174, 57,107, 64,145, 69, 77,198, 41,239,100, 15, 24,238,140,208,171,187, 24, -128,216,128,112,166,210,151,191,191,117, 62,137,181, 29,242,230,141,193,239, 33,137, 52, 89,105,248,100,135, 78,247, 70,164,166, -160,206, 85, 63,183,150,100,175,173, 27,255,143,111,219,217,147,227,153, 67,222,139, 19,154,150,150,182, 80, 46,151,115,151, 45, - 91,246,185, 90,173,126,163,226,251, 91,188,112, 38, 19, 66,184,141,170,123,142,189,243, 34,166,135,185,197,130, 69, 94, 36, 66, - 55, 55,183, 39, 26,141, 6,132, 16,104,181,218,215,198, 42, 47, 47, 15, 57, 57, 57,175,127,235,245,122,164,165,165,193,195,195, - 3,132, 16,129, 5, 47,194, 43,132,144,224,121,243,230,181,154, 55,111, 94,157,130, 40,208, 21,139,138,198,222,212, 54, 0,184, - 34,145, 72, 19, 9, 33,238, 2,161, 72,121,227,198,141,115,111,169,169, 42,136,140,172, 88,177, 98,197, 2,153, 76,214, 48, 52, - 52,244,252,219,104, 22,152,167, 79,237,237,237,221,182,111,223,190,127,203,150, 45, 77,120, 60,222, 45, 66, 72,159,236,236,108, -139, 7,123, 38,111, 70, 4, 44,158, 95,140, 81, 48,111, 12,194,114, 35, 68,230, 68,192, 42,202, 95, 97,216, 76, 38, 83,254,204, -153, 51, 83,139, 27,174,226,209,170,194,223,122,189, 94, 99,230,189,100, 73,171,200,114,204, 5,201, 7,128, 87, 99, 11,190, 26, -254,198,220,193,158, 1,148, 58,182,229,236,217,179,233,220,185,115, 9,135,195, 57, 12,224, 25,135,195,121, 81,188, 18,122,209, -121,115,231,206,197,236,217,179,233,156, 57,165,255, 55, 45,212, 12, 11, 11,163, 92, 46,247, 60,128, 40, 46,151, 27, 93, 84,183, -104,122,225, 58,101,105,178,176,252, 99, 6,139, 70,238,143, 3,240,217, 59,253,103, 24,181,255, 28, 44, 24,203,204, 44,205,232, - 61, 49, 0, 6,191, 51, 61, 96,233,136, 70,109, 38, 21,252, 11, 92, 81,220, 92, 21, 37,241, 42, 61,236,218,156, 44,106,244, 81, -171,241, 5, 47,159,133,239,195, 73, 45,169,226,251, 59, 48, 89,127,170,248,110,193,203,230,140, 68, 34, 33, 74,165, 18,106,181, -250,141,104, 85,110,110, 46, 84, 42, 21,242,243,243, 95, 87, 78,207,207,207, 47, 44,238,162, 22,230, 81, 5,224, 36, 33,228, 12, -165,212,244, 46,246, 91,173, 86, 85, 46,120,177,113,223,149,102, 65, 67,131, 47,222,165,102, 70, 70, 70, 34,128,102,222,222,222, -194,136,136, 8, 93, 69,117,202, 27,200,217,220,129,158,223,101, 52,232,175,230, 93, 27, 54, 0,208,235,245, 53,254,130,200,218, -179,119, 44,248,107,135, 22, 1, 92, 20,237,251,167,188,193,158, 11,141, 25,197,175,165,228,145,146, 87, 14,146, 2,216,254,242, -229, 75, 79,134, 97, 98, 74,136, 36,189, 49,111,206,156, 57, 40,173,127,190, 98,154, 0,112, 40, 46, 46,206,205,100, 50, 37, 21, -211,125, 35,189, 44, 77, 22,150,127, 56,130,245,223,228, 55,157,110, 54,202, 25,108,184, 40, 73,215,233, 12, 0, 51,222,183,253, -120,151,230,170,136,102,120, 69,214, 51, 24, 12, 23, 0,192,209,209, 17,142,142,142,150,172, 87,209,124,154,254,130,125,255, 87, -104,190,141,185, 98,249,111, 65,179, 66,227, 0,124, 95,238,114,229,247,222,254, 39, 67, 84,240, 53, 11, 64, 86, 41, 30,167,172, -121,101,105, 2, 64, 46,128,220, 18,214, 45, 45,157,133,229, 31,129,195, 30, 2, 22, 22, 22, 22, 22, 22, 22,150,119, 11, 1, 16, - 84,202, 63, 6,179, 91, 7, 16, 66,130, 42,240,239,253, 28,171,201,106,178,154,172, 38,171,201,106,178,154,255, 45,205,242,180, -139,183, 70,126, 87,195,104,253,237, 20,182,108,249, 43, 38, 0, 65,172, 38,171,201,106,178,154,172, 38,171,201,106,178,154, 21, -220,206,200,191, 99, 59,127,197,196, 22, 17,178,176,176,176,176,176,176,176,188, 99,216, 74,238,255, 82, 8, 33,213, 1, 76, 7, - 96, 93, 36,249, 14,165,116, 81,177,229,118, 1,144, 22, 73, 82, 2,152, 71, 41,125, 97,201,246,184, 92,238,162, 86,173, 90,125, -121,237,218,181,229, 6,131, 97, 94, 5,242,235,233,234,234,250, 35, 33,164, 62, 0, 62, 33,228,101, 74, 74,202, 34,131,193,112, -238, 45,142, 65, 85, 23, 23,151,197, 0,234,114, 56, 28, 62, 33, 36, 34, 37, 37,101,190,193, 96,184,244, 22,154, 10,103,103,231, -230,148, 82, 23, 0, 92, 62,159,159,145,144,144,112,187,162,173,225,250,204, 13, 19,228, 42,141,124, 0,176,146,241, 12,251,103, -251,235,205, 77, 99,175,114, 22, 22, 22,150, 15,212, 96,245,247, 37,174, 38, 30,120,251, 67,105, 92,225,203, 7, 64, 29, 0,213, - 1,188, 0,240,144, 82,154,247,150, 70,225, 95,161,249, 30, 50,139, 82, 58,176,216,126,255,105,161,118,237,218,117, 63,115,230, -140,180,112, 24, 21,134, 97, 32,145, 72,140, 0,134, 89,112, 60,157, 6, 12, 24, 48,117,243,230,205,232,219,183,239, 76, 66,200, - 79,148,210,124,115,215,183,179,179,235, 93,181,106,213, 53,155, 54,109,114,108,210,164, 41, 17, 10,133,120,249, 50,194,125,212, -168, 81, 53,157,157,157, 15,167,164,164,124, 97,233,206,219,219,219, 15,170, 86,173,218,138,141, 27, 55, 58,180,104,209, 2,132, - 16, 4, 7, 7,187,127,251,237,183,117, 92, 92, 92,246, 36, 39, 39,127,101,169,166,131,131,131, 79,181,106,213,218,174, 93,187, - 86,210,188,121,115,136,197, 98, 60,124,248, 80, 62,122,244,104, 23, 23, 23,151,167,201,201,201,151, 45, 53, 87,143,131,143,246, - 52,234,181, 75, 0,128, 39, 16, 77,110,250, 83,238,209,204,224, 43,221,202, 75,235, 51, 23,135, 88,147,197,194,194,194,242, 1, - 26,172,222, 1,100, 30,120,152, 14,128,116,174, 78,246,156,141,226, 94,109,223,190,189,247,240,225,195, 73,189,122,245, 16, 28, - 28,236,179,103,207,158,143,121, 60, 94,132,201,100, 10, 6, 16, 98,110, 47,212,132, 16, 62,128, 64, 46,151, 91,255,125,214,124, -207,145, 21,236,119, 10,128, 59, 5,105,119,138, 47,116,225,194,133, 35, 60, 30,175, 48,130,213, 72,169, 84, 58,227,205,168,151, - 57, 84, 49, 24, 12, 8, 15, 15, 7,135,195,225, 3,240,194,159,135,190, 40,237,188,184,187,187,187,175,191,121, 39,216,158,240, - 36,200,210, 0,208,232, 33,148, 59, 99,243,214, 29,118, 19,190,249,234, 83, 43, 43,171,171,185,185,185,191, 89, 96,248,188, 60, - 60, 60,126,122,244,232,145,189, 84, 42, 5,195, 48,200,203,203,131,139,139, 11, 54,109,218,100, 51, 97,194,132,129, 18,137,228, -146, 90,173,254,221, 18, 83, 94,173, 90,181,182, 79,158, 60,145, 20, 14,244,172,211,233,224,238,238,142, 93,187,118,137,198,141, - 27, 87, 67, 36, 18,197,107,181,218, 72,115, 53,115,149, 70,190, 81,175, 93,178,125,221,156,202, 0, 48,244,171, 57, 75,132,121, - 86, 39,204, 73,203, 85, 26,143, 3, 96, 13, 22,203,223, 10, 33,164,190,131,131,195,129,244,244,244,203, 0,190,120, 23, 93,137, - 16, 66,220,120, 60,158, 23,165,212,166,224,119,182,209,104,140,162,148, 38, 86, 84,211,193,187,109, 55,136,164,159,129, 50,117, - 56, 0, 8,135,243,208,164, 87,109, 77,127,118,241,232, 91,105, 10, 37,159, 3,180, 14, 7, 96, 8,135,243,136, 49,170, 54,165, -133, 93, 60,201, 94, 25, 44,239,204, 96,245, 9, 32,182, 0,166,236, 89, 51,157,195,227,114,201,128,111, 22, 13,220,178,110, 25, -167,125,183, 62,175,139, 73, 90,182,108,137,150, 45, 91,146, 37, 75,150, 84, 63,127,254,124,245, 93,187,118, 25, 9, 33,143, 40, -165,123, 75,219, 88, 39,111,162,102, 0,241,199,126, 60,229,128,239,127,219,216,184,113, 99,136, 68, 34,188,141, 38, 0,116,168, -206,141,236,210,216,251,209,128,177,179, 98,154, 52,105, 70,223,133,230,191,136, 59,148,210, 30, 5, 15, 46, 91, 15, 15,143,230, - 70,163, 81, 12, 0, 60, 30, 79, 3, 96, 44, 45, 24,226,135, 16,114,152, 97,152,238, 22, 60, 24, 57, 0,102,119,239,222,125,230, -215, 95,127, 13, 15, 15, 15,140, 27, 55, 14, 6,131, 33,152, 16, 50, 11,192,226,242, 58,242,115,114,114,154,181,126,253,122, 59, -158, 80,134,122, 83,162,144,148,109, 4, 0,200, 69,192,145, 49, 20,227,198,141,179,186,119,239,222,124, 0,102, 27, 44, 39, 39, -167,121,155, 54,109,178,147, 74,165,160,148, 34, 63, 63, 31,121,121,121,200,207,207, 71,126,126, 62,190,250,234, 43,171,167, 79, -159,254, 8,192,108,131,229,236,236,220,124,237,218,181, 18,177, 88,140,252,252,124,129, 94,175, 39,121,121,121, 80,169, 84, 84, -167,211,233,199,142, 29, 43, 10, 9, 9,105, 3, 32,146,125,108,188, 55,102,128, 11,224, 19, 62,159,223,203,219,219,187,193,139, - 23, 47, 30, 24,141,198,131, 0, 14,190,237,159, 40, 66,200, 71,110,110,110, 11, 18, 19, 19,215, 82, 74,119,252, 87,142,169,179, -179,243,193, 27, 55,110, 84, 94,191,126,253,176,229,203,151,159,176,228, 30, 42,229, 79,111,211, 70,141, 26, 57,244,234,213,139, -239,226,226, 2,149, 74,133,136,136, 8,233,185,115,231, 28,197, 98,113,134, 86,171,189,105,201,185,114,240,109, 46, 7,207,106, - 79,211,182, 65, 45,250,126,250,137,194,217,222, 26,106,157, 9, 47, 98,146, 60, 78,157, 56,210,218,173,230,199, 55,244,250,156, -254,233,207,174,231, 91,170,217,182, 83,215, 22, 65, 31,125,164,176,182,177, 70,142, 82,143,151,209, 9,158, 23,207, 30,109,233, - 90,243,227, 43, 12, 49, 12, 78,121,124, 70,197,222,117, 44,150, 96,118, 37,119,169, 84, 90, 98,186,181,181, 53,218,182,109,139, - 69,139, 22,241, 0,212, 47, 58,239, 79,131,159, 2,162, 99, 27,166,193, 90, 38,226,120,120,120, 40,172,172,172,222, 90,243, 85, - 34,227,213,204,131,118,190,251,219,244, 97,231,118,173, 8, 84,230,101,243,139, 47, 34,151,203,225,235,235,139,153, 51,103,154, -167,249,150,252,221,154,174,174,174,126, 45, 91,182,172,127,225,242,101,155,196,196, 68, 81, 98, 98,162,232,204,133, 11, 54, 77, -155, 54,173,239,234,234,234, 87, 68,195,146,124,254,176,110,221,186, 89,135, 15, 31,230,180,108,217, 18,182,182,182,104,219,182, - 45, 78,156, 56,193, 91,190,124,249, 66, 0, 51,203,203, 39,135,195,105,209,178,101, 75, 2, 74,145,156, 99,196,237, 69,126,120, -184,204, 31,121, 26,138,204,156, 92,168,213, 26, 72,165, 82,113, 65,177,174,185,251,222,172,105,211,166, 4,192,107, 83,149,151, -247,106,202,207, 87, 66,167,211, 67, 36, 18, 41, 8, 33, 98,115, 53, 41,165, 46,205,155, 55, 7, 0,232,245,250,215,101,173,217, -217,217, 36, 39, 39, 7, 58,157, 14,124, 62, 95, 64, 8,225,153,171,105, 37,227, 25,120, 2,209,228,161, 95,205,137, 27,250,213, -156, 56,158, 64, 52, 89,167,200, 53,153,147,102, 37,227, 25,254,201,235,147, 16,226,200,229,114,127,245,246,246,126,202,229,114, -183, 19, 66, 92,222, 70,147, 16,210,144, 16,178, 80, 42,149,158,171, 81,163, 70,156, 76, 38,187, 64, 8, 89, 76, 8,105, 90, 17, - 77, 66,136, 80, 42,149, 94, 88,184,112,225,254, 7, 15, 30,244, 61,127,254,188,215,227,199,143, 63, 93,178,100,201, 30,185, 92, -126,149, 16, 34,125,155,123,211,203,203,107,203,237,219,183, 27, 54,107,214,108, 51, 33, 68,244, 46,238,119, 66, 8,151, 16, 82, -151,152, 57, 38,208,223,125,222, 9, 33,110,245,234,213,171, 44, 22,139, 17, 20, 20, 4, 0,109,222, 82,179,233,232,209,163, 93, - 38, 76,152,192,127,248,240, 33, 54,111,222,140,195,135, 15, 35, 53, 53, 21, 93,187,118, 21,180,107,215,206, 69, 36, 18, 53,181, - 72,147,103,181,231,155,111,199,119,154, 52,110,132,226, 81,172, 30, 91,207,197,226,208,205, 36,164,170,132,232,246,233, 80,235, -142, 61,250,117, 20,138,172,247, 88,170, 57,117,202,148, 78, 35, 63, 31,168, 8, 77, 98,112,228, 86, 50,110,133,231,192,200,183, - 65,151, 79,191,176,173,211,188,211,199, 60,240,183,189, 15,231,232, 67,215,252, 96, 35, 88,132, 16, 74,233,171, 65, 92,247,135, -210,172,222, 1,228,199,126, 95, 47,156, 73, 56,132, 86, 9,108, 22, 90,169, 90,128,210,222,222, 30, 42,149, 10, 90,173, 22, 2, -129, 0, 26,141, 6,177,177,177,184,117,235, 22,108,109,109, 45,218,112,110,110, 46,228,114, 57,228,114,249, 59,209,156, 54, 44, - 72,244, 50, 46, 77,116,250,214,165,214,171,190,252,189, 73,181,186,109, 30,127,212,111,220, 19, 43, 71, 55,205,227,199,143,113, -227,198, 13,100,101,101,161,113,227,198, 31,202,185,187, 83,240,156,190, 67, 8,177,109,217,178,165,251,233,115, 87,108,243, 53, -140, 85,116,138,129,207, 48, 12,164, 82, 87,227,222, 3, 71,114,250,126,218,141, 16, 66, 82, 1,220, 41, 48,181,119,202,121, 17, -136, 1,248,245,238,221,123,234,151, 95,126,137,136,136, 8,140, 24, 49, 66,125,231,206,157,140,102,205,154,217,111,218,180, 73, - 50, 97,194, 4, 92,190,124,121, 54, 33,228, 15, 0, 81,148, 82, 77, 41, 55,161, 64, 32, 16,192, 88, 96, 23,244, 38,230,181,175, -207,205,205, 5, 85,103, 65, 32, 16,112, 1, 56, 2, 48,171,158, 28,195, 48, 2, 62,159,255,218, 92,197,166,228, 34, 54, 85,133, -220,124, 29,212,106, 35,116,106, 10,174,212,158, 7, 68, 59, 3,136, 54,243,120,114,197, 98, 49,140, 70, 35,242,242, 94,101,163, - 48, 50,166,211,233,144,147,147, 3, 46,151, 43, 7, 96, 5, 32,211, 28,193, 87,149,215,113,168,160,184, 15,119,119,118,119,120, -113,124,154,190,247,156,167,175,211,172,100, 60,195,129, 9, 53,184,246,238,117,174,213,237,187,205,191, 48,237,159,172,127, 69, - 8, 17, 57, 58, 58, 94,220,191,127,127,141,234,213,171, 35, 42, 42,202,191, 79,159, 62,141, 9, 33,117, 45, 29, 51,145, 16, 34, -229,112, 56, 63,126,246,217,103, 95, 14, 24, 48,128,248,248,248,128,199,227,193,104, 52,186, 71, 68, 68,180,221,183,111,223, 20, - 30,143,183,201,100, 50,125,103,110,189, 62, 66, 8, 71, 40, 20,238,221,184,113, 99,171,198,141, 27, 99,251,246,237,184,115,231, - 14,211,176, 97, 67,206,144, 33, 67,224,233,233,217,120,200,144, 33,135, 8, 33, 93, 42, 18,201, 34,132,120, 14, 26, 52,168, 50, -151,203, 69,179,102,205, 4, 55,110,220,168, 7,224,198, 91, 30, 83,185,187,187,251,229, 54,109,218,212, 61,119,238,220,125, 66, - 72, 27, 75,234, 49, 18, 66,122,184,185,185, 45,177,182,182,182,181,224, 25,171, 74, 72, 72,152,104,193,120,164, 77,234,215,175, -143,152,152, 24,248,249,249, 65, 32, 16, 52, 37,132,140, 2,208, 9,192, 12, 75, 70,135, 32,132,184, 53,109,218,212,161, 77,155, - 54,100,241,226,197, 0, 0, 62,159, 15,147,201, 4, 14,135, 3, 62,159, 15,127,127,127, 18, 25, 25,105, 71, 8,113, 51,167,184, -208,193,187,109,183,102, 31,117,106,209,170,113,109,206,242, 3, 47, 96, 98, 76,224, 18, 35,120,132, 1, 99, 16, 65, 36,224,194, - 39,176, 1, 55, 60,228, 81, 99, 7,223,246,221,210,159,157, 61,106,142,102,167,110,221, 91,214,240,243,225,172, 58,244, 18,217, - 9, 79, 77, 9, 97, 87,210, 57, 92, 14,106,212,111,231,224, 19, 80,151, 91,183,113, 27,126, 98, 84, 72, 91,187,234,173,131, 50, - 95, 92,102, 77,197, 95,255,252,121,237, 69, 62, 24,131, 85,156, 3,161,116,150,149,144,120,237,219,183,155,147,150,167, 87, 70, - 68, 68,192,193,193, 1,174,174,174,176,182,182, 70,104,104, 40, 46, 92,184,128,103,207,158,129, 97, 24,212,169, 83,199,162, 13, -167,167,167,227,209,163, 71,176,181,181,125,103,154,213, 42, 59,226,235,202,142,130,148,140, 92,193,185, 59,207, 26,255, 50,237, -211, 0,142,255,167, 91, 52,154,255,191,251,117,186, 15, 99, 36,145,162,173, 5, 61, 60, 60,154,111,221,186, 85,160, 53, 66,225, - 51,234,230, 82,165,198, 36, 3, 0,153,152,171, 12, 94,226,251,221, 15, 63,252,160,252,252,243,207,253, 99, 99, 99, 23,149,167, - 43, 20, 10, 23,116,238,220,121, 18,165,148,255,205, 55,223, 0, 0,134, 14, 29,154,123,235,214, 45, 31, 74,105, 42, 33,196,109, -248,240,225,207, 47, 94,188, 40, 29, 63,126, 60,215,104, 52,134,242,120, 60, 74, 8,153, 71, 41,157,243,167, 16, 41,135,115,239, -254,253,251, 85,220, 60,125,225,105,207, 65,203,153,175,134, 83,179,151, 50,136,143,126,137,176,199,119,224,226,226, 98,237,234, -234,250,212,207,207, 79,159,144,144, 48, 37, 63, 63,127,125, 89,121, 20, 8, 4, 15,131,131,131, 93, 61, 61, 61,145,159,159,143, -248, 52, 21,198, 29,148, 34, 87,253, 42,104,193,135, 26,117, 43,251, 42, 36, 28,221, 29,103,103,103,189, 78,167,251, 62, 59, 59, -187,204,225, 62,248,124,126,198,227,199,143,229, 30, 30, 30,208,104, 52, 52, 51, 51,147, 40,149, 74,228,229,229,145,227,199,143, -247, 76, 74, 74,106,232,229,229, 69,220,221,221,231, 85,175, 94, 93,157,144,144, 48,194,156, 58, 94,251,103,251,235, 9, 33, 38, - 30,143,183,124,228,200,145,125,255,248,227,143,123, 7,230,212,232, 65, 41,213, 23, 60, 76,172, 3, 3, 3, 79,215,174, 29,224, -182, 99, 89,173,213,148,210,165,239,193,229,245,217,244,233,211,107,216,217,217, 97,244,232,209,152, 59,119, 46,102,205,154, 85, -125,244,232,209, 35, 1,252,100,193,131, 82,226,226,226,114,119,213,170, 85,254,205,155, 55,199,137, 19, 39,176,123,247,110, 68, - 70, 70, 26,189,188,188,120,141, 27, 55,198,236,217,179,209,177, 99,199, 17, 99,199,142,109, 77, 8,169,103,166,233,248,124,246, -236,217, 61, 90,180,104,129, 97,195,134,105, 47, 93,186,212, 23,192,153,179,103,207,182,187,124,249,242,129,157, 59,119, 74, 22, - 46, 92, 24, 52, 97,194,132,209, 0,214, 84, 96,255,123,182,106,245,106,108,227, 22, 45, 90, 96,201,146, 37, 29,223,198, 96, 17, - 66,132,246,246,246,199,183,111,223, 94,215,215,215, 23,131, 7, 15,174,215,183,111,223,227,132,144,246,148, 82,179, 30, 72,149, - 42, 85,250,241,240,225,195,222,165,149, 36,148,132, 86,171,181,251,228,147, 79, 22, 3,176,200, 96,237,218,181, 11, 19, 39, 78, - 68,157, 58,117,106, 55,105,210,100,195,168, 81,163,208,187,119,239,143, 8, 33,206,148, 82,165, 89, 47, 22, 30,207,171,107,215, -174,252,131, 7, 15, 2, 0, 90,181,106,133,160,160, 32, 60,121,242, 4,215,174, 93, 3,151,203,133, 76, 38, 67,243,230,205,133, -137,137,137, 94, 0,202, 53, 88, 28,145,244,179, 30, 93,187, 40,142,220, 74,130,137, 49,162,129,183, 21, 26,251, 59, 33, 60, 62, - 23,193, 79,227, 97,210, 9, 96,101,103,143,166,173, 59,216, 37, 39, 68,126, 6,160,252,250, 88, 34,233,103,189,122,124, 44, 63, -114, 51, 17,217,137, 97,244,197,157, 63, 46, 24, 52,202, 17, 0,112,239,252,158, 13, 46,246,146,246, 62,245, 27,112,219,180,239, -110,123,112,119,242,103, 0, 88,131,197,242,246, 6, 11, 0,242,244, 72,249,232,227, 79,113,255,254,125, 0, 64, 70, 70, 6, 50, - 50, 50,224,237,237,141, 53,107,222,124,110, 85,196,184, 48, 12,243,206, 53, 1,192,217,222, 10,131,187, 52,226, 93,123,180, 91, -172, 76, 75, 19,203,229,114,205,135,102,176,138, 98, 52, 26,197, 94, 94, 94,200, 85,131,228,168, 12,242,244, 61,175, 34,251, 14, -253, 47,201,117, 58, 29, 71, 46,151, 67,171,213,138,205,120, 17,240,123,244,232, 49,105,239,222,189,252,176,176, 48, 84,171, 86, - 13,122,189, 30,183,110,221,138, 47, 24,160, 24,148,210, 68, 46,151,155,200, 48, 76,245, 58,117,234, 96,209,162, 69,240,247,247, - 39, 93,186,116,153, 82, 96,178,152,162,154, 73, 73, 73, 63,142, 26, 53,170,221,190, 3,127,216,109,236,167, 70,110, 78, 46,242, -243,243,241,240,193, 61,100,166,104,240,203, 47,191, 64, 44,150, 16, 0,130,212,212, 20,193,248,241,227, 87,187,187,187,119,138, -143,143,239, 90, 90, 62, 19, 19, 19, 23,124,245,213, 87, 77,247,236,217, 99,147,151,151, 7,181, 90,131, 76,165, 20, 79, 87,190, - 26, 95,183,198,183, 79,177,110,237,122, 78,173, 42, 50, 7,149, 74,133, 47,191,252,114,133,155,155, 91,243,196,196,196,225,165, -105, 38, 36, 36,220,254,250,235,175,157,119,238,220, 41,214,233,116,122,147,201, 4,181, 90,205,217,179,103,207,148, 42, 85,170, -216,110,218,180,137,136,197,146,130,101,227, 5, 99,198,140,217,235,226,226,178, 51, 57, 57,121, 88, 57,199,148,203,229,114, 87, -238,216,177, 99, 72,191,126,253, 20, 73, 73, 73, 1,135, 15, 31, 22, 1, 80, 23, 44,226,218,190,125,251, 42,203,150, 45,115, 12, - 12, 12,156, 66, 8,225, 83, 74,255,209, 65,195, 29, 28, 28,198,246,232,209, 3,139, 23, 47,198,209,163, 71, 39,216,217,217,173, -152, 59,119, 46,220,220,220,190, 38,132,172,180, 96, 0,221,165, 63,253,244,147,191,191,191, 63,134, 14, 29,170, 59,119,238,220, -116, 0,135, 0,196, 92,189,122,213, 99,219,182,109,221,246,238,221,187,120,213,170, 85,226, 53,107,214,120,127,250,233,167, 43, - 1, 12, 47,247,254,118,118, 30, 63, 96,192, 0, 44, 91,182, 12,151, 46, 93,250,148, 82,122,162, 96,214, 73, 66, 72,183,133, 11, - 23,158,159, 57,115, 38,126,250,233,167,111, 44, 53, 88,132, 16,121,141, 26, 53,190,239,212,169, 19,174, 94,189,138,150, 45, 91, -162,105,211,166, 19, 8, 33,171, 41,165,233, 21, 48, 87, 28,185, 92,190,119,235,214,173, 45,171, 84,169,130,249,243,231, 99,210, -164, 73,216,178,101, 75,203,193,131, 7,239, 37,132,244, 42,126,207,148,132,181,181,181, 92, 42,149, 98,202,148, 41, 52, 50, 50, - 50,171,188,229, 43, 87,174,108,187, 98,197, 10, 98,107,107,107,109,174, 25, 22,139,197,205,106,214,172,137,217,179,103,227,236, -217,179,152, 57,115, 38,106,214,172,137,152,152, 24,244,239,223, 95, 58, 99,198,140,222, 0,204, 26,151,144, 82,106,109,111,111, -143,212,212, 84,240,249,124, 52,111,222, 28,135, 14, 29,130, 86,171,133,147,147, 19,178,179,179,209,168, 81,163, 66, 51,102,109, -222,209,164, 53, 29,236,172,145, 26,146, 0, 30,140,168,239,227,128,139, 79, 50,160, 55, 48,112,178,183, 65,114,106, 10,154,212, -116,135, 78,231, 1, 74,153,154,230, 40, 10,185,156,250, 34,177, 4,153,121,233, 72,120,122, 41, 67,111,210,142,202,142,188, 22, - 7, 0,118,213, 90,141,186,119,237,236,189, 62, 31,183,114,202, 87, 86, 6,161, 76, 35,214, 50,176, 88, 2,199,140, 27,229, 79, -105, 42,213,159, 75, 9,222,214,184,252, 21,154, 37,241, 33, 26,172, 66, 10, 7, 71,214, 25, 24,232, 12, 76,225,191, 88,168,213, -106,115,163, 98,134,211,167, 79,111, 31, 55,110, 28, 86,172, 88,129,231,207,159, 67, 32, 16,160,102,205,154,174,132, 16,121, 97, -196,165,126,253,250, 78, 28, 14, 7,225,225,225, 88,190,124, 57, 62,255,252,115,122,227,198,141, 45, 37,189, 40, 40,165, 15, 50, - 51, 51,215,142, 26,241,121,118, 86, 74, 44, 12,234, 44,164, 38,188,132, 86,153,141,249,139,126,132,202,192, 67,114,142, 30,201, - 57,122,112, 68,118,216,176,105, 43,183, 70,141, 26,157,120, 60, 94,215, 50,242,121, 43, 37, 37,101,211,152, 49, 99,178,147,147, -147, 95,239,159,206, 64,161, 51,188,121,189, 74,165, 82,172, 92,185,210,218,199,199,167, 7,159,207,111, 91,134,102, 82, 92, 92, - 92,216,152, 49, 99,116, 41, 41, 41,200,201,201,193,145, 35, 71,186, 85,169, 82,197,118,241,210, 21, 68,169,231, 33, 57, 91,143, -228,108, 61,132,114, 39,236, 61,240, 7,215,215,215,119, 32,159,207,111, 90,158,185,218,185,115,231,144,126,253,250, 41,150, 46, - 93,154,121,248,240,225,117,148,210,162, 39, 36,124,229,202,149,251,246,238,221,155, 55,105,210, 36,187, 37, 75,150, 76, 32,132, - 76,255, 7,195,243,109,251,245,235,231,199, 48, 12,246,239,223,255,152, 82,250,211, 31,127,252,113, 87,171,213,162,127,255,254, - 94,120, 85, 92,100,142, 78,195,129, 3, 7,126,217,178,101, 75,124,251,237,183,250,115,231,206,213,167,148,174,160,148, 70,211, - 87,196, 80, 74, 87, 95,190,124,185,206,216,177, 99,181,141, 26, 53,194,176, 97,195, 62, 39,132,180, 44, 71,183,217,128, 1, 3, -252, 25,134,193,158, 61,123, 30, 21, 49, 87,133,231,241,194,129, 3, 7,110,233,116, 58, 12, 26, 52,168, 42, 33,164,157, 5,251, - 46, 16,137, 68,251,127,248,225, 7,155,132,132, 4, 12, 25, 50, 68, 27, 30, 30,142, 57,115,230, 72,172,173,173, 79, 20,222, 3, -150, 32, 18,137,126,249,249,231,159,123,212,170, 85, 11, 99,198,140,209,173, 95,191,126,220,151, 95,126,169,171, 95,191, 62,214, -173, 91,215, 67, 40, 20, 90, 52, 4, 72, 98, 98, 98,118,104,104,168,125,121, 83,124,124,124,138,153,251, 44, 85, 40, 20, 55, 3, - 3, 3,115,107,214,172,217,192,104, 52, 34, 52, 52,244,229,246,237,219,153,154, 53,107, 98,237,218,181, 88,178,100, 9,186,118, -237, 10, 46,151,219,219,146,188, 42,149, 74,136,197, 98, 8, 4, 2, 4, 7, 7, 67,171,213, 66, 42,149, 66, 44, 22,131,203,229, -194,198,198, 6, 10,133, 2, 0,168,121,121, 5,205, 85, 25,192,231,115,192,227, 48, 8,139,201,129,222,192, 64, 44,224,130,207, - 35, 0,101, 96, 35,227, 67, 44,228,130, 67, 8, 99,166, 38,114,148,122, 8, 5, 28,240, 5, 66,194, 49,154, 36,175, 95,142, 60, -147, 68, 34, 17, 18, 7, 43, 17,196, 2,182, 79,110,150,119, 28,193, 42,140, 50,153, 99, 82,180, 90,237, 59, 55, 62,111,171, 89, -146, 57,124, 91,205,247,242, 36,242,120,154,103,207,158, 9,173,236,221, 24,123, 5, 63,171,202,231,215,172, 1,192, 78,206,203, -209,155, 12, 76, 98, 98, 34, 68, 34,145,198, 28, 45,141, 70, 51,130, 16, 50, 31, 64, 0,143,199, 59,182,117,235, 86,178, 99,199, - 14,219, 1, 3, 6, 68, 16, 66, 18, 2, 3, 3, 61,183,110,221,106, 5, 0,171, 87,175,166,123,247,238,237,136, 87, 93, 95, 36, -151,166,153,156,156, 60,135,207,231,223,248,234,171,175,214, 8,133, 66, 91,153, 76,102,127,245,234, 85,162,209, 83, 52,156, 30, -243,186,101,161,149,132,131, 43,211,172, 48,114,228, 72,238,211,167, 79, 23, 1, 56, 86,134,230, 20,145, 72,116,245,249,243,231, - 43,172,221,235, 58,202, 60,167, 91, 55,158, 22, 14, 0,240,116,224,131, 83,240, 60,204,206,206, 70, 90, 90, 26,190,252,242, 75, -219,136,136,136, 41, 0, 46,150,166, 25, 31, 31,127, 89, 36, 18,197,135,132,132,180,225,243,249, 66,153, 76,214,240,230,205,155, - 68,163, 99, 80,123, 74, 12, 50,243, 95,229,211, 78,206,195,189, 31,156,241,245,215, 95,243, 94,188,120,241, 35,128, 22, 37,254, -123,225,112,150, 20, 53, 87,147, 39, 79,126, 8,160, 42, 33,228,141, 34, 80,147,201, 68, 6, 13, 26,244, 4, 64,205, 73,147, 38, -217, 81, 74, 39, 16, 66, 50, 41,165, 27,255,238,107,201,202,202,106,241,168, 81,163,176,119,239, 94,100,101,101,173, 4,128,220, -220,220,159,118,237,218,181,103,196,136, 17,248,237,183,223, 22, 19, 66, 78,153, 17,197,234,220,191,127,127,156, 60,121, 18,231, -207,159,255,158, 82, 26, 90,202, 61,250,156, 16, 50,229,240,225,195,171, 6, 12, 24,128, 95,127,253,181, 19,128,171,101,232,182, -239,216,177, 35, 78,156, 56,129,140,140,140,117, 37, 45,144,157,157,189,254,200,145, 35, 77, 58,118,236,136, 69,139, 22,181, 7, -112,193, 12,163,225,111,109,109,189,117,213,170, 85, 13,107,213,170,133,129, 3, 7,106,244,122,125,167, 73,147, 38, 29,221,189, -123,183, 98,251,246,237, 13, 70,142, 28,121,155, 16,242, 5,165,244,150, 57,199,146,203,229, 46, 92,179,102,205,240, 54,109,218, - 96,194,132, 9,198,211,167, 79,119,167,148,158, 33,132, 68, 76,158, 60,249,248,242,229,203,185,203,150, 45, 27,206,229,114,211, - 76, 38,211, 63,101,170,127, 88,189,122,117,147, 14, 29, 58,224,229,203,151,184,117,235, 22,244,122,253,111, 55,111,222,188, 82, -189,122,245, 31,116, 58,221, 81,153, 76, 54, 84,161, 80, 4,214,173, 91,183, 29, 33, 68,106, 78, 61, 60, 66, 72,118, 68, 68,132, -204,201,201, 9,124, 62, 31,143, 30, 61,130,147,147, 19, 0, 32, 53, 53, 21, 53,107,214, 4,151,203, 69,118,118, 54, 0,228,152, -103,134, 56,143, 35,162, 19,171,218, 41,100,128, 73,140, 7,225,241,112,116,176,133,137,112,144,156,156,132,186,126,238, 32,132, - 32, 59, 35, 25,132,144, 39,230,104,154, 40, 19, 28,155,152, 90,201, 94, 33, 66,173, 38, 29,236,111,158, 74,219, 97, 93,173,197, - 72, 30,151,112, 69, 98,171,141,195,135, 13,115, 96, 24,138,236,140, 20,240, 56,156, 59,172,101, 96,169, 80, 4,171,180, 74,101, -175, 42, 75, 75,203, 52, 41, 98,177,248,117,244,196,130,127,118,239, 92,179, 60,254, 10,205,127, 48,210, 48,141, 16,114,152, 16, - 50, 45, 46, 46, 46,108,248,240,225,122,163, 94,155,119, 99,126,213,169,247, 23, 85, 25,115,115,142,235,152, 67,227,172,167,170, -114, 50,243, 86,175, 94,109,136,139,139, 11, 43,186, 78, 57,198, 52,150, 82,122, 98,219,182,109,235,247,239,223,143,154, 53,107, - 34, 52, 52,212, 73,169, 84,214,123,242,228,137,157,191,191, 63,118,236,216,129,189,123,247,174,160,148,158, 45,203, 92, 21,137, -174,157, 75, 74, 74,242,141,137,137,241,182,177,177, 49,216,216,216,160,120,203,194, 92, 53,131,140,236, 28,216,217,217,195,202, -202,202,171, 60, 77,173, 86,123, 34, 41, 41,201,135,177,245,107,229,147,190, 50, 39,120, 97,101, 4, 47,172,140, 19, 83,220,224, -106, 35, 68, 86, 86, 22,210,210,210,144,150,150, 6, 66, 8, 12, 6, 67, 13, 51, 52, 35, 19, 19, 19, 55,199,198,198, 30,118,118, -118,134, 66,161, 0, 5,144,156,109,192,195,101,254,120,184,204, 31,201,217, 6,228,230,229,161, 74,149, 42, 80, 40, 20, 53, 75, - 57, 63,156, 74,149, 42,117,233,215,175,159, 2, 0, 10,140,211, 71,148,210, 49, 37, 76,163,141, 70, 99,243,194,101, 39, 78,156, -104, 7,160,227,223,124, 61,113, 9, 33, 95,141, 24, 49,162,129, 88, 44,198,218,181,107, 35, 1,236, 44,152,189,127,253,250,245, -225, 0, 48,110,220,184, 64, 0, 19, 10,186, 72, 40, 21,129, 64, 80,191, 70,141, 26,184,121,243, 38, 0,252, 81,206,230, 15,220, -184,113, 3,213,171, 87,135, 88, 44,110, 88,206,178, 94,149, 43, 87, 70,120,120, 56, 0, 60, 40,101,153, 7,225,225,225,168, 92, -185, 50, 8, 33, 94,102,236,123,143, 14, 29, 58, 60,190,120,241, 98,195,102,205,154, 97,248,240,225,186,219,183,111,119,161,148, - 94,121,240,224, 65,219, 65,131, 6, 41,125,124,124,112,249,242,101,255, 65,131, 6,221,224,114,185,243,205,208,252,124,222,188, -121,211,122,246,236,137,121,243,230,209,125,251,246, 13,164,148,158, 41,184,191, 78,239,217,179,103,200,130, 5, 11,104,175, 94, -189, 48,119,238,220,105,132,144, 49,229, 68,131,114, 76, 38, 19,148, 74,165, 89, 33,120,115,151,119,112,112,232,220,161, 67, 7, -204,156, 57, 19,149, 42, 85,194,209,163, 71, 41,128, 99,148,210,171, 90,173,182, 21,165,116,185, 82,169, 60,116,243,230, 77,180, -111,223, 94, 0,224, 99,115,182,111, 52, 26,163, 47, 94,188,168,183,183,183,135,187,187, 59, 60, 60, 60,160, 84, 42,145,157,157, -141,154, 53,107,162, 73,147, 38, 80, 42,149, 56,118,236,152, 62, 59, 59,219,172,134, 40, 70,157,114,251,217,227, 7,115,236, 21, - 34,184, 59, 89,163, 74, 37, 59,228,103,167, 35, 45, 57, 17,245,107,120,160,117,253, 42, 72,207,209,225,244,177,131, 89,121,121, -170,237,102, 69,253,181,170,173,231, 78, 29,205,177, 85, 8,224,235, 23,136, 65,195,199,213,173, 91,175,241,217, 70,141,154,159, - 94,186,120, 97,237,143,154,214, 32,241,233, 26,156, 60,246, 71, 86, 78,110,238, 86,176,252,229,124, 40, 21,220,223, 48, 88,165, -144, 62, 97,194, 4,136, 68, 34,184,186,186,190, 54, 69,133, 38, 69, 40, 20,194,213,213, 21, 70,163, 17,123,246,236, 1,128,244, -114, 54,166,237, 62,102, 17,163, 53, 80, 21,159,207,127, 39,154, 5,145, 2,237,167,147,127,101, 78,221, 40,185,145, 75, 69, 52, -255, 5, 52, 42,232,211,170, 17,165, 52, 43, 58, 58, 58,190,239,167,221,115, 98, 34, 66,146,149,217,137, 73,185, 25,113, 73,113, -145, 79,146,167, 79,153,144, 19, 31, 31, 31, 87,208, 23, 86,163,196,196,196,238, 0,204,173, 75, 48,161,111,223,190, 63,143, 24, - 49,130, 62,124,248, 16, 0, 16, 28, 28,140, 97,195,134,209, 33, 67,134,172, 4, 48,181, 2,249, 86,170,213,234, 55,162, 31,122, - 19,243,186,104, 47, 55, 55, 23,137,137,137,208,233,116,102, 59,225,231,167,151, 61,203,140,190,103, 8,244,148, 33,208, 83, 6, -255,202, 82, 16, 99,254,107,115,149,150,150,134,148,148, 20, 0,208, 88,144,207, 92,173, 86,251, 70, 62,139, 22, 65,230,230,230, - 34, 57, 57, 25, 38,147, 73, 87,202, 67,130, 73, 72, 72, 56,189,119,239,222, 60, 0, 88,186,116,105, 38, 33,228, 60, 33,228,231, - 18,166, 13, 60, 30,239,122,225,178,203,150, 45,203, 4,112,226,111, 52, 87, 61,107,213,170,149, 53,109,218,180,181,223,124,243, - 13, 54,108,216,128,164,164,164,169,148, 82, 99,225,190,164,167,167, 79, 94,183,110, 29, 62,251,236, 51,204,154, 53,107, 89,189, -122,245,114, 9, 33,131, 74,211,116,116,116,116,231,241,120,184,127,255,126, 46,165,244,101, 57, 15,212,228,251,247,239,167, 16, - 66,224,234,234, 90,173,172,101,237,236,236,188, 21, 10, 5, 18, 18, 18, 0, 32,170,148,197,162, 19, 19, 19,169, 80, 40,132,155, -155, 91,245,242,246,223,214,214,118,242,230,205,155,121, 33, 33, 33,248,232,163,143,226, 47, 95,190,220,158, 82,122,169, 32,111, -247,131,131,131, 91,182,109,219,246,217,217,179,103,241,227,143, 63,146, 58,117,234,140, 41, 79,211,211,211,115,244,231,159,127, -142, 53,107,214, 96,227,198,141, 99, 40,165,251,139,237,243,238,117,235,214,141,219,184,113, 35,134, 15, 31, 14, 47, 47,175, 65, -101,233,197,196,196, 76,105,211,166, 77,240,243,231,207,205, 26,161,192,156,229, 9, 33,109, 27, 55,110,236,173, 86,171,177,117, -235,214,151,222,222,222,119,247,239,223, 63,129, 82,250,168,216,162,135, 14, 30, 60,136,193,131, 7,163, 78,157, 58, 91, 9, 33, - 3,204,120, 73, 38,198,196,196,164, 63,122,244,136,225,114,185,112,119,119, 71,151, 46, 93,208,191,127,127,212,169, 83, 7,169, -169,169,184,114,229, 10, 19, 17, 17,145,110,110,135,163,233,207, 46, 30,141,138,122,118,253,254,237, 43, 6, 30,151, 3, 15, 87, - 59,124, 18, 84, 23, 95,244,110,142,250,254,149, 16,147,170,198,133, 11,103, 13, 81, 81, 47,111,154,211,130,176, 80, 51, 44,244, -209,141,144,251,215,140,124, 30,129,191,159, 15,102, 78,159,108,187, 96,246, 20, 27,159,106, 30,120, 20,153,131,179,103, 78, 26, - 18,227,227, 46,178, 45, 8, 89, 44,165,188, 34,194,165, 27, 54,108,104,180,121,243,230,246, 19, 38, 76,144, 15, 29, 58, 20, 98, -177, 24, 42,149, 10,238,238,238, 48,153, 76, 56,117,234, 20,238,221,187,151,207, 48,204, 89, 20,107,254, 79, 8, 9, 42,218, 87, -198,169, 8, 42,121,213,121,165,170,209,225, 62,125,222,137, 38, 0,200, 95, 48, 86, 25, 85,116, 59, 86,239,191,214,107,215,233, -251,228,219, 1,173, 57,245,253, 42, 3, 0,156,157,157, 97,101,101,101,177,230, 59,120,105,253,229,154, 69,139,111,147,146,146, -194, 9, 33,169, 35, 70,140,240, 47,172,208, 46, 18,137, 52,113,113,113, 97,133, 29,141, 22, 95,167,188,124, 22,180,116,251,146, - 16,114, 36, 39, 39,231,244,164, 73,147,176, 96,193, 2, 28, 61,122,180, 37,165,244,122, 69,246,157, 82,106,242,242,242,202,190, -115,231,142,115,245, 26,245, 80,213,137,143, 86,223, 63, 7,165, 20,246, 82,138,188,236, 76, 60,120,112, 31,121,121,121,183, 45, -201,167,155,155, 91,118,106,106,170,131,147,147, 19, 50, 51, 51,145,158,158,254,218, 92,101,101,101, 33, 51, 51,147, 18, 66,174, - 90,160,169,244,246,246, 86,133,133,133, 9,157, 43, 87, 71, 53, 39, 1, 26, 79, 15, 7, 40,133,135, 29, 7,121,185,217,184,121, -243, 38,114,114,114, 46,149,166,201, 48,204,119,131, 6, 13,226, 2, 24, 50,105,210, 36, 59, 0,117, 38, 79,158,124,182,120, 75, - 65, 62,159,255,211,142, 29, 59,106, 22, 22, 37, 78,153, 50,101, 5,165,116,243,223,117, 45,217,219,219,127,119,252,248,113,133, - 94,175,199,234,213,171,177, 98,197,138, 45,148,210,223,139, 29,143,227, 92, 46,119, 29,135,195,249,234,235,175,191,198,168, 81, -163,164, 13, 26, 52,152, 80, 36,202,245,134,102, 66, 66,194,204,250,245,235,207, 74, 77, 77, 53,171,194,254,243,231,207, 71,214, -175, 95,127,102,106,106,234,146,178,206,145, 76, 38,147,153, 76, 38, 68, 69, 69,101, 81, 74,115, 74, 57,119, 26, 31, 31,159, 4, -147,201,228, 46,149, 74,237,202,187, 62,179,178,178, 22, 54,104,208, 96, 78, 74, 74,202, 25, 0,243,139,119, 57, 66, 41,125, 72, - 8, 9,252,230,155,111,198, 46, 94,188,184, 87,114,114,242,158,242, 52, 99, 98, 98, 22,182,109,219,246,251,103,207,158,109, 43, -173,168,151, 82,186,150, 16,162,223,177, 99,199,152,168,168,168, 69,101,105, 82, 74,143,161,140, 34,243, 18,180, 75, 92,190,168, - 38,151,203,157,188,120,241, 98,206,134, 13, 27, 64, 41, 93,102, 52, 26, 75,203,231, 35, 46,151,187,189,121,243,230, 67,247,239, -223, 47, 14, 12, 12, 28, 5, 96,119,121,215,167, 86,171,189,117,227,198,141, 38,209,209,209, 14,109,219,182, 21, 20,254, 49,201, -206,206,198,177, 99,199,244, 17, 17, 17,233, 74,165,242,150, 37,207, 16,163, 46,119,192,141, 11,135,119, 71, 63,127,210,180, 77, -167, 30,182, 58,189, 59, 68, 25, 92,100,103, 36,227,212,177,131, 89, 81, 81, 47,111,170, 84,217, 3, 44,209,212,107,115,250,223, -188,120,100, 79,124, 84, 88,147, 86,109,187,216,106,116,158, 16, 9, 56,200, 72, 73,192,169,227,135, 51,163,162, 34,175,106, 12, -218, 97,255,212,115,254,191,164,249, 33,134,227,202,157, 0, 8, 0, 4,201,229,242, 5,179,102,205, 90,118,251,246,237,101, 93, -187,118, 93, 38, 18,137, 22, 0, 8, 2, 32, 40,101,189,160,191, 83,179,161, 27,236,218, 86, 35, 87, 58,120, 19,102,116, 75, 91, -211,176,198, 50, 93,187,118,237,214,189,141,102, 69,167,191, 90, 19,192, 97,131,193, 64, 1, 36, 3, 56, 92, 48, 77, 43, 97,157, -105, 69,230, 39,199,198,198, 82, 0,135, 45,201, 39, 0,135,126,253,250, 49,121,121,121,180,111,223,190, 20,128,245,219,236,187, - 72, 36,106,219,170, 85, 43, 67, 74, 90, 38, 13,143, 76,160,183,130, 67,233,233, 11, 55,232,158,131,199,233,154,117, 27,105,237, -218,181,117, 0, 60, 45,209,228,241,120,237,218,182,109,155,145,146,146, 66,195,194,194,232,149, 43, 87,232,129, 3, 7,232,198, -141, 27,233,207, 63,255, 76, 43, 87,174,156, 2,192,217, 18, 77,137, 68,210,163,115,231,206,134,236, 92, 21,141, 74,200,160,143, -195,162,232,245, 59,143,233,169, 11,215,233,206,221,251,105, 64, 64,128,166, 60,205, 87,239, 49,238,154, 61,123,246,228, 82, 74, -105,143, 30, 61,226, 1,136,139,204,175,250,221,119,223,165, 82, 74,233,146, 37, 75, 50, 0, 76,255, 7,174,165, 78,149, 42, 85, - 10, 23, 8, 4,199, 1, 12, 41,103,189,254, 60, 30,239,168,139,139,203, 93, 0,159,252,221,247, 17,128,174, 78, 78, 78,183, 0, -116, 47,103,189,194,229,122,126, 8,247,251, 95,116,222,219,241,120,188, 43,120,213,199,149, 57,239,128, 31,184, 92,238, 9, 0, - 31, 89,146, 79, 0,110,114,185,188,133, 92, 46,239, 38,151,203,187,217,216,216,180, 0,224,246, 54,251,110,239, 19,212,205,163, - 94,247, 67,149,235,124, 28,227, 81,183,107,140, 87,253, 30,135,236,125,130,186,189,173,166,103,253, 30,135, 61,234,118,141,245, -168,219, 45,186,106,195, 30,135, 28,252,130, 58,127,104,231,253,125,214, 44,101, 59, 35,255,142,237,252, 37,121,183,112, 71,101, - 0, 62, 1,176,168,224, 83,246,182, 39,224,175,208,108,226, 10,223, 32,111, 18,214,197,143,151, 9,160,247,187,208,124, 15, 31, -142,219,116, 58, 29,213,104, 52, 84,165, 82,209,252,252,252, 55,140, 83, 81, 35,150,152,152, 72,227,227,227,105,108,108, 44,141, -142,142,166, 0,118, 90,154, 79, 43, 43,171,205,125,250,244, 49,241,249,252, 53,239, 98,223,237,236,236, 22, 53,110,220, 88,191, -106,213, 42,122,232,208, 33,186,105,211, 38,250,245,215, 95,211,154, 53,107,106,109,108,108, 6, 84, 68,211,197,197,101,166,159, -159, 95,198,150, 45, 91,232,206,157, 59,233,202,149, 43,233,140, 25, 51, 76,238,238,238,201, 10,133,162, 99, 69, 52,157,156,156, -126,105,209,162,133,254,151, 95,126,161,103,207,158,165,187,118,237,162,223,125,247, 29,245,247,247,215,202,100,178, 79,205,209, - 4,192,229,241,120,203, 71,143, 30,157,236,230,230,118,188,216, 60,105, 64, 64,192,221, 65,131, 6, 37, 2,152,194, 62,112, 89, - 77, 86,147,213,100, 13,214,135, 97,176,120, 22, 70,187,148, 0,254, 32,132, 28, 45,172,159,241, 14, 34,104,239, 92,243,102, 34, -125, 6,192,159, 16,194,123, 87,154,239, 33, 11,133, 66, 33,175,192,160, 22, 82, 82, 43,151, 59,110,110,110, 69,127,231, 0,176, -184,159,165,156,156,156, 47, 8, 33,227,138,117, 49, 80, 97, 50, 50, 50,166, 17, 66,246, 70, 70, 70, 46,178,177,177,169,111, 48, - 24, 12,185,185,185, 87,178,178,178,166, 80, 74,227, 43,162,153,148,148, 52,159, 16,114,100,230,204,153,147, 40,165,141, 56, 28, -142,198, 96, 48, 92, 74, 79, 79, 95, 68, 41, 77,171,136,102, 74, 74,202, 72,129, 64,240,107, 68, 68,196, 34,137, 68, 82,155, 97, - 24,157, 74,165,186,148,158,158, 62,158, 82,154, 98,230, 53,110, 2,240, 29, 33,100, 57,128,212, 98,243, 84,132,144,230,161,161, -161,246,148,210, 36, 54,166,206,194,194,194,242,223,168,131, 85,218, 11,227,157,155,150,127,139,230,123, 84,180,251, 2,192, 32, - 51,150, 91,244, 14,183,169,126,199,251,240, 24, 64,231,119,172, 25, 2, 96,200,187,212,212,235,245,183, 97,230,184,108,229,228, - 45,169,148,116, 61, 0,214, 92,177,176,176,176,124, 64,176,189,167,177,176,176,176,176,176,176,176,188, 99, 8, 94, 85,254, 46, -233, 95,181,217,173, 3, 8, 33, 65, 21,248, 55,127,142,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,150,102, 17,237,210, -198, 54, 13, 47,166,247, 11,254,141,252,197,149,211,216, 10,128,172, 38,171,201,106,178,154,172, 38,171,201,106,254,231, 38,182, -136,144,133,133,133,133,133,133,133,229, 29,195, 26, 44, 22, 22, 22, 22, 22, 22, 22, 22,214, 96,177,176,176,176,176,176,176,176, -176, 6,139,133,133,133,133,133,133,133,133, 53, 88, 44, 44, 44, 44, 44, 44, 44, 44, 44, 21,135, 20,180, 6,120,245,131, 16, 74, - 41, 37,236, 97, 97, 97, 97, 97, 97, 97, 97,249, 71,140,201, 7,226, 69, 88,131,197,194,194,194,194,194,194,194, 26, 44,214, 96, -177,176,176,176,176,176,176,176, 6,235, 95, 96,176, 10,119,134, 53, 88, 44, 44, 44, 44, 44, 44, 44,255,164,177,250, 80,188, 72, - 97, 37,247, 54,132, 16,138,119, 48,160, 45, 11, 11, 11, 11, 11, 11, 11, 75, 5,248,160,188,200, 27, 69,132, 44, 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,203,135,206, 95,218,209, 40, 33, - 36,136,213,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,147, 53, 88, 44, 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,107,176, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,131,197,194,194, -194,194,194,194,194,242, 15, 65, 0,148,216, 18,128, 82,122,206,108,145, 10,180, 38, 40, 79,159,213,100, 53, 89, 77, 86,147,213, -100, 53, 89,205, 15, 79,179, 60,109, 75,252,199,123, 13,165,244, 47,155, 0, 4,177,154,172, 38,171,201,106,178,154,172, 38,171, -201,106,254,215, 38, 30, 27,196, 99, 97,249,151,115,128,112,145,229,231, 5, 74,221,192, 21, 38, 33,233,241, 75,204,166,204, 91, -107,166, 4,120, 66, 98,112,134, 81,156,134,148, 71,145,111,173,201,194,194,194,242, 31,130, 53, 88, 44, 44,255,118,210,252,125, -193,195, 34,112,224, 10,170,143,128, 99,192, 34, 0, 79,222, 90, 83,192,204,135,137,227, 14,170,127, 6, 39,191,197, 0, 66,217, -131,205,194,194,194, 98, 30,255, 72, 37,119,177, 88, 28, 44, 20, 10,127, 32,132,136,216, 83,192,242, 87, 65, 8, 17, 9,133,194, - 31, 36, 18, 73,240, 7,187,147, 59,106, 73,193, 49,117,214, 25,152, 74,167, 30,103, 59,169,180, 38, 95,112,140, 93,240,171,175, -252,173, 52,121,164,131, 70,207,120,236,188,163,114, 86,234,140, 53, 64,241,118,154,255, 63, 39, 54, 66,161,240, 20, 33,196,129, -189, 66, 63, 76, 2, 8,105,208,144,207,159, 88,131,144,118,132, 16,194, 30, 17, 22,214, 96,253,141,104,181,218,122,245,234,213, -155, 32, 20, 10, 99, 8, 33,221,255, 75, 7, 92,161, 80,220,176,182,182, 78,177,177,177, 73,177,182,182,190, 95, 94,250, 7,106, -124,124,157,156,156, 98,236,237,237,159, 21, 77,119,170,211,171,153, 79,139,161,179, 29, 2,123,182,126, 7,219,232, 46, 18,137, - 98, 26, 55,110, 60, 94,163,209,212,251, 96, 15,166,134,113, 6,135,219, 54, 36, 73, 37, 77,202, 53, 56, 7, 71,171, 20, 0,183, - 13,116,112,173,176,102, 14,227, 12,208,118, 15,227,213,178, 27,153,142,206, 87, 95,106,173,192,225,180,133,134,184,188,245, 3, -135,195, 25,195, 48, 76,123,129, 64,240, 45,251,248,253, 48, 17,114, 56,205,111,116,239, 62,127, 74,237,218, 99,253,129,110, 37, -153, 44,242,138,113, 53,106,212, 56, 73, 8,233,255, 14,159, 45, 63,250,251,251, 39, 16, 66,190, 97,207, 4,203,191,198, 96,245, -169, 74,154, 15,172, 70, 46,247,171, 74,242,250, 87, 35,249, 67,170,145,107,189,171,146,118, 21,221,240,149, 43, 87, 36, 97, 97, - 97, 78,173, 91,183,222, 35,145, 72,174, 17, 66,124, 42,162, 35, 22,139, 79,241,120,188, 62, 69,211,164, 82,233, 41, 30,143,215, -175, 88, 90,136, 84, 42,205,145, 72, 36, 47,205,212,125, 33, 20, 10,149, 98,177,248, 69,209,116, 30,143,215, 79, 38,147,157, 42, -150,214,167,120, 90,105,240,249,124,247,184,184, 56,167,248,248,120, 39,161, 80,232, 92, 52, 61, 54, 54,214, 41, 46, 46,238,141, -116, 75,225,243,249,237,228,114,249,129,226,105, 10,133,226,128,185, 26,114,185,252,119, 62,159,223,174,152, 49,252, 83, 90, 69, -205, 85,135, 14, 29,174, 37, 37, 37,121,216,216,216,216, 20,157,103,103,109,211,241,183, 45,235, 38,244,232,210, 97,140, 83,192, - 39,181, 42,168,239, 35,149, 74,175, 53,106,212,104,207,133, 11, 23,156,118,238,220, 41,253, 96,239,222, 3, 1, 2, 16,166, 21, - 67,169,227,211, 4,141,227,199,221,251,240, 30,196,169, 29, 13, 38,147, 29,192,109,131,109, 85, 68, 21,210,228, 25, 90, 50,148, - 58,159,143,230, 59,182,237, 59,150,123, 33,154,231,104, 48,153,236,193, 65,235, 10,105,254,255,220,240,185, 92,238,132,229,203, -151,115, 0,124, 77, 8, 17,254,151, 30,182,141, 43,145, 74, 31, 85,231,221,169,239, 70,154,191, 67, 67, 17, 40,147,201,238, 17, - 66,124,223,151,253,212, 49, 76,248,158,200,200,211,131,189,189,187, 78,169, 93,251,179,226, 38,171,224,251,148,197,139, 23, 15, - 9, 9, 9,113,172, 90,181,234, 40, 66, 8,231, 29, 28,139,149,139, 23, 47,158, 28, 18, 18,226,230,229,229, 53,247, 93,104,178, -188, 95,222, 29, 64, 91, 0, 31, 3,248, 8, 64,163,130,239, 13, 11,166,143,241,170, 87,132,162,159, 13, 11,214, 45,156,223,184, - 20,141,143, 75, 88,175, 97,145,244,162,191,139,127, 47,157,130,214, 0,180,232,103,241,169,159, 23,230,140,109, 86, 73,245,244, -232, 46,154, 31, 23, 73,179,194, 30,208, 7,191, 44,164, 99, 27, 58,170, 6, 86,197,143, 21,104,125, 64, 41,165, 52, 56, 56,152, -170,213,106,122,226,196, 9,198,217,217, 89, 35, 20, 10, 87, 2,144, 89,162, 37, 20, 10,243, 29, 29, 29,243, 36, 18,201, 86, 0, - 66, 74, 41, 68, 34, 81,190,139,139, 75,158, 88, 44,222, 1, 64, 68, 41, 69,199,142, 29,213,148, 82, 42, 18,137,148,230,232,118, -238,220, 89, 73, 41,165, 66,161, 80, 89,144,103,145, 88, 44,254,173, 65,131, 6,185, 34,145, 40,191, 32, 77, 40,149, 74,183, 54, -108,216, 48, 87, 44, 22,231,155,163,107,103,103, 23,103, 50,153,232,209,163, 71,169,147,147, 83, 98, 97,186,173,173,109,156,201, -100,162,135, 15, 31,166,142,142,142,137, 21, 56,166, 28,185, 92,190,180, 81,163, 70,217,114,185, 60,163, 72,218,178, 38, 77,154, -228, 20,166,153, 51,201,100,178, 12, 15, 15,143, 44,185, 92,190, 12, 0,135, 82, 10,185, 92,158, 81,165, 74,149, 76, 43, 43,171, -165,133,105,230, 76,110,110,110,163,156,156,156, 18,157,156,156, 18,109,108,108, 22,184,186,186, 38,167,165,165, 81, 74, 41,173, - 86,173, 90, 42,165, 20,142,181, 63,105, 86,189,249,144,217, 78,129,221,199,111,216,127,243,246,149, 39, 25,105,181,219,143, 89, -106, 93,187,135,181, 5,251, 47, 19, 10,133, 43, 93, 92, 92, 52,135, 15, 31, 54,165,164,164,208, 71,143, 30,209,164,164, 36, 90, -218,117,253,175,159,214, 5,184,211,141,126,123, 66,103,121,132, 93, 89,220,201, 64,163, 47,208, 93,159, 57, 26, 46,143,175, 20, - 65,127,246,255,157,110,172, 81,185, 66,154, 63,215,216,245,104,134, 71,248,154,185,227, 12, 49, 49, 49,116,226,208, 78,198, 51, - 99, 43,189,164, 27,252,247, 87, 72,243,255,231,104,192, 39,159,124,146, 31, 27, 27, 75, 3, 2, 2,148, 92, 46,119,248,127,165, - 53, 81, 35, 55, 84, 10,242, 21, 38, 60,218, 57,145,233, 22, 40,205,168,231,138,230,239,160, 21, 87,160,147,147, 83,250,182,109, -219,168, 66,161, 72, 5,224,251, 62,236, 43, 0,226, 15,116,223, 94,187,246, 97,166,119,111,211,246,218,181, 15,251, 3,221,241, -170, 91, 32, 2, 96,234,146, 37, 75,130, 13, 6, 67,240,214,173, 91,131,187,119,239, 30, 12, 96,226, 91,110,115,213,143, 63,254, - 72, 13, 6, 3,221,186,117, 43,237,222,189, 59, 5,176,218,220,245,229,114,121,245, 90,181,106,237, 8, 8, 8,136,173, 83,167, -142,174, 70,141, 26, 26, 95, 95,223,232,192,192,192,109, 34,145,200,139,109, 17,247,183, 93, 59,101,121,145, 70, 83,167, 78,157, - 6,128, 78,157, 58,117, 26,165,244,227,130,229, 62, 46,250,189,248, 39,165, 52,168,232,239,146, 52, 10,167,146, 52, 75,218, 70, -177,239,165,239, 79,225,206, 0,104, 13,224,114,241, 5,250, 84, 69,179,177,205, 42,169,213,105, 73,244,201,194,111,233,197,182, -238,244,122, 27, 23,250,108,194, 39, 52,105,231, 74,250,101, 93, 91, 85,239,170,104, 91, 17,131,117,248,240, 97,122,230,204, 25, -250,242,229, 75,154,146,146, 66,191,255,254,123,157, 76, 38,203,226,114,185,131,204,213,146, 72, 36, 57, 9, 9, 9,244,251,239, -191,215, 22, 68,155,170, 74,165,210,156,228,228,100,186,112,225, 66,157, 68, 34,137, 4,224, 35, 18,137,242, 95,190,124, 73,197, - 98,177, 89, 6, 75, 42,149,230, 60,121,242,132,138, 68, 34, 37, 0, 31, 71, 71,199,200,243,231,207, 27, 24,134,161,238,238,238, -185, 0,170, 58, 58, 58,190,184,112,225,194,235, 52,115, 13,150, 90,173,166,103,206,156,161,206,206,206,137,197,211, 79,158, 60, -249,134,241, 50,243,120, 58,187,186,186, 62, 40,204,159,151,151, 87, 26, 0,103, 55, 55,183,135,151, 47, 95, 54, 20,152,153, 52, -115,245, 92, 92, 92, 82, 83, 83, 83,233,234,213,171,181, 10,133,226, 62, 0,103, 23, 23,151,212,180,180, 52,186,118,237, 90,173, -149,149, 85, 48, 0,103,115,180, 28, 28, 28, 18,117, 58, 29,205,206,206,166,141, 27, 55,206,191,126,253, 58,205,205,205,165,148, - 82, 90,165, 74,149, 84, 74, 41,252, 90, 15,255,225,246,243,252,220,207, 39,175,219,231,213,104,224,194,211,119, 18,226, 55, 31, -186, 23,236, 16,216,163,147, 57,219,224,114,185,131,100, 50, 89,214, 79, 63,253,164,207,202,202,162,145,145,145,244,214,173, 91, -244,214,173, 91, 52, 37, 37,229,195, 52, 88,251,193,165, 27,253,122,208,141,126,193,219, 6, 59,164,231,221,223, 77,233,217,111, -232,203, 31,170,210, 89,157, 20,121,204, 70,191, 96,186,209,191, 55,157,211,154,103,145,230, 47, 53,186,209,141,126,193, 63,246, -241,204,120, 16,124,151, 94,190,124,153,174, 95,185,132,142, 13,170,164,100, 54,250, 5,211,159,107,244,178, 72,179,200, 36, 18, -137,158, 95,187,118,141, 94,185,114,133,206,157, 59,151, 74,165,210,216,183, 63, 14, 53, 4,244,103, 95, 79,186,206,167, 13,221, -226,227, 74, 47, 85, 44,111,127,181,185,106,239, 43,140, 79,127,112,136,210,204, 23, 52,121, 89, 0,237,228,199,127, 43,147, 85, - 96,174,210,162,163,163,105,114,114, 50, 93,177, 98, 5,181,178,178,122,175, 77,150, 31,208, 3,192,180,165, 75,151,190, 54, 87, -235,214,173, 11,126,252,248,113,176,135,135,199,137,183,216,214,234,165, 75,151,190, 54, 87,235,214,173,163,143, 31, 63,166,158, -158,158,113,229,173, 59,120,240, 96,105,179,102,205,130, 7, 13, 26,164,218,182,109, 27,141,142,142,166,143, 31, 63,166, 75,151, - 46,165,179,103,207,166,191,254,250, 43,237,213,171,151,178,113,227,198,183,123,247,238, 45,182, 48,111, 60, 74,169,176, 96,226, - 83, 74, 11, 13, 38, 15, 0, 31, 0,151, 53, 85,127,246, 6,165,121,145,210, 76, 84,105,198,170,248,188, 50, 12, 88,153, 70,173, -188,237,149,181, 63, 69, 67,168,151, 40,165,127,170,251,194,163,152, 55,242,187, 31,196, 81,219, 86, 32,101,239, 90,112,179, 83, -192,207,203,128,246,218,113, 24,174, 29,193,144,166, 77, 37, 18, 66,230, 87, 36,222, 39,145, 72,192,227,241,144,152,152,136,196, -196, 68,140, 26, 53, 74,112,237,218, 53,155,150, 45, 91,254, 34,151,203, 31, 18, 66,106,155, 17, 22,134,155,155, 27,198,142, 29, - 43,220,190,125,123, 53,133, 66,113,223,100, 50,241,157,157,157, 49,102,204, 24,193,254,253,251,171,216,216,216,220, 53,153, 76, - 2,161, 80, 8,115,235, 92, 18, 66, 32, 16, 8, 96, 52, 26,249,141, 26, 53,186, 23, 26, 26,234,213,186,117,107, 94, 88, 88, 24, -210,211,211,121, 13, 27, 54,124, 24, 26, 26,234,221,170, 85, 43, 94,100,100, 36,114,114,114,168,185,186, 58,157, 14, 34,145, 8, - 28, 14,231,141,116,173, 86, 11, 75,242, 88, 88,252,215,188,121,243,144, 71,143, 30,213,105,221,186, 53,239,201,147, 39, 72, 79, - 79,231, 55,110,220, 56,228,225,195,135,181, 91,180,104,193,123,246,236, 25,114,114,114,204,110, 98, 47, 22,139,225,232,232,136, - 33, 67,134, 8,247,239,223, 95,199,209,209,241, 17,143,199, 19, 58, 56, 56, 96,208,160, 65,194,253,251,247,215,117,118,118,126, -104,102,145, 33, 23, 0, 12, 6, 3, 70,141, 26, 37,179,178,178, 66, 92, 92, 28, 24,134,129,201,100, 2, 0,100,100,101, 60,126, -248,248, 73,216,144, 1,125, 90,171,245, 90,237,205, 59,247,158, 86,171,226,233, 78, 8,173, 82,206,177,172, 45,149, 74, 31,246, -239,223,127, 83,108,108,172,205,160, 65,131,248,209,209,209,200,200,200, 0,159,207,135, 88, 44,126,227, 24,127, 80,228, 6,216, -131, 65,251,152, 52,157, 72,100,227,174,144,187,250, 2,177, 87, 80,213, 81, 4, 46,135, 43,190, 27,169,146, 1,180, 61, 60,210, -237, 45,211,100,218, 71,166,234, 68, 6,187,154,114, 55,119, 15,100,100,100,160,114, 53,127,104,132,142,194, 27, 47,148,114, 16, - 11, 53,255,127,174, 90,250,248,248,184, 84,175, 94, 29,233,233,233,168, 87,175, 30,108,109,109,109, 9, 33,237, 43,124, 12,182, - 85, 17, 33, 23,205, 65,200,114,112, 57,115, 97,224, 45,194,139,180,122,248,165, 62,255,125, 42, 22,180,146, 11,111,237,222,179, -183,146,189, 71, 13,224,248,231,112,182, 17, 97,203,152,122,118,142,214,162,195, 21, 41, 46, 36,132, 4, 58, 59, 59, 95,184,125, -251,182,131, 88, 44,198,253,251,247, 17, 16, 16,128, 21, 43, 86, 56,218,218,218, 94,121, 31,138, 11, 41,165, 52, 12, 56,250,227, -163, 71, 91,119, 68, 68, 28, 27,236,237,221,117,144,175,239,130,209,253,251, 15, 31, 55,110, 28,150, 44, 89,130,195,135, 15,163, -121,243,230, 24, 57,114,164, 33, 54, 54,118,123, 5,139, 5,215, 46, 91,182,108,236, 55,223,124, 83, 92, 83, 31, 19, 19,243, 99, - 89,235, 6, 6, 6,186, 63,127,254, 60, 97,194,132, 9,245,118,236,216, 33,145, 74,165,200,206,206,198, 47,191,252,130,105,211, -166,129, 16, 2, 74, 41,126,253,245, 87,233,103,159,125,214, 40, 34, 34, 34,161, 74,149, 42,230, 84,223, 32, 0,196, 0,164, 5, -147, 12,128,116,247,238,221,214, 61,122,244,176, 42, 72,147, 0,144,176, 13,189, 74,164, 68, 47, 82,228,156, 31, 43,118,173,117, - 45,158, 86,124, 30,165,180,107, 89, 26, 22, 94,219, 93,205, 93,191,232,219,167, 13, 33,228,242,159,196,128,218, 46, 94,126,200, - 57,187, 31, 18, 30,129,132, 91, 48,241, 8, 56, 47, 31,163,178,152, 15, 3,165,129, 21,172, 63, 5,137, 68, 2,137, 68, 2, 66, - 8,178,178,178, 96,101,101,133,189,123,247,138, 87,175, 94, 93, 75, 42,149,222,180,182,182, 94, 84,158, 97, 1,128,103,207,158, -161,110,221,186,228,216,177, 99, 86,163, 71,143,230, 1, 64, 76, 76, 12,106,213,170, 69, 46, 94,188,168,152, 52,105, 18, 17,137, - 44,187,150, 5, 2, 1, 38, 79,158, 76,174, 95,191, 46,151, 74,165,120,242,228, 9,242,243,243, 49,105,210, 36,222,141, 27, 55, -228, 50,153, 12, 17, 17, 17,208,104, 52, 22, 25, 55,157, 78, 7,129, 64,240,198, 58,132, 16,232,245,122, 8,133, 66,179, 77,129, -131,131,195,236, 6, 13, 26, 28,184,116,233,146,189, 68, 34,193,227,199,143,161, 82,169, 48,127,254,124,233,181,107,215,236, 21, - 10, 5,194,195,195,161, 82,169, 44, 50,109,133,219,127,241,226, 5,124,124,124,200,241,227,199,157, 70,142, 28, 41, 46, 60,166, -190,190,190,228,196,137, 19,206,254,254,254,251,157,156,156,102,149,165,197, 48, 12,146,146,146, 16, 18, 18,130,151, 47, 95, 34, - 45, 45, 13,233,233,233,200,203,203,131,209,104,124, 85, 63, 46, 47,247,248,238,125, 71, 31, 74, 36, 18,105,128,175,143,199,227, - 39,161,169, 18,137, 68,234,233,225,225, 75,200,220, 18, 15,134, 66,161, 88, 36,145, 72,110, 30, 57,114,164,246,166, 77,155, 68, -233,233,233,136,137,137, 1, 33, 4, 98,177,248,245,196,229,114, 63,188,199, 15, 33, 4, 68,231, 3, 66,234,221,122,169,180,107, -217,117,128, 0,145,167, 0,198, 0,112,120,104, 83,219,157,119,248,177,210, 25, 20,181,161,133, 63, 96,198,201, 39,132, 0,250, -234, 0,105,112,230,185,209,190,249, 39, 99, 4, 9, 9, 9, 16, 8, 4, 16,137, 68,168,215,238, 83,222,238,135, 6, 23, 16,212, -129, 30,126,102,105,190,249,103,234,251,217,179,103,203,138,106, 14, 31, 62, 92,102,109,109, 61,187,194,230, 74, 41,109, 10, 19, -253, 54, 36, 65,237,185,224,120,178,255,203, 84,181, 63, 40,190, 3, 12,117,223,214,100, 17, 66,218,136,197,226, 72, 66, 72,139, -183, 50, 87, 10,225,205, 61,123,246, 86,178,171,252,202, 92,193,168, 1,248, 18,184, 56,218, 96,203,248,182,118,142, 54, 18,139, - 76, 86,129,185, 58,127,235,214, 45, 7,177, 88,140,224,224, 96, 8, 4, 2,136,197, 98,212,170, 85, 11, 27, 55,110,116,180,179, -179,123,175, 76,214,226, 71,143,182, 45, 10, 9,121, 54, 53, 48,208,191,167, 76,102,247,213,160, 65,214, 51,102,204, 56,118,228, -200,145,173, 31,127,252,113,250,157, 59,119,126,162,148,238,183,240,252, 16, 66,200,186,229,203,151,127, 85,104,216,102,204,152, -241,235,145, 35, 71, 22,125,252,241,199, 73,119,238,220,153, 64, 41, 93, 87,150, 70,126,126,254,145,153, 51,103, 90,127,242,201, - 39,133,191,113,237,218, 53,108,223,190, 29, 50,153,236,141,101,187,119,239,142, 17, 35, 70,216,234,116,186,223,203,210,116,114, -114, 10,186,117,235, 86, 0, 0, 1, 0, 81,161,193,122,242,228,137, 77,110,110,174,141, 92, 46,183,113,117,117, 85, 20,154,172, - 79, 62,249,196,134,207,231,183,100, 61,213, 27,148,232, 69,138, 26, 28,115,210, 42,186,188,185, 38,203, 34,131, 69, 41,189, 12, -160, 85, 73, 11,233, 51, 83, 32,130, 9, 18, 46,129,148, 91,196,100,129, 1, 47, 39, 21, 21,109,136, 91,244, 69, 40,145, 72, 32, - 22,139, 95, 71,114,114,114,114, 64, 8, 41,215,108, 20, 26, 7,185, 92, 14,181, 90, 13,189, 94, 15,177, 88,252, 58,205,104, 52, -194,104, 52, 66, 34,145, 64, 36, 18, 89, 28,193, 50, 24, 12, 8, 9, 9, 65, 68, 68, 4, 56, 28, 14,100, 50, 25, 12, 6, 3,158, - 62,125,138,132,132, 4,240,120, 60, 72,165, 82,139, 12,140,201,100,130, 80,248,231,250,189, 6,131,193,162, 8, 22,135,195,129, - 74,165,162,207,159, 63, 71,116,116, 52, 4, 2, 1,172,172,172, 32, 20, 10,145,150,150,134,248,248,248,215,105,150,228,175,112, - 89,137, 68, 2,165, 82, 89, 88,215,237,117,154, 86,171, 5, 33, 4, 92, 46,183,220,243, 99, 50,153,144,152,152,136,180,180, 52, -196,197,197, 33, 61, 61,253,181,201, 98,152,183,239,183,242,222,189,123, 52, 52, 52, 20, 90,173, 22, 34,145, 8, 98,177,248,141, - 79, 30,239, 3,236,234,109,125,160, 53, 12,252, 14,233,249, 6, 81,154, 94, 96,237, 28, 24, 4, 68,158, 4, 56, 60, 64,108,139, - 38, 53,171, 34, 38,203, 36, 11, 79,209,137, 65,208, 17,235,124,109,205,210, 52,241,219,167,229, 25, 68,209,122, 71,171, 26,181, -235, 35, 37, 37, 5, 34,145, 8, 34,145, 8, 13,154, 7, 33, 50,195, 36, 13, 77, 80, 75, 65,209,193, 44,205,255, 95, 79,213,228, -114,121,211, 22, 45, 90,144,162,154, 93,186,116, 1, 33,164, 22, 33,196,223,162,253, 95,227, 45,132, 94,218, 4,124,250,109,104, -146,202,237,240, 19,141,111,183,158,159,218,173, 60,151,234, 31,150,164,241, 2, 99,156, 8,170,175, 95, 81,147, 69, 8,105,173, - 80, 40,142,173, 89,179,198, 75, 44, 22,159, 36,132, 84,232, 5, 40,151,112, 55,124,255,213,128, 74,182,133,230,202,160, 2,120, - 18,128, 47, 1,120, 18,184, 56, 57, 96,254,136,246,118, 82, 49,255,160, 5, 70,117,247,186,117,235, 28,139,155,171,194,169, 94, -189,122,152, 53,107,150,163,157,157,221,174,127,248, 63, 64, 7, 27, 27,155, 29, 65, 65, 65,183, 18, 21,138, 17, 73,245,235, 11, -207, 91, 91,231,124,148,147, 99,237,249,228,137,222, 15,120, 12, 96,125, 92, 92, 92, 39,115,205, 21, 33,164,191,181,181,117,112, - 80, 80,144, 94,161, 80,196,174, 88,177,226,203,175,191,254, 26, 75,150, 44,193,204,153, 51, 55, 1,248,130, 82, 58, 61, 46, 46, -206,173, 60,115, 5, 0,201,201,201, 3,167, 76,153,146,158,158,158, 14, 0,168, 85,171, 22,178,179,179, 49,113,226, 68,124,251, -237,183, 0,128,186,117,235,130, 82,138,148,148, 20, 44, 91,182, 44, 37, 57, 57,121, 88, 57,127, 40,227,246,239,223,223, 72,175, -215,187, 23, 20, 3,138,178,179,179,173, 50, 51, 51, 21,122,189, 94,198, 48,140,204,198,198, 70, 14, 64, 58,100,200, 16, 94, 72, - 72, 72,128,209,104, 76, 96, 61,213, 27,230,165, 84, 47, 82, 65,142,191, 77,164,170,164, 8,152,217,193,138, 2, 33, 82,244,179, - 40, 92,130, 71,177,247,174,192, 46,176,254, 27,209, 43, 41,151, 64, 98,101,141,200,184, 24, 8, 64, 66,222,214, 96, 21,154,172, -208,208, 80,124,244,209, 71,170, 57,115,230, 60, 86, 42,149, 77,179,178,178,166,153, 99, 6,172,173,173,113,253,250,117,218,171, - 87,175,220, 85,171, 86, 25, 11,211,110,221,186, 69,219,183,111,159, 55,111,222, 60, 90,188, 88,206, 28,131,181,106,213, 42,218, -182,109,219,156,219,183,111, 83,153, 76, 6,169, 84,138, 85,171, 86, 25, 91,181,106,149,115,241,226, 69, 42,147,201,254,244,111, -167, 60, 83, 84,104,176,138,154, 30, 14,135, 3,134, 97, 44, 50, 88,169,169,169,115,195,194,194,250,180,107,215, 46, 37, 36, 36, -132, 90, 89, 89,193,218,218, 26, 83,167, 78, 85,213,173, 91, 55,245,209,163, 71,175,211, 44, 41, 42, 43,220,190, 66,161, 64, 72, - 72, 8,237,218,181,107,234,250,245,235, 53,133,105, 79,158, 60,161,157, 59,119, 78, 9, 9, 9,233,147,156,156, 60,175,188, 8, -214,203,151, 47, 95, 71,172, 52, 26, 13,210,211,211, 17, 23, 23,247,186,136, 80, 45,179,234, 52,160,111,183, 58,106,181, 90, 21, -250,236,121,108,173,154, 1, 78,106,181, 90, 21, 19, 27,251,140,210,217, 37,186,176,188,188,188,105,106,181,186,233,130, 5, 11, - 30,247,233,211, 71, 21, 30, 30,254, 39,115, 37, 22,139, 63, 76,131,197, 97, 92, 64,104,139,171,207,243,109,218,119,235, 39, 36, -201,119, 0,125, 62, 32,178, 5, 68,182,224,201,236,209,185,101, 93,238,182, 91,185, 46,160, 76, 51, 8, 68,238,229,106,242,169, - 51,192,180, 60,251, 76, 99,219,162,247, 88, 97,102,102, 38,184, 92,238,107, 51, 36,149,201,240, 81,207, 33,156, 95,239,104, 93, - 0,218, 28,132,235,110,110,118,133, 66,225,228,239,191,255, 94,144,149,149, 5, 14,135,243,127, 77,169, 20,163, 71,143, 22, 89, - 89, 89,205, 52,123,223, 15, 4, 8,192, 23, 53, 1, 67,191, 13, 79, 86,187, 29,121,164,246,253,110,209, 22, 73, 96,221, 70, 24, -213,198, 73,178,232, 68,106,192,195, 4,149, 23, 96,154, 0,163,174,129,165, 38,139, 16,210, 82,161, 80, 28,191,119,239,158,180, - 75,151, 46, 88,182,108,153, 76, 34,145,156, 36,132, 88,252,192, 87,230,155,190,158,183,250,183,148, 71, 63,117, 4,244,202, 87, -198,170,200,148,154,207, 96,214,150, 11, 57, 6, 3, 29, 96,174,166, 90,173, 30,250,197, 23, 95,100, 28, 60,120,240, 79,230, 74, - 44, 22, 35, 42, 42, 10, 11, 22, 44,200,204,204,204, 28,246, 79,154,171,175,191,254,122, 65,124,124,188,223,217,179,103,121,105, -105,105, 78,203, 55,111,206, 57,144,147,147,185,232,201,147,240,233, 53,107,250, 76,173, 93,123, 88,105, 93, 56,148,102,174,190, -250,234,171,221,241,241,241,245,206,157, 59,199, 79, 75, 75,115,255,234,171,175,176,116,233, 82,204,156, 57,115, 35,128, 81,133, -181,163,205, 69,167,211,133,103,101,101,117,237,216,177, 99,118, 86, 86, 22,106,215,174,141,110,221,186,193,197,197, 5,110,110, -110,232,209,163, 7,124,125,125,145,145,145,129, 1, 3, 6,100,166,165,165,117,164,148,150,217, 10, 61, 35, 35,227,197,174, 93, -187,158,127,253,245,215,245,227,227,227,107, 0,176,207,203,203,147,229,229,229,137,116, 58,157,196,214,214,214,182,110,221,186, - 14, 35, 71,142,148,223,191,127, 63, 32, 33, 33, 33, 15, 64, 52,107,171, 94,155,154, 82,189, 8,128,180, 2,163,163, 43,246,153, - 86,206, 60,115,215, 45,241,187, 25,203,149, 31,193, 42, 13, 61, 48,107,251,254,109, 26,161, 71,117, 88,251,213,129, 84, 44,134, - 68, 40,132,196,214, 30, 90,134,193,230,168,100,149,146,210,153, 21, 56,144,175,139, 7,197, 98, 49,242,243,243, 49,118,236, 88, - 77,223,190,125,179,163,162,162, 70,231,230,230,214,161,148, 62, 50,199, 12, 40,149, 74,204,153, 51, 71, 61,117,234,212,151,121, -121,121,245, 4, 2,129, 65,175,215,227,251,239,191,215,140, 25, 51, 38, 58, 59, 59,187,161, 64, 32,208, 91,250,178,229,243,249, -224,241,120,134,156,156,156,122, 83,166, 76,137, 88,176, 96,129, 90, 32, 16, 64, 32, 16, 24,114,115,115,107, 77,155, 54, 45,124, -218,180,105,106, 62,159,111, 81,100,172, 48, 34, 84,188,136,176,104,164,200, 92, 12, 6,195,133,212,212,212, 58,223,124,243,205, -131, 85,171, 86,169,228,114, 57, 68, 34,145, 46, 53, 53,181,246,151, 95,126,249,112,217,178,101, 42,185, 92,110, 81, 4, 75,175, -215,131, 97, 24,172, 89,179, 70,245,205, 55,223, 60, 76, 75, 75,171, 93,112, 65, 98,213,170, 85,170, 47,191,252,242, 65, 74, 74, - 74, 29,131,193,112,193,140,104,157, 41, 55, 55, 23, 60, 30, 15, 79,158, 60,209, 10, 4, 2,112, 56, 28,188,120,241,226,181,193, -178,179,179, 11,168, 83,171,166,255,111,187,247, 95,150, 8, 68,162,166,141, 26,212,120, 25, 29, 19, 79, 41,137, 46,231, 26,122, -164, 84, 42,235,196,197,197,141, 30, 62,124,120,246,119,223,125,167,201,207,207,127,227,133,195,231,243, 63,188,167, 16, 7, 82, - 16, 72,158,167,106, 21, 98,142,145,224,217,161, 87,230, 74,108, 3,136,109, 1,177, 45, 42, 85,114,199,157, 40,149, 2, 28, 8, - 97, 50, 56,153,113, 67,202, 64, 32,125,146, 2, 5, 95, 40, 33,201,201,201,175,141, 80,225,228, 85,189, 6,238,199,228,203, 65, -168, 8, 92, 88,210,149, 72, 87,123,123,123, 94, 82, 82,210,159, 52, 3, 2, 2,184, 6,131,161,163,217, 74,137, 38, 87,128,249, -250, 89,170,198,237,143,135, 42,223,241,139,126,149, 72, 76,217,192,189,213, 8,172,230,134,241,189,235, 10,103, 28, 78, 11,188, - 27,173,170, 6, 30, 29, 13, 38,223,209, 2, 99,208, 66,161, 80,156,188,123,247,174, 84,161, 80,224,229,203,151,104,212,168, 17, -126,249,229, 23,169, 84, 42, 61, 65, 8,105, 99,201,105,186,149, 76, 99,242,243, 76, 77, 39,239,143, 77,126,148,100,124,195, 92, -165, 41, 41,190,248,241, 72,118, 86,174,230,211,155,177,229,223, 71, 69,174,249, 7,217,217,217, 29,102,206,156,153,145,150,150, -246,198,181, 30, 19, 19, 83,104, 4,218, 80, 74, 67,254,169,203,211,218,218,122,208,162, 69,139,112,247,238, 93,116,233,210, 5, - 87,174, 92, 65,102,102, 38,246,156, 60,249,124,215,243,231,211, 11,235,100,149,212,133, 67,105, 88, 89, 89,125,183,104,209, 34, -220,187,119,239,181,102, 70, 70, 6, 22, 45, 90, 20, 15, 96,140,165,230,170,144,148,148,148, 59,225,225,225, 29,107,215,174,253, -116,205,154, 53,241,174,174,174,204,200,145, 35,241,197, 23, 95,192,209,209,209,180,114,229,202,216,150, 45, 91, 62,137,136,136, - 8, 82, 42,149,143,205, 56, 63, 52, 61, 61,253,250,166, 77,155,110,182,107,215, 78, 54,120,240, 96,167,195,135, 15,219,171, 84, - 42, 55,129, 64,224,172,211,233,132,161,161,161,188, 3, 7, 14,184, 62,125,250, 52, 74,173, 86,223,169,104,222,255,131,220, 45, -136, 70,157, 43,246,121,183,156,121,230,174, 91,218,247,242,150, 43,219,232,148, 55, 13,170,134, 57,163,107, 42, 84, 55, 6, 55, -161,201, 35, 91,208,148,126, 53,232,181,214,118,116,184, 55, 81, 14,173, 96, 55, 13, 38,147,137,166,164,164,208,148,148, 20, 58, -127,254,124,163, 68, 34, 81, 75,165,210,149,176,176,155, 6,185, 92,158,239,227,227,147,103,109,109,253,186,155, 6,133, 66,145, -239,231,231,151,103, 99, 99,243,186,155, 6,153, 76,150, 79, 41,165,114,185,220,172, 86,132, 86, 86, 86, 57,249,249,249, 84, 42, -149, 22,118,211, 32,176,182,182,222,228,227,227,147, 39,151,203, 11,187,105,224,219,218,218,110,240,245,245,205, 83, 40, 20,249, -102,182,208,139,139,143,143,167,241,241,241,180,114,229,202,137, 69,211, 99, 98, 98,104, 76, 76, 12,117,119,119,175, 80, 55, 13, -142,142,142, 75, 27, 54,108,152,233,232,232,152, 81, 36,109, 89,195,134, 13,179, 10,211,204,108,249,151,209,160, 65,131, 44, 71, - 71,199,215,221, 52, 56, 58, 58,102, 20,104, 91,212, 77,131, 68, 34, 25, 37, 22,139, 19,197, 98,113,162, 72, 36, 90, 80,165, 74, -149,212,125,251,246,209,149, 43, 87, 82,133, 66,241,170,155,134,128,238, 77,171, 55, 27, 54,221, 49,160,199,119,111,211, 77,131, - 84, 42, 93, 41,145, 72,212, 11, 23, 46, 52, 42,149, 74,106, 48, 24,104,193,195,235,195,106, 69,248,139,111,117,250,179,255,145, -136,121, 94,161,223,180,146,106, 30,207,175, 67,233,239,159, 80,122,226, 11, 74, 47, 76,166,119, 54,142,164,205,188, 68,166,235, - 19, 43, 63,163, 27,252,254, 48,171,107,133, 95,106, 85,167, 63,251,159,120, 62,215, 43,116,104, 75, 55,205,230,245, 43,233,237, -219,183,233,147, 39, 79,232,203,151, 47,233,137, 67,251,104,179,106,210, 87,154, 63,251, 31,177,164,187, 6, 0,205, 69, 34, 81, -254,138, 21, 43,232,173, 91,183, 94,107, 30, 57,114,132, 74,165, 82, 21, 96,102, 43,100,128,208,117, 1,159, 24,215,251, 93,155, -217, 94,158,159,113,108, 50,165,143,183, 81,250, 75, 32,165, 91, 27, 83,186,239, 99, 74,143, 14,163,183, 86,246,166,205,189, 4, - 6,186,193,239, 42,221, 18,208,222,220,124,242,249,252,220,131, 7, 15,210,196,196, 68,122,229,202, 21,122,239,222, 61, 26, 22, - 22, 70, 99, 99, 99,233,241,227,199, 41,159,207,215, 0,176,184,149, 98, 99,103,120, 6,249, 8,146, 30, 46,110, 78,233,225, 1, - 52,109,215, 32,218,181,166, 34,179, 73,101, 94,187,183,104,109, 85,215,222,222, 62,253,248,241,227, 52, 42, 42,138, 94,190,124, -153, 58, 57, 57,165, 3, 8,252,167,175,207,160,160,160,219,148,210,224, 46, 93,186, 4, 3, 56, 21, 20, 20, 20, 28, 25, 25, 25, -220,168, 81,163, 91, 40,163, 11,135,178, 52, 63,250,232, 35, 61,165,148,118,233,210,133, 2, 72, 12, 10, 10,162,145,145,145,180, - 81,163, 70,186,119,212,122,141, 11, 96, 24,159,207,223,108,103,103,119,209,214,214,246, 2,151,203,253, 5,192, 96, 75,158,119, - 37,104, 86, 2, 16,128, 87,253, 37, 53, 40,248,238, 6,182, 5,225,127,163, 85,164,185, 11,246,246, 66,243,207,170,145,203, 3, -171, 34,111, 64, 85,228,127,238, 77,174,125,234,133,118, 21, 25,109,187,208, 96, 29, 61,122,148, 86,174, 92, 89,169, 80, 40,174, - 1,240,169,200, 8,222,182,182,182,167,184, 92,110,159, 18,210,250, 21, 77,179,182,182, 14,177,177,177,201,177,178,178,122,105, - 78, 62,173,172,172,194,164, 82,169,210,202,202, 42,172, 88,151, 0, 61,236,237,237,143, 23, 75,235, 94, 60,173,180,125,119,113, -113,137, 75, 76, 76,164,105,105,105,212,195,195, 35,177,184,241, 74, 78, 78,126,195,120, 89, 58,122, 57,143,199,107,231,232,232, -120,160,188,180,178, 52,157,157,157,127,231,241,222,124,248,151,148, 86,145, 81,214, 1,248, 86,170, 84, 41,117,249,242,229, 84, - 46,151,167, 22,157,231,215,234,243,239,111, 63,207,207,253, 98,202,207,251, 28,107,244,172, 85,145,145,219, 1,248, 40, 20,138, -107,158,158,158,202,243,231,207,151,105,176,240,111, 29,181,126,127, 13, 1,221, 88,163, 57,221, 80,227,120,216,108,207,167,195, - 26,203,180,193,203,187, 80,122, 97, 50,189,245,243, 23,180,169,151,240,149, 17,218,232,127,146,254,234,219,138,174,174, 38, 52, - 75,115,179,119, 75,186,209,255,100,232, 44,207,167,159,212,119,212,237,222,182,145,190,120,241,130, 30, 57,176,139, 54,169, 90, - 96,174, 54,212, 56, 67,127,174,209,214, 44,205, 18, 76,214,150, 45, 91,232,139, 23, 47,232, 31,127,252, 97,150,185,122, 67, 19, - 32,244,231,128,158,198,245,126,215,166, 5,201,179,191,104, 44,214, 14,168, 43,212,245, 8, 20,232, 59, 84, 23, 24,155,121,242, - 76,117, 92, 57, 76, 13, 71,208, 14,126, 18, 45,221,224,119,149,110,168,209,209,220,124, 10,133,194, 88, 20,233, 19,167,248, 36, - 18,137,210, 74, 51, 88,229,157,247,198,206,240, 12,242, 21, 37,157,159,215,142,118,171,173,200, 48,199, 92,149,167, 9,160,174, -131,131, 67,250,214,173, 91,169,179,179,115,154, 57,230,234,239,184, 62,173,173,173,119,228,231,231, 7,159, 62,125, 58, 56, 40, - 40, 40,120,199,142, 29,193,215,174, 93, 11,150, 74,165, 59, 74,235,194,161, 6,208,177, 44, 77, 43, 43,171,224,188,188, 60,122, -250,244,105, 26, 20, 20, 68,119,236,216, 65,175, 93,187, 70,165, 82,105,240,123,117,111,178,154,236, 84, 17,131,245, 46, 79, 0, - 0, 58,120,240, 96,149, 84, 42, 77, 1,208,253,191,116,241, 57, 56, 56,220,112,118,118, 78,113,118,118, 78,113,116,116,188, 95, - 82,186,131,131,195,253, 15,249,198, 3,224, 43, 16, 8, 98,248,124,254,179,162,233,142, 1,221,155,122, 55, 31, 58,211, 57,176, -123,231,183,205, 39,128,238, 82,169, 52,165, 87,175, 94,202, 15,206, 96, 81, 10,186,186,154,176,208,100, 61,158,233, 25,214,173, -166, 84,255,203,132, 14,180,105,149, 98,230,106,171,167,200, 34,205, 2,147,245, 96,134, 71, 88, 91, 95,185,113,209,204,241,180, - 73, 85,201,155,230,202, 18,205, 98, 38, 75, 42,149,230,205,158, 61,219,236,200,213,159, 52, 55,251,121,208,159,253,119,190, 50, - 79,229, 77, 53, 54,211,181,126, 30,239,203,121,111,236, 12,207,143,124, 69, 33,230, 70,174,204,209, 4, 80,215,214,214,246,169, -185,145,171,191, 99,223, 1,116, 24, 61,122,116,112,100,100,100,240,203,151, 47,131,175, 93,187, 22,220,179,103,207, 96, 0, 29, - 74,234, 39, 75,223,171,151,182, 46,135, 51,190, 28,205,254,163, 71,143,166,145,145,145,244,229,203,151,244,218,181,107,180,103, -207,158, 20, 64,127,214,184,176, 6,235,125,157,254,145, 26,192, 10,133,226,254,193,131, 7, 79,169,213,234, 5,148, 82,237,127, -169, 16, 57, 45, 45,173,153, 37,233, 31,104, 69,198,103, 0, 60,255, 84,105, 63,228,240, 77, 0, 55,223,209, 54,142, 16, 66,206, -156, 58,117,106,134, 66,161,232,244,193, 29,196,177, 17, 58,172,241,190, 7,161,112,113,205, 74,210,169,223,119,161,100,209,233, - 27,158, 75,122, 57,197, 54,243,150, 69,129,207,252, 8,162,189,131, 97,209, 90, 11, 53,239, 64, 98, 88, 92,167,178,116,234,194, - 30, 32, 63,158,220,230,185,180,167,125,108,179,106,242, 88, 80,252, 8,145,234,166, 69,154,111,158,147,235,132,144,206,203,151, - 47,223,174, 82,169, 70, 80, 74, 47, 90,254,240,224, 36, 67,105,152, 5, 3,183, 38, 40,132,101,108, 76, 5, 14,158, 32,131,147, -242,190,156,178, 91,201, 52, 6, 64,224, 59,190,151, 30, 0,168,241,158,221,223,103, 8, 33,216,181,107,215, 32,127,127,255,106, -161,161,161, 47, 85, 42,213, 78, 74,233,153,162,117,149, 8, 33, 71,127,124,244, 72,185, 54, 52,244,186,142, 97,174,151,163,185, -167, 64,243, 59,127,127,255,192,208,208,208, 16,149, 74,181,156, 82,186,135,173,154,196,242,190,242,143, 24,172,220,220,220,250, -236,161,103,249, 27, 30,244, 90, 0,223, 23, 76, 31, 30, 69, 76, 86,125, 15,201,216,131,163, 37, 42, 80, 18, 15, 62,179,210, 98, -115, 85,130,201,106,228, 41,249,246,143, 81, 18, 21, 40,146, 65,241,211,219,152,171,162, 38, 11, 64,213, 10, 11,244, 14,213, 3, -136, 2, 33,209,152,131,210, 43, 71,207,193,235,191,217, 44,255,140,201, 2,112,166,156,101, 40,128, 11, 5,147, 57,154,123, 0, -176,134,138,133, 53, 88, 44, 44, 44,127,147,201, 58, 16,112, 23,233,220,137,224,160, 42, 96,140,129,210,152,140,177,209,186,183, -212,188,141,116,242, 13,184,240,133,208, 24,129,124, 93, 50, 70,191,133,230, 95,240, 6,199,171,186, 81, 37, 51,155,189, 52, 88, - 88, 88, 88,131,197,194,194,242, 54,188,138,234,196, 23, 76,239,175, 38, 11, 11, 11,203,127, 8, 2, 32,168,148, 63,136,231,204, - 22, 33, 36,168, 2,127, 64,207,177,154,172, 38,171,201,106,178,154,172, 38,171,249,223,210, 44, 79,219, 18,255,241, 94,243, 79, -180, 34,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,147,213,252,144, 39, 14, 88, 88, 88, 88, 88, 88, 88, 88, 88,222, 41,255, -104, 29, 44,169,131,175, 43,120,156,218,132,161,254, 0, 64, 57, 36, 12, 70,230,145, 42,253, 89,210,219,106, 43, 42,249,217, 81, - 8,247, 19,232,250,228, 37,132,103,190,173, 94, 45, 63,235, 94,206, 14,138, 65,201, 25, 57,219,159,132,229, 29,182,100, 93, 27, -155, 42,214, 98, 59,219,222, 90,189,161,166, 80, 32,136,213,103,231,254,146,153, 25,145,199, 94,126, 44, 44, 44, 44, 44, 44,255, - 49,131, 85, 37,176,229, 93,177, 88,226, 5, 0, 12,165, 96, 40,160,204,205, 14, 78,138,184,219, 17, 0, 28,189,234,159,230,139, -173,234, 51,244,213,124, 19, 3, 24,245,154,168,156,232, 91, 13,205,217,176,220,201,239,147,160, 14, 65,189,186,118,253,216,175, - 86,205, 90,222, 0,240,248,201,227,136, 99,199,142,135,203,157,252, 14,230,167,134,255,241, 54, 59, 70, 33,254,161, 65,131,186, - 45,238,221,187, 63, 15,192, 87,111,123,160,236,237,229, 99,207,252, 62,177,213, 71,189,150,201, 0, 88,100,176,196,118,182,189, -123,116,235, 84,119,210,184,209,156, 47, 38, 46,244,186,123,253,210, 18,133, 91,205,108,202, 24,206, 40, 83,250, 93, 45,109, 64, - 99, 22, 22, 22, 22, 22, 22,150, 15,204, 96,137,197, 18,175, 91,151,142,217,253,113, 45, 14, 0, 16, 84,207, 5,211,231,175,233, - 64, 8, 9, 7,128,238, 95,204,241,157, 55,109, 28,110,132,164,130, 82,138,186,213,237,209,185, 71, 31,179, 54, 42,113, 9,104, -216,175,111,223,129, 19, 39,126,215,253,197,139, 23,209,187,119,239,190, 10, 0, 45, 91,181,170,190,112,225,194,190,203,108,237, - 68, 18,151,128, 4,117,114,232,221,138,236,148,164,146,119,165, 0,159,218,131,246,254,186,134,211,166,227,167, 3, 36,149,188, - 23,169, 19, 34, 18,204, 89,215,209,209,241, 27, 62,159,111, 13, 0, 12,243,127,223, 83,173, 50,215, 5, 0,140, 38, 70, 97, 87, -201, 63,143, 43, 16,155, 68, 34, 65,104, 94,126,254,246,156,248,208,205,101,105,106, 13,134,192,111,199,124,198,121,240, 50, 3, - 94,129, 45,185, 43, 23,205, 0, 99, 50,216,142,159, 54,191,247,189,219,123, 1,204,190,204, 94,138, 44, 44, 44, 44, 44, 44,255, - 1,131, 5, 0,114, 9, 15,225,145,201, 0, 0, 27, 9, 48,118,212, 80,100,164,167,249,234,140, 12, 62, 31, 58, 24,247,195,146, - 16, 30,149, 6, 74, 41,124,221,165,102,111,148, 11,166,193,231,195, 63,111,125,250,204,153, 59,223,207,252,254, 55, 66, 94,245, -222,189,241,151, 77, 77,103,205,158, 53, 98,240,208,193,237, 15, 28, 56, 16,130,242, 70,170, 46,109,167,136, 98,205,210,197, 11, -132,241,233, 26,205, 55, 19,167, 50,223, 77,248,102, 37,128, 79,205, 89,151,207,231, 91,199,199,199,203, 57,156, 55,171,167,253, -184, 96,234,149,246,189,150, 61,143,142,205,126,112,250,200,145,134, 1, 1, 1,136, 79, 72,110,190,100,213,134, 58,174,222, 13, - 63,203,203, 85,247, 82,166,133,150,216,107,180,136,207, 15,153,187,228,231,186,140, 77,117,206,244, 17, 93, 16,232,237,134,132, -212,108,180,234,216,157, 23,124,247,110, 7, 0,172,193, 98, 97, 97, 97, 97, 97,249,128,224, 0, 0, 33,164,196, 14,251, 76, 38, -138,240,168, 36,132, 71, 37,225, 78, 88, 26,244,148,143,149, 75,230, 98,249,162,217,200, 84,115,240,199,141, 56, 60,139, 74,198, -179,168,100,164,103,229,255,105,253,226, 77, 45,151, 47,150,214, 91,185,210,122,105,135, 86,178, 54,118,182,182,182,207, 67,126, - 83,206,154,144, 82, 99,238,183,113, 2,190, 78, 20, 47,147,203,154,237,223,191, 47,192,217,209, 73, 38,151, 43, 38,203,220,235, -110,177,177,169, 99, 93,150,102,113,164,206, 53,186,119,255,184, 83, 59, 23, 23,103,102,244,202,224,176,154, 53,252, 13, 62,213, -125,154, 75,157,125,187,151,182, 78, 81, 77,134, 97,192,225,112,144,146,146,130,196,196, 68, 68, 70, 70,226,217,179,103,136,139, -139, 78, 97, 40,229,155,192,112, 92, 93,221,193,227, 9,225, 85,197, 19, 63,175, 92, 36,157, 63,103,122, 35,177, 76,120,152, 16, - 66, 74,210,212,100,102, 29, 56,113,234, 76,194,201,221, 63,155, 0, 32, 53, 43, 31, 23,238,190,192,253,208, 56,139, 78,214, 95, -209,116,149,213,100, 53, 89, 77, 86,147,213,100, 53,223, 7,205,210,188,200,191,218, 96,149, 70, 68, 92, 38,194, 35,147, 81,223, -191, 18,188,171,184,226,206,179, 44,236,188, 16,135, 45,167, 99,112,225, 97, 26, 24,158, 2,201,185,192,243,232, 20, 60,143, 73, - 47,171, 95,101, 0, 0, 87,196,239,247,237,183, 57, 19,107, 5,228, 54,185,116,114, 44, 42, 57, 62, 15,152, 50, 37,123, 44, 87, -196,239,103, 91, 89,177,123,234,196,241,131, 20, 82,169, 80,167,213,161, 90, 85, 79,241,184,175,199,126, 70,108, 69,187,205,221, - 25, 43,247, 0, 91,145, 68,178,121,254,156,201,162,159,254,120, 30,171,212, 65,121,240,102,202,203,239,166,206,202,228,241,197, - 63, 91,185, 7,216,154,171,101, 48, 24,160,213,106,161,211,233,160,215,235,145, 16,247,180,251,249, 63, 38,117,172, 90,217,174, -163, 72, 44, 6, 5,144,171, 54, 34, 50, 73,133,182, 31,181,231,214,175, 87, 47, 80,238, 90, 99,120, 73, 90,217,217,209, 57, 12, -229, 42,142, 29,218,197,221,119,246, 1,126, 59,118, 23,135, 47, 62,192,157,203, 39,141,148, 49,188, 30, 78, 66,225,230,227,171, -112,171, 29,163,168, 84, 39,229,245,228, 94,235, 30,251, 63,128,133,133,133,133,133,229,223, 69,169, 69,132, 26,141, 58,234,211, -126,131,225,234,228, 34,239,209,102,152, 32, 56, 34, 27,105, 73, 49,120,241,236, 9, 84, 26, 3, 4,182, 85, 1,177, 11,170,120, -121,226, 81,248, 97,253,234,165,199,243, 25,163, 54,170, 52,189, 30, 61,220,220, 93, 29,101,156,165, 75, 60,110, 61, 11,207,170, -191,107,230, 86, 12, 28, 40,119, 88,186,196,227, 86,244, 75, 25, 71, 42,166,205, 62, 27, 58,128,112, 8,197,148, 41, 19,209,163, -107, 39,124,254,217, 16,178,125,251,182, 38,230,238, 12, 3,254,218,105, 51,230, 10, 83,178,141,186, 59,207,242,181, 82,153, 68, -114,253,121,190, 50,208,203, 67,210,165,215,176,196,227,251, 55,255, 4, 96,168, 57, 90,133,198,202, 96, 48, 64,175,215, 3,128, - 9, 0, 56,156, 87,159, 25,121, 58,164,102,107,145,146,173,133,209,196,160, 87,191,161,146,187,247, 30, 14, 5, 80, 74,125, 44, -134, 49, 24, 13, 56,120,246, 62, 18,238, 30, 96, 8,135,155, 83, 88,201,189,208, 92,185,184,120, 92,233,218,107,136,163, 80,252, -170,184, 53, 79,169,197,246, 13, 75,216,171,148,133,133,133,133,133,229, 67, 49, 88,209, 33, 87, 27, 2,128, 95,195,142, 25,114, - 49,207,142,199, 33, 72,137,143,192,246,101,223,128, 97, 40,186,140, 88, 10,133,151, 11, 36, 2, 46,180,249, 25,249, 25, 47, 46, -217,151,181, 33, 66, 12,237,215,109, 76,240,250,114, 76, 53,171, 93,187,242,249, 0,176,107, 87, 62,127,204,232,202, 86,235, 55, - 70,121, 53,110, 81, 31,212,100, 66,215, 30,159,162, 95,255,126,136, 78, 86,225,247, 43,177, 80,170,117,102,141,127, 38,117,172, - 81,199,201,173, 82,167,111,135,117,146,241,184,132,248,120, 90,115,227,210, 12, 70, 46,151,111, 58,122, 55, 39,177, 87,175,254, - 14, 23, 78,236,107, 39,117,172, 81, 71,149,246,244, 97,121,122, 90,173, 22, 38,147, 9, 90,173, 22, 6,131, 1,118, 14, 85, 79, -180,255,116, 89,124, 82,114,222,241,228, 44, 77, 99,165,193,136,148,108, 45, 82,179,181,200, 86,234,225,162,176,133,209,160,171, - 85,154, 30,165,244,183,158,159, 14, 30, 2,128, 67, 56,198,173,121,137, 79,159, 21,206, 43, 52, 87,157,122, 12,116,188, 18, 28, -129, 23,247, 78,102, 81,198,104,120,117,224, 24,118,168, 18, 22, 22, 22, 22, 22,150,127, 25,156,255, 27, 32, 66, 75, 43,255, 76, - 72,201,132,189,156, 7, 71, 55, 47, 12,250,102, 57, 0,192,100, 50,128, 82,192,104, 50,175,135, 1, 74,249,103,191, 26,227, 21, - 85,197,139,228, 12, 26, 40, 85, 3,192,160,129, 82,117, 21, 47,146,243,213, 24,175,168, 60,141, 92,111, 52,153,112, 61, 36, 21, - 75,247, 62,197,172,109,143,113,234,158,249,221, 97,113,133,130, 49, 75, 22, 47, 18,240,184,132,132,196,228,231,199,103, 24,243, -185,124,190, 94, 42, 21, 82, 29,229,105,163,211,105,198, 71, 61, 63,123,193,225,146,225,101,233, 20,182, 28, 44, 44, 34, 44,140, - 96, 81, 74, 41, 1, 24,134,152, 76,241,233, 26,196,165,169, 17,151,250,255, 41, 37, 75, 91,106, 9,169,194,205,199,215,218, 74, -126,202,214,198,234, 51, 27,107,171,161, 50,137,237,105,133,155,143,111,113,115,117, 43, 36, 17, 17, 15,206,165,152,244,170,190, -121, 9, 15,157,243, 18, 30, 58,231,197, 63,110,192, 94,166, 44, 44, 44, 44, 44,255, 5,202,242, 34,255, 74,131, 69, 41, 37,133, -211,159,141, 17,240, 60, 38, 29, 66, 30, 3,247, 42,222,160, 69,108, 4, 5, 96, 52,153,119, 28, 14, 31, 78,140,175, 86, 93,201, - 76,158, 28,219,180,102, 45,251, 71, 99, 70, 87, 14,171, 89,203,254,209,228,201,177, 77,171, 85, 87, 50, 6, 35,223, 68, 11,250, -219, 42,236, 91,171,160, 59,126,115,119,165, 81,157,128,170,220,185,187,158,199,126,185,254, 89,184, 64, 32, 48,184, 59, 72,137, -167,179,148,235,225, 40, 17,106, 13, 28,173,111, 96, 61, 29, 56,164,158, 57, 6, 75,167,211,189, 49,101,164, 69,116, 63,243,251, -196, 30,149,156,109,135, 37,164,169, 17,155,170, 66, 92,154, 10,177,105, 42,168,180, 70, 60,126,250, 18,224, 10,158,148,164,105, -165,176, 59,189,123,231,111, 30,117,106, 84,115, 10,240,173,226,180,121,219,111, 30, 98,177,205,105,133,155,143,175,135,151, 95, -240,237,115,251, 28,111,133, 36, 34, 38,252, 94,178, 81,155,187, 91,153, 18,118,158,189,205, 88, 88, 88, 88, 88,254, 75,148,229, - 69,254,141,152,213,147,187,167,187, 51,110, 63,137, 66, 45,255,170,176,182, 82, 32, 44, 34, 30, 92, 14, 31, 28, 2, 24,140,230, -155, 32,170, 55,236, 93,177,194, 26, 49, 81, 50,206,250,159,163,188,190, 26,227, 21,181, 98,133,245, 77,170, 55,236, 5, 48,152, -210, 87, 99, 35, 22,118,108,106,178,160,251, 77,202, 24, 42, 59,219, 73,185,247, 94, 42, 51, 56, 28,174,214,222, 90,204,216, 91, -139, 56,246, 10, 33, 95,192,231, 50, 70,202,209,187, 59,121,105, 40,195,212, 49, 71,175,104, 17,161,201,100, 2, 33, 28, 83,129, - 1,147,197,101,168,145,163,225, 34, 37, 91,139,172, 60, 61,124, 42,201,112,238,194, 1,149,201,160,222, 85,146, 22,151, 47,176, -246,246,114,199,244, 31, 86, 64,173, 53,225,121, 66, 62, 4, 34,145,139,179, 75,224,195,193, 95, 78, 21,141,251, 37, 2,195,219, -217, 99,194,213,136, 4, 85,138,120, 42,123,155,177,176,176,176,176,176,252, 7, 12,150, 92, 42, 6,229,138,113, 53, 56, 2,126, - 1,181,177,237,200, 29, 84,175,213, 4, 73,121, 70, 80,112,202,109, 61, 88,200,119, 83, 85,247, 1,220,239,209,195,205,253,147, - 79, 42,181,167,148,127,118,253,134,156,120, 0,248,121, 79,107, 80, 0, 12, 67, 65, 41, 64,153, 87, 70,203,108, 8, 47, 38, 42, - 41,183,138,151,139, 12,161,241,122,173, 76, 36,224,216,202,132, 92, 71,107,161, 64,192,227,193, 68,137, 54, 41, 41, 66, 75,128, -104,115,228, 10,139, 6, 11, 63,165,114,215, 19, 31,245, 92,154, 22, 29,155,115,207, 39, 83, 85, 39, 71, 47, 4,165,128, 79, 37, - 25,158,220, 58,110, 74, 73,120,241, 92,157, 18,190,161, 36, 45,134, 1, 87,111,100,240,240,101, 14,178,149, 6,100,231,235,209, -188,109, 55, 65,243,160,238,184,250, 36, 29,140,209,128, 37,155,142,231,153,168,161, 31,165,161, 6,246,178,100, 97, 97, 97, 97, - 97,249,119, 99,214, 96,207, 38,134,194,193,222, 14, 98,153, 21,162, 82,244,200, 35, 78,200, 82, 81,152, 76,175, 34, 88,165, 5, -154, 8, 33, 65, 37,165, 31, 62,156, 24,127,232, 80,218,150,195,135, 19,139, 84,224,254,127,228,234,245, 39, 67,205,214, 36,212, -116,238,200,201, 75, 57,221, 27, 59,218,114,184, 92,181,128,207,209,242, 4, 92,189,128,199, 49, 8,120, 28,157,179, 21,159,123, -233,232, 30, 33, 37,184, 84,158,166, 70,163, 65, 80, 80, 16,186,116,233,130, 30, 61,122,160, 79,159, 62,240,245,173,225,196,225, - 18, 29, 37, 12,227, 40,204,131,183, 35, 1, 79, 19,135,243,123,126, 84, 61,185,126,232,161, 73,171,233, 70,139,148,105,190,161, - 73, 41,147,153,163,133, 70,111, 66, 86,190, 30, 89, 74, 61,140,142, 77,113,232, 70, 34,212, 58, 19, 98,130, 15,168,211,146,227, -191,209,164, 60,143, 42,211, 67,150,178,239,111, 3,171,201,106,178,154,172, 38,171,201,106,190, 15,154, 31, 26,102, 68,176, 40, -170,185,202, 80,189,146, 12, 26,189, 19, 52, 58, 19,148, 26, 19,114, 85,122,228,170, 12,136, 74, 86,225,201,145,183,207,200,171, -168, 21, 64, 10,190,131,188, 50,118,230,198,176,132,122,221, 15,203,151, 44,236,187,167, 94, 93,221,184,143, 93, 43, 63,138,210, - 37, 18,194, 81,115,184, 60,131,157,130,199, 15, 11,123,148,118,243,202,137, 86, 98,163,105, 72, 89, 58, 70,163, 49,167, 82,165, - 74, 0,222, 28, 42,167,134,183,164,199,245,227, 83,170,182,238,190,196,241,167, 5, 19, 85, 28,174,128, 33, 60,193, 19,147, 65, -189, 91,157, 18,254, 51, 45,163,194, 24, 71, 32,126,122,251, 65,104, 19, 27,187,202,120,145,160,132, 82, 99,132,222,200,192, 86, - 46, 64,252,227,211,250,168,176,123,251,242, 18, 30,110, 99, 47, 71, 22, 22, 22, 22, 22,150,255,136,193,210,104, 52, 81, 45,130, -186,129, 97, 40, 76, 20, 96, 76, 5,145, 38,230,255,209, 38,147, 65, 19,245,182, 25, 97, 24,211,157,181,191,108,233, 82,175, 81, -107,110,128,135, 28,185, 25,201,184,117,253,162, 17, 12,189,105,206,250,233,233,207,242,165, 46, 62,159,246,237,253,201,254,161, -159,143,206,110,213,182,173,204,201,201, 69, 27,159, 16,175,250,117,199, 78,195,233, 19,135, 91, 49, 48,246, 79, 79,127,158, 95, -150, 78,118,118,246,170,146,210, 63,106, 81,185, 57,128,170, 92, 30,209,169, 82,159,201, 44,217,183,244,132,184, 94, 11,127,152, - 19, 61,112,196,120, 97,181, 74,222, 72,205,225, 34, 42, 62, 25, 97, 87, 14,107, 19,158,221,253, 35, 55,254,254,112,246, 82,100, - 97, 97, 97, 97, 97,249, 15, 25,172,216,208, 87,253, 97,253,213,228, 37,167, 14,222,182,237,183,249,191,237,216,211, 92,163,211, - 85,162, 16,196,153,140,186,203,249, 38,204, 50, 87, 67,149,252,252,158,131,131,111,205, 95, 55,173,157,241,235,150,245,173,193, -152,252, 9, 16, 77, 9, 46,137, 13,166,161,229,153,171,178, 13, 92,222,198,246,159, 46, 83,103,100,228,255,102,233,186,170,244, -176,100,185,115,181,202, 27, 87,254,176,148,195,225,118, 48,153, 24, 62, 99, 50,188, 48,233, 53, 63,170,211,194,143, 80,203,154, - 75,178,176,176,176,176,176,176,252,219, 13,214,223, 69,102,102, 68, 30,128,113,111,171,147,158,254, 44, 31,192, 59,111,137,247, -248, 89,206,239, 0,126,175,232,250,249, 41, 47,211, 96,102, 47,242, 44, 44, 44, 44, 44, 44, 44,255,110, 56,236, 33, 96, 97, 97, - 97, 97, 97, 97, 97,121,183, 16, 0, 37,182, 4,176,100,164,236,138,180, 38, 40, 79,159,213,100, 53, 89, 77, 86,147,213,100, 53, - 89,205, 15, 79,179, 60,109, 75,252,199,123, 13, 45,232, 49,253,175,152, 0, 4,177,154,172, 38,171,201,106,178,154,172, 38,171, -201,106,254,215, 38,182,136,144,133,133,133,133,229, 63,135,131,131,175,220,193,193, 87,110,238,242, 50,199, 0,103,153, 99,128, - 51,123,228, 88,204,133, 53, 88,111, 9, 33,132,248,121,201,199,118,104, 93,245,144,127, 53,105,143,127, 74, 83,238, 92,205, 81, -225,209,240,186,149,123,205,206,127,193, 62,138, 2, 3, 3,155, 6, 6, 6, 54, 37,132,136,222,133,166,204,217,111, 64,101,159, -166, 87,156,189,235, 93,148,187,248,246,126,215,121, 86,184,249,216, 43, 60, 26,252,174,168, 84, 39, 75,225, 86, 39, 87, 81,185, -193,101, 43,199,128,106,229,173,231,209, 99,145,255,188, 61, 33,187, 61,122, 44,242, 47,105,190, 93,231, 53,138, 57,123, 95, 44, -112,232,190, 68,206, 94,253, 21,195,163,197, 64, 27,183, 54, 19,237, 45, 93,207,221,175,105,136, 87,205, 86,169,149,124,155, 60, - 49,119,157,202,254,205,238, 87, 9,108,145, 82,217,175,217, 61,246,200,155,135,196,169, 90, 83,137,157,231,113,177,157,231, 9, -177,125,181,182,111,171,231,230,230, 38,169, 81,163, 70,167,166, 77,155,142, 10, 10, 10,250,182, 94,189,122, 35,171, 84,169,210, -129, 16,242,143, 53,178,146, 57,251, 77,211,242, 73,186,150, 79,210,101,206,126,211,202,127,190,250,207, 39, 28, 83, 34,225,152, - 18,229,206,254,243,223,151,115, 37,118,241,243,148, 57,251,173,176,114, 13,188, 35,117,246,237,102,233,250,118,118,118, 29,156, -156,156,122, 22, 78,118,118,118, 29,216, 59,224,221, 97,241, 5, 78, 72,125,190,220,213,240,173, 80, 44, 25,198,225,192, 42,245, -197,173, 74,239,243, 14, 58, 86,107,124,143,203,225,186, 23, 77, 51, 49,166,248,180,151,183, 27,188, 11,125,191, 42,146,225, 51, - 38, 15,158, 48,160,111,144,103, 80,215,111, 8,128,195, 37,190,240, 61, 26,222, 32,132, 83,149, 67, 0, 14,135,128, 67, 0,128, - 38,166,191,188, 93,175,162,154,133, 88, 59,121, 87, 21,202, 29,175,180,232,241,149, 75,240,185,157,219,100,142, 1,237,149,105, -161,143,222,129,177,114,244,246,246,110,232,235,235,107, 63,118,236, 88, 1, 0,252,244,211, 79,213,171, 87,175,158, 17, 17, 17, -113,151, 82,154, 86,161,135,155,147,255,224, 85,203,230,253,214,185,115, 23, 36,166, 43,177,100,197,186, 54,114, 23,223, 62,249, -201,207, 14,188,139,115, 98,107, 91,213,138,103,101,251,248,155,201,243,156, 58,181,105,200,205,215, 24,113,234,202,131,150, 59, -215,205,187, 99,229, 24,208, 40, 55, 45,244,101,105,235, 50,170,156,153,206,114,218,137, 81,229, 0,192,128,226,243, 43,201, 13, - 65,142, 18, 83, 39, 87, 17,239, 1,128,131,229,230,197,171,197,105,190, 72,228,201,225,112, 80,120,238,185,228,213,249, 55,232, -213, 49,241, 79,175,116,124, 31,238, 19, 43,207,198,201,224,242,236, 57,228,255,249, 35, 5,215, 41,161, 52, 55,233,217, 85,251, -119,112, 61, 89,215,172,110, 19,248,113,243, 22,191, 94,142,204,148,121,180, 30,127,156, 80,206,250,152, 43,203, 31,154,245, 50, - 17,139,109,143, 30, 61,234,216,169, 83, 39,107,231,154, 61, 47,155,245,199, 67, 40, 14, 56,118,236,136,160, 83,167,142, 22, 92, -159,126,237,193,225,236, 32, 0,159, 97,232, 79, 92,134,238,203,207,120, 22, 97,105,119, 42, 82,103,255,225, 28, 80,179,159, 51, - 12,200, 61, 85, 74,216,150, 10, 30, 91,174,196,201,111,152, 68, 44,158,232,227, 87,195, 55, 42, 50,226, 89,110,110,206, 10,117, -234,179, 45,148, 82,198, 34, 49,131,113,210,185,171,193,157,121,124, 62,233,244, 81, 99, 46,128,139,111,115,222,157,157,157,123, -174, 89,179,166, 90,211,166, 77, 1, 0, 70,163,209,106,255,254,253, 46, 63,252,240,131,204,156,123,168,148,253,173,228,232,232, -232, 33, 20, 10, 43, 1,128, 78,167, 75, 72, 75, 75,139,165,148, 38,148,123, 77,184,120, 59, 16,240,230, 93,189,114,133, 7, 0, - 45, 91,182,154,239,217,114,172, 45, 87, 32, 87,151,120, 56,116,121, 50, 0,227,111,221,190, 73, 0,160, 73,227,166, 83,101,142, - 1,107,149,105,161, 41,255,152, 9,118,246,111,204, 1, 38, 52,111,213,190, 87,191,254,131, 57,129, 62, 30,232,208,190,221, 20, - 0, 71, 45, 50, 0, 60,158,228,206,157, 59,222, 28, 14,135,107, 52, 26, 53, 77,154, 52,137,125,155,124, 85,242,107,118,131,128, - 83, 89,111,212,109, 74,123,121,111,126,241,107,143, 16,194,181,174, 92,111, 6,184,188, 17, 12,195,196,229,198,220,109,198, 26, -172, 34, 7,199,202,189,238,181,190,253, 6,213,252, 97,242, 72,241,234, 29,103, 97, 87,181, 81,104,102,228,157,128,247,117, 7, -185, 28,174,251,153, 51,167,157, 36, 34, 46, 0, 32, 95,109, 66,103, 51, 30,182, 54, 94,141, 47,113, 8,241, 43, 28,210,219,100, -212,139,121,124,161,134, 0, 0,121,213, 58,192,193,173,202, 5, 87, 87, 59,233,128,190, 65,158, 59,246,156,141,143,141,207, 40, -245,161,207,225,112,221, 15, 31, 57,234, 84,201, 94, 12, 30,151, 32, 95,109, 68,167, 46,221, 76, 37, 45,235,234,106,247,241,128, -190, 65,158,187,246,158,139, 77, 74,202, 60, 94,230, 67,220,213,183,190,204,218,249, 84,175, 81, 63,216,107, 56,118,152,181, 96, -149,195,149,147,187, 46,183,254,120, 48, 19, 19, 19,167,161,132,132,102,101, 38,125,155,159,244, 34,220,220,115, 44,151,203,171, -201,229,242, 58,157, 59,119, 22, 79,156, 56,145,223,166, 77,155,215,243, 71,142, 28, 41,184,116,233,146,235,178,101,203,186,184, -185,185,105,242,243,243, 31,230,231,231,191,164,148,154,204, 61, 39, 46, 46,142, 95,127,250, 73, 55,180,235,245, 21, 76, 12,193, -200, 47,199,227,244,201,131,163, 1,188, 19,131,101,144, 90,253, 48, 98,212, 68,199, 38, 13,235,114,231,237, 10,135, 68,200, 67, -199, 6,126,228,179,177, 51,109,182,172,158,183, 25, 64,235,146, 34, 87,140, 42,103,102, 77, 7, 93,255,238, 77,171,226,200,110, - 93,127,247,160, 41,224, 72,173,231,199, 30,158, 22, 6, 0,222,157,199, 41,108, 37,146, 53,110, 54, 92, 39,145, 41,109,141,119, -231,113,231, 34, 78,174,206, 43, 43, 47,124,145,200,115,207,238, 93, 62,182,114, 1,184, 92, 2, 30,135, 3, 46,151, 64,171, 55, -161,119,159,254,239, 42,194,200,149, 56,249,116,225, 0,159,189,122, 81, 99,171, 58,245,249, 9, 75,206, 9,225, 10,236,143, 29, -249,131,231,100, 45, 2,151, 75,192,229, 0, 92, 14, 65,116,138, 26,195,135,127,102,253,182, 70,189,115,115,167,134,151,214,182, -238,216,164,166, 93,237,189, 55,137,117,147,206,253,236,211, 53,210, 97,123, 14, 95,236,239,209,106,194,109, 74,153,165,113, 87, - 87,158, 41, 75, 71,171,213,166,116,236,212,217,138,240,100,210,115,135,182,181,226,113, 8, 12, 38, 10,163,137,194, 84, 48,118, -233,171,251,149,128,195, 33,160, 12,197,136, 17,195,209,177, 83,103, 21, 99,100,226,205,206, 48,135,179,227,212,185,235,142, 90, - 3,131,101,107,182,204, 83,230,164,205,139, 12,179,143,150, 58,251,142, 87,165, 60, 51,123,220, 10, 14,104,131,184,151, 79, 70, -237, 58,118, 11, 53, 3,106,192,196,188,202,167,159,187, 12,187,142,223,130,191,159,255,171,124, 51, 20,190,149,229,104,216,160, - 33, 0,108,177,252,248,182,225,201,156,253,119,119,239, 61,180,119,175,222, 3, 96,103,107, 5,157, 94,235,123,254,244,137, 95, -126, 94,179,164, 57, 33,100,152, 69,230,144,154, 94,191, 23, 40,195,188,117,148,201,205,205,205,177, 97,195,255,119,167,104, 52, - 26,225,229,229,133,132,132, 4,191, 10, 92, 75, 82, 87, 87,215,143, 55,110,220,232,212,165, 75, 23,190,139,139, 11, 0, 32, 57, - 57,185,210,169, 83,167,234,185,185,185,165, 38, 37, 37, 29,167,148,170, 74,211, 48, 25, 56, 2, 14, 15, 92,177, 88,250,106, 31, - 65, 56, 19,191, 30, 82,219,217,213, 77, 91,210,242,105,105,201,194,201, 95, 93, 36, 60,158,160, 96,121,112, 40,101, 72, 25, 81, -161, 32, 62,159, 47, 41,105,158,158,107,213,132,242,173,191,224,112, 57,175, 46, 86,163, 33, 45, 51, 38,184,134, 5,145,183, 64, -190, 80,240,243,192,161,163,154,245,238,213, 3,174,142,214, 56,119,237, 17, 70,127, 61,193, 96,212, 27, 86, 84,232, 29,201,229, -242, 82, 83, 83,163,109,109,109, 93,222,254,125, 75,170,158, 61,125,210,233,220,249, 11, 83,151,175, 92, 61,198,205,183,165,129, -161,244,245, 56,195, 30, 53,219,241,219,119,237,107,229,228,221, 68,188,122,246, 23,124, 54,130, 85,212,249,187, 5,124,219,167, -111,223,154, 95,141, 30, 41,254,118,205, 53,156,223,253, 83,250,187, 50, 87, 10, 39,191,166,132,203, 27, 69,184, 92, 25,225, 16, - 33, 99, 98,226,140, 58,221,124, 85,250,179,164,183,213, 54, 49,192,239,215, 83, 45,187,145, 41,170,239,216,119,200,201,217, 70, - 4,141,206,136,126, 3, 6, 99,199,142,223, 20, 14, 86, 66,104,116, 70, 44, 93,190, 60, 47, 63,250,184, 83,116, 92, 86, 66, 80, -183, 9,103, 94, 70,165, 62,137, 77,210,236, 43,253,193,192,129,147,181, 8, 11,246, 60,131,149,132, 15, 91,133, 0, 28, 14, 41, -250,224, 32,190, 85,100, 95, 87,174,236,216, 54, 49, 41, 43,167,136,230,206, 82,111, 54,215, 90, 29,173,109,221,118,127, 50,106, -129,205,243, 84, 30, 40,244,136,176, 18,163,239,176,113, 86,213, 92, 36,144,137,185, 54,145, 49, 9,174, 19, 39, 77,186,102,237, -228,221, 40, 39, 53, 34,178,188,253,174, 82,165, 74,175,174, 93,187, 74,191,251,238, 59,126,229,202,149,177,117,215,126,207,150, - 29,251,116, 75, 76, 74,169, 76, 41,133,179,147, 83,220,136,207,250, 28, 61,113,226, 68, 76, 92, 92, 28,127,201,146, 37,141,255, -248,227,143, 0, 75,254,137,154, 40,133, 70,107,130,169,224,197,152,150,163,181,244, 33, 75, 42, 85,170, 36, 74, 72, 72,208, 22, -190, 56, 8, 33,175, 15,166,188, 82,221,142, 31,181,110,204,219,120, 50, 10,249, 26, 19,100, 98, 62,162, 82, 84,104, 80,183, 22, -217,100, 50,214, 41, 73,115,120,223,143,103, 58,203,105,167,238, 77,171,194,201, 86,138, 95,215, 46,192,145,155,145,157, 82,242, - 9, 28,186, 47, 25,229, 42,226,181,119,148, 10,214,180,105,224,237,210,174,190, 39,238, 54,240,118,185, 18, 28,254,172, 86,223, - 21, 99, 19,242,249,231, 50, 79,142,205, 43,249,129,195,129,157, 66,136,205,167,162, 33, 21,243, 32, 19,243, 32, 19,189,250, 44, -122,254, 43,244, 47,214, 45,160, 50,151, 49, 13,183,114, 11, 24,222,191,111, 31,183,129,253,251, 80,112, 57,216,255,251,209, 30, - 59,119,238, 72,146,187,248,109, 54,113,184, 91,212,137,161,113,229, 30, 83, 14,224,100, 45,196,164,205, 79, 96, 37,225, 67, 33, -229,195, 74,202, 71,187,218,142,224, 86,176, 34, 1, 33,196,118,116,143,106, 93, 30,253, 22,212,214,207, 67,238,243, 48, 34, 39, -116,248,252,123, 43, 47,101,183,253,118,237, 79, 1,246,249,217, 58,222,172,137, 35,120,241,137,137,109,247, 31,189,220,206,173, -209,240,112,163, 94, 57, 61,245,225,190, 18, 35,182,113, 97, 55,234,185, 55,237, 35,214,231, 27, 30, 63, 12,143,247,206,210,138, - 16, 18,157, 11,153,152, 7,121,225,177, 21,243, 32, 19,243, 33, 23,243,144, 24, 31,133, 76, 37,247, 90,130, 61,167, 45,189,116, -195,104, 73,222, 53,122, 19, 30, 68,230,163,138, 95, 93,184,186,186, 65,215,101, 80,149,219, 23,126, 63, 44,115,173,177, 72,153, -244,116,186,185, 58,187,142,221,194,212,241,163,130, 9,112,191,224,229, 92,111,214,226,117,245,231, 77,253,234,141,180,137,115, - 87,215,175,168,185,150, 58,251,237,108,253,241,224,222,181,154,116,192,203,168, 40,156, 60,122, 15, 31,181,239,140, 46,221,122, - 65,167,211, 14,217,178,113,245, 93, 0,235,254,244,204,117,173,209,162, 86,205, 26, 59, 43,185,185, 85,102,152, 87,163,114, 80, - 10,180,104,221, 14,147,191, 29, 1,134, 82,212,169,215,168, 93,151,254, 99, 41, 45, 24,189, 35, 61, 35, 93, 25, 30, 22, 26,164, - 78, 9,187,109,246,177,212,104, 12,105,105,105,120,240,224, 1,158, 61,123,134,144,144, 16,100,100,100,192,218,218, 58,223,194, -125,181,170, 93,187,246,192, 11, 23, 46,136,109,109,109, 95,167,235,116, 58, 40, 20, 10, 12, 28, 56,144,223,161, 67,135, 74, 31, -127,252,241, 80, 66,200, 46, 74,105,110, 73, 58,234,140,231,137, 86, 46,254, 27, 90,183,105, 61, 6, 0, 36, 86,174,145,107,182, - 30, 13, 41,243, 94,179,118,243,108,214,172,185, 55, 40, 5, 1, 93,165, 76, 15, 79, 46, 35, 42, 36,187,117,235, 86, 53, 46,151, -251,250,253,202, 48, 12,214,255,186,215,255,236,213,199,189, 22, 47, 93, 38,182,146,137,144,150,163,195, 23,131, 62, 49,251, 29, - 44,117,241,239,210,188,121,235,195,243,230,126,207,147,203,100, 56,115,251, 37,198,126, 59, 73,147, 20,253,100, 25,101,248,235, -148,169,225,169,111,249,170,124, 39, 29, 94,251,184,203,161,232,222, 81, 60,122, 72,119,177,206, 96, 66,182,210, 0,173,222, 4, - 19, 67,145,163, 52, 32, 52, 54, 15, 14, 86,194,138, 72, 55, 4,224, 8, 32, 13,192,221, 98,191, 81,240, 29, 37,252, 78,127, 21, - 22,129, 61, 0, 29,128,162, 27, 47,252, 93, 90,122,225,250,161, 0,106, 20,104,154, 0,220, 1,144, 85,174,193, 34,132, 80, 74, - 41, 41,114, 17,191,241,187, 40, 2,161,188,239,212,177,131,197, 63,236, 10,198,249,221, 11,211,211, 34,110, 22,238, 0,156,188, - 27,223, 79,141,120,179,184,203,156,166,150, 18,183,128,202, 60,194, 93,209,186, 77,171, 14, 99,190,252, 18,126,213,220, 5, 38, -147,137, 62,121, 22,105,216,182,229,215, 97,214,149,107,173,204,141,127, 50,179, 48,212,104,105,243, 77, 19, 99,138, 47, 30,177, - 50, 49,166,248,242,242, 73, 8, 96, 35, 19, 96,195,137, 72, 80, 10, 16, 80, 88, 73,249,216,115, 41, 30,145,193, 7,115,187,214, -201, 85, 14, 92, 60,167, 93,219, 46,227, 46,132, 70,104,246,165,166,106, 78, 83, 74,147, 75,211,228, 16,128,199, 37,176,146,242, - 97, 45, 21,192, 70, 38, 0, 41,242,226, 42, 90, 44,216,166,203,184,179, 23,174,199, 76, 7,144, 70, 41,213,150,164, 41,113,241, -105,104,101,227,190,175,215,152, 37,138,199,241, 70,240,184, 64, 85, 23, 9,236, 20, 2,232,140, 4,209,105,250,130, 59,198, 6, - 99, 39,206,181,155, 58, 97,204, 9, 66, 2,106, 82, 26,170, 47,107,223, 85, 42,149,112,240,224,193,124,131,193,160, 31,248,197, - 55, 29,146,147,211,122,172, 95,245,163,200,201,201, 25, 42,141, 17,193, 33, 47,106,204,155, 55,183,234,209, 83,151, 14,205,153, - 52,250,112,167, 78,157,172,247,238,221,203, 88,114,222,211, 82,210,215,254,186,243,192,111, 63, 45, 91,136,240,152, 44,108,217, -184, 14,212,100,220, 80,230,157, 95, 68,147, 82, 74,167, 79,159, 46, 57,116,232,144,187, 76, 38,203, 85,169, 84,105,111,196, 31, - 56,132,151,146,169,130,131, 66, 8, 1,143, 3,103, 91, 49,156,172, 69,224,115, 1, 14, 33,166,146, 52,183,236, 59, 62,159, 81, -229,224,200,110, 93,255, 95,215, 46,192,231, 95,207,192,147,116,225, 41,142,212,122,254, 87,253,123, 77,117,148,152, 58,185,217, -112,156,218,213,175, 2,153, 88,128,105,227, 6,163, 81,112,180, 83, 66, 54, 51, 35, 77,205,173, 11, 96, 70,137,231,157, 67,192, -227, 18, 40,164,124,156,218,185, 52, 85,153,147,150, 83, 88,244,166,211,106, 98,204,122,234,149,112, 60,101,206,126, 83,235,215, -173,189, 96,204,200,225,156,230, 77, 27, 81, 14,135,143,244, 60, 29,161, 20,248,118,236,104,124, 53,122,132, 75, 92, 98,234,172, -117,235, 54,204,148, 59,213,248, 33, 63,245,233,156,178, 52, 57,228, 85,212, 71, 46,230, 65, 46,121,101, 88,228, 98, 30, 52, 58, - 19, 8, 1,215,214,179,126, 14,121, 21,185, 77,204,136, 46,249, 31,119,113, 77, 59,143,192,243,103, 35, 21,254, 89,251,178,110, - 70, 37,134,204, 15,126,148,114,135, 82,154,233,209,122,194, 80,189,145, 34, 95, 99, 68, 84,138, 10, 70, 61, 37,159,119,246,132, - 87,111,226,183,240,215,251,191, 17, 66,172, 10,141,115,113,205,248,155,251, 53, 14,181,122,245,251,105,245,198,187,203, 22,204, -224,166,231,232,192, 80, 10,177,144, 11,137,144, 87, 48,113,161, 86,230, 96,221,207,155,146,141, 32,189,232,165, 75, 70,139,158, - 75, 12, 29,244, 73,151, 86,123, 8, 32, 36, 28, 65,188,155,103, 21,207,143,186, 13, 19,127,212,125, 48, 76, 70,221, 84,153,179, -255, 69,101, 74,216,121,115, 52,107, 6,212, 0, 1,238,231,167,132,143, 6, 0,185,179,223, 6,127, 63,255,250,197,211,170, 87, -247,171,111,206,121, 47,120, 70,115, 36,142, 62, 35,171,251,215,154, 60,230,251,141, 85,162,146, 84,176,171,236,131,144,199, 15, -112,114,239,218,251,234,188,172,101, 39,143, 28,156,252,195,143,171,234,116,235,217, 23,135,255,216,251, 29, 33,100, 61,125,197, -185, 34,209,169, 65,219, 54,255, 82,153, 47, 20,193, 96,100, 96, 48,209, 87,159, 70, 19, 50, 51,179, 96, 48, 50, 16, 75, 21, 48, - 50, 4, 6, 19, 3,131,145,129, 86,103,148,141, 30,252,241,151, 0,110,151,148, 79,247, 26,109, 78, 11, 68, 34, 79,138, 87, 99, -203, 82, 74,193, 53,234, 56,174,174,174,187, 0, 64, 36, 18, 65, 36, 18,129, 97, 24, 4,135,167,125,237,232, 31, 52, 6, 5,198, -206,164,215,197,100, 69, 93,235, 88,218,190,187,184,184,116, 43,110,174, 52, 26, 13,242,243,243,113,245,230, 93,235,205,191, 29, -232, 20, 21, 19, 95,141,161,214, 90,133, 83,181,142, 0,186,149,118, 60,115,147,195,190,172,220,116, 36,231,187,175,134, 86, 95, -189,237,216,157,231,167,126, 40,179, 30, 86,213,160,169,186,239, 70,125,218, 96,241,170, 45,207, 51,175,253, 60,190,188,115,196, -227,241,248,105,105,105,175,239,239, 53,155,118, 55,184, 31,158,208,115,229, 79, 43,197,193, 47,243,240, 56, 42, 17, 67,131, 60, -240,198, 75,160, 12, 77,185,139,183,131,183,183,255,174,117,171, 22,243,158, 39,106,176,246,224, 29, 92, 56,188,225,106,114,234, -237, 78, 52, 57, 81, 93,145,103,200,219, 26,172,178, 52, 47, 62, 74, 71,190,198, 8,173,206, 8, 3, 67,145,171, 50, 32, 53, 91, -135, 92,149, 30,249,106, 35,134,182,247, 40,205, 68,151,229, 71, 28, 9, 33,199, 40,165, 93,241,170,123, 41, 97,145,223, 32,132, - 28, 43,200,215, 27,191,167, 78,157, 58,125,209,162, 69, 33,133,203, 22,166, 23, 46, 91, 86,122,145,245,237,167, 77,155, 86,115, -241,226,197, 11,155, 54,109,186,231,198,141, 27,145,102, 25,172,162, 59, 65, 8, 41,243, 0,139, 4, 60, 55,169,194,246,149,225, -248,127,192, 0, 85,106,182,201, 88,185,100,158,157,171, 79,147,152,164,231,183, 60,205,143, 90,249, 54,147, 72,164,199,151, 47, - 95,142,254,221, 90, 74, 98,211, 13,249,143, 98,213, 41, 74, 29,140, 78,142,190,194,249, 11, 23,203, 23, 47, 89,250,213,177, 35, - 76, 54,128,165, 37, 23,229, 53,188,199, 37, 69,234, 88, 17, 2,202,152,226, 51,163,238, 52, 0,128,183,169,107,165,212, 24,193, - 45,168, 59, 67, 8,160,210,154,192,229,146,212,236,240,125,161, 3,127,152,223,110,199,158,179,137,148, 99,147,167, 84, 70, 73, - 41,165,241,101, 71, 8, 8,114, 85, 6, 88, 75,249,176,145,243, 97, 45, 19,128, 91,228,230, 42, 44, 22,220,177,251, 76, 66, 76, - 76,198,221, 2,115, 85,170, 38,143,203,137,164, 38,131,134, 82,147,162,107, 67, 71, 56,217, 8,225,106, 43,130, 72,200,131,193, - 8,168,117, 12, 52, 58, 19,162, 83,213,200, 83, 75, 80,171,117,159,170,246,174,247,180,246,158, 13, 15,101,196,220,237, 85,166, - 41, 53,153,176,109,215,129,234,137,137, 41, 61, 78, 28,218, 41, 74,203, 53,224, 81,180, 18,169,217, 90,128,235,136,217, 11,215, -138,166,140, 31,217,115,219,238,223, 99, 62,106,217, 56,198,226,227,154, 26,182,163, 86,179,143, 55,116,237,218, 83, 18,114,251, - 4,158, 63, 56,191, 32, 63,197,252,250, 87,132, 16,206,254,253,251,141, 35, 71,142,204, 91,184,112, 97,229, 35, 71,142,120,165, -165,165, 61, 0, 96,176,177,177,241,247,173,238,249,240,204,169,147,149, 62,238,217,135, 31,159,174,134,181, 84, 0, 79, 39, 41, -110, 94, 61,109, 16, 10,249, 37,214, 39, 41, 40, 6, 28,224, 30, 52, 5, 71,110, 70,118, 10,201, 16, 95, 26, 49,124,104,204,153, - 43,225, 25,107,126, 59,243, 99, 37,185,225,129,152, 73, 91,115,175,129,183,203,212,177,131,177,104,245, 14, 92, 14, 14, 79, 85, -114, 92, 23, 36,105,141,103,231,244,155, 92, 74,200,252,149,177, 86, 72,248, 80,230,166,229,188, 8, 62,233,251,142,162,207, 67, -207, 28,218,193,201,204, 51, 32, 46, 93, 67, 18, 51,243, 96, 98, 40,108,164, 2, 24, 25,138,236,204,116,178,115,199,111,184,123, -247, 38, 7, 92,206, 23, 0,230,148, 89,156, 69, 94, 21, 9,202,197,252, 87, 17, 32,201,171, 79,131,137,129, 95,117,111,252,178, -102,133,149,131,147, 51, 90,180, 50,191,206,179,194,222,179,206,158,173,107,112,233,198,253, 54,151, 87,174,109, 40,119,115, 92, -109,229, 30,176,204,218,171,189, 70,171, 55, 33, 39, 59, 11, 66, 93, 28, 26, 85, 74,131,157,212,132,232, 92, 87, 60, 73,126, 46, - 47,175, 56, 43,253,241,193, 7,142, 53, 63,153,121,224,232,133, 69, 29,219,183,193,147,232, 92, 72,132, 60,136,133, 92,136,133, - 92,240,137, 9, 43,126,222, 96,200,202,201,235,154,254,228, 80,122, 5,174,207,115, 5,255,118, 95,189,220,156,171, 57,238, 88, - 61,115,251,136,201, 75, 58,118,250,100, 24,121,114,247,226,116, 0,231,205,251,131, 71,205, 74, 99, 24,106,246,181,239,228,221, - 96,215,214,109,187,251, 5,248, 84, 70, 74,182, 1,137, 89,122, 92,189, 31,129,237,155,103,102,103,165,188, 28, 4,125,126, 62, - 67,140, 57,167, 79, 29, 61,245,245, 55,147, 17, 88,179, 78,149,220,248, 92, 43, 0, 57,111,108,147, 75, 54, 14, 25, 62,170,159, -179,179,179,226,255, 17, 44, 10, 95,191, 0,116,233,254, 41, 78, 31,254, 3,161, 33,143,192,208, 87, 70,137, 97, 40,178,179, 50, -146,141, 6,221,182,210,242, 39, 20,139, 61,127,221,250,155, 15,135, 67,160, 55, 48,208, 25, 25,140,255,242, 51,221,232,111,167, -183,232,210,161,117,136,144,139,220,232,216, 36,155,155,247,159,214, 98,248,242,202,195, 39,174, 16,104,180, 38,228,168, 12, 56, -177,165,116,143, 35,177,243,108, 90,167, 89,207,225,163,191,255, 69, 36,226,114,244,129,190,149, 35, 91, 55, 9,140,243,112,115, -200,155,183,120,109,163,107,183,239,119,233, 59,112,184,120,168,127,125,226,102, 47, 81,124, 54,240,147,218, 50,123,143, 33,202, -140,216, 82,135, 54,227, 75,109,179, 61,188,170,171,254, 31, 33,242, 59, 72, 40,170,190, 97, 34, 8, 34, 85,201,225,189, 0,192, -213,205, 67,195, 23, 89,229, 89, 96, 64, 40, 0,172,222,180,187,193,195,103,137, 35,126,250,105,165, 52,248,101, 30, 30,188,204, -129, 72,192,129,222,192,128,152, 25,196,102, 40,119,212,140,105, 83,173,178,148, 38, 92,122,148,134,144,123, 23,169, 46, 95, 51, - 80,106,180,234, 37,115,246, 27, 2,192, 27, 64, 4, 33,116,163, 50,197,229, 48,165,151,140,150, 94,247, 12,243,234,127,178,181, -147,119, 85, 19, 79,212,133, 47,148, 53, 37,132, 6, 18, 10, 91,128, 38,100, 20,188, 83,205,117,104,202,148,103, 88,178,112, 22, - 86,109,254, 3,137, 25, 26, 88,155,226,112,120,203,124,124,183,104, 23,212, 90, 83, 89,215,120,153,126,164, 36, 67, 84,220,104, - 21,126, 47, 92,110,209,162, 69, 93,139,157,155,174,165,156,179, 63, 45, 87,184,254,226,197,139, 23, 22,153,175, 50,187,136,176, -112,103,202,218, 41, 43,199,128,106, 2, 43,185,200, 74,194,135,151,135, 43,250,143,153,227,224,226,211, 60, 85, 36,228,113, 15, -237,254,197, 46, 93, 45, 2,225,112,148,102, 23,111, 56,251, 55, 86, 40, 20, 39, 14,254,254, 7,170,121, 56, 9,118, 94,205,140, -186, 31,169,126, 29,210,205, 77,139, 17,122, 89,169,120,189, 62,249, 68,122,254,194,197,111, 75, 51, 88, 92,194,117,223,244,219, -239, 78, 10, 9, 31,132, 0,121,106, 35, 70, 12,249,244,237, 95, 95,148,225,126, 62,108, 8, 72,129,185,202,205, 72,198,244,201, - 99, 52, 50,195,243,208,216,232,216,132,160,110,223,157,207,205, 39,154,126,131,191,188, 27,250,108, 81, 86,249, 87,175, 33,190, -203,199, 93, 4,175, 34, 5, 0,151, 16, 48,148, 73,241,243,146,143,253, 83,177, 96,178,118, 83,121,134, 45, 47, 33, 60, 83,225, - 90,171,247,142,229, 95,111,114,115,118,178,151,203, 36, 84, 46, 21,145, 64,127, 31, 65,147, 38,205,132, 94,126,181, 5, 87,159, -170, 17,155,166, 70,100, 98, 14, 68,206,117,121,253,219,117,198,142,149, 19,219, 16, 66, 56,229, 85,124, 61,123,233, 86,183,205, - 63,255, 36, 74,201,214, 35, 44, 54, 31,201, 89, 26, 36,101,105,145,156,169,129, 92,194, 71,171,238, 35, 69,199, 15,111,236,246, - 81,203,198,171, 43,114,120, 35, 35,163,142, 71, 39, 36,245,169, 93,175, 17,118,108,223,218,210,214,182,170, 85, 86, 86,100,174, -185,103,103,254,252,249,194,197,139, 23,243,214,172, 89,147,219,164, 73, 19,151,105,211,166,117, 76, 77, 77,189, 83,165, 74, 21, -191,211, 7,183, 93,168,219,170, 71, 67, 48,122,199,150,173,219, 10, 68, 12, 15,103,142, 29,211,239,219,187, 51, 67,173,206, 27, - 93,166,209,144, 90,207, 79,201, 39,112,172, 84, 41, 68, 46, 52,181,231,113,178,159,101,158, 28,251, 27,128,131,222,157,199,157, -187,120, 47,252,217,255,216, 59,235,240,168,142,182,141,223,179,158,149,184, 59, 16, 8, 9, 33,193,221,221,181,104,161,148,182, - 72,169, 80,164, 45,148, 22,107,145, 82, 90,164,165,197,138,211,226, 90,220, 93,131, 67, 18, 8, 81,226,178,146,117, 57,243,253, - 17,121, 3,111,100, 67,233,215,183,116,126,215,181, 87, 54,187,231,220, 59,115,206,156, 57,247,121,198, 26,223, 76,244, 58,117, -243,113, 86,158,206, 92,251,201,225,201, 21, 86,184,124, 66, 32,224,243,224, 40, 21,128, 87, 84,155, 58,250,215,127, 12, 66, 60, -139, 35,165, 4,164,232, 47, 64, 8,210,242,146,162,237,232,147, 65, 40, 71,129,152, 84, 45, 10, 12,133, 33,248, 0, 15, 25,178, - 51, 83,241,243,242, 13,136,190,113, 29, 93,123,244,197,138, 53, 91, 48,230,173,193,134,202,212,120,188,162, 8, 86,169,232,149, - 66, 42, 0, 64,160,212, 90,176,235, 66, 10,106,214,224,217,125, 67, 0, 0, 71,133, 12, 42,141, 30, 60,145, 35,158,220, 60, 36, - 59,124,250,234,244, 47,191, 94,242,105,126,250,157,228,199,119,207, 35,204, 67,133, 26,254,102,220,207,112,194,141,220,234, 8, -171, 21, 2,158,232,186, 93,218, 57,247,163, 22,237,227,237,234,221,184, 65, 68,139, 96, 47, 23,232, 77,182,162, 40, 22, 31,235, -215,109, 66, 98, 66,234,187, 57,247,247, 70,191, 10, 39, 91,144, 25,159,237,224, 29,250,193,221,171, 39,159, 14,120,243, 3,248, -250, 7,213,183,255,166,101,159,153,178,217, 97,176, 8, 33, 60,183,106, 13, 54,110,220,188, 99,104,141, 32, 31, 28,191,154,128, -107,177,185,240,240,112, 7, 95,230,131,208,118,163, 93,238, 30, 89,246,134, 62,167, 96,163, 80, 36,123,175, 89,243, 86,160,148, - 34,230,225,253, 60,149,202,249,191,234,102, 93,218,163, 91, 0,156,158,107,134,242,172, 83, 95,225,236,118,203,104,182,225,217, -179, 84, 92,188,116,166, 97,209,118,118, 35, 17,241,113, 44, 58, 11,102, 11, 7,179,149, 67,219,118, 93, 76, 34,158,177,205,188, - 37,235,154,167,167,165,243,228, 78, 30,156,155,127, 29,145,175,196,108,188, 29,175, 18,153, 45, 28, 66,252,228, 21,106,122,250, -213,154, 63,117,234,164, 58,124,145, 20, 26,173,209,148,158,246,204,103,245,111,167, 11, 30, 62,186,235, 31,224,229,236,244,237, -210, 85, 34,181,129, 32, 75,101, 68,158, 70, 77,222, 28,247,153,223,218,159, 22,140, 0, 96,247,218,177,132,162,198, 31,199,206, -135,187, 58,138, 72,129,193,202,229,170,205,182, 55,251,255,185, 65,148, 69,230,106,236,146, 31,150,202,162,227, 53,184, 29,175, -130,131,136, 15,177,136, 7,147,133,131, 61,151, 19, 33,132, 87, 35,178,221,248,150,141,163,112,244, 86, 14,248,124, 30,244,154, -124,157, 0,185,177,141,219,119,149, 53,106,218, 28, 29,218,183,195,227,216,152,160,131,251,119,117,186,124,241,108,134,194, 43, -236,195,130,172,152, 61, 85, 42,231, 58, 29,223, 34,246, 25,237,235, 95,173,213,192, 97,163,157,131,131,252,137,151,135, 59,172, - 84,128,177,111,189, 97,247,149, 95,104,200,129,133, 95, 79,135,209,104,130,167,139, 24,148, 2,235,150,207,134,201,100,130,159, -187, 4, 42,173,165, 34, 99, 90,161, 31, 41, 47,234, 84,197,230,230,131,101,153,172, 23, 63, 39,132, 28,156, 54,109,218, 23, 0, -232,180,105,211,190, 40,254,127,193,130, 5,122, 0,105,118, 25,172,226, 76,149, 91, 81,250,133,214,118,245,242,187,176,125,227, - 79,174,249, 5,102, 56,136,248, 8, 8, 12,198,231,115,151,121,246,104,236,129,108,131, 12, 59,118,174,207, 51, 25,116,219,236, -107, 75, 14,109,236, 40,119, 58,186,113,243, 54,206,195,221,157,247,243,177,236,248, 92,141,181,164,233, 42,246,234,126,238,198, -209,213,190, 20,228,136,131,131, 67, 45,147,201,228, 90,217, 9, 93,119, 44,169,168,115, 46,121, 21,117, 42, 8,159,111,219,178, -101, 51,220,157,196, 48, 90, 56, 76,251,116,162,126, 84, 87,133,242,205, 33,195, 58,118,232,249,241, 41,161, 60,244,100,203,134, -161,180, 65,131, 6, 74, 62,159, 95,169, 94,238,211,107,255, 53, 90, 34,188,186,236,189, 25,159,141,154, 81, 70,179,160, 93, 29, -114, 53,233,119, 47, 0,120, 46, 34, 66,106,214, 20,111,221,177,111,226,160, 33, 67,191,244,175,223, 95,145,144,174,130,136,152, -209,164,142, 47, 78, 31,217, 67, 83, 19, 99, 39,217, 51,170, 40, 43, 59, 47,208,211,211, 27,209, 79, 11,240, 44, 87,143,140, 34, -115,149,158,111,132, 70,175, 65,189, 96, 63, 40, 85,170,192,151, 62,190,192,158,163, 71,143, 14,238,217,111, 40, 62,254,116, 78, -235, 95,127, 89,124, 71,225, 83,251,157,130,140,216, 51,246, 60, 25, 18, 66,242, 62,255,252,243,154,107,214,172,225,141, 24, 49, - 66, 31, 21, 21,229, 48,114,228,200,214,155, 54,109,114,144,201, 28,244,183,207,239,255,242,189,143,166,245, 91,189,236,155,250, -249,249,249,196,106,177, 28, 54,231,231, 79,211, 84, 98,226,146,247, 77,127, 68, 34,230,188,221,165,141,231,126, 55, 25,175,174, -132,154,134,145,136, 57,219,232,131, 89,230, 39,135,151,107,162,134,252,240, 81,154,146,155, 97,224,121,205,171,204, 92, 1, 0, -143, 79, 96,178,112,112,148, 10,193,227,241,138,205,187,239,250,109,135,101,158,206, 98, 8,249, 60, 8,248,133,209,205, 28,181, - 25, 31,140,238,103,247, 19,128,213, 70,161, 55, 89,161, 43,122, 26,212,168,115, 48,253,211,201,232,209,103, 0,222, 27, 63, 25, -249,122,224,198, 83, 13,204, 22, 75,165, 23, 5,143,240,160, 51, 90,241, 78,215, 96,228, 21,152,161,213, 91, 97,178,114,144,137, - 5, 16, 10,120,144, 59, 8,224, 36, 19, 2,148,138, 8, 33, 99, 1, 64, 40, 20, 26,204,102,243,230, 10,206, 19,170, 7,122, 67, -111,225,161,233,208,197,232,220,162, 54,238, 95,216, 37, 56,123,229,110,141, 79, 62,157,129,137, 99,250, 96,231,163,154,112,243, - 10,134, 66, 46,133,133,242, 0, 80,187, 58,228, 81, 58,139,243, 13, 31, 56,124,229,154,117, 49,115,103, 78,115, 80,106, 9, 36, - 34, 62, 78,157, 60,129,203, 87,111, 44,203,190,191,119, 51, 94, 33, 66,202,243,118,114,114,130,131,152, 15,147,217,104,178,191, -139, 2, 5, 5, 26, 42,188,195, 86, 22, 61,225, 55,180,113, 40,227, 51, 90,217, 13,129, 56,251, 69,174, 95,185,118,203, 8, 63, - 31, 47,236, 57,121, 7,235,215,252,136, 26, 13,122,227,194, 31,235,225, 92,189, 57,228, 65,173, 33,118,220, 49,150,199, 23, 68, -125,248,201, 23, 3, 27, 53,105,129,139,231, 79, 33, 43, 35,125, 37,165,143,236,138,104,240,133,228,227,142, 93,250,192, 96,178, -161, 77,167,222, 56,114, 96,207, 71, 40, 26, 60, 97,255,205,235,133,250, 25, 60,235,228, 73, 31, 11,179, 84, 38, 97,142,202,132, -148, 28, 61, 18, 51,180,216,251,251,175,212,254,250,194,212,164,109,189, 0,225,216, 69,167, 82, 2, 3,124,141, 66,163, 94, 26, -251, 36, 62,252,189,209,163,132, 53,106,133,243,178, 84, 70,100,171,140,200, 81, 25, 81, 96,176,162, 86, 64, 40,207, 98, 37, 45, -170,122,158, 61,156,197,194, 21, 7,158,194, 73, 46, 68,203,240,151, 31, 56,203,113,220,127,204,213,146, 66,115,117,231,169, 10, - 18, 17, 31, 18, 17, 15, 18, 17, 31, 86, 27,181,235,129, 69,234, 85,187,231, 7, 31, 78,240, 51, 89,129, 92,149, 9, 2, 62,129, -151,135,171,188, 73,253,225, 88,183,248, 35, 0,192,152,207,127,198,123,239,140, 68,157,186, 81, 80,230,231,251, 12, 31,212,115, - 9,128, 61,246,166,245,208,177, 51, 65,199,206, 69,127,254,193,212, 89,138, 33,125, 58,240,111,197,171,144,158,103,196,147, 88, - 77,149, 34,109, 0, 96,181,113,160,160,216,176,237, 32,164, 98, 1,178, 85,102, 80, 74,241,205,143,219,225, 40, 21, 34, 61,191, -176, 89,191,146, 58,158, 84,242,125,239, 63, 21, 63, 41,220, 63, 27,255,233,167, 85,105, 4,107,193,130, 5,247, 23, 44, 88, 80, -102, 68,172, 82,131, 85,145,185,114,113,245,189,184,127,219, 26,183, 61,209, 38, 92,217,113, 3,189,154,249, 66, 36,224, 65,230, -236,137,219, 79,181, 56,122,228, 55,229,161,253, 59,159,229, 9,117,223, 85,106,174,124,195, 26,202,165, 78, 39, 86,172,222,104, -245,240,242,194,230,243,121,169,249, 90,171,229, 63,205, 83, 22,114,227,232,234, 26, 86,206,210, 93,159, 17, 87,233,227, 44, 71, - 33, 90,240,203, 62, 0, 20, 28,199,129,114, 28,132, 14, 10,185,103,205, 22,153, 69, 21,156,131,128, 71, 12,165,175,124,202, 89, - 83,179,227, 43, 14,119, 18, 0, 78, 50, 33,182,157,125, 6, 0,153,124,205,205,135,111, 14, 41,108, 22, 52,152, 28,212,117,107, -214,164, 77,154, 52, 81, 74,165,210,151, 62,201, 85,109, 22,180,171,224, 60,121, 98, 2,176,200, 47,172,205,128,110,138,122, 77, -197, 60, 17, 26,133,249,226,244,209,189,244,202,145,117, 99,116,153, 49, 27,237, 44,128, 40, 48, 88,144,150,107,192,179, 92, 3, - 50,242, 13,200,200, 51, 34, 35,223, 0, 66, 8, 12, 38,235,159,186, 97,105,179, 98,118,108,222,184,182,175,209,140, 97,109,187, - 14,192,228, 89, 43,130, 55,175, 92,120, 66,234, 29,222,202,158, 14,180,148, 82, 27, 33, 36,113,244,232,209,245,127,251,237, 55, -126,100,100,164,254,225,195,135, 50, 0, 28, 0,179, 66, 33,147,254,250,211,130,163, 77,155, 54,253,253, 89,236,163, 83, 0,242, -237, 25, 73, 85,173,253,104, 73,184, 83,222,216, 32,121,203,110, 33, 62, 50, 4,201, 53,221,194, 21,183,191,243,234,244,201,252, -172,147, 75,179,210,141,214,227,217,122,126,131,103, 5, 66,187,250, 2, 90,140,134,164,129,131,134,130, 79,120, 48, 27,116, 73, -197,133,203,203, 89,140,217, 91, 30, 65,225, 32,132,163, 84, 0,133, 84,136,214, 17,110,168, 66, 61, 70, 45, 54, 14, 58,163, 13, -122,163, 21, 6,147, 21, 30,129,174, 88,179,121, 7,146,179,244,216,119, 61, 7, 49, 73, 26,132, 6,200, 65,105,229,213, 35,103, -179,104,251,188, 49,194,145,207, 35,224,243, 8, 47, 34,188, 54,242, 10,204, 16, 9,120, 16, 57, 72, 33,151, 8,224, 36, 21, 66, - 36, 18, 34, 43, 43, 11, 70,163, 17, 65, 65, 65, 14, 21, 91, 64, 10, 71,133, 20,161, 53,252, 96,182, 88,113,232,220, 3,204,155, - 52, 16, 93,218, 54, 6, 17, 42,240,200,216, 16,142,110,142,224,120, 60,152,173, 28, 76,102, 27, 0, 94,185,209,182,160,160,160, -142,114,185, 92,174,211,233, 52, 73, 73, 73,103,210, 31,237, 78,246,170,219,127,236,145, 99,167, 54,247,238,209, 5,209,119,238, - 99,231,158,253,231,115,220, 85, 83,139,247,137,140,140,108,238,225,225,161,200,205,205, 85,223,189,123,247,218, 75, 62,237, 18, -185,119,248, 39, 45, 90,183, 71,129, 50, 11,153, 41, 9,118, 63, 53,215, 9,118,196, 87, 11, 86, 52, 10,171, 29,214,200, 70, 11, - 13, 87, 68,144, 35,166,204, 90,222,168,102,104,237, 70,197, 3, 61,234, 4, 85, 60,173,154,220, 59,108,194,188, 31,126,121, 43, - 40, 48, 16,135, 47, 62,194,130, 25,227,163,229, 50,199,234, 1,222,174, 46,162,186,141,113,235,214, 37,120, 65, 12, 39,239,208, -128, 97,125,199, 5,116,235,209, 23,119,111,223,192,210, 69, 95, 95,214,242,165,243,237, 73,171,194, 59,196,179, 65,147,182,111, - 58,186,121, 67,169,210,192,209,213, 11,117,234, 53,121, 83,225, 29,242,121,209, 98,245, 47,103, 54, 40,133,209, 76,145,175, 49, - 35, 57,187,208, 92, 37,100,234,192,113, 85,232,243, 99,227,136,194, 65, 32,112,179, 60, 14,186,123,226, 20, 13, 14,244, 38,139, -190,254,148,111,134, 3,178,149,133,230, 42, 91,109, 66,182,202,132, 2,131, 5,110,114, 1, 56, 27, 87,229,167,237,252, 2, 51, - 28,139,250,201,218,184,151,239,243,253,203,250,109, 97,183, 99,211,250,255,240,195, 82,217,173,167,165,204,149,176, 48,122, 37, - 17,241, 97,227,184,162, 59, 77, 37,230, 94, 32,252,184, 95,207,206, 72,201,209, 23,141, 68, 38, 8,141,106, 10, 15, 41,135, 78, - 67,167, 1, 0,250,244, 44,236,103,252, 52, 93,139, 3, 87,178,129,231, 59,108, 87, 92, 23,235,245,252,213, 91,254,248,100,199, -246,223,157, 13, 54, 1, 86, 29, 78,132,206,104,133,131,136, 15,137,136, 15,169,136,255, 92,151,160,202, 13, 86, 97,159,186,228, - 28, 11,116, 6, 3,212,122, 11, 40,128,107,143, 11,160, 55, 89,161,210, 90,208, 60,220,245,207, 62,243,252, 1,160,215,139, 70, -232, 69,147, 84, 42, 2, 85, 22,215, 75,107, 20,111, 95,158,129, 43,221, 39, 11,128, 93, 15,130,130, 23,157, 98,233,255, 29,253, - 66,107,187,184,248, 94,220,255,251, 26,183,221,209, 70,156,190,157,139, 65,109, 2,160, 83,101, 96,225,130,207,242, 8,168,137, -199,231, 41,141, 6,253,238, 92,153,121, 30,125,240,196, 92, 97, 37,225, 25, 81, 79, 42,147,157,250,118,233, 42,179,151,183, 63, -183,251,138, 50, 75,165,179, 61, 23, 43,180, 25,141, 60,202, 81,145, 61,230,170,168,105,195, 60,235,163, 1,224, 40,197,236,165, - 59, 48,127,234, 80, 40,164, 35,100,132, 16,153,214, 96,197,164, 57,107,241,253, 87,239, 58,202, 36, 2, 16, 2, 24, 76, 54,188, - 53,108,128,125, 5,207, 96,197,147,171,191, 21,104,158, 30,124, 88,186, 89,176, 89,235, 30, 55,154, 53,107,166,116,117,117,133, - 84, 42,253, 79,100,194,206,202,186,172,209,130, 89, 74,164, 58, 58, 58,182,115,114,114, 42,173,167, 85, 42,149,123, 95,166,244, -105,148, 57,167, 50, 18,239, 54,109,213,161, 15,206, 28,221, 75,175, 28,254,117, 76, 85,230,216,113,117,115, 77,185,121,247, 73, - 29, 66,220, 10, 35, 88, 69,230,202,100,225, 16,236, 45, 67, 74,226, 19,184, 56, 59,167,216,171, 39,243, 10,239, 71,120,116, 60, - 1, 93, 87,144, 17,187,163,200,236, 12,151,251,132,223,185,127,239,214,188,222,111,126, 44,232, 58,104, 2,127,229,130, 15,191, -192, 11,157, 83, 43,192, 28, 19, 19,243,224,221,119,223,109,121,249,242,101, 27, 0, 29, 33,196,194,231,243,101, 38,147, 73,212, -161, 67, 7,213,163, 71,143,206,194,142,206,136,109,222,217,233, 65, 36,154, 30, 53, 67,155, 12, 15,118,212,116,233,208,166, 5, - 90,212, 13, 68, 74,155, 22, 0,240,113, 82,129, 34,172,245,251,191,110,171,225, 25,112,104,229,250, 3,243,199, 12,237, 60,201, -175,207,156, 31,210, 14,204,170,176,131,105,242,131, 51,221,202,178,239,133,205,134, 66, 40,164, 2, 56, 74,133,112,116, 16,194, - 98,165, 85,121, 82,164, 22, 43, 87, 24,193, 50, 89, 81,160,183,226,212,173, 76,100,168, 76, 80,106,204,208,155,109,160,160,133, - 79,159,118,212,226, 89,113, 23, 92, 74,206,125,112, 35,213,234, 31, 23, 59,237,186,144, 90, 50, 66,207, 89, 38,134,163,172,112, - 84,245,185,115,231,224,238, 94,249,211, 61,199,113,216,121,228, 26,126,216,112, 10, 71,214,125, 6, 7, 17, 31,245,250,205,193, -219,253,155,129,163, 28,158,196,220,207, 12,141,168,239,205,227, 73,193, 35, 4, 70, 11, 7,128,150,123, 60, 77, 38,147,123,114, -114,178,186, 86,173, 90, 62,254,254,254,131,248,124, 62,149, 0,198,189,191,231,233, 78, 30,220, 42,211,234,141, 54,153, 85,181, -174, 86,186,190, 87,104,104, 40, 8, 33,212,195,195, 67,116,234,212,169,130,168,168, 40,207,151, 52, 87, 60,169, 87,237,101,239, -189,255,201,160,154, 33, 33,216,177,117, 29, 40, 37,187,236,221,127,203,129,203,248,122,250,243, 35, 6,167,204, 90,222,232,251, - 57, 31, 63,247,217,251,211,127,104, 84, 81,157, 17, 16,217,241,179,240,240, 8, 92,190,159,138, 69, 95,190, 31,109,200,122, 58, -220,164,112, 31,103, 46, 72,159,220,160, 97, 99,248,184, 59, 33, 45,207,136,190, 35,250,163, 85,235, 54,184,123,251, 6,190,254, -234,211,203,208,153,186,210,236, 7,122,123,210,202, 81,225,248, 14,221,250, 11,245, 70, 51,150, 47,154,137,113, 83,231,161,121, -199, 62,194,123,183,174,140, 7, 48,215,222, 60, 27,205, 54,116,136,242, 40, 52,205, 22, 14,251,159,242, 5,101,149, 64, 1,159, -240, 26,132,184, 64,111,178, 66,173,179, 84,124,163, 18, 9, 51,148, 42,117,181,159,230,127,194,215, 26,172,200, 86,153,144,165, - 50, 34, 71,249, 31, 99,149,163, 50, 34, 91,101,130, 80, 64, 16, 27,159, 4,158, 80, 80,229,254,119,249, 5, 22, 52,173,237, 90, -120,141,190,100,107,136, 69,224,212,236,200,217,219, 3,127,248, 97,137,195,237, 4, 13,238, 60, 85, 23, 69,174,248,144, 8,121, - 16, 23,189,183,113, 64,101, 63,225,236, 85,179,198,168,119,199,116,114, 82, 72,145, 22,151, 5, 1,159,128,207, 39,112,246, 10, -132,179,196,128, 15,223, 31, 11, 15,119, 23, 36,231, 24,177,108, 79, 44,238, 60,120, 12, 78, 95,181,108, 47, 95,245,123,247,247, - 62,152,226,194, 19,138,177,233,104, 66, 97, 58,249, 54, 60,186,114,192,144,246,228,174,182, 64,157, 75, 65,109,118, 62,248, 19, -106,181, 21, 26,211,249,179,167,225,247, 13, 63,227,232,205,172,146,206, 89, 23,118,125,143, 79,166,127,131, 28,181,169,168,232, - 87, 28,185,122,225,255,236, 82,145,167,255,250,191,148, 41, 42,235,127, 82,244,191,169, 28, 13,211, 11,166,202,244,194,231,166, - 23,244,236,154,187, 79, 80, 81,228,202,217,213,231,226,190,109,171,221,118,223, 52,225,204,157, 66,115,101, 53, 42,241,203,162, -233,233, 58,165,186,109, 69, 19, 54,254,151,185,242,170, 29, 41,145,203,207,126,249,205, 50,163,183,127, 53,235,161, 91,234, 92, -141,193,246, 95, 97, 16,145, 76,110,147, 59,123, 26, 92,130, 27,254, 32,212,155,102,102,103, 63,208, 86, 22,105,226, 40,197,193, -171, 25,160,180,240,145,104,251,185,103, 40,122, 18,135,141, 43,108, 62, 57,126, 43, 11,130,162,126, 38,246,134,185,127, 89,245, -179,186, 87,148, 74,251,230,252,217, 37,205,130,205,235, 23, 70,174,156,156,156,224,226,226, 2,133, 66, 1,123,154, 8,139, 41, -111,180,160,163,163, 99,187, 91,183,110, 57, 56, 57, 57,129,207,231,195,104, 52,162,110,221,186, 47,117,129, 43,124,194, 63,104, -218,113,192, 23,173, 59,246,193,169, 35,187,233,149, 35,235,199, 86,117, 2,195, 94,157, 91, 30,248,250,235,217, 53,190,156,247, -147,196,209, 65,128,135, 5, 38,240, 8, 65,176,183, 12,238,114, 30,206,236,221,100, 24,218,167,165,221,147,218, 5, 6,250,111, -254,254,199,213,242,239, 23,206,233,224,232, 31,118, 74,243, 44, 38, 15, 0,180, 25,143, 22,201,124,194, 31, 4, 92, 58,118,168, -126,187, 1,240,246, 11,233, 82,133, 48, 47, 37,132,232,226,227,227,159,126,249,229,151, 97, 11, 23, 46,164,124, 62,159, 3, 32, - 89,186,116,169, 46, 46, 46,238, 22, 10,135,216,162,178,232, 85,167, 46,117, 39, 41,196,182,230,110, 50, 94,221, 16, 31, 25, 90, -212, 45,108,253, 28,218,171, 53, 2,131,130, 16,159,161,107,144,167,227,132, 5, 38,126,200,138, 85,119,174, 87,247,224,143,177, -234, 77, 15, 80,201, 36,176,229,149,217,226,142,239,197,209, 43, 71,169, 16, 28, 80,149, 39, 69,106,177,114, 48,154,109,208, 27, -109,208,155,172,208,154,108,208,153,108,224,104,225, 53, 65, 8,129,217,202,193,174,199,228, 23,202,190,147,155, 7, 66,170, 23, -142,122,117,148, 22, 78,217,224, 36, 19, 22,142,117,118,119,135,151,151,151, 93, 81, 80,147,185,240, 18, 55, 89,184,146,230,123, -147,217, 10, 74, 41, 98, 99, 99, 62, 75,124,250,180, 95,173,208, 90,109, 35,234,213,119,147, 73,120, 0, 80,174, 25,208,233,116, - 54, 71, 71, 71, 47, 55, 55, 55,222,179,103,207, 74, 76,115,173, 6, 29,172,123,118,239,194,192,129, 3, 10, 30, 94,187, 93, 50, - 84, 93,175,215,147, 86,173, 90, 57, 5, 6, 6,242,140, 70,163,186,106,199,128, 16,185,103,237,254,129,225, 45,231,189, 53,122, - 92,237, 14,157,187,227,244,201, 99,216,183,251,183,141,218,172,152, 99,118, 95,239, 97,225,255, 53,138,176,102,104,237,255, 26, - 69, 88,173, 70,104,185, 6,203,217,185,158, 83,189, 38,237, 3, 19,115,204, 56,124,248, 16,180,170,140,175, 76,166, 2, 29,132, -116,237,193,223, 86,188,251,222, 39,115,156,218,183,107, 3, 87, 39, 25, 4, 2, 62,110, 94,191,140,133,115,191,184, 12,157,169, -107,101,245,103, 73,126, 35, 34, 68,181,130,170, 77, 12,170, 25,137,155, 87,206,227, 73,236,189,251,183,175, 95,174, 91, 43,170, - 57, 60,253,130, 39,146,136,136,133,244,193, 3,115,101, 58, 38,131, 33,233,237, 81, 35, 81,122, 20, 97,139,134, 97,238,228,197, - 11, 0,128, 78,147,101,254,117,241,164,184,226, 81,132,156,217,148, 84,158,174, 42, 63,123,231,153,139, 87,167,246,235,213,157, -151,163, 54, 21, 70,172, 84,166,162,151, 17, 57,197,239,213, 70,132,250, 41, 16,115,255, 38,103, 80,229,236,170,226,117,105,120, -123,112,183, 7,197,101,151,227, 40, 8, 96,168,234,245, 77,133, 78, 99, 23,125,247,131,195,237,167, 5,184,147,160, 46,108, 18, - 20,242, 11,141,149,144, 87, 98,182, 10, 71,167, 87, 18, 13, 34,252,249,239,140, 26,134, 28,181, 25, 28, 7, 8,248,188,162,151, - 8,201, 26,130, 20,141, 14, 57,249,217,120,154,152, 4,101,198, 19,240,120, 60,120,248,213,134,189,225, 70, 27, 21,251,234, 76, - 52,106, 80,175,182,130,221,151,210, 33,147, 8, 96,212,100,226,240,182,197,217,198, 2,245, 60,189,174, 96,183, 62, 55, 46,205, -222,188,243, 8,201, 86, 23, 24,188, 37, 66, 62,118,108,248, 9,131,223,126,191,232,160, 20,254,249,108,198,215, 0,143, 32, 47, - 95, 3, 66, 72, 85,163,162,215, 43,249,255,101,120, 21, 26, 85, 55, 88, 50,153,251,137,125,191,175,118,187,244,148,135,107, 49, -249, 24,212, 38, 0, 22, 67, 62,150,125, 51, 57, 67,173,206,234,168,201,142,139,175,210, 47,241,120,221,134,190, 51,245,126, 72, -237, 8,227,233,123, 5, 9, 74,173,165,220,126, 12, 45, 6,125,121,255,198, 31, 63,246, 84, 89,226, 39, 40,252,234,218, 56,171, -117,145, 46, 43,102, 78, 57, 77,132,226, 57,203,118,148, 52, 15,126,190,112, 83,225,123,155, 13, 54,202,129,114,192,135, 95,253, - 2, 43,103, 3,103,179,129,179, 81, 88,108, 84, 86, 89,114,189,252,170,237,206,127,180, 61,252,205,185,255,221, 44,232,226,226, - 2,119,119,119,184,187,187,163,216, 16,253,217,102, 65, 39, 39, 39, 40, 20, 10,156, 63,127, 30, 82,169, 20,114,185,188, 74,186, -165,204,213,132, 38,237,251,253,212,177,239,187, 56,190,123, 21,189,126,238,192, 56, 93,102,204, 90,187, 35,241, 54, 27,177, 88, - 44,232,213,181,125, 82,244,253,199, 71,102, 76, 29,223,189,101,239,113,146, 22, 97,254, 48,152,108, 72, 77,124,130, 51,123,215, - 27,106,215,240, 61,218,169, 77,179, 36,139,197, 2,155,205, 86,233, 13,220, 96, 50,231,240,133, 82,249,176, 97,111, 10,175, 95, -187,182, 75,225, 85,123,135,141,240,110, 19,202,213, 35,132, 12,172, 87,175, 14,204, 22, 14, 58,157, 58,191,170,121,214,104, 52, - 79,215,173, 91, 87, 99,212,168, 81,178,136,136, 8,225,147, 39, 79,240,253,247,223,231,106, 52,154,167,246,106, 28, 59, 23,179, - 84, 64,242,227,196,156,121,120,176,163,166, 75,114,235, 22, 24,214,187, 53,126,255,227, 2,206,156,191,140,164, 2,197,173, 2, -171, 96,111, 74, 82,154,177,174,155,122, 87,223, 22,213,248, 59, 54,228,239,242,234, 48,125, 8,165,146, 99,217,103,102,105,237, -191,121, 3, 26,189, 5, 78,178,194,249,154,138, 35, 89,124, 66,236,118, 66, 4,120,122,254,242,205,200,198,161, 17,136,126,170, - 66,150,210, 8,189,209, 10,142,163,224, 64,225,238, 40,134,131,136,135,228,196,167,224,168, 57,161,138,183,136,236,118,109,219, - 9, 0, 2, 66,168, 64, 40, 16,128,162,112, 94, 68,169, 84, 90,224,229,229,101, 87, 4,203,108,181, 98, 96,247,102,104,222,164, - 30,250,141, 91, 12, 0, 56,185,113, 26, 92, 21, 66,252,190,121, 45,146,207, 46,217, 28,210,242,253, 99,247,238,222,127,227,126, -244,165, 55,123, 52,146, 54,240, 17,164,137,202,211, 43, 40, 40,216, 69, 8, 17,139, 68,162,238,109,219,182,117,219,181,107,151, -210,195,195,131, 19,139, 68,217,125,251,244,230,132, 34, 81, 94,241,182, 23, 47, 94, 20,142, 27, 55,206, 49, 63, 63, 63, 57, 51, - 51,243, 50,165,212, 82,241, 3, 96,120,103,240,240, 27, 8,113, 80, 72,101, 73, 45, 58, 15,243,107,210,188,153,115,255,129,131, - 33, 17, 75,112,252,216, 17, 44, 95,178,112,123, 65,250,195,119,170,114, 36, 95,197, 40, 66,149,202, 89, 27,247,224,118,126, 66, -150,201, 85,232, 18, 10,161,196,113, 28,113,246, 91,198,151, 40,102,121,214,239,239,180,115,255, 33,220,189,119, 15,110, 82, 11, -226,159,196,233,238,221,138,254, 89, 71,132,115,104,246, 3,157,189,233,148,229,218,222,104, 49,178,187,171,209,108,195,185, 83, -127, 24, 56, 43,215,253,242,217, 67, 79, 2,106, 55,113,136,108,210,201, 53,103,223,218,129, 0,126,175, 76, 39,245,225,127, 71, -108,131,194,154, 38,156, 60,117,194,217, 59,184, 46,159,128,192,108, 52, 32, 59,254,186, 85,151,249, 72,173, 74,189,107,215,168, -218,220, 20,124, 53,125,214,183, 19,154, 52,110, 44,167,112,120, 46, 98, 85,108,172,114,212, 38,120, 56,138,161, 87,103, 35,238, -250, 17,131, 46,155, 95,225,124,101, 86,147, 86,150,147,149, 89,210,148, 86,144, 25,211,188,162,237,115,178, 50,197, 86,147, 86, - 86,249,173,142, 15, 39,185, 24,119, 19,158,149,116,104,151, 8, 11,251, 94,137,133,252,146,126, 88,197,117, 65, 37,180, 23, 57, -184,224, 89,174, 1, 4, 20,156,205, 10,171,197, 4,141, 90,141,103,105, 25,200,204,200,132, 70,163,132, 76,225,138,200, 6, 77, -225, 40,119,192,237, 51,219, 65, 41,181,107, 94, 66, 11, 17,134, 53,105,222, 70,114, 47,177,176,175,149,131,144,226,192,111, 11, -115, 11,212, 89,109, 52,105,177,113, 85,173,139,173, 54,219,137, 59, 15,226,234, 6,248, 86, 39,183,158,168,176,121,205,143, 48, - 21, 69, 50, 45, 22, 27,238, 37,107,145,158,167, 67,114,252, 67,202,217,108, 39,240,154, 83,174,193, 18,137,133, 82, 39, 55, 63, -124, 61,124, 4,126,254,249, 23, 36,164, 60,195,242,175, 39,101,168, 53,217, 29, 52,105,113,177,118, 62, 5,118, 46,158, 43, 67, -155,241,104,209, 59, 63, 39,164,238,143,206,227,233, 77,180,194, 14, 60, 14,158,193,104,243,206,247, 71,245,154, 60,177,205,168, - 19, 28,216,252,206,111,101,105, 22, 58,102,152,230, 77, 25, 10,133, 84, 0, 66, 8,138,155, 5, 87,124, 61, 22, 50, 73, 97,219, -177,222,104,197,136, 73, 63, 96,243, 15,147, 65, 1, 12, 31,124, 65, 87, 94, 58, 75, 53,225, 5, 36, 37,102, 61,235,220,103,202, - 73,131, 89, 98,236, 61, 96,212,141,198,141, 27, 43,165, 82, 41,164, 82, 41,156,156,156,224,234,234, 10, 23, 23,151, 74,243, 94, -238, 36,162,165, 70, 11,242,120, 60,240,120, 60,200,229,114, 40, 20, 10,200,229,242, 10, 53,203, 53, 87,237,250,174,232,212,239, - 61, 28,223,189,154, 94, 63,119, 96,188, 46, 51,102,141,189,231,168,168, 89,231,246,192,129, 3,163,198,141, 27, 39,154, 53,117, -220,209, 63,142,157,137,221,113,112,117,159,252,124,101, 32,165, 20, 46,206,206, 41, 67,251,180, 60,208,161, 85,147,164,147, 39, - 79,114,191,253,246,155,145, 16,114,183,178,116,230,100,101,109, 60,121,226,212,236, 54,237,218, 99,237,134,223,218,221,127,240, -176,221,147, 39,113, 8, 12, 14, 65,245, 26,161,208, 17, 87,156, 58,123, 30, 5,202,172,141,246,164,243,133, 40, 22,201,207,207, -191, 52,116,232,208,174, 23, 46, 92,224, 13, 29, 58, 84,151,147,147,115,177,248,185,169,188,232, 85,105,205, 75,191,244,207, 6, -176,177, 90,251,209,219,159,153,149, 19, 1, 44, 12, 10, 14,194,153,243,151,113,249,194,213, 95,114,100, 65,115,222, 25, 49,122, -108,181,190,252,247,250,182,168,198,247,114,149, 97,235,234,239,249,251, 47, 39,254,144,152,107, 91, 11,224,107,123,206, 81,201, - 13, 67, 99, 70,171, 58,110,176,216, 40, 56, 90, 88,209, 58, 58, 8,203,172,112,203,210, 20,152, 36,239,140, 31, 55,238, 73,100, -189, 6,159,140, 24, 61, 94,212, 32, 36, 16,215, 30, 43, 1, 66,224,230, 35, 71,122,122, 58,206,237, 92,109,205,127,246,232, 23, - 62,159,155, 91,149,178,148,151, 24, 93,171,212,118, 99,115,114,114,112,230,204, 25, 20, 27, 43, 79, 79,207, 50, 13,214,139,154, -185,153,105, 23,191,254,110, 85,171, 49,111, 13, 64,239,246,117,113,246,250, 19,152,138,230, 91, 42, 30, 18,254,244,242, 74,241, -196,161, 33,166, 9, 3,107,171,245, 22,113,226, 87, 9,170,115,165, 71,185,190,168, 73, 41, 53, 17, 66,246,199,196,196,180,174, - 95,191,126,181, 67,135, 14,229,221,191,122,244,227,210,233,152, 50,101,138,226,231,159,127,150, 81, 74, 47, 26,141,198,120,187, -242,206,195,214,155, 55,110,184,155, 45, 28,206, 95,189, 93,167, 83,171, 6,224, 40,112,253,250,117,172,253,117,173,225,238,157, - 91,139,181,153, 62,115,203, 27, 32, 82,222,241,180,253,137, 81,132,197,154,148,158,177, 42,188,195,127,185,120,254,236, 12,137, - 95, 99,132,247,252,162,239,179,219,251,251,250, 68,116,131, 71, 72, 75,164,221,217,143,139, 71,183, 28,226,172,214,105, 14, 28, - 47, 73,155,253, 72,107,239,245, 94,140, 68, 42,251, 40,162, 81, 59, 36, 39, 37, 34, 33,238,222, 70,125,110, 92,154,194, 39,124, - 99, 90,106,210,248, 26,117, 91,225,194,209,223, 63, 46,207, 96, 85, 86,230, 3, 61,165,171, 15, 29,220, 63, 44, 53,117,165,143, - 86,111,144, 80, 74, 13, 18,177, 32, 67,193,211,108,179, 55,157,148, 62, 48,203,221,170, 15, 28, 60, 98,252, 31,203,151, 47, 17, -122,187,200,144,145,111,128, 90,111,134, 70,103, 6,143, 16,212,242,147, 67,167,201,195,217,157,223, 89, 76, 5,249, 67, 41,125, -108, 46, 79,179,112, 61, 65,250,225,148,247, 79, 67,236, 28,232, 87,163,211, 23, 21, 70,231, 52,105,119,250, 76,121,255, 64, 24, -165,180,147,194, 59, 92, 83,144,249,232,203,242,242, 78, 72,225,245,253,102,135, 64,152,173,133,243,135, 89, 57,192,198,113, 69, - 81, 61,128,150,180,219,147, 74,242, 78,184,109,127, 92, 68, 90,166, 18,122,147, 5, 70,147, 21,102,139, 13, 60, 62, 31, 46,174, - 46, 8,173,222, 16,206, 46, 78,200,204, 72,195,229,147,251, 17,123,231,236, 69, 66, 49, 71,151, 21,123,210,158,115, 36,146,186, -132,249,250,249,240,210,213, 38, 72,197,124,220, 58,123,200,108, 49, 25, 23,219, 99,174,202,210, 84,230,230,253,240,201,212, 79, -135,175, 95,183,193, 39,170,134, 19, 82,115,244, 72,205, 54, 64, 99,176, 20, 25, 48, 14,198,130, 28,220, 57,181, 33,195,102,208, -252,240,175, 53, 88,156,213,102,138,121, 28,143,105,115,190, 67,124, 98, 18,150, 47,248, 52,179,160, 10,230,170, 44,214, 77,168, -254,123,213,246, 40,154,146,100,110, 98,197,207,219, 47, 54, 11, 82, 14, 28,165, 56,112, 53,163,164, 89,144, 43,234, 81, 25,253, - 68, 89,165, 38,188, 59, 49,154, 45,122,125,166,243,163,199,139,243, 1,128,207,231,151,188,138,251, 74, 25, 12, 6,211,203, 52, - 11,190,216,161,157,227, 56, 56, 57, 57, 65, 42,149, 86,185,233, 81,238, 29, 54,172, 73,251,126, 63,117,234, 63, 6, 39,246,172, -161,215,207,238,127, 95,151, 21,179,186,202,125, 16,242,243,239, 19, 66,226, 22, 47, 94,220, 96,237,218,181, 53,166, 78,157, 26, -191,233,167,217,203, 1, 32, 55, 55, 23, 0, 16, 29, 29, 77,223,127,255,125,163,193, 96,120,154,159,159,127,147, 82, 90,105,211, -129, 62, 91, 54,127,237,138,133,145, 41,207,210, 7,132, 68, 54,133,103,141,166,240,169,213, 12,249, 26, 51,174, 61, 78, 67,252, -195,147,120,120,126,231, 33,157,194, 58,187,170,105,174, 95,191,126, 32,143,199,171, 94, 80, 80,224, 19, 17, 17, 81, 95, 46,151, - 71,215,175, 95,191,161, 64, 32, 72,189,113,227, 70, 98, 85,180, 18,207,172, 55, 86,107, 63,122, 89,146,198,177, 67,124,134,174, - 97,146,198, 49, 90, 39,113,158,156,117,114,169,209,187,235,226, 31,168, 57,231,254,142, 13,234, 93, 91, 87,127,207, 31, 49,118, -138,237,158,202,117,162, 64, 42, 62,190,224,237,168, 42, 52, 63,241,210, 39,140,234,247,159,105, 26,138, 34, 87, 69,239,237, 10, -199, 43,149,183, 85, 0, 62,151,250,213,253,233,222,196,113, 95,215,107,210,106,100,219, 30, 67,121, 86,145, 2, 71,247,172,164, - 79,239,156,218, 33,160,182, 25, 58, 59,102,239,175,180,217,199,100,170,212, 92,149, 25,121, 73,145,183,223,241,219,175,111,239, -218,179,123, 65,255,190,253,220, 87,124, 53, 4,223,173,218, 11,185, 84, 2,202,113, 24,218, 49,104,208,195,223,186,245, 9,244, -118,240,223,117, 58,245,220,135, 75,238,125,174,211,153, 99, 43, 27,229, 90,100,152,207, 59, 58, 58,102,183,110,221,186,185, 68, - 34, 33, 57, 57, 57, 2, 47, 47, 47,171,179,179,179, 41, 53, 53, 85,103, 52, 26,119, 81, 74,181, 85,201,167,217,194, 33, 33,211, -128,125,187,119,225,246,213,147,120,248, 48, 70,243,240,193,195, 31,137,128, 46, 41,200,136,205,123,153, 99,199,149, 57,138,144, - 86,121, 20,161,150, 47,157, 31,125,240,187,246,161, 29, 63,110,225, 94,179, 21, 92,131, 11,199,232,168, 82,239, 33,229,250,142, -125,154, 52,209, 96, 74,239, 89, 94,246, 28,251, 5,212, 8,165,124, 49, 46,157,249, 3,148,227,126, 1, 0,202,113,191, 68, 95, - 56, 52,190, 89,207,247,224,230, 85,173,126,241,216,249,170,106,139, 4, 60,237,225, 93,235,247, 36, 36, 36,224,209,163, 71,120, -252,248, 49,242,242,242,176,117,107, 66,149,206,143, 54, 47,225,184,194, 61,164,219, 27, 67,222, 60, 48,104,216, 91, 14, 53, 66, -163,120, 97, 1,174,112, 87, 8, 16,243, 56, 17,177, 55,238,112, 49,215, 14, 25,204,234,172,254,186,188,132,114, 13,159,220, 51, -194,155,240,232,180,226,181, 5, 91,180,104, 21,246,233,188, 5,205,221, 61,189,202,172,199,115,179,179,196,159,125,184, 63,236, -242,149, 75,118,173, 69,200,217,108,185, 99,223, 30,202,241, 11, 23,242, 68, 73, 92,154, 20,158,236,194,135,168,194,207, 41,103, -173, 52, 98, 63,122, 64, 27, 88, 57, 14, 90,189, 25,106,173, 17, 42,141, 1,233, 89,185,184,125,231, 14,206, 30,216,143, 39, 49, -183,159, 90, 76,166, 99, 60, 30,217,169,203,136, 57, 91,181,150, 37, 65, 13,119, 55, 55, 60,205, 43,128,131, 88,128,196,216, 27, - 70,173, 90,181,229,101,203,145, 46, 39, 54, 93,238, 29,214,117,232,208, 97, 71, 58,118,235,235,220,164,101,103,153,135,147, 11, - 68, 2,138,184,132, 52,220,188,120, 68, 27,127,251,156,218, 98, 42,232,254, 42, 86,105,249,199, 26, 44,181, 38,187,195,187,239, -140, 59,202, 19,240, 37,160,156, 65,167,203,239,254,103,204,213, 95, 5,165,182,212,183,135, 15,120,238, 89,192,202, 81,233,240, -193, 71,245,165,159, 13, 44, 54, 42, 27, 62,248,162,174,176,226, 40,191,195, 94, 73, 19,222,239,199, 83,147,146,114,175,231,229, - 25, 79,255,217,145,125,165,215, 22,172, 96,180,160, 54, 60, 60,188,196, 84,241,249,124,216,108, 54,187, 43, 32,145, 68, 58,166, - 99,223,119,201,137,189,107,232,181, 51,123, 39,232,178, 98, 87,189,252, 49,165,102, 0, 87, 9, 33,247,102,204,152,209,196,219, -219,219,123,230,204,153, 14,106,181, 90,184, 98,197, 10, 67, 78, 78, 78,134, 90,173,190, 76, 41,213,219,175,121,211, 2, 96,160, -194,187,118, 7,186,107, 77, 23, 23, 15,255,174,206,158, 1, 53,149,217,207,158,170,178,211,142, 1, 56, 81, 52,193, 99,149,104, -216,176, 97, 8,143,199, 27, 10, 32, 82, 46,151,215, 82, 40, 20, 18, 74,105, 56, 33,228, 62,199,113,119, 34, 34, 34, 14, 2,168, -210,249, 75, 60,179,222,216,118,194,175,191,229,233, 56,145,137, 39,250, 45,241,204,122, 35, 0,100, 30,155,170, 3,176,207,187, -195,180,129,251, 47, 39, 46,191,159,239,252,113,214,233,249,251,171,154,102,101,202,173, 90,175,170,252,235,211,238,167, 2,120, - 91,238, 29,246,253,221,232,203,179, 8,133,208, 6,235, 55,186,204,184, 27,175, 66, 95, 40, 20, 26,252,253,253,203, 28, 45, 40, -145, 72, 12, 21,159,243, 51, 86, 0,107, 9,105,191, 97,247,246, 13,111,239,221,191,111, 65,219, 78,253,221, 29, 2, 2, 80,221, -139, 96,195,180, 70, 31,159,140,206,190,214,247,211,115, 63,199,167, 25,238, 80, 74,171,212,223, 69,163,209,196, 18, 66,242, 11, - 10, 10,250, 81, 74, 83, 8, 33,129,249,249,249,183, 44, 22,203,221, 42, 27, 1, 14,111,182,104,209,116, 43, 33, 68, 64,173,220, -162,203, 66,254,111,134,244,135,169, 47, 99, 40, 74, 19, 85,221, 9,147,102, 46,107, 84,179, 86,237, 70,197,107, 17,214,173,230, -136,113,159,127,223,168, 90,141,208, 70,255, 89,159,176,226, 81,132, 52,237,166,158,120, 71,117,137, 57,182,248, 43,247, 39, 23, - 39, 72,221, 2, 20,218,156,196,188,252,196, 27,139,117, 89,222,139, 95,102, 98,201,210, 36, 60,190,191,100,237,226,207,167,166, - 63,123,186, 86,155, 21,123, 15, 0,180, 89,177,247,100,222,181,191,202,201, 72,157,154,155, 21,191,248,101,143,133, 86,171, 77, -219,178,101,139, 75,171, 86,173,120,222,222,222,200,206,206,198,233,211,167, 57,142,227,158, 85, 85,171, 32, 55,254, 52, 33, 53, -221, 54,174,250,105,145, 72,238,216,211,106,181,250, 81, 10, 8, 4,130,116,147, 78,125, 68,195,147,127, 74,243, 18, 42, 41,151, - 28, 1,192, 43, 94, 91,144,227, 56,178,104,249,134, 68,161,131, 99,153, 77,170, 22,131, 70,198,113,156,221,107, 17,230, 39,221, -168,249,170,174,111, 66,233,156,250,141,155,127, 97,177,152, 13, 40,236, 15,102, 0, 96,160, 20,185, 60, 30, 57,203,231, 44, 71, - 85,127,226, 33,138, 16, 56, 81, 34,128,163, 84, 0, 2,130, 2, 85, 30,173, 74,159,171, 50,207,119,102,204,125, 66,218, 7, 31, - 54,109, 31,117,234,248,161,193, 54,155,173,122, 81,201, 73, 48,234,181, 59, 10,210, 93, 55, 82,122,221,138,127, 1,228, 79,214, - 31, 85, 14, 33,254,175,107,134,135,200,250, 5,248,123,143, 74, 72,204,186, 22,159,162,219, 88,122,249,155, 63,171,153,146,146, -125, 58, 54, 81,187,166,244,242, 55,175, 42,239,114,175,176,174, 14,114,249,231, 6,189,118,147, 54, 35,102,195,171, 60,158,132, - 16,103,137, 68,210, 80,161, 80, 8,115,114,114,174, 82, 74, 85,255, 75,231,189, 65,131, 6, 65, 60, 30,175, 58,199,113,222, 0, -156, 81, 56,202, 35, 71, 32, 16, 60,187,113,227, 70,162, 61, 77,132, 47,210,230,157,157, 30,157,186,212,157,116,236, 92,204,210, -162,230,195, 18, 2, 6, 47,113, 24,217,179,195,148,141,187,247,253,215, 40,194,127, 98,153,255,255,210, 36,164,189, 64,225,155, -243, 54, 79,236,252, 77,167, 48,131, 46, 39,237,217,251,231,239,102, 95,165,148,106,254, 76, 58,197, 98,241, 8,179,217, 44, 21, -137, 68,122,147,201,180,229,127, 37,239, 50,239,240,119,121,160,118,175, 36,193,129,220, 40, 61, 24,165,188,116,146,136, 8,145, - 44, 27,174,186, 28,143,220,170, 26,171,191,231,188, 19,126, 84, 84, 84, 27,145, 72, 20,100,179,217,100, 38,147, 73,167,215,235, - 19, 18, 19, 19, 47,149,183, 32,249, 95,157, 78,133,119,237, 37, 34,145,100, 34, 0,152,205,198,101, 5,153,177,147, 42,218,183, -188,237,255,233,215,166,103,141, 38,113, 2,190,208, 19, 69, 19,106,115, 86,107,118, 70,252,181,208,191, 43,157,175, 29,180,104, -121,132,191,226, 5,160, 51,211,100,154, 76,147,105,150,177, 45,143, 29, 79,166,249,119,106, 58,248,214, 9,116,240,173, 19,104, -239,254,101,109,207,142, 39, 5,123,149,255, 18, 48,139,201, 96, 48,254,134, 7, 59,142, 29, 5,198,223,137, 62,237, 65,202, 95, -185, 61,131, 65, 80,184, 42,117, 89, 21,160,221,161, 63, 66, 72,231,151,168, 96, 79, 48, 77,166,201, 52,153, 38,211,100,154, 76, -243,223,165, 89,153,246,107,211,244,200,154, 8,153, 38,211,100,154, 76,147,105, 50, 77,166,201,154, 8, 95,237,139, 7, 6,131, -193, 96, 48, 24, 12,198, 43,133, 25, 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, 96, 6,139,193, 96, 48, 24, 12, 6,131,241,242, 16, 74, 41,138,150,152, 34, 0,158,123,207, 96, 48, 24, 12, 6,131, -241,255, 98, 72, 94, 51, 47, 82, 98,176, 0,128, 82, 74,152,193, 98, 48, 24, 12, 6,131,241,119, 24,172,215,201,139, 60, 23,193, - 42,157, 57,118,170, 25, 12, 6,131,193, 96,252,127, 26,172,215,201,139,176, 38, 66, 6,131,193, 96, 48, 24,255, 51, 6,235,117, -241, 34,204, 96, 49, 24, 12, 6,131,193, 96, 6,235,175, 48, 88, 12, 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,183,240,151, 78, 52, 74, 8,233,204, 52,153, 38,211,100,154, 76,147,105, 50, 77,166, -201, 12, 22,131,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,152,193, 98, - 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, 57, 18,128, 82,122,194,110,145,151, 24, 77, - 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, 63,254,167,161,148,254,101, 47, 0,157,153, - 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, 12, 6,131,241,138, 97, 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,152,193, 98, 48, 24, 12, 6,131,193, 96, -188, 60,164,104, 52, 0, 8, 33,148, 82, 74,216, 33, 97, 48, 24, 12, 6,131,241,183,152,146,215,200,139, 16, 74,105, 73,134,152, -201, 98, 48, 24, 12, 6,131,241,119,154,171,215,197,139, 48,131,197, 96, 48, 24, 12, 6,131, 25, 44,102,176, 24, 12, 6,131,193, - 96, 48,131,245, 15, 48, 88,165, 51,198, 78, 49,131,193, 96, 48, 24,140,191,211,100,189, 22,121, 41, 54, 88, 12, 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, 55,240,151, 78, 52, 74, 8,233,204, 52, -153, 38,211,100,154, 76,147,105, 50, 77,166,201, 12, 22,131,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,152,193, 98, 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, - 57, 18,128, 82,122,194,110,145,151, 24, 77, 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, - 63,254,167,161,148,254,101, 47, 0,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, - 12, 6,131,241,138, 97, 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,152,193, 98, 48, 24, 12, 6,131,193, 96,188, 60,132, 82, 10, 66, 8, 45,250,191, 61,165,244, 44, 59, 44, 12, 6,131,193, 96, - 48,254, 95, 13,201,107,230, 69, 74, 12, 22,165,148, 20,255,101,167,153,193, 96, 48, 24, 12,198,255,183,193,122,157,188, 8,239, - 5,231,216,158,157, 98, 6,131,193, 96, 48, 24,127,151,201,122, 93,188,200,115, 17, 44,118,106, 25, 12, 6,131,193, 96,252, 93, -230,234,117,242, 34,204, 96, 49, 24, 12, 6,131,193, 96, 6,235,175, 48, 88, 12, 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,183,240,151, 78, 52, 74, 8,233,204, 52,153, 38,211,100,154, 76,147,105, - 50, 77,166,201, 12, 22,131,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, -152,193, 98, 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, 57, 18,128, 82,122,194,110,145, -151, 24, 77, 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, 63,254,167,161,148,254,101, 47, - 0,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, 12, 6,131,241,138, 97, 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,152,193, 98, 48, 24, 12, 6, -131,193, 96,188, 60,164,104, 52, 0, 8, 33,148, 82, 74,216, 33, 97, 48, 24, 12, 6,131,241,183,152,146,215,200,139, 16, 74,105, - 73,134,152,201, 98, 48, 24, 12, 6,131,241,119,154,171,215,197,139, 48,131,197, 96, 48, 24, 12, 6,131, 25, 44,102,176, 24, 12, - 6,131,193, 96, 48,131,245, 15, 48, 88,165, 51,198, 78, 49,131,193, 96, 48, 24,140,191,211,100,189, 22,121, 41, 54, 88,204,100, - 49, 24, 12, 6,131,193, 96, 38,235, 47, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,254,231,248, - 75, 39, 26, 37,132,116,102,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 6,139,193, 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,204, 96, 49, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, - 6,131,193,248,155, 32, 0,202, 28, 9, 64, 41, 61, 97,183,200, 75,140, 38,168, 76,159,105, 50, 77,166,201, 52,153, 38,211,100, -154,175,159,102,101,218, 85,241, 31,255,211, 80, 74,255,178, 23,128,206, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,255, -182, 23,107, 34,100, 48, 24, 12, 6,131,193,120,197, 8,202,250, 80,216,108, 94,166,213,106,245, 2, 0,129, 64,144,101,185,246, -165,111, 69, 34, 66,160,147, 21, 88, 83, 36, 56,198, 66,233,241, 50, 52,143, 91,173, 86,215, 34,205,124,203,181, 47,187, 85,168, -217,244,155,163,207,109,127,117, 70,151, 50,226,139,124, 97,211,111,210, 94, 72,171, 95, 21,194,119,182,255,143,116,254, 83, 52, -255,205,136,154,207,203,180, 88, 10,203,145, 80, 40,200, 50, 95,173,184, 28,137,154,125,147,246,220,246, 87,102,120, 87,164, 41, -147, 74,114,107,250,123,254, 80,145,102,124, 90,206,100,173,206,224, 94,145,102, 85,175,205, 64, 95,223, 78,182,162,107,147, 15, -140, 73, 73, 75, 59,254,191, 84,150, 8, 33,141, 1,124, 9,192,169,212,199,119, 40,165,159,176, 82,201, 96, 48, 94, 59,131,101, -181, 90,189,110,238,153, 5,173, 17,232,244,214, 55, 94, 33,253, 87,109,253,175,109, 12,249, 98,229,253,109, 81,124,139,218,213, - 83, 96,118, 74, 75, 75, 35, 69, 21,230, 26, 0, 65,101,104,186,222,220, 51, 11, 58, 19,208,118,216, 28,215, 32,192, 41, 91, 36, -154, 34,149,203, 59,232,245,250,186, 0, 32,149, 74,239,235,181,218,211,158,102,243,247, 47,110, 95, 94, 6, 74,167,181,227,200, -111,188,194,251,175,250,216,198,113,226,103,215, 87,182, 53,228,196, 9,132, 86,227,138, 47,128,195,179, 0,155, 61, 7,228,185, -223, 29, 60,221, 93, 8,116, 20, 59, 56,212,119,113,117,109,195, 81, 90,135,227, 56, 98,179, 90, 31,168, 85,170,243,156,213,122, -219,106,210,186,223,220,191,128,171, 40,157, 47,230,101, 48, 32,216, 3, 12,146, 43, 20, 29,248, 66, 97, 75, 0,176, 89, 44,151, -180, 5, 5,167, 7, 0, 59,237,201,187,189,199,231,101,183,255,183, 97,177, 88,189,158, 30,157, 5,163, 5,104,248,198, 2,175, -122,111,110,220, 10, 0,166,172,219,222, 5,113,251,155, 1,128,188,102,239,171, 18,159,134,153, 0, 32, 72, 74,247,138, 61, 56, - 3, 70, 11, 80,167,247, 28,175,202, 52, 71,207,220,238,254,217,216,129, 18, 0, 56,182,235,167,218,167,118,255,210, 3, 0, 58, - 14,124,255,112,215, 55, 62,140, 5,128, 69,171,119,187,255,190, 96, 72,133,154,246, 93,155, 42,145, 42,238, 96, 45,147, 58,221, - 37, 80, 46,240,137,139,139,227, 1,128,159,159,159, 93,215,102, 0,224,156, 14,124,192,227,243,219,212,172, 85,171, 33, 0, 26, -255,228, 73,180,205,106,189,224, 11,172,120,197,101,233, 99, 74,105,159, 23, 76, 23, 43,144, 12, 6,227,245, 52, 88, 0,160, 53, - 2,103, 31, 3,237,154,215,195,216, 55,123, 42, 74,127,183,115,213,156,160,184,235,251,194,127,221,248, 61,175, 94,189,122,120, -250,244,169, 93, 63,166, 51, 1,103,226, 0, 40, 31, 58,230,203,229, 79,150,124,247,157, 83,151, 46, 93, 4,126,126,126, 32,132, - 32, 35, 35,163,249,137, 19, 39, 26, 79,154, 52,105, 60,148, 15,243,117, 38,104,206,196, 85,174, 91,156,214,186,181,171,225,203, - 15,135, 56, 3,192, 23,111,173,104,124, 61, 38,211,237,201,147, 39,157, 62,255,252,243, 92,254,233,211,191,120, 0,235, 51,129, - 20,123,210,185,233,192, 85, 7,231,244,223, 66, 70,124,248,225,174, 90,181,106, 41,130,131,131,137,163,163, 35,248,124, 62,242, -243,243,131,238,221,187,215,227,218,181,107,218, 19,103,215,136,111, 92,235, 27,159,229,208,204, 96, 87,222,245,105, 14,199, 28, - 29,239,143, 28, 48, 32, 96,200,144, 33, 14, 53,107,214, 4, 0, 60,121,242, 36,116,231,206,157,195,118,237,218, 53, 19,250, 52, -171,206, 4, 67,101,121, 47,209, 4,224, 0,180,116,241,242, 26,193, 23, 10,235, 90,173, 86,255,162,232,194, 51,155,197,114, 95, -153,149,181,229,197,237, 25,255,141,209, 2, 60, 76, 7, 58,183,105,136,145, 3, 59,203, 1,224,243,161,243,154, 39, 37, 60, 22, -153, 76, 38,212, 14,171,211,234,235, 5, 63, 28, 5,143,135,205,187, 79,148,108,111,143,230,157,135, 79, 49,235,235, 37, 72,187, -187,179,185, 77,245,184,131, 70,173,226, 3,128,147,179,243,192,157,219,126, 59,237, 23, 53,232,202,227, 28,179, 93,154, 21, 93, -155, 71,182,253,232,155,122,239,116,196,207,199,214, 9,131,130,130,112,247,238,221,170, 93,155,170, 24, 71,206,215,247,193,247, -159,126,234,211,182,109, 91, 40, 20, 10, 8, 4, 2, 88,173,214,206, 23, 46, 92,232, 60,107,214,172,247,161,138,209,218,123,109, -218,193,247,132,144, 14,163,199,126,236,219,179,223, 32, 12,236,222,138, 21, 68, 6,131,241,250, 26, 44,129, 64,144,213,101,212, -124,175, 54,205, 34,113,253,118,172, 42, 49, 57,189,160,248,187,188,251, 59,107,247,107,229, 31,113,238,220, 89, 24,141, 70, 92, -186,116, 9,183,111,223, 70, 66, 66, 2,198,141, 27,103, 20, 0, 99,202,209,204,111, 59,108,142, 43, 84,113,138, 80,113, 76,245, - 19,143, 30,241, 13, 6, 3,206,157, 59,135,252,252,124,136,197, 98, 4, 4, 4,160,107,215,174,130, 71,143, 30,185,117,234,210, -221,185,109,247,225, 79,225, 28, 90, 32, 16, 8,242,203,205,128, 64,144,213,233,173,111,188, 34, 66,171,225, 73, 98,154,234,203, - 5,191, 22,112, 28, 21,196, 39, 36,153,207,158, 61,139,134, 13, 27,226,248,241,227,238,121,121,121, 95,173, 88,177,226, 75,225, -183, 63, 47,179,152,114,167, 86,160,151,223,118,216, 28, 87,247,172, 29,193,167,142,236, 21,221,191,127, 95,180,114,229, 74,228, -230,230, 66, 44, 22,195,197,197, 5, 62, 62, 62,168, 93,187, 54,249,226,139, 47, 20,189,123,223,199, 71, 99, 6, 5,155, 67,222, -139, 41, 47,157, 37,121, 47, 72,146,121,168,143,213,220,253,199, 31,188,214,173, 91, 63,247,152, 94,163, 70, 13,116,235,214,205, - 97,196,136, 17, 53,135, 12,123,147,107,219,107,244, 19, 40,130,117,149,106,106, 83,164,238,186,203,126,157,135, 13,219, 63,103, -206, 28, 23, 31, 31, 31,200,229,114, 0,128, 74,165, 10, 72, 76, 76,108, 62,115,230,204, 55,174,222,217, 38,104,219, 59, 37, 13, -242, 64,125, 69,199,243,223,138, 80, 40,200, 42,142, 26, 57,202,165,249, 41,169,153, 90, 0, 48,153, 76, 48,153, 76, 48, 26,141, -152,240,254, 56,254,152, 55,154,214, 10,110,243,241,173,132,103,153,121,117, 78, 92,113, 43,222,183, 50, 77,129, 46, 65,169, 76, - 62, 57,102,214,167,159,250,120,123,255,167,229,111,243,166, 77,252,188,188,188,206,179,102,205,138,160,178,246,202, 58,189,231, -184, 84,164, 89,209,181,169,140,253,163,250,215, 31,118,171,191,106,193, 65,216,108, 54, 92,190,124, 25,231,206,157,195, 15, 63, -252, 64, 15, 31, 62,172,114,146,203, 43,185, 54, 99, 28, 91,251,102,132,124,251,237, 46, 34,145, 72,176,111,223, 62, 60,122,244, - 8, 60, 30, 15,245,234,213,195,200,145, 35,209,185,115,103,159,177, 99,199,209,182,221,135,198,195, 57, 76,243,103,202, 18, 33, -132, 7,224,227,233,179,190,245,125,235,189, 15,176,232,235, 47,152,193, 98, 48, 24,175, 15, 69,163, 1,104,209,171, 29,165, 20, - 20,224,213,232,191,234,247, 29, 55,184, 63,106,244, 95,245, 59, 5,120, 20,224, 57, 1,213, 26, 52,104, 96, 81, 42,149,244,218, -181,107,116,194,132, 9,218,101,203,150,157,254,227,143, 63,118, 90,205,230,181,126,190,190,139, 41,192, 43,179, 71, 61,192, 11, - 6,156,101, 50, 89,118,114,114, 50, 61,116,232, 16,157, 61,123, 54,221,178,101, 11, 61,124,248, 48, 61,113,226, 4, 61,124,248, - 48,253,253,247,223,233,157, 59,119,104,108,108, 44,149,203,229,217,193,128,115, 5,154,124, 10,240,107,247, 95, 57,117,215,117, -203,156,176,254,171, 38, 81,128,239, 10,132, 55,104,208,192,182,115,231, 78,186,121,243,102,186,113,227, 70,122,231,206, 29,154, -147,147, 67, 5, 18,121,118,241,126,229,165,147, 2, 60,127,127,255,108,165, 82, 73, 3, 3, 3,169, 88, 44,166,222,222,222,180, -118,237,218,180,121,243,230,180, 71,143, 30,244,205, 55,223,164, 95,125,245, 21, 85, 42,149,212,193,193, 33,179,120,191,242, 52, - 27, 2, 82,185, 92,158,124,243,230, 77, 90, 30,122,189,158,230,228,228,208,163, 71,143, 82,185, 92,158,220, 16,144, 86,164, 41, - 5, 26, 69, 69, 69,101,231,228,228, 80,179,217, 76,147,147,147,233,189,123,247,232,163, 71,143,104,114,114, 50,213,235,245, 37, -218,177,177,177, 52, 36, 36, 36, 91, 10, 52, 42, 87,243,223,252, 42, 46, 19, 47,188,130,188,189,123,248,248,248,232,119,237,218, - 69,159, 61,123, 70, 55,108,216, 64,121,192,188,255,218,182, 2, 77, 49,208,181,117,235,214,182,203,151, 47,211, 91,183,110,209, -105,211,166,209,110,221,186,209,238,221,187,211, 89,179,102,209,212,212, 84,154,154,154, 74,123,244,232, 97, 19, 3, 93, 43, 43, -159,101, 93,155,206, 64, 80,239,222,189,245,102,179,153,198,199,199,211,186,117,235,166,242,129, 17,114, 32,162, 29, 32,169,172, -124,250, 3,174,190,190,190,233,151, 47, 95,166,187,119,239,166,193,193,193,217,124, 96,180, 19, 80,195, 9,168,193, 7, 70,215, -168, 81, 35,251,242,229,203, 52, 55, 55,151, 6, 5, 5,165,251, 3,174, 47, 91,150, 80, 56, 7,223,186,233,179,190,165, 49,169, - 90, 58,125,214,183, 20, 64, 50, 45,252,242, 56, 43,147,236,197, 94,255,190,215,127,121,145,127,248, 75, 80,202,104, 17, 66, 8, - 69,225,220, 88,101,162,231,243,231, 47, 90,180, 72, 96, 48, 24,240,235,175,191,106,134, 15, 29,186,219,197,197,197, 42, 20, 10, - 65,120,149, 15, 72,204,150, 72, 38,126,183,104,145,139,201,100,194,141, 27, 55,208,184,113, 99, 72, 36, 18,136, 68, 34, 8,133, - 66, 8,133, 66,248,250,250, 34, 43, 43, 11,117,235,214,197,103,159,125,230,188,112,254,252,137, 48, 26,191,174, 72,151,227,168, - 0, 0,108, 28, 39, 22, 1, 99,235, 55,105,178,248,139, 47,190,224, 57, 57, 57,193, 96, 48,192,104, 52,226,209,163, 71,112,119, -119,135, 76, 42, 19,192,168,173, 52,173, 60, 30,143,167, 80, 40,112,234,212, 41,172, 94,189, 26, 9, 9, 9, 72, 79, 79,135,163, -163, 35,234,214,173,139, 58,117,234,160, 93,187,118,136,143,143, 7,177,163,211,200, 3,129,224,131, 9, 99,198,120, 53,108,216, -176,204,239, 13, 6, 3,148, 74, 37, 84, 42, 21, 2, 2, 2, 48,104,208, 32,175,223, 54,111,254, 0, 86,235,247,101,109,239, 14, -248, 4,132,134,238,191,118,237,154, 7,165, 20,155, 55,111, 70, 65, 65, 1, 76, 38, 19,120, 60, 30, 28, 28, 28,224,234,234,138, -142, 29, 59,194,211,211, 19,161,161,161,216,190,125,187, 71,143, 30, 61, 14,186,103,101, 53,202, 5,210,216,227, 69,229, 36,101, -102, 30,235, 10,120,140,120,243,205,195,183,239,220,105, 51, 98,196, 8,100,102,102,126, 33,156, 54, 77,105, 1,150, 84,182,127, - 24,224,236,230,235,187,254,219,111,191,229,101,100,100, 96,202,148, 41, 57,105, 73, 73,211,156,129,243, 0,112,242,200,145, 54, - 91,182,108, 89,184,121,243,102,143, 77,155, 54,241, 26, 54,108,184, 62, 44, 57,185,110, 12,160,170, 74, 58, 53,192,199, 75,151, - 46,117, 48, 24, 12,232,210,165, 75,188, 67, 66, 66,125, 43,160,183,119,255,116,224,131, 31, 62,251,204, 71, 34,145, 96,202,148, - 41, 57,186,164,164, 72, 43,144, 93,106,147, 68,207,167, 79,143,188,245,214, 91,247,238,220,185,227,177,100,201, 18,159, 55, 6, - 12,248, 0,192,188, 42, 68,172, 74,119,104, 15, 29, 61,246, 99,239,134, 77, 91, 96,211,218, 21, 88, 48,231,243,245, 0, 86, 17, - 66, 62, 4,240, 29, 43,121, 12,198,191, 54,232, 83,169, 23,249,199, 53, 17, 22,101,168,125, 69, 27,187,186,187, 55,142,140,140, -196,185,115,231, 16, 21, 21,117,205,197,197,197, 42,146, 72, 32, 20, 10, 65, 57,174,210, 31,147,202,229,157, 58,119,238, 44,184, -114,229, 10, 66, 66, 66, 32,149, 74, 75,140, 85,241, 75, 36, 18,193,215,215, 23,106,181, 26,157, 58,117, 18, 46, 95,190,188, 83, -101, 6, 11, 0,146,226,238, 41,178,175,124,251,230,154, 13,235,107,180,109,219, 22, 42,149, 26, 28,199, 65, 38,147,193,100, 50, - 65, 32, 16, 20, 54,245, 88,168,218,158, 3, 99,179,217,108,124, 62, 31, 33, 33, 33,152, 63,127, 62, 12, 6, 3, 68, 34, 17, 0, - 64,173, 86, 67,169, 84,226,222,189,123, 72, 76, 76, 68,209, 83,119,133, 56, 58, 59,247, 28, 50,100,136,184,172,239,140, 70, 35, - 84, 42, 21, 84, 42, 21,148, 74, 37, 12, 6, 3, 90,180,104, 33,254,227,224,193,158,200,205, 45,211, 96, 25, 29, 28,222,216,180, -105,147,151, 88, 44,134, 94,175,135, 70,163, 65, 74, 74, 10,146,146,146, 12, 89, 89, 89, 86, 71, 71, 71, 94,112,112, 48, 79, 34, -145, 72,250,247,239, 79,212,106, 53, 8, 33,232,221,187,183,251,214,205,155,135, 0,248,129, 93,202,246,113, 12, 48, 54, 50,153, -250, 52,107,218,244,212,181,235,215, 27, 78,156, 56, 17,119,238,220,249, 86,182,109,219, 89, 29,112,187,162,125,227,129, 15, 22, -151, 50, 46, 52, 41, 41,202,252,130,113, 9, 46, 52, 46,119,139,141,203,224, 42, 26,151,162,242,213,196,215,215, 23,135, 15, 31, - 70,114, 66,194,231, 85, 49, 87, 0,192,227,243, 91,183,109,219, 22,251,246,237, 67,106, 82,210,231, 47,152,171,194, 7, 36, 32, - 91, 16, 31,255,249,250,245,235,215,189,243,206, 59,224, 11, 4,173, 97,181, 86,229,103,254,171, 67,251, 59,227, 38, 98,253,234, -229,235, 1,188, 71, 41,229, 0, 92, 99, 37,142,193,248,247, 98,143, 23,249,167,192, 43,237, 26, 1,156,169,104, 99, 47, 47, 47, -127,133, 66,129,180,180, 52,212, 9, 15,207,146, 72, 36, 16, 11,133,112, 16,139,237,250, 49,157, 78, 23,229,231,231, 7,149, 74, - 5, 15, 15, 15,136, 68,162,146,151, 88, 44, 46,121,239,232,232, 8, 30,143,135,160,160, 32,232,116,186,168, 74,117, 51,239,121, -109, 91,254,254,132,203,103, 15,215, 24, 48, 96, 32, 92, 93,221, 16, 24, 24, 0, 47, 47, 47, 72,165, 82, 4, 6, 6,162,102,205, -154,244,251,239,191,135,204,171,158, 93, 21,120,105,211, 36, 16, 8, 96,179,217,144,153,153,137,152,152, 24,220,185,115, 7,151, - 47, 95,198,173, 91,183,160,209,104, 96,135,191,130, 78,175,175, 47, 16, 8,202, 52, 87, 74,165,178, 36,122,165, 84, 42,145,157, -157,141,196,196, 68, 20,104,181, 13, 42, 48,187, 3, 35, 35, 35,249, 0, 32,149, 74,209,160, 65, 3,172, 90,181,202,122, 96,239, -222,161, 17,151, 47,187, 5, 30, 61,234,178,102,229,202,161,131, 6, 13,178, 93,185,114, 5,106,181, 26, 15, 31, 62,132,167,167, -167, 64,236,224, 48,132, 93,198, 85,227, 38,160,245,208,104,186,183,108,217,242,169, 74,165,194,119,223,125,199, 19, 58, 58,174, -158, 3,240, 43,220,145,207,111,213,182,109, 91,236,223,191, 31,105, 73, 73,211,146,202, 48, 46, 73, 64,118,114,124,252,180,245, -235,215,163,107,215,174, 32, 2, 65,149, 59, 34, 53,111,222, 60,146,227, 56,220,189,123, 23, 46,192,213,170,238, 95,179, 86,173, -134, 10,133, 2,143, 30, 61,130,188, 40,186, 86, 22,114,224,124,116,116, 52,164, 82, 41,234, 68, 68, 52,170,226,207,124, 79, 8, - 73,127,103,220, 68,236, 62,114, 17, 0,176,126,245,242,204, 82,230,138,193, 96,176, 8, 86,165, 94,228, 31,103,176,236,204, 56, - 0, 64, 40, 20, 66, 44,145, 64, 44, 22, 23, 26, 35,137,164, 42,238, 20, 14, 14, 14, 37,134,170,180,177, 42,253, 94, 38,147,217, -101, 92, 0, 32,255,241,145, 54,239,189,251,142, 88, 34,145,192,100, 50,130, 82, 10,137,196, 1, 46, 46, 46, 8, 9, 9,129, 90, -173, 70,203, 86,237,140, 41, 74,209, 65,247, 58,253,239,188,204,129,178, 90,173,208,106,181,200,207,207, 71, 94, 94, 30,212,106, - 53,244,122,189,221, 67,202, 57,142,227,167,164,164,224,183,223,126, 67,110,110, 46,128,194, 14,212,197,166,170,248,239,211,167, - 79,177,121,243,102, 36, 36, 36, 84,233,252,180,105,211, 6, 7, 15, 30,228,183,239,212,105,237,241,224,224,180,227,193,193,105, -237, 59,117, 90,187,127,255,126,190,191,191, 63, 18, 19, 19,113,227,198, 13,228,231,231, 23, 23, 96, 70, 21,121, 2,228,235,242, -242,222,249,226,139, 47,168, 66,161,192,119,139, 23,215,159, 7, 12,183,215,184, 56, 87, 96, 92,156,255,156,113, 1,165, 20, 28, -199,193,102,179,189, 84,222, 8, 33, 68, 40, 20, 86,117,138, 4, 82, 5,253,146, 14,237,159,125, 53, 31,135,246,237, 44,254, 42, -142,153, 43, 6,131,241, 58, 34, 40,229, 24, 43,189,241,102,102,102, 62,211,106,181, 53,130,131,131,145,154,154,234, 21, 20, 20, -148, 36, 22, 10, 33, 18,139,237,234,131, 37,147,201,238,166,165,165,181,242,247,247,135,213,106, 45, 49, 83, 47, 54, 17, 22, 71, -101,110,221,186, 5,153, 76,118, 23,134, 10,103, 64,128,205,148, 95,173, 81,163, 70, 37,145, 32, 23, 23, 23,184,184, 56, 67, 34, -113,192,140, 25, 51,184, 37,223,127,191, 34,168,227, 28,213,219,147,190,160, 95,204, 91,251, 74, 15,160,189, 55, 36,153, 76,118, - 55, 48, 48,176,133,179,179, 51,118,239,222,141,196,196, 68,228,231,231, 67,167,211,193,104, 52, 66,167,211,193,100, 50,193,193, -193, 1, 17, 17, 17,112,114,114,194,137, 19, 39,238,194,104, 44,219, 84,230,230,238,190,123,247,110,139,166, 77,155,150, 68, 80, - 58,116,232, 64, 58,116,232,224, 81, 18, 53,211,233,144,147,147,131,107,215,174,225,196,137, 19, 32,132, 32, 46, 46,206,102,212, -235,127,103, 69,255,229, 48, 0,151,248,235,215,175, 27, 63,126,252,187,173, 90,181,130, 13,232, 1, 96,243,223,101, 92,138,185, -124,249,242, 61,155,205,214,170,118,237,218, 80, 2,205, 0,236,171,146,121,124,252, 56,218,106,181,118,170, 95,191, 62,118,239, -216,209, 6, 64, 98, 89,219,105,129, 54, 13, 27, 54,132, 94,175,199,195, 7, 15,110, 86,193, 92,173,157, 62,235,219,209,111,189, -247, 1, 54,173, 93,129,245,171,151,167,172, 91,181, 44, 16,128,153,149, 42, 6,131, 81, 21, 47,242, 90, 70,176, 84,249,249, 55, -163,163,163,209,168, 81, 35, 60,121,242,164, 41,229, 56,129, 72, 44,134, 88, 36, 2,207,142, 27,136, 94,171, 61,121,242,228, 73, -107,131, 6, 13, 80, 80, 80, 0,129, 64,240, 92,244, 74, 44, 22, 67, 40, 20, 66, 32, 16, 64, 38,147, 97,207,158, 61,102,189, 86, -123,178,210,232,144,141,179,241,120,188,146,155,152, 82,169,132, 78,167,199,252,249,243,241,227,247,223,191,105, 3, 38, 9,229, -158,250,191,243, 64, 27,116,186, 83,135, 14, 29,178,212,168, 81, 3,163, 71,143,198,164, 73,147, 48,105,210, 36,140, 31, 63, 30, -163, 71,143,198,200,145, 35, 49, 96,192, 0, 52,107,214, 12,158,158,158,136,137,137,177, 24,116,186, 83,229,233, 73, 12,134, 93, -163, 70,141,202, 42, 54,102, 90,173, 22, 26,141, 6, 42,149, 10,217,217,217,184,120,241, 34, 54,109,218,132,239,191,255, 30,123, -246,236,129,209,104,132,217,108,198,173, 91,183,242,229, 22,203, 14,118, 41,191, 60, 66, 96,247,133, 11, 23,224,230,230, 6,191, -128,128,118,118, 24, 23,212,175, 95, 31, 42,160, 77,185,215,214, 75, 24,151,231,140,143, 70,115,253,233,211,167,104,223,190, 61, -124, 3, 2,190,141, 0,164, 85,217,223,102,181,158,191,112,225, 2,222,122,235, 45, 4,215,168,241,173, 39,224,249,226, 54,158, -128,103,245,154, 53,191, 29, 61,122, 52,142, 29, 59, 6,155,213,122,190, 2, 83,213,152, 16,178,159, 16,114, 22, 64,226,232,177, - 31,143,126,161, 67,251, 96, 66,200, 22, 0, 83, 89,137, 98, 48, 24,175, 35, 85, 50, 88, 82,155,109,250,212,169, 83, 45, 60, 30, - 15, 3, 7, 14,116,220,183,127,255,160, 91,183,111,135,100,101,101,185,216,108,182, 74,181, 60,141,198,101, 83,167, 78, 85,154, - 76, 38,132,133,133, 33, 47, 47, 15, 54,155, 13, 2,129, 0, 2,129, 0,132, 16,240,120, 60, 40, 20, 10, 68, 71, 71, 99,221,186, -117,106, 79,163,113, 89,165, 55, 7,155,237,238,230,205,155,193,231,243,169,131,131, 3, 8, 33, 16, 8, 4, 88,178,100, 73,214, -143,192,110, 0,224,243,120, 38, 0,224,241,136,189,189,114, 43,109,159, 20,139,197,224, 10, 59,247, 87,186,173,171,209,184,116, -209,162, 69,154,135, 15, 31, 66,171,213,150, 68,219, 10, 10, 10, 74, 58,205, 43,149, 74, 16, 66,160,213,106,177,127,255,126,141, -171,209,184,180, 60,189, 92, 32, 35, 53, 46,174,111,211,166, 77,115,159, 62,125, 10,149, 74,133,187,119,239,226,196,137, 19,216, -190,125, 59,142, 29, 59,134,199,143, 31,195,106,181,194,223,223, 31,148, 82,236,221,187, 87,101,213,104,122,228, 2, 25,172,232, -151, 79, 53, 31,159, 78,222, 94, 94,201,158, 30, 30,169,213,124,124, 58,189,248,189, 51, 16, 27, 27, 27, 11,171,213,138,144,144, - 16,183,138,250, 97, 81,171,245, 66,177,113, 9,172, 81, 99, 97,112, 25,198, 37, 24,240, 12,174, 89,115, 97,177,113,161, 86,235, -133,170,166,217, 17, 88,254,233,167,159,234, 69, 34, 17,182,109,219, 22, 98,169, 85,235,145, 0, 24,174, 0,194,219, 3,162,202, -246,247, 5, 86,124,245,213, 87, 25,132, 16,108,217,178,197,195,185,102,205,123, 2, 96,148, 51, 80,205, 25,168, 38, 0, 70, 57, -215,172,121,111,219,182,109, 30, 86,171, 21,147, 38, 77,202,240, 5, 86, 84, 32,249, 49,165,180, 15,165,180, 45,165, 52,112,221, -170,101, 56,180,111,103,177,185,122,143, 82,122,141, 82, 58,146, 82,122,143,149, 56, 6,131,241, 58, 66,202,234,231, 36,108, 54, - 47, 19,160, 94,237,154,215,195,245,219, 49, 42, 15, 87,167,163,197,223,229,221,223, 89,187, 99,148, 83,189,159,127,254, 25, 66, -161, 16, 41, 41, 41,120,240,224, 1,156,156,156,240,230,155,111, 26,245, 26, 77,223,226,181, 8, 9, 33,157, 41,165, 39,138, 52, - 11,215, 59, 83,197, 41,106, 10,238,212, 56,114,232, 32,223,217,217, 25, 5, 5, 5, 37,211, 10,200,100, 50, 72,165, 82,220,184, -113, 3,189,250,244,179,101,203,218,150, 76, 52, 90,188,222, 89,105, 77, 16,194, 7,128,102,128, 44, 26,152,226,229,231, 55,245, -203, 47,191,148,118,235,214, 13, 34,145, 8, 1,213, 66, 51, 66,186,127,183,156,199, 35,214,212, 92,245,140,154,213,252,156, 31, -196, 37, 2, 32,133,107, 22, 22,173, 69, 88, 86, 58,131, 76,103, 67,246,108,252,222,169, 65,131, 6, 37, 81,177,204,204, 76,100, -101,101, 65,169, 84, 66,171, 45,156,234,225,224,193,131, 56,116,238,145, 90, 31, 48, 40,190,188,116,254, 39,239, 49,142,126,230, -171,213,183,110,222,200,247,244,244, 68,102,102, 38,178,179,179,161, 84, 42,161,215,235, 97,179,217,144,151,151,135, 95,215,111, -180,229, 42,218, 38, 20, 79,228, 88,161,166, 54, 69,234, 86,112,209,191, 97, 68, 48,125,247,221,119, 29,157,156,156,192,113, 28, -242,243,243,145,156,156,140,167, 79,159,226,220,185,115,218, 44,165, 9, 90,143, 46,169,197, 19,141,150,121, 60, 95, 85,161,250, - 39,106, 22,149, 37, 0,240,243,245, 77, 75, 74, 74,242,178,217,108,240,247,247,183, 42,243,242, 22,138,129, 99,142, 64, 58, 0, -154, 3,124,185,116,249,242,119,250,245,235,135, 38, 77,154,164,100,100,102, 86, 47,171, 44,129, 16,126, 24,224,172, 11, 8,184, -127,237,218, 53,159,228,228,100,188,245,214, 91, 57, 73, 79,158,148, 76,211,160, 2,218, 4,215,172,185,112,219,182,109, 30, 53, -106,212, 64, 84, 84, 84,134, 67,241, 52, 13,101,151,207,114,175, 77,101,236, 31,213,223, 31, 16,217,100,194,132, 9,176, 90,173, - 56,119,238, 28,174, 94,189,138,164,164, 36, 92,188,120, 81,233, 36,151, 15, 45, 94,139,176,188,242,217, 35, 84, 27,178,101,203, -102, 34, 18,137,176,126,253,122, 68, 71, 71, 3, 0, 26, 54,108,136,209,163, 71,195,106,181, 98,196,136,145,244,143, 24,105,124, - 69,229,147, 16, 18, 9, 96, 49, 10,205, 93, 19, 74,169, 3, 33, 36, 13, 64, 96, 85,250, 92,177,242,201, 52,153,230,191, 71,243, -117,163,210,181, 8,191,249, 5,206,207, 47,199, 49, 38,109,231,170, 57,130,214,109,218,134,207,153, 61,139,215,180,105, 83, 4, - 6, 6,162, 97,195,134, 72, 78, 78,150,184,184,184, 84,182,222, 89, 65,219,238,195,159,214,171, 87,207,101,218,180,105,206, 93, -187,118, 21, 6, 6, 6,130, 82,138,232,232,104,236,222,189,219,188,118,237, 90,181,206,187,143,242,230,233,223, 10,236, 89,239, -236, 42,160, 3, 48, 55, 32, 45,109,245, 7,239,191, 63,171, 65,163, 70,239,206,158, 61,155,167,144, 73,133,243,103,188,231, 0, - 0,223,252,180,221,185,223,160, 55,177,180, 22,208,110,120,217,235,188,149, 78,103,114,234,152,164,158, 3, 58,213,154,242,225, - 59,182, 33, 67,134,200,157,156,156, 16, 24, 24, 8, 87, 87, 87,196,199,199, 35, 53, 53,149, 30, 56,112,160,224,242,173, 88,225, -222, 99,215,147, 28,156,125,237, 89, 55, 80,211,182,219,224,132,158, 61,123,186,142, 26, 53,202,177,113,227,198, 66,137, 68, 2, -137, 68,130,204,204, 76, 60,126,252,216,124,224,192,129, 2,157, 87,143,252,155,167,183,105,236, 92,139, 80,223,118,216,156,199, -231,143,207,158,116,255,238,221,145, 28, 80,223,108, 54,251,219,108, 54,194,227,241,210, 57,142,187,107,214,104,214, 25, 27,206, - 94,194,214, 34,180, 15,155,205, 38,178,217,108, 80, 42,149, 56,126,252,184,224,201,147, 39, 95,222,190,125,251,203,180,180, 52, - 88, 44, 22,188,241,198, 27,104,216,176, 33, 78,159, 62,141,236,204,204, 3, 21,105,197, 0, 42, 73,106,234,232, 49, 99,198, 28, -222,188,121, 51,239,246,237,219, 30,235,215,175,255,181, 44,227, 50,114,228, 72, 46, 51, 57,121,180,177,130, 57,176, 42,185, 54, -115,142,108,251,241,118,255,129,131, 34,102,207,252, 82,216,178,101, 75,120,120,120,160, 77,155, 54, 48,155,205, 46,117,234,212, -169,236,218,212,180,237, 62, 52,190,126,253,250,242, 37, 75,150,248,188,243,206, 59,248,240,195, 15, 1, 0,122,189, 30,199,142, - 29,195,164, 73,147, 50,146, 5,205,180,149,149,207,162,200, 84,177,241, 58, 11,160, 45,128,120,214,161,157,193, 96,252,171, 13, - 22,240,159,245,206,206, 95,189,135,210,203,113, 20,226,251,192, 26, 52,234,201,184,169, 11,163,248, 22,181,171,144, 24,156,226, - 98, 99, 73,101,107, 18,150,172,119,230, 28, 90,224,254,244,247,166,243,191,249,102,226,210,165, 75, 59, 21, 79,197, 32,147,201, -238,234,181,218,147,158, 70,227, 50,157,115,232,201,170,174,157,151, 10,100, 2,120,223,245,230,205,229,189,251,189,177,200,193, - 45, 68,248,197,188,181, 6, 62,143,103,122,156,150,141,165,181, 0,185, 29, 3, 30,117, 38,224,190,210,215,154,233, 62, 40,230, -171, 79, 63,157,242,205,220,185, 77, 21, 10, 69, 59,179,213, 26,202,113, 28,192,113,113, 58,173,246, 44, 53,155,175, 25, 27,206, -252,222,193,217,151,218,189,110,160, 75, 29,141, 91,194,206,166, 27,214,173,251,120,199,142, 29,255,149,119,119,163,113,185,206, -165,206, 9,123,242, 94,122, 27, 3,112, 9, 89, 89,151,202,125,218, 0, 91,139,208,238,139,130,227,198,186,186,186,110,234,212, -169,147, 67,231,206,157,209,171, 87, 47,180,108,217, 18, 28,199,129, 82, 10,141, 70,131,237,219,183, 99,209,162, 69,113,213,129, -185,149,233, 25,129,147,146, 67,135,122,212,175, 95,127,125, 69,198,165,200, 92, 85,218,231,176,226,107, 83, 18,103,117,238,155, - 56,236,131,249,181, 76,234,116, 23,119,153,213,231,254,189,187, 60,251,175,205, 48,141, 45,122,123,179, 55, 6, 12,248,128, 47, - 16,180, 41, 26,209, 72, 31, 62,120,112,179,120,177,103, 52, 28,125,188,138,101,169,120,238, 57,214,161,157,193, 96,252,187, 13, -150, 64, 32,200, 42,142,242, 8, 4,130,172,248,189,227,222,172, 72, 68, 8,116, 42,138, 92,161,210,181, 8,139,222, 39, 2, 26, - 24,141, 95, 63, 55,137,104,169,209,130,194, 23,182,175, 74,166,242,129, 24, 88,141,189,145,245, 0,216,255,126,161, 94,211,111, - 62, 47,157,167,114, 15,200,115,191, 43,202, 51, 0,231, 81, 80,112, 30, 5, 5,101,206, 46, 45, 20,136,242, 42, 75,231,139,121, - 79, 6,212,127, 54,239,130, 42, 30, 31,193,159, 56,158,255, 54,158,229,228,236, 5,160, 8, 56,120,208,251,200,193,131, 67,166, - 76,158,252,134,175,159, 95, 77, 15, 15, 15, 87, 71, 71, 71,222,149, 43, 87,158, 90, 13,134,229, 13,128, 13, 69,209,211, 74, 49, - 2, 39,195,146,147,235, 14, 30, 48,224, 3, 34, 16,180, 46,109, 92,168,213,122, 49, 4, 88, 97,180, 99,246,246,170, 94,155,129, - 18,223, 78, 69,145, 43,240,237,188, 54, 83, 11,211, 49, 15, 86,235, 60,220,185, 83, 70,153,175,114, 89,250,134, 16,162, 1,155, -161,157,193, 96,252,155,248,139,215, 21,234,204, 52,153,230,235,162, 89,232, 81,224,196,142, 39,211,100,154, 76,147,105,190,122, -205,215,237, 37, 96, 22,147,193,176,251, 97,196,134,255, 52,119, 49, 24, 12, 6,131, 81, 46, 4, 64,231,114,110, 38,118,143, 14, - 32,132,116,126,137,155,213, 9,166,201, 52,153, 38,211,100,154, 76,147,105,254,187, 52, 43,211,126,109, 70, 39,178, 38, 66,166, -201, 52,153, 38,211,100,154, 76,147,105,178, 38,194, 87,251,226,129,193, 96, 48, 24,152, 51,135,240, 0, 66,128, 57, 60, 96, 39, - 31, 24,204, 47,252,255,229, 25, 60,152,148, 57, 9,237,199, 31, 19, 71,118,196, 25,140,215, 27,214, 7,235,111,132, 16, 18,228, -227,227,179, 10, 0,201,200,200, 24, 75, 41, 77,102, 71,229,127, 15,119,119,247, 78, 86,171, 21, 42,149,234,228,235,152,191,186, -181,200, 0,202, 67,157,255,132,181,145,252, 32,142,110, 42,107,219,136, 80,242, 22,200,127,230,210, 34, 28, 30,222,127, 76,247, - 84,161,204,243,250,247,240, 92, 12, 0,123, 15,103, 79,253, 43,230,197, 34,132,212,246,244,244, 60, 42, 16, 8, 4, 54,155,237, -253,204,204,204,131,229, 27,160,193,124, 0,240,148,238,158,238,226,230, 49,237,171, 41, 68,104, 50,126,167, 52, 26, 12, 42,158, - 64,144, 32, 22,201, 46, 88,121,242,195,169,153, 61, 30,148,181,255,142, 29, 59,202, 93, 93, 59, 50,148,244, 8,143,136,232,211, - 40, 74, 26,191,120, 89,211,165,237, 66, 60,132, 79, 83,110, 41,126,217,148,188,202,211,213,191,207,196,247, 4, 7, 37,212, 54, -242,219, 95,105, 1,187,202,236,103, 1, 33,110,102, 32, 74, 40,145, 4,218,172, 86,111, 2, 80,190, 64,144,105, 49, 26, 83, 68, -192,157,105,148, 42, 95,119, 77,145, 68, 18, 96,179, 90,189, 1,224,127, 49,157,140, 74, 12,150,163,163,227, 13, 30,143, 23, 80, -122,145, 90, 94,209,130,206,197,159,149,254,142, 16, 2,155,205,150,154,151,151,215,184, 10, 21,161, 19,128, 33, 0,138,135,154, -111, 5,176,157, 82,170,126,201,138,213, 73, 36, 18, 77,149,203,229, 29,245,122,125, 93, 0,144, 74,165,247,181, 90,237, 41,179, -217,188,248,101,116, 9, 33, 2, 0,131, 21, 10, 69, 7, 30,143,215,129, 82, 74, 40,165,167, 11, 10, 10, 78, 1,216, 65, 41,181, -190,132,166,212,203,203,107, 94,120,120,248,240,233,211,167,231,186,187,187,135, 77,154, 52,233,186,167,167,231,111, 57, 57, 57, - 51, 40,165,250,255,133,194, 65, 8,169,233,227,227,179, 85, 40, 20,242, 83, 82, 82, 58, 0, 64, 96, 96,224,105,147,201,100,203, -202,202,122,147, 82,250,164,138,122,114, 0,205, 21, 10, 69, 99,133, 66,209,214,102,179,213,225, 56, 14, 28,199, 61, 44, 40, 40, - 56,103, 54,155,111, 0,184, 66, 41,213,254, 15,153, 96, 71, 47, 47,175,205,132, 16, 16, 66, 66, 41,165,154,215,173, 18,160, 60, -212,121,112,255, 81, 88,137,137,170, 27, 94,193, 1, 65, 80, 25,219,218,109,176,122,118,114,233,222,167, 79,125, 30, 0,152,205, -215,187, 3, 56,244,170,205,213,192,129, 3, 47,109,222,188,217,213,104, 52, 98,236,216,177, 91,157,157,157, 87,168, 84,170,233, - 21,237,231,232,232, 56,105,238,215, 63,201,138,234, 52, 47,142,227,188,210,211, 83, 66, 99, 30,221,237, 30, 19,115,111,190, 89, -187,231,138,153,242,199, 41,117,125, 31,217,147,142,136,154,164,119,191,193, 3,122,205,157, 59, 27,195,135, 14,175,118,255,190, - 65,234,239, 20, 47, 86,155,229,181, 60, 60, 2,250,126,254,197,183,228,202,229, 51,125,119,108, 95,123,234,243,119, 73, 71,102, -178,236, 58,183,228, 27,129,160,185,107,120,120,219,161,123,247, 66, 17, 24, 40, 16, 72, 36, 60, 0,176, 26,141,129, 5, 41, 41, -190,219,250,246,109, 54,135,144, 51,179, 40,189,202, 52,255,255, 53, 25,118, 26, 44, 30,143, 23,240,236,217, 51, 47,185, 92, 94, - 88, 9, 83, 10,155,205, 6,155,205,134,162,155, 34, 40,165, 37,127,173, 86, 43,194,195,195,237,122,130, 5,208, 17,192,219,237, -219,183, 31,180,120,241, 98, 97, 84, 84, 84,241,210, 30,109,190,248,226,139,159, 8, 33,187, 0,108, 0,112,210,222, 39, 92, 66, - 72, 55,185, 92,190,229,187,239,190,115,234,210,165,139,192,207,207, 15,132, 16,100,100,100, 52, 63,113,226, 68,227, 73,147, 38, -189, 79, 8, 25, 65, 41, 61, 90,133, 11, 58,210,209,209,113,231,128, 1, 3, 2,218,181,107,231, 16, 17, 17, 1,155,205,134, 91, -183,110,189,115,227,198,141, 97,187,118,237,154, 69, 8, 25,100,239,122,106,132, 16,162, 80, 40, 70,249,251,251,207,155, 57,115, -166,219,136, 17, 35,196,247,238,221,203, 15, 9, 9, 33, 23, 46, 92,240,220,190,125,251,251, 11, 23, 46, 28,236,232,232, 56,163, -160,160, 96, 35, 45,107, 29,163, 23,112,114,114,186,193,227,241, 2,236, 49,192, 0,236, 54,193,132,144, 6,213,171, 87,223,126, -254,252,249,234,137,137,137,182,254,253,251,111, 2,128, 83,167, 78, 69, 89, 44, 22,210,181,107,215,195,132,144, 33,148,210, 91, -118,230,189,158,155,155,219,190,225,195,135,187,213,172, 89, 83, 86,189,122,117, 34,151,203,193,231,243,161, 82,169,252,238,221, -187,215,249,234,213,171,250, 19, 39, 78,228, 17, 66,250, 82, 74,239, 84,225, 60,181,244,242,242, 26, 41, 20, 10, 35,173, 86,171, - 63, 0, 8, 4,130,103, 22,139,229, 94, 86, 86,214,102, 74,233,165,151,189, 64,188,189,189,127,156, 55,111,158, 71, 86, 86, 22, - 93,184,112,225,143, 0, 70,189,174,149,193,214,223,118,224,198,245,171, 0, 32, 34,132,144, 23,203, 31, 33,132,212, 9,133,232, -147, 79, 38,163,113,147,102,120,115,248,224, 74, 53,251,247,242,152, 43,230, 11,220,117, 38,227,213, 28, 21,111, 95,144,151,120, -192,136,193,141,227, 1,224,200,225,187, 3,154, 53,115,187,224,225,204,245,147,137, 37,205, 76, 54,107,238,222, 63,114,102, 86, -197, 76,249,251,251, 31,117,117,117,149,229,229,229,101,100,103,103,255, 50,112,224,192,111, 54,108,216,224,250,244,233, 83,164, -164,164, 96,226,196,137,138,212,212,212, 15, 36, 18,201,101,163,209, 88,110, 36, 75,163,209, 44,155,247,245,228,153,142, 78,174, -124,153, 84, 14,133,163, 19,170, 87, 15, 69,147,166,109,208,185, 75, 95,196,199,199, 52,223,254,251,218,104,126,250,206, 5, 54, -113,195,111,148,202,234,229,214, 75,117,195, 72,187, 98,115, 53,115,230,108,196, 62,122,164, 73, 76,224,125,244,199, 94,129,172, - 71,167,112,137,201, 92,144,120,229,242,153,234,205, 91,180, 7,128,198, 59,182,175, 61, 53,103, 4,233, 52,107,203,235,103,222, - 95,165,185,154, 43, 20,142,234,182,100,137, 87,195,247,223, 23, 21, 36, 36,152,227, 87,174,212,101,158, 59,103, 19, 72, 36, 52, -176,123,119,226,217,161,131,195,251, 15, 31,138, 46, 46, 92,216,118,190, 88, 28,242,133,201,180,133,105,254,255,105, 50,170, 96, -176, 8, 33,144,203,229,216,182,109, 27,132, 66, 33, 4, 2, 1,132, 66, 97,185,239,131,130,130,236,185, 72, 6,250,248,248,252, -180, 98,197, 10,239,110,221,186,193,193,193,161,228, 59, 62,159,143, 46, 93,186,160,115,231,206,194,180,180,180, 97,219,182,109, - 27, 54,127,254,252, 76, 66,200,135,148,210,221,149,232,118, 8, 11, 11,219,125,236,216, 49,169,193, 96,192,185,115,231,144,159, -159, 15,177, 88,140,128,128, 0,116,237,218, 85,240,232,209, 35,183, 46, 93,186,236, 38,132,244,166,148,158,182, 35,173,141,189, -188,188,206,238,216,177,195,161,126,253,250,228,241,227,199,104,216,176, 33, 0, 64,165, 82,161,127,255,254, 14, 35, 70,140,168, - 57,108,216,176, 43,132,144,118,148,210, 27,149,232, 53,242,241,241,217, 56, 96,192, 0,191,249,243,231, 59, 57, 58, 58, 34, 49, - 49, 49,221,199,199, 39,180,248,120, 15, 27, 54, 76,220,167, 79, 31,223, 69,139, 22, 45,219,185,115,231,167,132,144, 81,148,210, -155, 21,233, 22, 27, 97,153, 76,134,204,204, 76,108,221,186, 21, 31,124,240, 1,248,124, 62,178,178,178,176,125,251,118,124,244, -209, 71,197, 70,198, 46, 19, 44,151,203, 59,215,175, 95,255,215, 83,167, 78, 5,184,184,184,192,207,207,143,247,213, 87, 95, 69, -134,132,132, 72,171, 85,171,198, 79, 79, 79,199,238,221,187, 67, 70,142, 28,185,207,193,193,225, 29,131,193, 80,105,211,153,183, -183,247,186, 63,254,248, 35,232,254,253,251, 88,185,114, 37,242,242,242, 32, 22,139,225,226,226, 2, 31, 31, 31,132,134,134,146, -105,211,166,201,250,244,233, 35,251,240,195, 15,215, 1,104, 96,199, 57,170,239,229,229,181,106,216,176, 97, 33,115,230,204,113, -241,241,241, 65,241, 3,129, 74,165, 10, 72, 76, 76,108, 62,115,230,204, 65,222,222,222, 79,179,178,178,198, 81, 74,111, 87,177, - 82,111,208,169, 83,167,222,253,251,247,231,167,167,167, 99,243,230,205,189, 9, 33, 13,236, 53,149,255, 52,110, 92,191,138,177, - 19, 38, 22,248, 5, 6,138, 14,236,255,189, 95, 65,193,234, 11, 10,158,139, 0, 0, 10, 56,165,181, 85,115, 69,235, 62,125,135, -137,122,246,234, 95,176,250,231,101, 10,123, 12,150,152, 47,112,223,182,101,124,202,185,139,113,117,142,158, 72,236,220,191,111, -103,158, 64, 20, 86, 19, 0,166, 76, 30, 35,222,187,255,196,138,110,157,171,165,183,109, 21,154, 50,116,196,202,192,170,152,171, -218,181,107,159,137,142,142,246,150, 72, 36,200,203,203,115, 95,189,122,245, 15,173, 91,183,230,197,199,199,227,209,163, 71, 72, - 72, 72,128, 74,165, 66,151, 46, 93, 20, 55,111,222,252, 5, 64,185, 6, 43, 91, 63,112, 94,136, 87,206,114,127,119,215,234, 6, -179,202,203,102,205,141, 56,117,226,118,189, 93, 59,116, 13,189,124, 2, 66,135, 13, 27,139,207,167,127, 43,220,179,107,227,204, -179,231,142, 1,168, 94,254, 12,254, 20, 45,191,152, 49, 29,106,141, 17, 35,134,143,193,200,225, 99,220, 41, 76,190,212,102,144, -155,244,249, 46,206,162,251, 7, 55,254,190, 99, 0,128,128, 82, 38,235, 36, 51, 89,229, 51, 87, 32,104,214,251,167,159, 60, 35, -223,123, 79,114,123,206, 28,109,206,185,115,250, 90, 61,123,230, 55, 28, 63,222, 8, 0,154,132, 4, 81,236,172, 89, 50,207,182, -109,165, 45,166, 78,117,181,153, 76, 62, 95, 19,210,244, 43, 74,175, 85, 85, 51,104,200, 16,219,204,245,235,155,156,155, 60,185, - 61,177, 88,248,221, 91,180,184,181,112,243,230,103,127, 70,243, 85,166, 51,237,236, 89, 99, 94, 72, 8, 26,246,239,159, 27,228, -229,101,124,149,121,255, 51,233,100,148, 81, 79, 81, 74, 65, 8,105, 7,224, 12,128, 57,148,210,217, 0,224,226,226,146,169, 84, - 42,189,118,239,222, 93,169,185, 18, 10,133,240,245,245, 69,104,104,104, 86,102,102,166,119, 5,149, 98, 10,199,113, 1,148,210, -146,104, 75,121, 24,141, 70,196,197,197,161, 94,189,122,169,148,210,192,138,154,112,100, 50, 89,252,163, 71,143, 60, 30, 60,120, -128, 27, 55,110, 32, 36, 36, 4,174,174,174, 16, 10,133,176, 88, 44, 80,171,213, 8, 11, 11,131, 68, 34, 65,163, 70,141,114,180, - 90,109, 72, 69, 77, 61,132, 16,137, 92, 46,143, 59,123,246,108, 96,195,134, 13,113,237,218, 53, 4, 6, 6,194,199,199, 7, 0, -144,144,144,128, 11, 23, 46,160,103,207,158,136,142,142,198, 27,111,188,145,162,213,106, 67, 41,165,198,242, 52,221,221,221,211, - 79,157, 58,149, 26, 21, 21,101,208,106,181,188,204,204, 76,225,185,115,231,172, 26,141, 70,161, 82,169,132, 74,165, 82,168, 86, -171, 5, 90,173, 86,200,227,241, 68,122,189, 94,120,242,228, 73,190,201,100,114,170,232, 56, 21,159,167,253,251,247, 35, 42, 42, - 10,187,119,239,198,148, 41, 83,112,241,226, 69, 4, 6, 6, 98,199,142, 29,152, 58,117, 42, 98, 98, 98,224,225,225,129,136,136, -136, 10,207, 17, 0,212,170, 85,235,241,221,187,119,107,138, 68,162,226,117, 23,139,215,179, 67,118,118, 54,158, 60,121,130,103, -207,158,161, 86,173, 90, 24, 62,124,248,147,212,212,212, 90,149, 21,180,128,128,128,236,251,247,239,123,212,171, 87, 15,153,153, -153,112,113,113,129,179,179, 51, 92, 92, 92, 74,222,135,132,132, 96,242,228,201,240,241,241,201,210,235,245,222,149,153,159,168, -168,168,163, 39, 79,158,244,112,114,114, 66, 70, 70, 6,212,106, 53, 4, 2, 1,100, 50, 25, 60, 60, 60, 74, 12,124, 92, 92, 28, -122,245,234,149, 19, 31, 31,223,173, 10, 17, 55,158,183,183,247,163, 59,119,238,132, 82, 74,145,156,156,140,152,152, 24, 76,152, - 48, 33,206, 96, 48,132,191, 78,107,234,149,234, 87, 37, 26, 53,122,172,168,127,223,126,186, 91, 55,142,112, 82,156, 69,211, 6, - 82, 37, 0, 92,187,165,119,209,163, 29, 26, 52,238,206,219,187,127,159,108,227,134,213, 66,112,240, 6, 65,204,131, 88,250,117, -121,218,189,187,185,188, 53,117, 98,247, 58,109, 91,181, 21,168,213,212,231,215, 77,107,154, 38, 61,141,247, 6,128,224, 26, 33, -153,239,190, 53,230,154,147, 19,201, 56,119,241,156,117,241,178, 35, 15, 15, 30, 85,110,178,227,220,132,132,134,134, 94,222,191, -127,191,135,151,151, 23,156,157,157,161,213,106, 97, 54,155,241,224,193, 3,195,182,109,219, 44, 78, 78, 78,142, 25, 25, 25, 80, - 42,149, 32,132, 96,255,254,253,201,148,210,224, 23,181,138,251, 96, 1,192,132, 30,117,132, 17, 29, 67, 93, 69, 18,171, 84, 42, -140,245, 5,177, 73, 8, 85,120,159, 58,117,185,222,233,179,231,223,236,217,123,168,103,139, 22, 29,240,237,252,207, 45,201, 25, -153, 13,149,186,190,143,202,234,131, 85, 39,148,116,236,255,198,128,193,115,231,206,198,236,153,115,112,112,255, 94,149, 66,206, - 51, 58,185, 8,157,219, 54,111,101,152,252, 65,191, 20, 93, 65,106,224, 15, 43,214, 12,239,210,109,112, 64,243, 22,237,113,229, -242, 25,236,216,190,246,134,200,102, 97,205,133, 47, 48,135, 16, 87,151,144,144,113, 31,199,197,137,110,207,158, 93, 96, 77, 75, -203,111, 60,105, 82, 78, 89,219,166, 30, 63, 46, 23,251,249, 57,185,246,237,235,182, 44, 56,152, 90,178,178, 86,149,213,135,168, - 44,205, 19, 10,133,203,239,135, 15,119,162, 66, 97,187,207, 62,255, 92,218,187,119,111,168,213,106,236,218,181, 11,171, 86,174, - 52,250,250,250,222,245,187,119, 47, 58, 82,173,254,210, 94,205,198,147, 38,229,216,108, 54, 50,120,234,212, 46,247, 19, 18, 58, -102,100,101, 85, 3, 0, 95, 55,183,148,198, 33, 33, 55,214, 29, 60, 24,243, 99,245,234,156,189,233, 92,115,228,136,247,206,196, -196,247,220,220,220,164,153, 89, 89, 2,137, 88,156,219, 60, 34, 98,199,207, 51,102,156,177,222,185, 35,114, 8, 8,112,114,238, -221,187,202,121,111, 60,105, 82, 78,158, 70, 35,248,248,155,111, 90, 37,101,102, 86, 43, 48, 26,107, 41, 53, 26, 31,155,197,194, -115,146,201,114,107,132,133,101,233,207,157, 75,175,161,211, 77, 92, 67,105,214, 95, 24,169,252, 47, 47,242, 58, 68,176,206, 80, - 74,255,107,180, 12,165,212,174,232,149, 80, 40,124,174, 57,170, 2, 68,132, 16,220,188,121, 19,238,238,238,240,241,241,129, 68, -242,252,226,128,217,217,217,184,120,241, 34, 30, 62,124,136,250,245,235, 3,128,168, 34, 65,137, 68,242,201,162, 69,139, 92, 76, - 38, 19,110,220,184,129,198,141, 27, 67, 34,145, 64, 36, 18, 61,103,254,178,178,178, 80,183,110, 93,124,246,217,103,206,243,231, -207,255, 4, 21,172, 33, 39, 16, 8, 62, 28, 51,102,140, 87,113,196, 42, 37, 37, 5,141, 26, 53, 42,249,222,211,211, 19,183,110, -221, 66,227,198,141, 17, 16, 16,128, 65,131, 6,121,109,222,188,249, 67, 0,139,203,125,146, 23,139,121, 81, 81, 81, 77,138, 34, - 68,224,241,120,177, 78, 78, 78,158,222,222,222,114, 39, 39,167,255,202,227,250,245,235,149, 60, 30,207, 82,217, 1,229,241,120, -200,200,200, 64,100,100, 36, 84, 42, 21, 0, 64,171,213,162, 86,173, 90, 80,171,213, 37,102,213,207,207, 15,122,125,197, 93,187, -234,215,175, 63, 59, 60, 60,188,107,251,246,237, 37, 66,161, 16,183,111,223, 70,195,134, 13,177,109,219, 54, 4, 5, 5, 65, 38, -147, 33, 46, 46, 14, 81, 81, 81, 56,123,246, 44, 60, 61, 61, 81,183,110, 93, 73,163, 70,141,206,231,229,229,157, 78, 76, 76,156, - 93, 65, 58,121, 10,133, 2,103,207,158,197,186,117,235,144,144,144,128,180,180, 52, 56, 58, 58,162, 65,131, 6,136,136,136, 64, -203,150, 45, 17, 23, 23, 7, 82, 73, 97, 34,132,248,132,134,134, 30,188,118,237,154, 7,165, 20,155, 55,111, 70, 65, 65, 1, 76, - 38, 19,120, 60, 30, 28, 28, 28,224,234,234,138,142, 29, 59,194,211,211, 19,161,161,161,216,190,125,187, 71,143, 30, 61, 14, 21, - 69,160, 50, 42, 59,174,174,174,174, 19,103,205,154, 21,232,229,229,133,196,196, 68,168, 84, 42,120,123,123,163,125,251,246,254, - 39, 78,156,152, 8, 96,201,235,114, 3, 43,238,208, 78, 8, 33, 7,246,255,222, 47,200, 87, 92,167,105, 67, 77,240,221,155,130, -154,135, 78, 60,174, 87,120, 60,130,239, 52,109,164,121,114,237,198,145,164, 3,251,127,191,250, 48, 22,251,236,105,194,206, 81, -241,246, 29, 61,145,216,185, 94,221, 54,252,229, 43,102,245, 27,251,110, 55,137,155,107, 27,162,206,218,142,139, 87,239, 6,127, - 53,123,154,215,215,179, 23, 30, 56,122, 34,209,150,163,226,205,179, 39,189,117,235,248,254,120,102,175,151, 71,129,249,103,220, -186,234, 12, 8, 91,160, 70, 72,109,168,213,106, 56, 56, 56, 56, 12, 31, 62,220, 54,125,250,116,157,147,147,147,140, 16,130,211, -167, 79,103, 1,232, 86,153,174,193,203,149,218,204, 22, 43, 21,243, 57, 74, 28,245,196,150, 39,190,247,224, 41,218,181,235,145, -217,164,113,195,249, 11,191, 91,242, 69, 72, 72,152,231,240, 17,227,132,139, 23,127,185, 18, 64,155,178,116, 30,198,209, 83, 17, - 53,137, 20, 64,175,185, 95,207, 70,124,124,156,235,216,183,149,115, 4, 18,169, 95,120,112, 43,199,149,235, 78,119,175, 85,171, -122,181,177,163,223,249, 99,245,250,117,189, 74, 71,178,126,255,109,245, 62, 66, 72, 39,123,142,237,191,136,122, 35, 15, 30, 68, - 65,114,178, 37,239,252,121, 67,167,159,126,202, 9,236,214,109,137,201,108,246, 40,174, 42,120,132,128, 20,119,145,224, 56, 34, -248,236, 51, 30, 21, 8, 96,113,117,125,123, 26, 80,187, 50,205, 41,233,233, 3,223,124,239,189, 94,251,142, 28, 65,245,234,213, - 75,238,103, 46, 46, 46,152, 58,117, 42, 38, 77,154, 36,185,117,235, 86,211,157, 59,119, 54, 93,252,221,119,222,211,128,129,246, -164,243,216,149, 43,174,227,231,206,157, 81,191,113,227,160, 77, 91,183, 74,106,214,172, 9, 0,120,242,228, 73,232,183, 11, 23, - 6, 71, 70, 69,101,206,255,228,147, 13,247,167, 79,175, 11,224,124, 69,154, 25,231,206,153,118, 38, 38,190,119,234,244,105,151, -200,200, 72, 0, 64, 76, 76,140,215,178,101,203,198,212, 29, 52,104,196,220,247,223,255,178,183,193,160,116,202,206,150,244,254, -241, 71,193,239,131, 7, 87,170, 89,156, 78, 0,104,255,206, 59,159,180,233,208, 33, 98,224,123,239,185, 5, 5, 5, 17,133, 66, - 1,179,217,140,180,180, 52,215,251,247,239,215, 60,168,209,168,247, 92,185,178,121, 77,209, 34,238,127, 17,101,122,145,127,186, -193,106, 79, 8,161, 0,218, 83, 74,207, 22,223,184,109, 54,155, 93,230, 74, 32, 16,160,168, 19,176, 93, 63, 74, 41, 69, 78, 78, - 14,114,114,114, 74,154,136,178,178,178,112,234,212, 41,196,197,197, 65, 40, 20, 66, 36, 18,193,108,174,124,109, 88,185, 92,222, -185,115,231,206,130, 43, 87,174, 32, 36, 36, 4, 82,169,180, 36, 93,197, 47,145, 72, 4, 95, 95, 95,168,213,106,116,234,212, 73, -184,124,249,242,206, 21, 25, 44,103,103,231,158, 67,134, 12, 17, 23,255, 95, 80, 80, 0, 62,159, 95, 98, 86, 10, 10, 10,144,151, -151, 7,165, 82, 9,131,193,128, 22, 45, 90,136, 15, 30, 60,216,179, 34,131, 85, 26,157, 78, 87,144,149,149,229,210,166, 77, 27, -215, 13, 27, 54,196,180,104,209, 34,236,185, 18,118,230,140,193, 96, 48, 8,121, 60,158, 93,235,220,109,217,178,165,228,216, 63, -123,246, 12, 43, 87,174, 44,249, 46, 46, 46, 14,203,151, 47, 47,153,151,163,162,115, 20, 30, 30,222, 99,243,230,205,141, 55,109, -218,148,207,231,243, 17, 19, 19,131,173, 91,183,130, 82, 10, 79, 79, 79,232,116, 58,100,102,102,226,244,233,211,176, 90,173, 80, - 40, 20,240,247,247,119,248,240,195, 15, 91,207,153, 51, 71, 8,160, 92,131,101,179,217,108,124, 62, 31,193,193,193,152, 57,115, - 38, 12, 6, 3, 68,162, 66, 95,169, 86,171,161, 84, 42, 17, 29, 29,141,196,196, 68, 84,118,115,113,112,112, 24,180,105,211, 38, - 47,177, 88, 12,189, 94, 15,141, 70,131,148,148, 20, 36, 37, 37, 25,178,178,178,172,142,142,142,188,224,224, 96,158, 68, 34,145, -244,239,223,159, 20, 27,205,222,189,123,187,111,222,188,121,104,101,230,136, 16,226, 89,167, 78,157, 47,198,140, 25,227, 80,186, -204,102,100,100, 96,224,192,129,178, 75,151, 46, 77, 39,132,108,165,148,102,191, 78,119, 49, 74, 41, 45, 40, 88,125,225,220,190, -159,234,220,189, 41,168,105, 50,229,183,232,210,115,162, 0, 0, 46,157, 93,223,226,238,205,123,144, 18,107,210,225, 99,139, 47, - 40, 20, 99,105,101, 17,192,158,157, 92,186, 7,121,137, 7,244,239,219,153,247,235,166, 53, 77,199,190,219, 77,226, 85, 99, 13, - 1, 0, 87, 81, 0, 90,218,166,240, 12, 70,173,195,175,155,214, 52,237,223,183,231,213,132,167, 73, 75,122,117,118,221,115,232, -164,242, 72, 69, 17, 66, 95, 31,161,191,155, 83, 46,220, 28, 27, 34, 56,196, 17,209,183,238, 96,223,238,243, 8, 13,111, 13,163, -209, 8,171,213, 42,239,211,167,143,110,219,182,109,134,216,216, 88,141, 94,175,111, 71, 41,141,173, 44,255,169,169, 15,184, 48, -159,230,102,145, 84, 98,213,168, 68,186,105, 95,238, 28,220,168, 89,215,198,174,190,254, 66, 79, 57,119,160, 67,187, 54, 91,127, -219,178,106,210,148, 79,191, 70,131, 6, 45, 90, 60,124,124, 56, 2,192,221, 50, 77,235, 19,122, 48, 50,148, 88,227, 31, 63,238, -149,148,152,152, 90,219,219,199,244, 68, 73, 45, 19,167,173,233,210,166,221,160,122, 53,235,180, 21,223,127,112,150, 76,254, 96, -204,111, 63,172, 88, 51,188,216,100,157, 59,119,180,221,236,217,137, 98, 0, 70,230,171,138,158,202, 37,146, 0, 69,112,176, 32, - 97,195, 6,125, 72,159, 62,249, 0, 96, 50,155, 61, 18, 18, 19,157,101, 50, 25, 40,165,176, 88, 44,207,245, 17, 46,238, 23, 28, - 25, 22,230,109,143,102,194, 87, 95,213,251,236,179,207,144,145,145, 1,171,213, 10,161, 80,248, 98,157, 13,173, 86,139,183,223, -126, 27, 63,126,247, 93,115,123, 52,109, 54, 27, 25, 63,119,238,140,207,103,204,168, 57,110,220, 56, 94,233,186,215,205,205, 13, - 59,119,237, 18,175, 88,177, 34,224,139, 31,127,124,251, 77,137, 36,190, 50,205,156, 90,181,224,150,153, 41, 45, 54, 87, 0, 16, - 22, 22,134,149, 43, 87, 74,222,125,247, 93,113,159, 62,125,190,191, 85,191,254,178, 37,173, 91, 63,118,175, 93,219, 73, 44,145, - 4,216,123, 60, 1, 64, 99, 48, 68, 46, 89,182,204,245,234,213,171,200,204,204, 68, 70, 70, 70,241,181,140, 38, 77,154,144,145, - 35, 71, 58,215, 8, 12,108,250, 23,159,238,255,242, 34,255,120,131, 85,148, 17, 82,148, 49, 82,234,166,248,156, 81,169,204, 96, -189, 12, 74,165, 18, 74,165, 18,107,215,174,133, 72, 36, 42,185,233, 2,128,201,100,178,199,172, 68,249,249,249, 65,165, 82,161, -118,237,218,207, 69,174, 68, 34, 17, 4, 2, 1, 68, 34, 17, 36, 18, 9,140, 70, 35,130,130,130,160,211,233,162, 42,210,212,235, -245, 13,220,220,220, 74,110,172, 70,163,177,196, 92, 21,167,215,100, 50, 33, 63, 63, 31, 5, 5, 5,208,104, 52,208,106,181, 13, -237,201, 47,199,113,184,119,239,222,147,176,176,176, 6,124, 62, 31, 10,133, 66,174,213,106, 75,250, 14,229,229,229, 97,227,198, -141,218,183,222,122,203, 99,255,254,253,149, 26, 44, 66, 8, 62,250,232, 35, 72, 36, 18,232,116, 58,252,242,203, 47,248,248,227, -143, 33, 18,137,160,209,104,176,114,229, 74, 76,158, 60, 25, 2,129, 0, 38,147, 9,203,150, 45, 43, 63,146,241,224, 65,194,149, - 43, 87, 26, 54,106,212,200,117,207,158, 61,217, 93,186,116,241,236,214,173, 27,164, 82, 41,244,122, 61, 44, 22, 11,154, 55,111, -142,240,240,112,100,101,101,225,240,225,195, 57,161,161,161, 30, 87,175, 94,229, 50, 50, 50,146, 42,187,121,151,138, 16,194,102, -179, 33, 51, 51, 19, 74,165, 18,217,217,217, 72, 75, 75, 67,106,106, 42, 4, 2, 1, 42,123,120,119,119,119,127, 35, 50, 50,146, - 15, 0, 82,169, 20, 13, 26, 52,192,140, 25, 51,172,122,189,126, 8,128,195, 69,155,245, 88,179,102,205,158, 11, 23, 46, 8,252, -252,252,240,232,209, 35,120,122,122, 10, 28, 28, 28, 42, 53, 88, 62, 62, 62,235, 15, 28, 56,224, 86,108,170,139,143,179, 78, 87, -120, 58, 6, 14, 28,232,182,105,211,166,245, 0,122,190,110, 55, 51, 5,207, 69,208,180,129, 84,121,232,196,227,122, 93,122, 78, - 20,248,214,156, 5, 0,104, 9, 8,142, 31, 90, 86,175,103,231, 90, 59,138,251,101, 85, 68,255, 30,158,139,251,244,169,207, 27, - 49,184,113,188, 64, 20, 86,115,203,166,101,222,110,174,109,254, 83, 73,240,221, 32,151, 2,225, 53,109,188,203,191,199,123, 79, -158, 24,102,218,186,225,189,248, 45, 59,110,116, 22,137,110,119, 4, 48,185, 60,237, 59,247,141,251,243, 53,254,117, 92, 69,103, - 8, 28,250,162, 97,131, 80,120,122, 42,241,203,234, 77,240, 15,106, 5,163,209, 8, 39, 39, 39,153,205,102, 51,243,249,252, 45, -246,152, 43, 0, 56,121, 82,201,213,173,171, 52,241, 53,156,245,131,143, 23, 15,232,210,163,111, 68,199,142,157,185, 99,199,143, -153, 91, 53, 52,167,119,236,216, 34,243,244,153,115,113, 25, 25,207, 66,195,195,235, 33, 54,230, 86,119,128,220, 3,202, 46,176, -247,226,232,145,154, 53,201,233,109,219,198,114,122, 46, 90,250,205,188,187, 61,122,245, 26, 21,217,182, 77, 91,238,248,137, 83, - 38, 49,114, 30, 42, 90,183,124, 54,106,216,144, 61,219,118,239,233,122,250,212,193, 90, 42,117,230,193,239, 86, 80,102,174, 74, - 63,156, 89,173,222, 2,137,132,151,125,250,180, 53,234,221,119,141,197,215,163, 76, 38,195,190,125,251, 32, 22,139, 75, 94, 34, -145,168,228,189,183,183,119,241,160, 42,187, 52, 1, 32, 61, 61, 29, 25, 25, 25,112,118,118,134,167,167, 39, 50, 50, 50,112,233, -210, 37,196,198,198, 66, 40, 20,162,123,247,238,224,149,211,119,249, 69,205,193, 83,167,118,169, 19, 21, 21,244,162,185, 2, 0, -179,217,140,188,188, 60,244,235,215,143,119,248,240, 97,159, 35,201,201,125,191, 2,182, 84,164,217,176, 87,175,220,204,157, 59, -203,252,237, 70,141, 26,145,139, 23, 47, 74,186,119,235, 54,105,202,188,121, 43,126,220,180, 41,197,102,181,250, 84, 37,239, 60, - 30,143, 71, 8, 65, 96, 96, 32,242,242,242, 80, 80, 80,216, 82,173, 80, 40,224,234,234, 10,139,197, 2,142, 82,225, 95,252,144, - 87,166, 23,249, 71, 27,172,162,204, 0, 64,251,210, 55, 20,142,227,236, 50, 87, 66,161,176,210, 62, 85,246, 68,181, 94,196, 30, -131, 85,156, 86, 7, 7,135,146, 11,172,180,177, 42, 78, 39,143,199, 3,159,207,135, 61,145,119,142,227,248, 26,141, 6,187,118, -237, 66,187,118,237, 74,154,159, 84, 42, 21,148, 74, 37, 84, 42, 21, 12, 6, 3, 18, 18, 18,112,242,228, 73,212,170, 85, 11,128, -125,147,182,198,199,199,223,168, 94,189,122,227,226,155,119,135, 14, 29, 2, 54,108,216,144,214,179,103, 79, 63, 74, 41,190,252, -242,203,156,230,205,155,123,148,190,185, 87, 6,159,207,199,165, 75,151, 80,171, 86, 45, 80, 74, 33, 18,137, 16, 19, 19, 3, 47, - 47, 47,112, 28, 7,129, 64,128,236,236,108, 56, 58, 86, 60,183,225,189,123,247, 70,191,243,206, 59,105,206,206,206,245,114,115, -115,211, 37, 18, 73,155,115,231,206, 5,154,205,102, 56, 57, 57,193,201,201, 9,135, 14, 29,130,139,139, 11, 62,249,228,147,100, -189, 94,127, 73, 46,151,123,235,245,250, 59, 25, 25, 25, 95, 86,229,124, 91,173, 86,104,181, 90,228,231,231, 35, 47, 47, 15,106, -181, 26, 6,131,161,210, 52,150, 69,155, 54,109,112,240,224, 65,254,130, 5, 11,126,141,143, 47,124, 16, 12, 9, 9,193, 39,159, -124,194,247,247,247, 71, 66, 66, 2,110,220,184, 1,179,217,140,202,194,207, 66,161,176,195,148, 41, 83, 90, 7, 5, 5, 17,179, -217, 12,142,227, 96, 52, 26, 81,252, 62, 57, 57, 25,117,234,212,225, 5, 7, 7,183, 32,132,116,176,103,192, 4,163, 16,117,214, -118,184,138, 2, 0,190, 27, 56,245, 10,104, 95,114, 50,146,172,172,172,121,195,199,241,223, 61,180,181,192, 59,230,177, 35, 2, - 67, 70, 34,160, 70, 63,140,121,199,134,217,223, 28,132,127, 96, 4,146,146,146,208,161, 67, 7, 81, 90, 90,218, 59, 0,166,218, -171,125,252,248, 21,219,177, 67,135, 7, 13, 30, 58,170,113,231,206, 61,173, 71,143, 30,194,189, 59, 71,239,191, 51,244,141, 44, -202, 21, 16, 23, 23, 89,244,227,199, 15, 67, 35, 35, 27,193,108,177,180, 1,102, 47, 2, 80,110,165,242,228, 9, 53,205,153, 51, -135,247,199,222,245, 35,135,143,120,187,126,167, 78, 93, 45, 71,143, 31,192,141,203,199,111,127,191,104,204,217, 5,203,182,119, -232,210,253,141,186, 14, 78, 87, 14, 69,214,213,191, 23,232, 20,244,132,149,148,114,110, 86, 14, 14, 28,138,234, 69, 30, 33,160, -148, 62,103,174, 94, 52, 88, 60, 30,175,210, 7,255,210,154,165,239, 69,197, 15,210,171, 86,173,130, 68, 34,129, 88, 44,134, 80, - 40,172,180,155, 69,105,205,251, 9, 9, 29, 55,110,217, 34, 41,203, 92,229,230,230, 34, 55, 55, 23, 5, 5, 5, 24, 54,108,152, -104,206,245,235,141, 42,211, 12,242,245, 53,202,165,210,204, 7, 15, 30,248, 69, 68, 68, 60,151, 94,181, 90, 13,169, 84,138, 45, - 91,183,138,122,247,234, 53,161,211,161, 67,223, 3, 80, 86, 53,239,132, 16,120,121,121,193,213,213, 21,132, 16, 88,173, 86,100, -100,100,224,254,253,251,184,126,253, 58,248,132, 88,255,202,115, 92,150, 23,121, 29, 34, 88,164,188,104,139,189, 6,139,207,231, -191,116, 20,171, 60,236,105, 34,148,201,100,119,211,210,210, 90,249,251,251,195,106,181,150, 24,172, 23,155, 8,139,163, 29,183, -110,221,130, 76, 38,187, 91,153, 38,165,180, 69,211,166, 77,177,123,247,110,156, 62,125, 26, 79,159, 62,133, 78,167,131,209,104, -132, 94,175,199,253,251,247,193,113, 28, 34, 35, 35, 33,151,203, 43,213, 4, 0,173, 86,155, 46, 20, 10,195,164, 82,233,127,154, - 59,124,125,145,155,155,203, 89, 44, 22,108,220,184, 81,237,227,227, 35,151, 74,165,118, 27, 86, 66, 8,178,178,178, 16, 16, 16, - 80,210, 7, 75,163,209,192,203,203,171,216, 80,192,104, 52,194,209,209,177,210, 38, 66, 74,169, 1,192,148, 82,218, 77, 6, 15, - 30,252,219,182,109,219,106,156, 56,113, 2, 87,175, 94,133,167,167, 39,230,207,159,255, 52, 49, 49,113, 56,165,244,250, 95,112, -129, 85,186, 77,110,110,238,174,187,119,239,182,104,218,180,105, 73,237,208,161, 67, 7,210,161, 67, 7,143,210, 33,253,236,236, -108, 92,187,118, 13, 39, 78,156, 0, 33, 4,113,113,113, 54,189, 94,255, 91, 5,191, 45, 10, 14, 14,222, 48, 99,198, 12,133,213, -106, 45, 41,219, 82,169, 20, 14, 14, 14, 16,137, 68,224,243,249, 72, 76, 76, 68,191,126,253,156,127,250,233,167,245,132,144,154, -148, 82, 51, 94, 19, 10, 56,165,245,218, 45,189,139,171,107,240,157, 75,103,215,183,104, 89, 84, 71, 92, 58,187,222,234,234, 26, -124,231,218, 45,189, 75,219, 64,165, 85, 81,137,206,222,195,217, 83,205,230,235,221,143, 28,190, 59, 96,202,228, 49,226,224, 26, - 33,153, 23,175,222, 13,110,105,155,194,147, 75, 1,173, 30,200, 83, 2,143,158,240,185,224, 26, 33,153,215,111,198,136,191,255, - 97,109,136, 78,111,218,115,232,164,242, 72, 37, 15, 99, 6, 66, 72,255,143,190, 16,158, 29, 53,218, 75, 44,118, 8,132, 38,255, - 38,170, 5,187, 99,200, 27, 97, 88,177,250, 38,156,156,220,224,237,237, 13, 30,143, 39,183, 55,239, 57, 57, 57,100,215,239,231, -223,125,235,237, 49,205,187,117,237,101, 61,114,244, 15,193,233, 99,251, 47,173, 95,253,197, 30,202,215,202, 8,213, 72, 3,131, - 2,238, 36, 60,141, 29,222,182,109, 87, 72,197,178, 90, 64,120,153, 5,182,100,224, 0, 69, 50,143, 7,135,183,222, 30,219,178, - 91,183,190,214,163, 71,247,226,232,161, 77, 87,102,205,170,118,232,233,179,173,162,203,215, 83, 29,250, 15,122, 63,255,224,225, -135,166, 55,250, 84,143,245,147, 55,208,131,241,252, 3,164, 64,144,105, 53, 26, 3, 3,186,117,227,235,146,146,132, 10,111,111, - 43, 0, 88, 44,150, 74, 13, 22, 0,206, 30, 77,123,211,162,211,233,192, 1, 86,123, 52, 51,178,178,170, 21, 61,124,151, 96,177, - 88, 74,204, 85,110,110, 46,148, 74, 37,228,114, 57,178,141, 70,111,123, 52,187, 54,107,182,113,206,236,217, 83,119,238,218, 37, - 42,109,174,138, 95, 66,161, 16,223, 46, 90, 36,250,248,211, 79,223,159, 32, 16, 76,172,202,241, 44,126, 88,231,243,249, 16, 8, - 4, 72, 74, 74, 66,114,114, 50,146,146,146,144,148,148, 4,169, 84, 10, 90,206,241,124,133, 17, 44,242, 58,149,221, 10,167,105, -168, 74, 39,119,123, 13,129,205,102,123,165, 6, 75,171,213,158, 56,121,242,100,179,254,253,251, 11,174, 92,185, 2, 31, 31,159, - 18,131, 85,252,183,184,217, 73, 38,147, 97,207,158, 61,102,173, 86,123,162,146,139,232,228,161, 67,135, 26,207,156, 57, 83, 56, -122,244,104, 60,120,240, 0,227,198,141,131, 82,169,132, 90,173, 70,110,110, 46,116, 58, 29,154, 53,107, 6, 7, 7, 7,220,185, -115,199,162,211,233, 78, 86, 82,112,104, 86, 86, 86,129,167,167,167,239,139,223, 13, 26, 52,200,251,231,159,127,214, 61,122,244, -200,210,170, 85, 43, 39,123,141, 70, 49,191,255,254,123, 73,100, 46, 54, 54, 22, 63,255,252,115, 73,159,171,155, 55,111, 98,241, -226,197, 37,115,151, 85,177,176, 95,175, 91,183,174,213, 98,177,160, 86,173, 90,240,247,247,135,193, 96,192,210,165, 75,173,127, -133,185,178, 23,131,193,176,115,212,168, 81,159, 71, 71, 71,251, 10, 4,130,194,208,117, 81,254,204,102, 51, 30, 63,126,140,251, -247,239,227,209,163, 71,200,203,203, 43,121, 0,184,117,235, 86,190,197, 98,217, 94,158,174,167,167,231,151,235,214,173,243,145, -201,100,207,149,231,226,232,103,113, 84, 52, 59, 59, 27, 46, 46, 46,232,212,169,147,215,201,147, 39,191, 4, 48,243,117,168, 12, - 8, 33,164, 85,115, 69,235,143,222,127, 27, 77, 27,105,158,220,189,121, 15,199, 15, 45,171, 7, 20,118,114,143,106, 20,249,228, - 90,180, 35,122,116,157,218,250,226,149,113, 21,118,114, 47,234, 67,117,168, 89, 51,183, 11,123,247,159, 88, 49,109,242,152,107, - 95,205,158,230,101, 48,106, 29,194,107,218,120, 64,161,185,186, 28, 45, 55,124, 61,123,204,181,133, 63,108,228,146,179,204,147, -174, 94,205, 47,119,116,111,105,211, 82,183, 54, 28,124,130,123,165, 5,215,232, 80,253,206,205,181,240,112,206,135, 99,173, 86, -232,209,173, 25, 78,156,188,139,164,103, 6,164,167,167,195,104, 52, 86, 56,237,193,163, 59,123, 70, 82, 66,131, 8, 37,201,132, - 71, 29, 70,142,122,175, 77,175, 94,125,233,193,131,251,173,123,247,108,185,176,125,243,242,157, 60,145, 80,160, 55, 57,155, 8, - 49,168, 56,158,227, 3,173, 54,183,176,242, 20,137,202, 15,183, 22, 77,200, 26, 81, 55,220,103,228,168,113,206, 61,123,244,163, -135, 14,237,229,182,111,219,120,122,251,218,168, 45, 28, 79, 45, 74, 79,209, 73, 84,106,139,138, 18,177, 75,129,154,211,101,198, -215, 52,248,245, 26,100, 6,227,249,251,128,209,152, 90,144,146,226,235,214,174,157,228,241,236,217, 50,239,102,205, 12,164,168, -143,112, 69, 6,139,207,231, 3, 60, 30,103,143,166,189,105,209,235,245,224, 0,203,203,104, 90,173,214,231,204, 85,177,193, 42, -142,103,216,163,185,122,214,172, 43, 65,221,186,229,157, 57,115,198,187,125,251,246, 68,163,209, 64,163,209, 60,103,178,252,252, -252, 72, 68,100,164,236,247,211,167, 67,102,218,121, 60,237,201, 59,143,199,251,203, 13,214,107, 23,117,173,232,203,226, 8,150, - 61, 6,203,206, 8,150,197, 98,177,192,203,203, 11, 57, 57, 57,229,222,240,121, 60, 30,164, 82,105,113, 27,112,133, 35,233,140, - 70,227,210,169, 83,167,126,216,163, 71, 15,143,176,176, 48,100,103,103,195,219,219, 27, 14, 14, 14, 37,125,195,138,245,110,222, -188,137,117,235,214,169,141, 70,227,210, 74, 52,151, 44, 90,180,232,131,129, 3, 7,186,249,248,248,192,213,213, 21,119,238,220, -129,171,171, 43,212,106, 53, 98, 98, 98,224,232,232, 88,210, 47,103,255,254,253, 26,163,209,184,164, 18,211, 70,207,157, 59,103, -118,116,116,188,147,157,157,205,207,203,203, 19,228,231,231, 11,212,106,181, 80,165, 82, 9,143, 28, 57,226,225,236,236,172, 59, -117,234, 84,118, 80, 80, 16,255,233,211,167,124,139,197,194,179,227,166,136,137, 19, 39, 66, 36, 18,193,104, 52, 98,233,210,165, -152, 58,117,106, 73,159,171, 69,139, 22, 97,198,140, 25, 37,134,121,205,154, 53, 85, 53, 89, 48,155,205,176, 88, 44,176, 88, 44, -118,153,222, 63,131, 61, 70,157, 82,154, 65, 8,233,221,180,105,211, 99, 59,118,236,112, 47,154, 83, 12,153,153,153,200,204,204, - 68,118,118, 54, 10, 10, 10, 96,181, 90,225,239,239,143,204,204, 76,236,221,187, 87,165,209,104,186, 85, 52,130,144,207,231,143, -106,211,166,141,224,197, 52, 20, 63,213, 21,155,118,137, 68,130,180,180, 52,116,232,208, 65,124,230,204,153, 81,255,116,131, 85, -108, 92,234,132, 66,212,167,239, 48, 81,131,198,221,117,215,110, 28, 73,146, 18,107, 82,207,206,181,118, 0,133,211, 52, 92,139, -118, 68,131,198,221,121,125,210, 77,205,148,249,171, 27, 68,212, 38,230,138,150,213, 1, 0, 15,103,174, 95,183,206,213,210,157, -156,136,224,235,217, 11, 15,252,186,105, 77,211,203,191,255,103,154,134,175,103, 23, 78,211,208,173,115, 53,235,131, 71,177,253, - 0,108,178,215,180,244,238,221, 39,122,245,218,205, 72,141,223,239,183, 98,161,139, 24,134,124, 64, 24,134, 54,205,157,112,245, -199,100,220,190,125, 59,195,100, 50,117,168,176, 44, 17, 26,116,255,193,189,218, 81,117, 35,124, 70,142, 26,235,212,187,119, 63, - 28, 60,184, 15,155, 55,174, 61,247,198,176,129,191, 62,203, 87,243,189,132, 50,145,140,114, 98,190,200, 89,224, 32,147,101,153, -211,210, 10, 43, 79,129,208, 9, 24,204, 85,208, 66,136,241, 99, 71, 56,119,236,220, 15,127, 28,218,135,205, 27, 87,159,253,170, -238,160,181,213, 27,214, 33,205, 26,125,247,126,245, 26,213,131,181, 5,153,106, 30, 17,155, 13, 6,206,241,187,141,137, 63,196, -207, 24, 21, 31,125,111,240,247,108, 20,225,115,220,217,220,179,103,211,143,159, 60, 17,121,182,110, 45, 77, 59,125, 90, 86,180, -114, 72,133, 6, 75, 32, 16,128,150,223,164,245,156, 38,217,180,137, 7,160,194,193, 85, 34,145, 8, 58,157, 14, 22,192,108,143, -166,239,209,163, 41, 79,158, 60, 9,117,115,115,123,206, 92,229,229,229,149,188, 55, 24, 12,208,233,116,144, 74,165,247,237,209, -204, 60,119,206,176,112,226,196,153,195,135, 13, 91,126,226,228, 73, 7,119,119,119,168, 84,170,231, 12,150,201,100, 66,199, 78, -157, 68,139,162,163, 71, 2,152,101,207,241,244,238,208,161,210,254,190,124, 62, 31,220, 95,220, 68,248,186,193,171,172,169,198, -222, 81,132,101,221, 24, 9, 33,157, 95,248,104, 70,227,198,141, 13,177,177,177, 8, 10, 10, 42, 49, 41,165,127,211,201,201, 9, - 46, 46, 46,184,121,243, 38,230,205,155,167, 7, 48,163, 34, 77, 74,169, 70,167,211, 13,237,210,165,139, 94, 32, 16, 32, 60, 60, -188,100,254, 43,142,227, 32, 22,139, 33,151,203, 17, 29, 29,141, 62,125,250,232,116, 58,221,208, 23,231,192, 42, 67, 83,165,211, -233,222,236,218,181,171,238,193,131, 7,104,211,166, 13,110,223,190,141,130,130, 2, 20, 20, 20, 32, 33, 33, 1, 17, 17, 17,208, -233,116,248,249,231,159,245, 58,157,238, 77, 74,169,170, 34, 77,141, 70,211,103,234,212,169,252,223,126,251,173,186,191,191,127, -221, 38, 77,154,132,117,234,212,169,230,128, 1, 3,130,123,246,236,233, 27, 26, 26,106,232,214,173,155,103,143, 30, 61, 60,117, - 58,157,240,226,197,139,233, 22,139,165, 71, 37,199,179,196,148,196,198,198,150, 52, 9, 10, 4, 2,228,228,228,148,204,180, 95, - 92, 25,149,101,128,203,211, 44,109,178,139,141, 85,177,209,170,172,238, 47, 71,179,210, 27,134, 88, 44, 46,142,112,210,202, 52, - 41,165,183, 30, 62,124,216,165, 93,187,118,183,222,125,247, 93, 77, 70, 70, 6, 28, 29, 29, 17, 18, 18,130,218,181,107,195,195, -195, 3,102,179, 25,123,246,236,209,238,221,187,247,174, 74,165,234,240,226, 28, 88, 47,106,242,120,188,132,178, 42,215,226,232, - 85,177,193,114,112,112,128,191,191,127,241,177, 77,168,202,241,124,201,200,210, 95,171, 89,100, 92, 58,117,236, 86,163,103,175, -254,206,123,247,239,147,253,248,203,134,135,109,251,125,184,210, 35,120,202,110,143,224, 41,187,219,246,251,112,229,143,191,108, -120,184,119,255, 62, 89,207, 94,253,157, 59,117,236, 86,227,193,253, 71, 97,207,173, 75, 88, 70, 58,101, 98, 73,179,182,173, 66, -149,231, 46,158,179, 46,252, 97,163,173, 85,203,158, 87,151, 47, 95,185,125,249,242,149,219, 91,181,236,121,117,225, 15, 27,109, -231, 46,158,179,182,109, 21,170,148,137, 37,205,236,201,251,248,177, 35,156,123,245,236,135,131, 7,247, 88,119,254,254,243,162, - 53,155,211,218,117, 24,144,154,153, 16,127,157, 66,183, 1, 30,142,119,240,240,225, 67,149,201,100,234, 80, 86, 7,247,178, 52, -199,141, 25, 81,218, 92,157,119,247,105,179,230,225, 67,216,142, 31, 63, 96, 57,121, 50, 90,127,254, 86,150,234,198,131,156,188, - 92,181,225,169, 86,163, 54,113, 28, 7,202,217,248,115,230, 20,118,196, 45,239, 28,181,106,213, 30,167, 78,108,197,198, 13,171, - 84, 28, 7,195,160, 29, 59,108,131, 7,207,166,193,213,170, 5,111,249,125, 43,233,221,183,191, 51, 5,184, 62, 3,251,185,252, -182,237, 55, 82,163, 86,141,106, 33, 33,133, 83,211,252, 35,203,210, 95,160, 57,139,210,124,117, 82,210,217,155, 63,253,100,244, - 30, 58,212, 77,236,237,237, 4,155,141, 20,215,239,229,189, 4, 2,193,115, 17,151,138, 52,253, 61, 60,158,237,223,191, 31,181, -107,215,134,191,191, 63, 74,247,129, 45,158, 72,219,221,221, 29,187,118,237, 2, 5,110,216,163,217,176,122,245,155,223, 46, 92, -104,226, 56, 14,249,249,249,255, 21,189,202,207,207, 7,199,113, 56,244,199, 31, 38,117, 65,193, 70,123,243,222,129,207, 47, 24, -222,182,237,130, 94,189,122,153,159, 60,121, 2,142,227, 80, 58,146,149,149,149, 5,133, 66, 1,131,209, 24, 72, 8,145,217,163, -153,117,228,136, 28,149,212,235, 47, 70,176,254,138,243,254,175,138, 96, 89,173, 86, 4, 6, 6, 62,183,244, 10,143,199,123,238, - 85,149, 17,132,148,210, 77,132,144,163,221,186,117,155,217,188,121,243,241, 51,103,206,228,135,133,133, 65,165, 82,193,213,213, - 21, 94, 94, 94,136,137,137,193,254,253,251,109, 57, 57, 57, 43, 1,204,181,103, 40, 60,165,244, 52, 33,164,119,189,122,245,182, - 77,155, 54,205,185,107,215,174,194,192,192, 64, 80, 74, 17, 29, 29,141,221,187,119,155,215,174, 93,171, 46, 50, 87,167,237, 76, -235, 49, 66,200, 27, 61,122,244,216, 50,106,212, 40, 71,155,205, 38, 76, 72, 72,128,209,104,132,197, 98, 65,114,114,178,249,224, -193,131, 5, 58,157,110, 4,165,244,152, 29,122, 55, 9, 33, 17,199,143, 31, 31,117,241,226,197,121,239,190,251,174,123,167, 78, -157, 68, 86,171, 21, 23, 46, 92,200,110,216,176,161, 87, 86, 86,150,121,215,174, 93,185, 6,131, 97,134,205,102,179,107,169, 28, - 66, 8,212,106, 53, 60, 60, 60, 96, 52, 26,193,113, 28, 76, 38, 19, 20, 10, 69,201,242, 70,148, 82, 84,165,211,252, 11,101,128, -111, 54,155, 49,108,216, 48,112, 28,135,165, 75,151,194,106,181, 86, 89,204,217,217,249,198,173, 91,183,122, 55,104,208,160,196, -180, 20,151, 33,137, 68, 2, 15, 15, 15,184,187,187,227,224,193,131, 16, 10,133, 55,236, 60, 71,183, 1, 52, 36,132,180,188,123, -247,238, 91, 0, 26,152,205,102,127,155,205, 70,120, 60, 94, 58,165,244,142, 90,173,254,213,222,165,114,178,178,178,230,189,253, -246,219, 13,183,110,221,170, 16, 8,254,115,105, 8, 4, 2, 72, 36, 18, 20, 79,106, 73, 41,133,201,100,194,151, 95,126,169,214, -106,181,243, 94,151,202,160,113,147,102, 88,253,243, 50,197,201, 83, 71,179, 31,198, 97, 95,233,169, 24, 20, 0, 46, 94, 25,183, - 79,153,191,186, 65, 90, 74,138,162,113,147,102,118,105,154,108,214,220,161, 35, 86, 6, 22, 45,149, 51, 47,225,105,210,146,173, - 27,222,139, 7,128,239,127, 88, 27,146,156,101,158,244,224, 81,108,191, 95, 86,158,105,102,178, 89,115,237,209,252,143,105,217, -162, 2,133,129, 82,122,149, 16, 82, 61,172,165, 97, 70,100,184,168,111, 90,166,229, 89, 65,129,233, 35, 74,105,188,189,121,111, -221,170, 29, 78, 29,251, 13,155, 55,110, 81, 83,142,111,240,240,240,160, 0,240,240,161, 7,125,248, 80, 73,255,211, 95,216, 69, -235, 41,203,158, 59, 99,250,248,201, 26,141,102,201,138,239, 42,158,112,182, 94,253,230,168, 87,191, 57, 62,252,232, 11,231,136, -186,225, 65, 0,176, 99, 7,181, 69,134,146, 3, 51,191,154,221,119,238,220,217, 80,107,140,152, 59,183,112, 89,157,152,123, 15, -254,120,242,132,154,216,173,233,121,102, 90,173, 87, 49,121,114,168, 46, 47,207,179,245,231,159,123, 8, 62,253,148, 87, 81, 39, -247,210,215,175, 61,154,215,239,220,249, 99,220,123,239, 61,155, 53,115,102,183,149,171, 86, 73,163,162,162,144,145,145,129,240, -240,112,248,251,251,227,248,241,227,216,181,125,187, 86,169,209,204, 0,240,139, 61,154,155, 14, 29,138, 9,171, 91, 55,103,213, -170, 85,126,189,122,245, 34, 90,173, 22, 42,149, 10, 42,149, 10, 70,163, 17, 69, 19, 57,211,216,184,184,135, 22,139,101,165,189, -121,183,101,103, 59,204,109,214, 44, 85,196,113,223,190, 49,112,224,212,185, 95,127, 45,169, 81,163, 6, 49, 26,141, 37, 81, 44, -179,217, 12,133, 66, 97, 54,153, 76,238, 0,116,246,104, 74,214,174,181,102,103,103,195,211,211,179,100,218,165,210,243, 10,106, - 52, 26, 80,202, 38,193,173,210,131, 66,121,247,112, 55, 55,183, 27, 2,129, 32,160,116, 52,171,172,181,237, 74,127,102,177, 88, - 82,179,179,179, 27,151,118,184,148,210, 19,229, 24,131, 16, 0,243, 59,118,236,248,198,148, 41, 83,200,153, 51,103,176,119,239, - 94, 26, 31, 31,191, 19,192,140,242, 42,199, 74, 52, 29, 37, 18,201, 39,114,185,188,115,241, 84, 12, 50,153,236,174, 86,171, 61, - 97, 52, 26,151,150, 55,123,123, 37,154, 78, 18,137,100,162, 92, 46,239,162,209,104, 26, 0,128,163,163,227, 45,173, 86,123,220, -104, 52, 46, 43,111, 1,233, 74, 52,165,206,206,206,243, 60, 60, 60,222,252,244,211, 79,221,207,157, 59,151,126,234,212, 41,145, - 82,169,220,106, 50,153,202, 93,236,185, 44, 77,119,119,247, 27,124, 62, 63,224,175, 56, 71, 0, 80,191,126,253,131,125,250,244, -233, 53, 98,196, 8, 88, 44, 22,252,242,203, 47, 56,126,252,248, 31,113,113,113,189, 43,122,250,124, 81,147, 16,226, 17, 16, 16, -112,102,252,248,241,193,195,134, 13,147,185,186,186, 66, 32, 16, 64,171,213,226,241,227,199,136,142,142,166,251,246,237, 43,184, -121,243,102,170, 78,167,107, 79, 41,205,177,247,120,254,153,167,228, 23, 53,133, 66, 97,187,192,192,192,223,103,205,154,229,216, -165, 75, 23,169,187,187, 59,248,124, 62, 44, 22, 11,210,211,211,113,239,222, 61, 28, 61,122, 84,187,115,231, 78,109,110,110,238, -176, 23,231,106,249,255, 74,231,171,212,140,168, 77,190,122, 97, 1,231,114,103,103,175,104, 91,123,210,217,171,179,107,207, 55, -222,104,210, 25, 0,118,237,186,126,226,143, 19,249,135, 94, 54,157,149,165,213, 30,205, 58,161,252, 89,247, 31,220,123,110, 34, -202,186, 17,145,177,117,162, 6,126, 99,143, 86,241, 76,238, 47,230,189,212,236,248,165, 99,184,207, 53,167, 22, 47, 8,253,197, -140,233,152, 63,111, 1,246,237,216,243,199,131, 39,244,224, 63,185, 44,253,149,154,197,139, 19,203,124,125,219, 46,229,184,233, -183,239,221, 83,148,126, 80, 43,142, 52,151,126,152,244,243,243,203, 74, 75, 75,243,182, 71,179,247,143, 63,154,117,114,185,100, -250,183,223,182, 43, 48, 24,218,205,157, 59, 87,112,253,250,117,252,252,211, 79, 86, 67,106,234,150,108, 96, 98, 89,173, 31, 21, -105, 6, 79,156,232,240,217,207, 63,143, 14,169, 85,203,235,173,183,222, 18, 10,133, 66,104,181, 90,164,164,164,224,216,209,163, -166, 7, 15, 31, 62, 80,171,213,125, 41,165,105,246,106,246,254,241, 71,179, 75, 72, 8,100,158,158,244,228,233,211,206,227, 62, -249,100,124,181,234,213,157,187,117,239, 46,116,114,114, 66,126,126, 62, 18, 18, 18,176,103,207,158,172,130,130, 2, 63, 74,169, -205, 30,205, 45, 23, 47,214, 59,116,246,236,160,111,190,249, 70, 28, 25, 25, 9,103,103,103,104, 52, 26,220,187,119, 15,103,207, -158, 53,174, 92,185, 82,165, 82,169,198, 91,173,214,253,127,213,121,255,215, 24,172,255,175, 11,143, 16,210, 24,192, 87, 69,255, -126,109,199,154,126,175, 77,165, 67, 8, 9,114,115,115, 91,109, 48, 24,168, 94,175, 31, 71, 41, 77,254, 95, 75, 39, 33, 68,208, -184,113,227,159,179,178,178, 90, 82, 74,225,236,236,124,233,254,253,251, 19, 40,165,214,170,106, 18, 66,248, 0, 90, 42, 20,138, -102,142,142,142,237,140, 70, 99,157,162,102,182,135, 90,173,246,172,217,108,190, 10,224, 18,165,212,246,119,230,189, 40,157, 93, -252,252,252,222,227, 56,174, 22, 33,196,197,102,179,193, 98,177, 40, 57,142,123,172, 82,169,214, 2, 56,254,119,167,243, 85,105, -214,173, 69, 6, 80, 30,234,148,103, 4,158, 51, 52, 47, 24, 7,194,225,225,253,199,116, 79, 21,202, 60,175,127, 15,207,197, 64, -225, 72,195,202,150, 28,122,206, 96,217, 97, 90,170,108, 46,107, 9,222,166,132, 6, 61, 95, 41,146,228,240,122, 3, 54,255, 25, -131,101, 47,117,195, 72, 59, 80,180,228, 40,174, 62,140,163,167, 94,215,186,238, 85,106, 46, 32,196,237, 39, 87,215, 75, 60,129, -192, 7, 0,175, 40,218,194,113,132,216, 40, 33,214,210,205, 88,165, 31, 40, 43,211, 52, 3, 81, 66,137, 36,208,102,181,122,103, - 0,138, 67, 54, 91, 35, 3,165, 5, 1,192, 87,209,148,198,188, 76, 58,205, 64, 20, 95, 34, 9, 58, 68,105,191,108,185,188, 94, -150, 94,239, 9,128, 42,228,242,135,106,173,118,163,193, 96, 88, 81,198,162,234,149,106,138, 36,146, 0,155,213,234, 13, 0, 60, -129, 32,107,155,209, 24,152,234,228,244,150,193,104, 12, 86, 40, 20, 22,147,201,164, 54, 24, 12, 35, 44, 22,203,201,170,228,253, -177,213, 26,113,145,199,107, 99,150,203,221,205,132,200, 77, 86,171,217,100, 54,167, 24, 12,134,187, 0,126,160,148, 62,249, 43, -207,251,107, 71,241,104,179,191,226, 5,160, 51,211,100,154, 76,147,105, 50, 77,166,201, 52,255,122, 77, 0, 50, 0, 65, 0,248, -255,196,188,191,110, 47, 1,179,152, 12, 6,131,193, 96,188, 22, 1, 19, 29,202,232,115,197,248,155,154, 8, 1,116, 46,231, 68, -217, 29,250,123,153,209, 4,118, 52, 37, 48, 77,166,201, 52,153, 38,211,100,154, 76,243, 53,211,172, 76,251,181,105,122,100, 77, -132, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 77,132,175,246,197, 3,163, 60,103,237, 77, 8,241,126,213,219, 50, 94,239, -178, 80,198,190,254,132, 16,255, 42,110,239,203,142, 58,131,193, 96,252,179,249,127, 55, 88,246,222,172,254,228, 77,237, 79, 25, - 30, 66,200, 2, 66,144, 86,248, 34, 11, 94,213,182,118,252,174,159,167,167,231,199,117,235,214,221,226,227,227,243, 33, 33,196, -171,138,251,135,202,229,242,101, 10,133,226,140, 66,161, 56, 35,151,203,151, 17, 66, 66, 95,209,121, 35,132,144,113, 14, 14, 14, -167,253,252,252,158, 73, 36,146,211,132,144,241,228, 37, 23,160, 36,132,212, 36,132, 76, 38,132, 76, 33,132,132, 85,101, 95,239, -200,254,219,189, 34,251,223,241,138,236,127,207, 35,170,111,168, 87,100,255,123, 94,145,253,239,120, 71,246,223,254, 23,148,215, -151, 62,191, 69,251, 38, 23,190, 42,223,151, 16,242, 3, 1, 82, 8, 65,234,159, 45, 75, 12, 6,131,193,248,123,169, 82, 39,247, -128,128,128, 30, 28,199, 13, 7, 0, 30,143,247, 91,106,106,234,225,151,184,225,124, 86,244,126, 17,165,116,250,159,217,206,142, -125,151, 80, 74,167, 86,221,156,225, 51,142,163,188,194,124,146,207,189,189,189,101,124, 62,255,191, 58, 14,218,108, 54, 25, 33, -248,144,227, 10, 23,168,228,241,200,103,132,144,101,148,210,204,151, 49,133, 35, 71,142, 92,178,108,217, 50, 7,153, 76,134,164, -164,164,174,227,199,143,111, 69, 8,153, 76, 41, 77,175,108,127,169, 84, 58,188,105,179,150,147,191,253,238,123,133,183,151,151, -220,106,227,204, 9,137,137,242, 47,167, 79,109, 38,149, 74,151, 85,180,200,241,139, 70, 10,192, 88,129, 64, 48,196,193,193,161, -166,193, 96,120, 98,181, 90,119,242,249,252,110,243,230,205,139,236,217,179,167,131, 90,173, 22, 91,173,214, 90,155, 55,111,158, -188,110,221,186, 30,132,144,126, 21, 13,183, 47,142,224, 80, 74,159,149,250,184, 71,114,114,114,148, 80, 40, 68,205,154, 53, 9, -128,152, 74,182, 47,129, 2,161,247, 47,236,136, 2,128,186,173, 7,199,222,191,176, 3, 69,239,255,130,135,129,231,203,130, 84, - 42,253, 69,175,215,167, 20,127, 95,148,206, 76,123,246, 37,132, 44, 47, 90,230, 39, 18,192,192,162, 77,119, 83, 74,239, 17, 66, -124, 28, 36,146, 79,244, 6, 3, 1, 64,254, 76, 89, 98, 48, 24, 12,198, 63,204, 96, 81, 74,223,122,252,248,177,140,227, 56,132, -133,133,141, 4, 96,183,193, 42,235,134,211,169, 83,167,134, 82,169,244,185, 89,139,245,122,189,152, 16,116,122, 25,211, 82,252, - 27, 38,147,145, 39, 20,138,193,227,145,201,245,234,213,171,150,147,147,115,142,199,227,109, 73, 77, 77,205,127,137,155, 44,214, -172, 89, 83,219,215,215,247,191,102, 87, 78, 79, 79, 23,247,235,215,183, 74,122,163, 9,145, 24, 37,146,102, 34, 66,124,109, 86, -171, 11, 0, 8, 4,130,252, 48,103,231,198,243,191,249, 70, 70, 8,225,114,115,115,161,215,235, 49,105,210, 36,233,131, 7, 15, -250, 3, 88, 81, 73, 26,107, 55,111,209,106,210,209,163, 71,234,168,243,242, 13,107,150,172,142,214, 11,132,218, 26, 17,117,196, - 63,175,222,232, 50,118,244,136,143, 8, 33,183,202, 90, 54,228, 5, 29, 30,128, 61,159,124,242, 73,221,222,189,123,139, 53, 26, -141,131, 94,175,175,182,101,203,150, 47, 27, 55,110,172,104,208,160,129,248,247,223,127, 39, 42,149, 10,148, 82, 89,120,120, 56, - 29, 50,100,136, 97,219,182,109, 31, 2, 88,110,143,225,245,245,245,157, 89,100,208, 75,151, 61,161,159,159,159,180,232,152,206, - 37, 4,147, 42, 50,215, 4,136,171,219,122, 48, 64, 80,235,254,133, 29, 14,117,219, 12, 54,128,226, 49, 1,226, 0,192,223,223, -127, 46, 80,106, 94,167,231,121,248,236,217,179,151, 90, 59,176,119,239, 62,160,148,254,226,239,239,127, 48, 51, 51, 51,146, 16, -140,179,247, 33,128, 16, 2,119,119,247, 55, 0,252, 8, 96,232,163, 71,143,234, 2, 64,120,120,184, 16,192, 61, 23, 23,151, 70, -198, 66,115,197, 96, 48, 24,140,127,161,193, 18, 1,192,185,115,231, 64, 41, 21,191, 76, 80,160,244, 13,103,226,196,137,240,245, -245,125,209,180,224,204,153,211,127, 38, 79,207,253,198,215, 95,127,173, 80, 42,149,157,127,253,245,215,182,254,254,254,139,159, - 61,123,118,165,146, 60,102, 18, 66, 22, 21, 69, 28, 32,145, 56,196,142, 31, 63, 62,186,232,235,106, 7, 14, 28,144,245,233,211, - 71, 7, 32, 17, 0, 36, 18, 7,127, 62,159, 87,187,176, 83, 27, 22, 85,100, 4, 7, 19, 18, 34, 22,139, 59,142,251,241, 71,107, -163, 62,125, 4,114, 79, 79, 2, 0,137,143, 30,185, 47,250,238,187, 86,249,241,241, 98,189,187,123,110,174, 86,171,143,141,141, -133, 68, 34, 33,124, 62,191, 81,101, 25,150,203,229, 31,127, 51,127,145, 92,157,167,212, 27,213, 5, 38,190,205, 98,116,148, 74, -109, 25, 25,153, 57, 10,153, 76, 55,253,171, 57,162,247,199,188,245, 49,128, 9,149, 72,125, 56,121,242,228, 58, 77,155, 54,245, -223,190,125, 59, 81,169, 84, 16, 8, 4,138, 6, 13, 26,160,113,227,198,182, 83,167, 78,145,234,213,171, 35, 50, 50, 18, 23, 46, - 92,192,165, 75,151, 72,195,134, 13,101,187,119,239, 30, 89,150,193, 42,195, 84, 79,110,209,162, 69,160, 66,161, 48,168,213,106, -188,251,238,187, 0,128, 46, 93,186,212,150,203,229,191, 20, 20, 20, 56,236,223,191,239,141,202,204,117,230,189,189, 67, 0,192, - 43,178,255, 29, 0, 81,160,120,156,117,111,111,189, 82,155,212,137,137,137,105,158,159,159, 95,210,217,176,120, 97,241,182,109, -219, 86,165,188,103, 18, 66, 22,245,237,219,231,115,128,160,125,251,246,153, 19, 39, 78,164,247,238,221, 27, 48,120,240,160, 78, -113,113,143,203, 77,231,139,229,104,248,240, 55,159,186,185,185,117,241,243,243,139, 3, 32, 16, 10,133,197,155,242,253,253,253, -221, 34, 35, 35,135, 41, 20,138, 4, 62,143, 87,157,130,210,202,202, 18,131,193, 96, 48,254, 1, 6,139, 16, 66, 75,221, 24, 72, - 5, 79,225, 57,183,110,221,242, 53, 24, 12, 32,132,228,216,113,131, 58, 81,250,134,195,231,243,127,230,241,200, 4, 66, 8, 34, - 35,163,158, 46, 93,186,180,172, 53,183, 76,145,145, 81, 79,249,124, 94, 13, 74, 41, 8,225,253,194,113,182,204,178, 52,203,187, - 33,138,197,146,207, 0,192,199,199, 55,254,240,225,195,166, 65,131, 6,225,187,239,190, 19, 77,155, 54,109,106,112,112,240,135, - 73, 73, 73, 25,229,165,179,232,255,233,222,222,222,178, 53,107,214,212, 30, 63,126,124,116, 90, 90,218,116, 0,240,243,243, 91, - 0, 32, 2, 64, 98,169,207,176,114,229,182,103, 99,198,140,137,205,204,204,156, 94,158,230, 27,132,212, 12, 14, 15,239, 56,247, -220, 57,202, 51, 26, 73,206,249,243,234,236,204, 76,203,147,236,108,217,134, 27, 55,122,127,185, 96,129, 48, 48, 40, 8,103,246, -239,247,200,209,233,178, 85, 70,163, 33, 51, 51,147, 90,173,214, 75,118,228,189,174,151,167,167,108,213, 15,191, 92,119, 20,242, - 57,111,127,127, 34,112,115, 17,242,100,206, 98,158, 64, 96,168, 17, 92, 75, 4,160,110,101,231, 72, 36, 18,141,236,218,181,171, -108,219,182,109, 36, 50, 50, 18, 46, 46, 46, 56,127,254, 60,110,221,186, 5,139,197,194,203,207,207, 71,147, 38, 77,240,237,183, -223, 34, 40, 40, 8, 74,165, 18,201,201,201, 30, 98,177,216,179,130,227,249,156,225,157, 58,117, 42, 2, 3, 3, 97,181, 90,145, -151,151, 7,171,213, 10,185, 92, 14, 0, 72, 76, 76,196,129, 3,251, 43, 45, 75,118,154, 35,180,104,209, 66, 67, 8,121,248, 98, - 4,171, 42,154,190,190,190, 27,179,178,178, 27,118,232,208, 1, 42,149,202, 52,107,214, 44,212,171, 87, 15,181,107,135,217, 83, -230,167, 75, 36,146,181, 65, 65, 65, 95,125,250,233,167,110,110,110,110, 48, 26,141, 31,165,167,167, 99,252,248,241, 0,128, 94, -189,122,133, 11, 4,130, 13,239,190,251, 46,170, 85,171,246, 72,163,209,196,220,186,117,107, 90, 65, 65,193,131,151,205,187,157, -199,135,105, 50, 77,166,201, 52,255,167, 52,237,245, 34,255, 40,131, 69, 41, 37,132, 16, 90, 89,134, 40,165,249,254,254,254,190, - 82,169, 20,148,210, 42, 55,183,217,108,182, 15, 61, 60, 60,178,166, 79,159,222,186,118,237,218,166, 15, 63,252,240, 94, 66, 66, -194,140,210,219, 84,175, 94,125,222, 79, 63,253,132,216,216,216,196, 5, 11, 22, 92,200,201,201,249,186,138, 39,125, 26, 33,100, -105, 81, 52, 44,103,255,254,253,245,206,157, 59, 55, 97,201,146, 37,158, 31,124,240,129,232,227,143, 63, 30, 1,224,187,202,116, -248,124,190,174,172,102,193,114,110,194,166,178,250,104, 21,211,135, 16,169,147, 88,220, 97,238,185,115,212,148,152,168, 91,247, -253,247,142,171,174, 93,155,101,161,212,219,203,203, 11,109, 90,181, 42,112,224,243,115,178, 50, 50, 56,175,154, 53,249, 9,135, - 15,123,232,197,226,180,109,219,182,169,114,115,115,247,218, 81, 40,213, 54,142, 51, 59,250, 7, 90, 7, 13,232, 90,247,250,213, - 91,143, 28, 61, 61,120,141, 27, 70, 70, 61,136, 77,188, 73,109, 54, 11, 33, 68, 93,153,142,179,179,115,237,220,220, 92,168,213, -106,120,122,122, 98,233,210,165,240,241,241,129, 78,167,195,229,203,151,105, 64, 64, 0, 57,119,238, 28, 2, 2, 2,144,157,157, - 13,147,201, 4,141, 70,147,101, 52, 26,245,229, 25, 94,129, 64,176,150,199, 35,239, 1, 64,181,106,213, 31,254,242,203, 47, 6, - 0,168, 83,167, 14, 6, 12, 24,128, 93,187,118,225,193,131, 7,224, 56, 14,148, 82, 67, 64, 64,224, 67, 30,143,212, 41,242, 72, - 47, 29,197, 41, 94,130,231,217,179,103, 3, 95,242, 66, 39, 62, 62, 62, 3,194,195,195, 71, 12, 31, 62,220, 36, 20, 10,161,211, -233,160,211,233,240,240,225, 67, 83,215,174, 93, 51,251,246,237,227,125,240,224,193, 10,211,105, 52, 26,159,250,249,249, 77,157, - 60,121,242,210,149, 43, 87, 58,125,249,229,151,176,217,108,224, 56,174,228,111,241,251,189,123,247, 34, 62, 62,126, 89,105,115, -197, 96, 48, 24,255, 22,236,245, 34,255, 40,131,245,255, 9,159,207, 95,117,236,216,177, 6,109,219,182, 21,116,234,212, 41, 50, - 32, 32, 32, 50, 53, 53,245, 30, 0, 4, 4, 4, 68,118,239,222, 61,210,203,203, 11,203,150, 45,211,241,249,252, 85, 47,121,146, - 74,223,236,162,125,125,125, 23,239,222,189,123,209,184,113,227,224,227,227, 19,241,255,157,103, 39,137,164,225,187, 75,151, 90, -133, 22, 11,239,199,197,139,157,190, 63,125,122,209,246, 29, 59, 4, 45, 90,180, 32,148, 82,220,189,115, 71,250,237,242,229,178, - 97,253,251, 39,198,196,199, 91,247, 29, 61,106,201,124,246, 44,239, 89,118,246, 76, 74,105, 94,101,250, 22,139,229,114,220,227, - 56,255,214, 29, 90,250,157,191,118,255,214,192,254, 61, 59, 10, 5, 60,242, 56,241,217, 13, 95, 31, 15,231, 51,167,143, 27, 44, - 22,203,229,202,116,180, 90,109,130,213,106,117,163,148,122,158, 57,115, 6,158,158,158,200,207,207,135,197, 98,129,201,100, 50, -233,116, 58,135,220,220, 92, 24, 12, 6, 24,141, 70, 56, 57, 57,225,238,221,187,153, 86,171,245, 84,121,154, 86,171,117,172,131, -131,195,124, 74,169,208,104, 52,166,157, 56,113, 2, 34,145, 40,208,217,217,121,186,197, 98, 65, 90, 90, 26, 46, 94,188,184,192, -108, 54,167, 20,239, 35, 22, 75, 60,141, 70,163,181,188, 78,238,246, 70,176, 94,150,128,128, 0,191,234,213,171, 79,158, 54,237, -179, 90,245,234, 53, 64, 78, 78, 14, 56,142,131, 66,161,128, 78,167,131,147,147, 19, 90,182,108, 25, 61,111,222,188, 60, 74, 49, -173, 50, 19,152,150,150,150, 27, 20, 20, 52,115,252,248,241,147,107,213,170, 21, 4, 0,161,161,161,232,218,181, 43, 14, 31, 62, -140,216,216, 88, 20, 20, 20,216,174, 95,191,126, 32, 45, 45,141,173,237,197, 96, 48, 24,204, 96, 85,157,204,204,204,236,128,128, -128, 35, 55,111,222,236, 61,100,200, 16,156, 57,115,230,109, 0,147, 1, 64, 34,145,188, 61,100,200, 16,220,188,121, 19,143, 30, - 61, 58,146,153,153,153,253, 42,126, 83, 44, 22, 27, 76,166,194, 96,148,131,131,131, 67, 21,119,175, 86,212, 52, 8, 0,213, 42, -248,172, 92,120, 2,129,111, 84,247,238,130,252, 91,183,212,107,174, 94,253,122,203,150, 45,130,214,173, 91, 19,139,217, 12, 27, -199, 33, 36, 36,132,116,234,220, 89,190,126,203, 22, 55,155, 86,123,238,155,207, 63, 63,191,250,221,119, 11, 98, 41, 77,180, 39, -129, 70,163,113,249, 71, 19,198,118, 57,121,250,156, 95,120,120,136,251,145,227,167,163,221,221,156,101,181, 67, 67,229,121,249, -249,182, 25,211, 62, 19, 24,141,198, 31, 43,211,209,235,245,123, 78,156, 56,209, 63, 48, 48,208,243,222,189,123, 48,153, 76,176, -217,108,232,212,169, 19, 40,165, 18, 0,156, 64, 32,192,163, 71,143, 96, 54,155,179,226,226,226,210, 30, 63,126, 44, 1,176,176, - 34, 93,131,193,144, 84,250,255,160,160,160,214,189,122,245,130,213,106, 69,247,238,221,177,127,255,254,214,105,105,105,107, 74, -109,146,244, 10,158,132, 64, 41,173,227,239,239,191,187,232, 35,187, 58,183,251,250,250,134,133,134,134,206, 91,176, 96,129, 48, - 48, 48, 16, 28,199,193,205,205, 5, 90,173, 30,185,185,185,136,136,136, 64, 96, 96, 32,190,253,246, 91,160,112, 4,160, 93, 17, -182,228,228,228, 4, 0, 31, 70, 68, 68,136, 52, 26, 77,164, 94,175,159,213,169, 83, 39, 68, 71, 71,227,242,229,203, 31,105,181, -218, 60,185, 92,110,241,243,243, 27,206,227,241,228,102,179,121,127, 86, 86, 86, 22,171,162, 24, 12, 6,227, 53, 55, 88,222,222, -222, 50, 7, 7,135, 55,223,123,239, 61, 23,142,227, 32, 18,137,162, 60, 60, 60,230,231,228,228, 20, 84,245, 71,117, 58,221,246, - 45, 91,182,116,253,225,135, 31, 68, 61,123,246,172, 25, 16, 16,208, 20, 0, 6, 14, 28, 88,211,209,209, 17, 91,182,108, 49,235, -116,186, 87, 54,167,145,197, 98,105,219,164, 73, 19,228,229,229, 33, 49, 49,241, 94, 85,246, 61,112,224,128, 12,133,253,174, 42, -252,172, 34,172, 38,147,171,139,191, 63,239,217,233,211,230, 60,181,218,183,109,187,118,196, 98, 54,131,199,227, 33, 55, 55, 23, -201,201,201,112,118,113, 33,143,226,226, 20,107, 63,251,236, 64,181,250,245,197, 54,147,201,189, 10,102, 66, 75, 8,121,251,163, - 15, 63,216,179,117,235,111, 30, 74,165, 58,222, 65, 42, 53, 73,196, 66,239,143, 63,252,192,150,151,151, 55,138, 82,106,207,121, - 90,184,117,235,214,238,221,187,119,191, 19, 20, 20,228,149,157,157,237,163, 84, 42,109,121,121,121,124, 20,246,165, 34, 0,112, -250,244,105,168,213,106,171,205,102, 59, 7, 96, 46,165,212,100,111, 90,221,220,220, 28, 59,116,232,208,220,219,219, 27,106,181, - 26, 30, 30, 30,104,216,176, 97,115, 55, 55,183,237,121,121,121,154, 87, 89,184,143, 31, 63,238, 72, 41,109, 78, 41, 69,247,238, -221,237,218,135, 16, 50,168, 87,175, 94, 66, 30,143, 7,189, 94, 7,137,196, 1, 10,133, 19, 28, 29,157, 81,187,118,109,164,165, -165,161, 91,183,110,230,184,184,184,205,233,233,233,127, 84, 53, 77, 42,149,170, 75,139, 22, 45,222,155, 48, 97, 2,108, 54, 27, -250,245,235,135,148,148,148,175, 18, 18, 18, 14,120,120,120,244,127,231,157,119,220,220,221,221, 49,101,202, 20, 41,128,165,172, -138, 98, 48, 24,140,127,184,193,170,168,205, 51, 32, 32,160,137,135,135,199, 71,142,142,142, 46,167, 78,157,146, 3, 64,235,214, -173,193,113,220, 42, 63, 63,191,159,211,210,210, 46, 86,229, 71,243,243,243,213,190,190,190,251, 46, 95,190, 60,120,224,192,129, - 56,126,252,248,168, 34,131,133,203,151, 47,227,233,211,167,251,242,243,243,213,175, 34,131, 1, 1, 1, 61,218,183,111, 63,176, - 73,147, 38, 56,120,240, 32,108, 54,219,165,170,236, 95,122,196, 32,202, 24, 69, 88,252,153, 93, 98,124, 62, 8, 33,176, 90,173, - 0,128,156,236,108,196,198,196, 32, 47, 63, 31, 70,131, 1, 90,157,206, 86,187,122,117,189,202,100, 18, 18,160, 74,109, 92,148, -210, 36,133, 66,145,172,211,105,189,220, 60, 92,245,114, 7, 7, 40,213, 42,209,141,235, 87, 52,148,210, 39,118,106,152, 8, 33, -237, 14, 31, 62, 60,147,207,231, 15, 81, 40, 20,152, 48, 97, 2,191,125,251,246, 16,137, 68, 48, 26,141, 80, 42,149,216,178,101, - 75,182,213,106,173, 81,100, 72, 20,114,185,124, 35,159,207, 79, 85,171,213, 95, 86,246, 27, 18,137,164,125,223,190,125,249, 70, -163, 17,115,231,206,197,204,153, 51,209,189,123,119,254,181,107,215,218, 3,216,255,170, 10, 54,199,113,232,210,165, 75,233, 78, -238, 15,237,217, 79, 40, 20,214,174, 85,171, 22,178,179,179,145,157,157, 13, 79, 79, 79,248,249,249,193,219,219, 27, 75,150, 44, -161, 75,151, 46, 61,107,179,217, 54,103,100,100,228,188, 68, 89, 28,254,246,219,111, 15, 27, 60,120, 48,180, 90, 45, 78,157, 58, -133, 86,173, 90,225,219,111,191,245, 60,127,254,252,123, 77,154, 52,129, 80, 40,196,217,179,103, 97, 54,155,211, 88,245,196, 96, - 48,254,109,188, 46,253,175, 42,141, 96,185,186,186, 58, 57, 56, 56,140,235,221,187,119,235,254,253,251, 99,254,252,121, 37,223, -241,120, 60,108,218,180, 73,177,103,207,158,207, 3, 3, 3,219,113, 28,247,203,179,103,207,242,236,253, 97,142,227,246,108,221, -186,181,103,139, 22, 45,100, 29, 58,116, 8, 41,186,249,154,182,110,221,170,227, 56,110, 79, 85, 51,242,226,164,143,254,254,254, -245, 4, 2,193,192,222,189,123,215, 27, 61,122, 52,238,223,191,143, 45, 91,182, 60,174, 93,187,246,133, 42, 74, 39, 86, 50,138, -112, 65,101,209, 44,190, 88,156,171,204,200,112, 81, 4, 5, 9, 93, 29, 29,211, 15, 30, 60, 24,216,185,115,103,146,146,146,130, -252,252,124, 24, 12, 6, 92,191,126,157, 19, 0, 73, 2, 87, 87,146,116,249, 50,225,139,197,185, 85, 61, 6,129,190,174,161, 95, - 77, 27, 95,205, 96, 48,212, 85,169, 84, 86,161, 80, 40, 12,240,113, 73,169, 98,225, 54,202,229,242,198, 0, 4, 28,199,233,220, -220,220,100,199,142, 29,131, 88, 44, 6, 33, 4, 81, 81, 81,112,112,112, 16,201,229,242,100, 0,240,241,241, 17,175, 90,181,202, -121,196,136, 17,231, 43,211,110,223,190,189, 32, 56, 56,184,107,237,218,181,113,233,210, 37, 60,124,248,240,217,149, 43, 87,252, - 27, 55,110, 12,127,127,255,174,237,219,183, 63,116,230,204, 25,235, 43,186, 72, 95,170,147,187,205,102,163,132, 16,240,120, 60, -112, 28,135,236,236,108,212,168, 81, 3, 43, 86,172,192,146, 37, 75,126,124,217, 62, 82, 17, 17, 17,162, 6, 13, 26, 12, 28, 60, -120, 48,158, 60,121,130, 5, 11, 22,228,103,101,101, 93, 58,118,236, 88,143, 9, 19, 38,240, 91,181,106,133,220,220, 92,172, 91, -183,206, 26, 29, 29,189, 51, 51, 51,115, 15,171,106, 25, 12, 6,227, 53, 52, 88,254,254,254,189,220,220,220,222, 27, 58,116, 40, - 63, 44, 44, 12,153,153,153,208,104, 10, 12,245,234, 69,114, 0,143,138,197, 34,179, 92, 46,199,216,177, 99, 17, 21, 21,213,244, -243,207, 63,111,226,227,227,179, 41, 35, 35, 99,151, 61, 63,156,153,153,169,243,245,245,221, 57, 97,194,132,133,183,110, 69,215, - 0,128,107,215,174, 61, 77, 75, 75,155,150,153,153,169,171,162,185, 42,158,204,146, 72,165,210,171,161,161,161, 9, 61,122,244, -112,234,223,191, 63, 60, 61, 61,113,243,230, 77,124,251,237,183,113, 38,147,105,230,171,186,129, 87, 5,171,209,152,113, 99,239, - 94,199,246,111,190,233, 52,177, 87,175,197, 31, 76,152,240,195, 87, 95,125, 37, 8, 11, 11, 35, 58,157, 14, 87,175, 94,165,187, -118,237,178,172,255,250,235,165,144,203,133,151,119,237, 18,155, 76,166,164, 42, 70, 71,218,245,236,222, 46,108,241, 15,203, 97, -208, 23,224,234,165, 63,144,159,159,141, 85,171,119,135, 5, 4, 4,180, 75, 77, 77, 61, 91,133,227, 89,251,248,241,227, 94,148, - 82,136,197, 98,204,157, 59, 23,126,126,126,112,114,114,130, 70,163,193,228,201,147,157, 63,249,228, 19,103, 0,184,127,255, 62, - 20, 10,133, 93,186, 49, 49, 49,141,198,143, 31, 47,179,217,108, 56,114,228,136,153,207,231, 47, 62,126,252,248,162,250,245,235, -139,218,183,111, 47, 91,191,126,125, 99, 0, 87, 94,149,193,122, 25,108, 54, 91,226,177, 99,199,162,134, 12, 25, 66, 5, 2, 1, - 81, 42,149,112,118,118,198,138, 21, 43,116,233,233,233, 47, 61, 65, 91,110,110,174,176,110,221,186, 34,142,227,176,115,231, 78, - 60,123,246,236,211,204,204,204,108, 63, 63,191, 35, 83,167, 78, 29, 23, 22, 22, 22,240,232,209,163,103,122,189,126,101, 90, 90, - 90, 42,171,154, 24, 12, 6,227,245,141, 96,189,121,228,200, 17, 62,199,113, 88,189,122, 53,110,222,188, 73,115,114,114,102, 18, - 66, 54, 58, 57, 57,217,114,114,114,222, 28, 51,102, 76,255,153, 51,103,146, 54,109,218,224,242,229,203,164, 70,141, 26, 3, 1, -236, 42,117,163,238, 92,209, 92, 25, 42,149,234,122,102,102, 70,141, 82, 19, 75,214,144, 72, 28,174, 87,114,243,127, 78,243,197, -201, 44,249,124, 94,179,185,115,231,106,125,125,125, 77,247,238,221,195,202,149, 43,185, 27, 55,110,156, 22,139,197,171,210,210, -210,140,246,104,190, 10, 74,107,138,173,214,155,155,167, 78,173,211,168, 95, 63,238,189, 41, 83, 10, 68, 82,233,199,139,151, 47, -255, 76,169,209,248,129, 16,234,238,236,156,180,122,238,220, 5,221,251,246, 45,184,127,246,172,195,173,227,199,133,158, 22,203, -237,170,164, 51, 53, 53,245,108,104,205, 32,108, 88,243, 3,204,102, 35,210,159, 21,250,179,156, 92, 21, 42, 50, 87,101,105, 90, -173, 86,213, 27,111,188, 33, 2, 32, 29, 57,114,164, 56, 43, 43, 11, 53,107,214, 4, 0,168,213,106,252,241,199, 31, 8, 15, 15, - 7, 0,220,189,123,183,228,125,101,233,116,116,116,236,220,182,109, 91, 36, 37, 37,225,193,131, 7,151,158, 61,123,166,244,247, -247,191,148,156,156,220,190, 73,147, 38,216,181,107, 87,167,242, 12, 86, 85,207,145, 61, 6,171,156,188, 47,220,179,103,207,224, -203,151, 47,247,158, 50,101,138,160, 99,199,142, 0, 0,173, 86,107,160,148,218, 94, 70,179, 52, 22,139,165,120,210, 83, 29, 0, - 20,153,169, 47,255,140,230,159, 45,159, 76,147,105, 50, 77,166,249,191,160,249,111, 50, 88, 86,142,227,112,230,204, 25,236,222, -189,219,102, 50,153,166,167,167,167,199,148,250,126,125, 96, 96,224,249,129, 3, 7,126, 31, 27, 27,203,127,240,224, 1,236,185, - 1,149,198, 96, 48, 88, 94, 92, 42,216, 96, 48, 88,254,108,166, 54,108,216,128,140,140, 12,115, 74, 74,202, 9,171,213,186,231, - 79,142, 70,252,211,163, 8,215, 83,106,124,147,144, 19,179, 90,183,238, 50,243,248,113,201,123, 95,124, 97,124,123,244,232, 79, -109, 38,147,133, 47, 18,113, 98,185,156,103,147, 72,132,247,207,158,117, 88,246,254,251,110,122,163,241,200,230, 42,116, 28, 47, - 21,193,194,219,239, 77,130,190, 84, 4,235,242,245, 88, 84, 53,130,101, 48, 24,234, 2,128, 84, 42, 77, 6,224,243,214, 91,111, -129,227, 56,232,245,122,104, 52, 26,164,165,165,169, 70,143, 30,109, 3, 0,185, 92, 46, 24, 56,112,160,147, 93, 7,178, 90, 53, - 31, 62,159,143, 67,135, 14, 65, 34,145,156, 2, 0,137, 68,114,234,248,241,227,237,135, 15, 31,142,192,192,192,160,226, 73, 80, - 42,210,241,142,236,191,157, 2,161, 32,168, 85,120,165,163,150, 87,100,255, 59, 4,136, 43,154,229,253, 97,195,134, 13, 1, 59, -251, 93,149, 38, 59, 59, 91, 11, 96,157,183,183,247, 31,159,126,250,233, 91,205,155, 55,111, 51,115,230, 76, 66, 41,253,211, 11, -163, 83, 74, 97,179,217, 88,173,195, 96, 48, 24,255,102,131, 69, 8,249,189, 67,135, 14,195, 40,165,124, 30,143,183,229, 5,115, - 5, 0, 72, 73, 73,121, 26, 16, 16,176,186,122,245,234, 37, 11, 64, 87,241,134,147, 73, 8,249,150,199, 35,159, 21,254, 95,245, -137, 37, 75, 45, 73,242, 25, 0,194,227,241, 55, 70, 71, 71,127,145,156,156,156, 93, 85,195, 87, 22,175, 98, 20, 33, 0,108,165, - 52, 97, 24, 33, 71,167, 68, 70,118,238,254,254,251,168,215,189,187,147, 95,112,176, 77,111, 54,115,119, 47, 92, 32,151,118,238, - 20,221, 58,126, 92,168, 55, 26,143,236,166, 52,185,170,233, 76, 77, 77, 61, 91, 51, 36,224,216,160,129, 61,187,134, 84,247, 3, - 0,196, 39,164, 33, 39, 79,117,172, 42,230,234, 5,163,213,111,197,138, 21,251, 69, 34,145,160,244,146, 51,102,179, 57,175,216, -132, 17, 66,252, 86,175, 94,253, 59,143,199, 75,170, 76, 47, 38, 38,230,216,172, 89,179,186, 63,125,250,244, 92, 74, 74, 74, 42, - 0,196,199,199,167,250,249,249,237, 78, 75, 75,235,145,156,156,124,152,218, 17,122,122, 97,177,103,220,191,176,195, 1, 64, 84, -241, 98,207, 47,187,214, 96,105,138, 76,249,226,128,128,128,125, 61,122,244, 24, 70, 8,201,248, 51,122, 10,133,194,170,215,235, -173, 28,199, 9,204,102, 51, 85, 40, 20, 86, 86,253, 48, 24, 12, 70,149,104, 2,160,120,229,144,226,192,137,231, 11,239, 77, 0, - 74, 47,229, 87,252,127, 54,128,235,165, 52, 74,127, 94,217,190, 0,144, 3,224, 78,209,103,127,206, 96,165,166,166, 30,134, 29, -139, 57,219,187, 93, 5, 6,105, 58, 33,100, 89,177, 89,250,179, 26, 86,171,245,149,172,223,198,227,241, 18,250,244,233, 83,165, -237, 43,219,230,119, 74,147, 62, 38,100,211,193, 31,127,108,112,100,229, 74,127,155,213,234, 78, 0,202, 23,139,115, 77, 38, 83, -162,167,197,114,187,170,145,171,210, 60,137, 79,237, 6, 0,181,107,215,166,113,113,113,127,122, 52, 6,165,244, 54,128,192, 74, -182, 73, 3,208,198, 30,189,148,148,148,253, 40, 99,164, 96, 90, 90,218, 1, 0, 7,236, 77, 87,201, 98,207, 0,143, 35,220,160, -186,173, 7,239, 4,192, 21, 47,246,252, 42, 73, 77, 77,141, 7,240,245,159,213,121,242,228,137,169,122,245,234,123, 23, 46, 92, -216,255,206,157, 59, 7, 83, 82, 82, 76, 96, 48, 24, 12, 70,149,204, 21, 33,228, 96,209,189,167,119,209, 67,254,193, 23,223, 23, -111, 83,188, 93,233,109,138, 53, 94,252,188,162,125, 1, 96,218,180,105, 95, 44, 88,176, 64, 6,192,238,190,184,130,255,133,163, -246, 42, 22,181,125,213, 11,227,166,166,166,174,249, 43,242,186,188,208, 64, 93,249, 43,143,103,108,108, 44,121,157,175,178,226, -197,158, 75, 17,249, 79, 72,119, 66, 66,194,166,246,237,219,255,150,146,146,194,162, 87, 12, 6,131, 81, 53, 60,203, 50, 68,229, -248,129,222, 21,125,255,220, 3,123, 25,219,149,245, 63, 33,228,224,130, 5, 11,122, 87, 37,193, 60,118,206, 24,140,255, 63,254, -142, 81,172, 12, 6,131,193, 40,155, 23,163, 86,197,166,235,197,255,167, 77,155,246, 5,170,208, 60, 8, 20,206,204,221,185,156, - 31,181,123,116, 0, 33,164,243, 75,100,234, 4,211,100,154, 76,147,105, 50, 77,166,201, 52,255, 93,154,149,105,151,179,127,175, -242,154,244, 42,106, 46,124,241,125,101,251,218,177,237, 31, 85, 57, 16,127,217, 11, 64,103,166,201, 52,153, 38,211,100,154, 76, -147,105, 50,205, 63,249,106, 66, 41,237,133,194, 85, 78, 40,165,180, 23,165,180,251,180,105,211,166, 23,127, 54,109,218,180,233, -148,210, 78,197,219, 21,109, 83,178, 79,241,103, 47,254,125,241,179, 74,182,181, 59,205,255, 19,125,176, 24, 12, 6,131,193, 96, - 48, 42,224, 58,128, 38,165,162, 75,217, 0,238, 46, 88,176, 32,191, 84,223,168,108, 0,183, 1,212, 47,218, 46,187, 40,144, 84, -186,239,148,169,232,127, 83, 25,219,152,236,217,214, 94,152,193, 42,135, 6,190,252,175,131, 2,188, 26,151, 68,249, 10, 39,135, - 4, 87, 52,139, 64,201,116, 2, 28, 7, 74, 41,210,178,148, 55,239,100,210,175, 94,246,247,194,252,137,155,151,131,195, 82,142, -210,214, 69, 31,157, 85,229, 26, 39,221, 83, 81,165,189, 26,117,124, 72, 29, 7, 30, 62,229, 40,234, 1, 0,143,224,142,129,195, -119, 15, 51,232,195, 63,123, 60, 8, 33,164,174, 39,198,138,165,178,161,206, 46,174,181,242,243,115,226,204, 6,227,142, 7,217, - 88, 69, 95, 98,218,244,154,110,164, 57, 71,241, 5, 0,158,144,135,239, 99,115,233,105, 86,234, 24, 12,198,255, 19,252, 63,185, -127, 89, 83, 0,253,217,193, 69,148,157, 22,187, 76,214,139, 92,179,115,187,255,119,170,100,176,234,122,145,247, 65, 48, 27, 0, - 5,197,156,251, 89,244,151, 42,237,239, 71, 58, 59,240,249,107, 1,240, 13,102,219, 20,202,225, 92,153, 55,115, 30,218, 58,136, -248,223, 3,224, 12, 54,219,187,247,211,236,239, 15, 22, 25, 64,186, 11, 56,222,102,142, 82,161,141,163, 27, 65,113, 80, 33,194, -197,203,169,212, 80,149,180, 6, 5,120, 53,222,123, 45,189,235,233, 95, 38,162, 89,189,154,160, 54, 43,192, 89, 32,107,243, 41, - 78, 46,121, 11,205,234, 4,129,114, 22,128,179, 66,209, 99, 49,122, 68, 58,191,244,197, 17,230, 79,220,130, 61,188,238,173, 89, -179,214,199, 47, 36,130,112, 86, 51, 98,174, 29, 27,241,201,103, 51, 59, 70, 58,147, 72,123, 76, 86,125, 63,242, 94,205, 26, 97, -159, 78,154,253, 3,223,239,255,216,187,202,240, 42,142, 54,122,230,238,213,220,184,123, 66,144, 36, 36, 4,119, 2, 4,247, 2, -193,165,133,210, 22, 74, 41, 90,188, 64, 75,177, 22,167, 72,145,175, 5,138, 83,164, 80, 36,184,107,128, 16,146, 16, 8, 18,119, -151,171,187, 59,223,143, 72, 3, 68,110, 2,245, 61,207,179,207,189,107,103,103,103,102,103,206,188, 51,243,142,147,171, 49,199, -106,216,164,231,225,141,215,125, 55,255,151,134, 78,100,229,131, 4,186,205, 80, 33,229,107,139,177, 98,185,108,144,145,194,184, - 78, 65, 65,238, 83, 78,167, 63,224,231, 36,238,190,124,197,154, 70, 1, 93,122,154,112,185, 73, 34, 61, 15,223,253,251,246,186, -127,191, 97, 99, 79, 66,200,123,148, 82,190, 42,239,204, 83,204,136,220,249, 73, 79,137,152, 33, 62, 31,110,101, 80,133,169,175, -165,225,107, 79,134, 17, 90,185,155, 8, 74,112, 37, 44,153,238,169,206, 51,124,236,201,255, 8,133, 23, 8, 14, 18,138,189,143, - 82,104,138, 80,206, 9, 16,240,239,130, 72, 36,186,192,243,124,135,119,201, 73, 8,105, 73, 41,189, 41,196,238,127, 19, 85,179, - 96, 17, 44,122, 20, 21,107, 9, 78,135,122, 94,181,190, 1, 80, 37,129,165, 96,152, 29,119,158, 36, 59,128,213, 97,235,226,241, -251,180,122,128,213,235,192,177,122,112,172, 30, 44,171, 3,167,215,131,234, 53,152,255,227, 5, 64,155,139,166,126,158, 59, 0, - 56, 26,250, 12, 9, 21,253, 28,124, 53,200,138,104,179,177,103,211,210,207, 99, 83,243, 62, 63, 27,146,144, 86,207,158,204, 14, - 75,193, 79, 85, 17, 2, 23,126,152,132, 93,135,127,139, 91,251,191,252, 8,158, 82, 88,153, 25,121,143,232,253,200,117,231,209, - 11,177,107,118,168, 35, 0,192,220, 88,230,253, 65,200, 19,183,183, 73, 4, 59,133, 98,205,230,141,223, 59, 56, 90, 27, 17,246, -250, 50,176, 28, 7, 87,247, 94,204,236, 9, 35, 28, 23,173,222,182, 26,192,168,138,238,175,107, 79,124,189,106,251, 76,219,241, -219,117,183,130,220, 20,109,208,174, 57, 81, 84, 3,189,131,179,143,228,155,165,171,152,185, 51, 39, 77,173,107, 79,110, 69, 36, -211,176, 74, 10, 3,145,143, 29,142, 46, 93,182,162, 65,199, 30,189, 77,248,188, 84, 70,157,159,231,181,245,199,109, 95,213,109, -208, 92,217,214,207, 69,154,114, 96, 28, 81,229,102, 64, 39, 82,200, 59,214,235,108,166, 26, 57, 84,191,117,251,174, 9, 0,214, - 85,169,249, 87,170,123,154,231,171,223,154, 36, 20,109,239,223,188, 48,150, 75,184, 3,202,233, 1, 78, 87,242, 11, 78, 15,202, - 23,254,182, 24,247, 35, 0, 84, 75, 96,137, 40,186,158,189,122,199, 49, 57, 41,177,217,234, 21, 75,102,251,218,145,147,224,240, -115,120, 6, 46, 85, 85, 88, 10, 16, 32,224,239, 11, 66, 8, 75, 41, 21,191, 99,206,158,148,210, 19,111,201, 49, 29,192, 71, 69, -187,219, 40,165,203,223, 65,184, 92, 0, 56, 20,237, 38, 81, 74,133, 53, 80,255, 82,129, 5, 40, 64,121,224, 96, 63, 0, 48,170, -234,195, 40,160, 0, 97, 0,125, 62,250,246,232, 2, 27, 59, 7, 64, 95, 0,232, 10, 0,189, 10,208,231, 3,122, 21,210, 18,163, - 1, 93, 62,240,236, 36, 88, 74,229, 85,126, 43, 77, 54, 16,121, 0,157, 26,187,193,214, 92,129, 73,125,125,109,182,156,138,220, -182, 45,232,113,103, 0, 67, 12, 10, 43,165,104, 81,191, 14,214,110,203,143,248, 53, 56,165, 27, 0,244,106,100,115,170,133,175, -187,235,154, 29,234,136,223, 66, 50,186, 3, 64, 15, 63,243,147,205,189, 29,221,248,183,176,238,242,148,182,117,170, 81,135,112, -247, 55,131,207,137, 67, 78,142, 10,113, 47,118,194,210,185,137,136,227,209,190,178,251,141, 24,204,154,248,229,183,146,130,156, -100, 45,167, 75,229,108, 68,153, 98,177,156, 39, 72,184,164,201,231,179,184,201, 31,143,228,190,152,191,100, 22,128, 17, 21, 90, -131,236, 48, 97,229,202, 53,245,219, 52,173,107,151,244,203, 36,146,151,153, 12,150, 81,202,251,182,106, 3, 11, 79, 95, 62,249, -226, 74, 34,171,213, 25, 22,214,181, 16,127,125, 55, 94,222, 60, 68,252, 27, 7,202,127,218, 35, 29, 89,158,192,242,180, 37,254, -221,218, 53,223, 87,203,205,201,145, 82, 30, 60, 79, 65,121, 14, 31, 14,236,138,217,251,159,129,227, 56, 12,232,230,223,233,219, -177, 29, 41,207,243,160,148, 71,108, 82,122,193,249, 91, 17,157,162, 50,232, 45, 67, 44, 83, 13, 91,118,240, 15, 9,190, 89, 87, - 31,121, 12, 77, 71, 44,141, 32,192,213, 82,121,206,255,222,233,159,234, 2, 63, 86,183, 16, 34, 62,118,224, 94,158, 90, 6,183, -118,159, 48,155,247,156,178,205, 78,141,255,224,151,157, 27, 7,110,218,188,121, 23,128,113, 66, 49, 34, 64,192,191, 3,148,210, -119, 46,178,162,162,162, 18,223, 70,100,185,184,184,180, 3,240, 93,241, 72, 12, 66,200,119, 30, 30, 30,243,127,111,160,190,210, -198,203,230, 56,110, 68, 92, 92,220,229,138, 56,123,247,238,237, 4,192,163, 20,167, 7, 33,196,163,172,107, 45, 44, 44,184,214, -173, 91,191, 60,126,252,120,130,144, 67,254, 88,129, 21, 17,115, 96, 82, 99, 77, 98, 30, 0, 68, 24,144, 89, 95,233,218, 83,235, -185,101,219,191,122,127, 89,189, 26, 86,200,205,215, 34,232,238, 75,112,156, 30, 28,203, 22, 89,178, 88,112,172, 30,221, 26,218, -160,181,122, 28,214, 29,127, 12,150,227,151, 86,196,249, 58,116,148, 31,214,168,243,224,253, 60, 79,101,114,137, 40,219,203,213, -218,110,218,128,134,162, 73,125,235, 65,165, 99, 7,251,218,147,243, 97,201,116,171, 65,156,252,155, 46,139,104, 89,199, 56,182, -210,119,175,192,250,212, 98,104,239, 46,102, 84,147, 13,125,218, 51,228, 22,232,241, 44, 93,143, 36,117, 22,228, 36,209, 32, 78, -158,162,129,179,163,163,241,181,125, 51, 95, 88,139,115,196,118, 98, 86, 34,163,172,132,227, 41,131,172, 48,141,117,221, 46,226, -226,113, 89, 21,133,211, 72,105,250,126,187,174,189,204, 99,118,127, 66,140,188,186,193,174,177, 43, 94, 92,222,142,148,187,199, -145,151,151, 67,228,217, 89,176,183,174,141, 30, 35,134, 96,249,144,102,200,205,201, 5,147, 24,101, 46,147,200, 45,202,227,164, - 28, 70,172,252,118,177,163,152, 17, 21,198,103,241,198,233,161,210,104, 0,142,133, 66,204,131,208,226,115,122,112,122,157,178, - 65,224,204,241, 0,110, 85,246,238, 97,201,116, 79, 61, 59,210, 22,188,190, 46,213,171, 64,128,171,143, 82,104,137,232,241,181, - 39,195,154,116, 27,221,150, 18, 92,169, 78, 26,249, 89,163,119, 83, 15, 19, 99,227,156, 8,196, 29,252, 28, 81, 80, 80,251, 54, - 31, 97,216,135, 19,148, 91,182,108,233, 67, 8,249,180,244, 24,180, 63, 98,241, 83,129, 83,224,252,167,114,154,155,155,215,172, - 81,163,198,124,189, 94,223, 78, 42,149,218,235,116, 58,240, 60,159, 36,147,201,174,188,124,249,114, 97,118,118,246,243,191,219, -187,135,132,132, 24, 44,178, 12,225,148, 72, 36,120,252,248,241, 83, 67, 69,214,235,156, 18,137,228,231,171, 87,175, 98,255,254, -253, 0,128,200,200, 72,120,122,122, 26,151,117,239,139, 23, 47,140, 3, 2, 2,126,198,107, 43,112,188,206,249,240,225,195,154, -199,142, 29,195,193,131, 7, 1, 0,143, 31, 63,134,151,151, 87,153,225,185,122,245, 42, 51,124,248,240,154, 0, 18,254,232, 52, -250, 87, 10,172,162,245,117,201,235,255,203,192, 51, 55, 75, 89, 99,168, 57, 0,120, 86,213,135,133, 37,209,111, 27, 58, 74,186, -159, 59,184,161,157, 66, 42,194,130,173,211, 98, 83, 51,114, 91,138, 9,120, 0, 96, 41, 68,150, 38,178, 27, 75, 63,104,232,150, -153,167,198,175,183,227, 47, 63, 74,174,154, 41,244, 81, 2, 61, 3,192,226,247, 10,146,120,125,176,252,204,222,189,179,186, 55, -152,210,183, 1,142, 94,127, 57, 5, 64,165, 94,218, 41,207,131,242,108,201,160,246,162,166, 2,192,179, 40, 61,166,155, 7, 45, - 60,198, 87,205,130, 21, 64,136, 56,211, 14, 61,172,148,178,245, 99,199,126,108,166, 79,125,130, 12,173, 20,177,153,106, 36,169, - 36,200, 19,219, 33, 62,226, 33, 39, 34, 56, 83,185,149, 5, 57,224,212, 22, 86, 50, 19,145, 95,151,241,206, 57,167,231,100,202, - 40,203,152,245, 91,100,145,118,110,213, 75, 86,149,154, 79, 8, 42, 93, 68,219,220,220,194, 83,157,254,146,201,206, 76,131,133, - 67, 61,116, 31,220, 27, 95,247,242, 69,110, 78, 62, 82,175,255, 70,235, 56,154,145,232, 43,187, 48,183,135, 15,210,147, 19,161, -209, 3, 36, 95,147,161,214,170,243,202,141, 71, 17, 54, 79,254, 98,198, 48,119, 71, 91,227,226,201, 2,148,231,208,208,167, 22, -186,180,107,129, 51, 87,175,225,206,195, 72,240, 69,147, 5, 40,207, 35, 46, 37, 51, 89,173,227,182, 87, 41, 66, 57, 22, 84,175, - 46, 83,128,161, 26, 93,131,245,237,137,146, 3,230,181,172, 99, 58,102, 86,111,119, 83, 99, 57,129, 90,207, 65,173,213, 35,247, -218,122, 88,215,168, 15,165, 66, 65, 26, 67, 37, 6,160, 23,138, 18, 1, 2,126,199,160, 65,131, 20,201,201,201, 23,123,245,234, -229,219,165, 75, 23,101,219,182,109,145,159,159,143,160,160, 32,228,231,231,187,187,186,186,186, 7, 5, 5, 5,182,108,217, 50, -204,197,197, 37,224,192,129, 3, 85, 25, 35, 43,198,239,131,212,121, 0, 44, 33, 4, 69,199, 8, 0,254,109,214,161,149,201,100, -136,142,142,126,103,150, 44,169, 84, 10,181, 90,141,248,248,248,167,213,177,100,229,229,229, 73,157,157,157, 97,107,107, 11,142, -227,144,159,159,143, 35, 71,142, 32, 59, 59, 27, 60,207,195,200,200, 8,139, 86,110, 69,196,189,139,184,117,235, 22,178,179,179, -165,149,113,198,197,197,145,134, 13, 27, 66,163,209,128,101, 89,168,213,106,156, 61,123,182,100, 95, 44, 22, 99,198, 55,171, 17, -121,247, 34,238,223,191,143,184,184,184, 63,101,117,144, 42,104,145,127,165, 5,235,173,193,113,236,236, 45, 59,246,222,152, 61, -110, 8, 38, 12,237,236,186,112,195,161,206, 97,169,116, 7, 0,248,218,146, 15, 70,118,168,227,102,161,148,224,235,221,119, 1, - 74,103,191,237,243, 66,211,105,100, 61, 7, 50,229,240,173,232,139,115,134, 52, 70, 45, 71, 51,207,218,181,137, 44, 42,202,128, - 53,255,120, 22,150, 38,114,239, 94,141,108, 78,129,231, 97, 97, 42,175, 11,142,133,133,137,220,187,135,159,249, 73, 0,176, 80, - 74,235,150,101,233, 42, 15,205,220,164,159, 40,229,226, 79,140,155, 56,186,141,234,211,197,168,103,159, 64, 35, 19, 9,139,244, - 91, 65,200,145,184, 64,111,229, 14,141, 62, 3,113,207,163,184,115, 55,195,227,211,114, 53,211, 42, 13, 38,197,229,248,231,143, -109,107, 54,232, 98,153,118,124,110, 74,205,209,187, 61, 68,224, 69,185,187,250, 39, 27,219, 53, 55,186,253,244,121, 30, 79,223, -180,224,188,142,156,236,236,151,122, 14,142, 42, 78,108, 26,117,225, 39,204,234, 81, 31,153, 25, 41, 80,235, 88,100,171, 88,157, -131,133, 66,174,121, 30, 10,141,142,133, 86,207, 67, 98,225,140,160, 27, 15,211,120,189,190,220,181, 40,163,210,232,125, 0, 38, -165,143,213,182, 37, 13,103,154, 25,221,135, 94,133,232,184, 4,236,248,237, 70,227,162,235,170,223, 58,229,217,194,110,230, 82, -150, 43, 66,209,182, 58,131,219,125,236, 73,115, 35,133,244,251,239,166, 12,247,109,229,101, 37,231,227,110,128,240, 58, 24,115, - 98,168,100, 28,204, 93,107,129,215,230,210, 2,181, 58,235, 17, 32,120,102, 23, 32,160, 20,234,214,173,235, 96,110,110,254,232, -139, 47,190,176,234,223,191, 63, 14, 31, 62,140,156,156, 28,108,223,190, 29,107,214,172,193, 87, 95,125, 5,189, 94,143, 45, 91, -182, 40,127,249,229,151,230, 27, 55,110,140,115,119,119,175, 23, 29, 29, 93,217,130,234, 4,128, 28,128,164,168,238, 34, 0,248, - 19, 39, 78,160,103,207,158, 56,113,226, 4, 95,116,140, 35,132,232, 41,165,154,234, 10, 44,153, 76,134,236,236,236,119, 38,178, - 76, 76, 76, 32,147,201,144,155,155, 91,101,145,197,178, 44, 19, 23, 23,135,236,236,108,116,233,211, 7,171,151, 46, 69,135, 14, - 29,208,165, 75, 23, 80, 74,113,246,236, 89,116,110,227,135, 33,239, 5, 32, 60, 60, 28, 44,203, 26, 20,222,164,164, 36, 36, 39, - 39,163,123,159, 62,216,186,113, 35, 90,180,104, 1,111,111,111,176, 44,139,139, 23, 47, 98, 96,183, 54, 80,244,235,140,200,200, - 72, 33, 83,255, 83, 4, 86,104, 10,189,233,107, 75,142, 15,237,214,188,119, 31,127, 95,108,221,119,110,177,175, 47,217, 11, 0, -214,166,242, 69,239,119,168,133,176,152, 76,156,187,159,112, 60, 44,245,221,204,190,224, 57,216, 88,155, 41, 1, 70, 6,149,142, -103,205,158,161,210,129,201, 60,165, 80,182,155,137,145,125,194, 92, 91,248,186,186, 22,207, 34, 52,233,185, 10, 31, 60,124,234, -214,204,219,193, 13,156, 30,224,244, 48, 27,178, 27,248,198,184,210,112,248,215,148,159,153, 57,109, 74,235, 30,253, 6, 27,201, -148,230,224,114, 98,161, 79,122,136,244, 39,151,145,175,244, 68, 82,244, 51,236, 63,125, 43,251, 73, 92,122,142, 72,132,160,228, -108,205,244,168, 12,154, 87, 25,175, 90,143,165,243,231, 78,235,181,127,239, 62, 83,121, 45,127, 18,181,190,103,182, 76,204,202, -109,107, 54, 17, 21, 40,108,232,146,237,251,204,242,181, 88, 86, 25, 79, 65,126,206,161,179, 65,167,134,212,169,233,111,250,226, -206,111, 80,169, 53,208,232,129,122,205, 3,192,113, 84, 70, 68,132, 55, 99, 24,146,146,158, 9,162,231,146,175, 60,120,145,120, -245,193, 51, 70, 99, 90, 57,247, 43,153,142, 48, 19,251, 4, 52, 2,244, 42,188,215,174, 62, 86,239, 58,247, 57,128,209,111,151, -200,133, 22, 44, 10,248,215,179, 35, 63, 0,240,191,123,100, 77,221,166,253, 38,163, 42, 22, 44, 63, 91,210,195,175,182,211, 79, -171, 23,205,180,178,118,241,100, 8,175, 7,117,104, 0,228,196, 81, 18,119, 3,230,206, 45,192, 57,181,193,150,117, 43,242,120, -158,238,173,142,139, 10, 1, 2,254,205, 80,171,213,135,190,253,246, 91,171,222,189,123, 23, 91, 96,112,227,198, 13,108,219,182, - 13,198,198,175,150,147, 61,123,246, 4,165,212,106,193,130, 5,135, 0,180, 42,143,179,101,203,150,125, 54,108,216,144,208,168, - 81,163,103, 69, 34, 75, 10, 64, 20, 26, 26, 42,138,141,141, 37,150,150,150,212,201,201, 73,159,144,144,192, 3,224, 62,252,240, - 67,198,196,196,164, 78, 94, 94,222,165,234, 10, 44,153, 76,246, 78,198,100, 73, 36,146, 18, 94,169, 84, 10, 74,105,149, 68, 22, -199,113,226, 19, 39, 78,224,238,221,187,248,170, 81, 35, 76,113,118,134,149,149, 21, 46, 94,188, 8, 74, 41,140,141,141,145,145, -145,129,189,123,247,162, 99,199,142, 96, 89, 86,106, 8,239,193,131, 7, 17, 28, 28,140,111,154, 54,197, 20,115,115,152,152,152, -224,236,217,194, 94, 63,185, 92,142,232,232,104,156, 61,123, 22, 1, 1, 1, 66,166,254,163, 5, 86, 0, 33, 98, 98, 15, 7,157, - 86, 5,202, 82,128,192,201,215,151, 72,195,194,168,174,170, 15, 21,137, 48,119,221,142,227,189, 86, 77,238, 67, 62,233,219,216, -105,225, 79, 23, 62, 5,128, 49, 3,188,156,149,114, 49,214, 30, 13,163, 34, 17,230,190,139, 23,244,245, 37, 82,145, 8,159,118, -105,225,141,132, 44, 45,162, 18,178,206,135, 81,106, 80,151,206,185, 85, 35,177,243,215,139,177,107,118,170, 35, 40,165,176, 48, -145,123,127, 16, 18,229,246,211,137,224,152,149,251,213, 17,148,167,176, 80, 74,234,142, 14,111, 83,233, 44,194,102,110,210, 79, -102,207,156,222,166,239,232, 47, 20,108,196, 1,104,163, 78,131,215,169,144,163,147, 34,139,113, 64, 92, 76, 12,150,108, 57, 30, -155,147,175, 29, 18,154, 82, 53, 97, 25,153, 70,243,124,109, 73,255, 37, 95,207, 57,179,116,209, 2,147,130,103, 23,243, 24,194, -170, 24,247,246,226, 69, 95,173, 34,185, 26,237,224,168, 12,154, 91, 25,143,198, 20,203,190, 93,185,174,215,199, 35, 2, 35,188, - 60,219, 91,115, 9,207,173,213, 57, 57, 41,187, 79, 5, 59, 20,181, 12, 9, 0, 68,197,165, 35, 53, 59,159,229, 88,253, 37, 83, - 9, 22, 62, 50,196, 26, 88,132, 90,246,196,182,127,219, 6,195,109, 77,165, 80,229,101,193,206, 84,130,110, 45,106, 15,175,101, - 79,102, 62, 75,166,169,213, 78,104, 94, 15,170, 87,225,230,178,142,117, 41,167,175, 11, 78, 15, 93,200,207, 85,183,132, 17, 76, -153,208,206,196,204, 82,251, 66,132,124, 99,192,200, 6,196,204, 29, 48,247, 32, 18,159,193, 72,120,246,136,253,124,248,136,244, -231, 47,227,254,103, 99,132,229, 66, 17, 34, 64,192,171,136,142,142,126,127,246,236,217, 87, 91,180,104, 97,111, 99, 99,131,250, -245,235,227,215, 95,127,197, 23, 95,124, 81,114, 77,163, 70,141, 64, 41, 69, 70, 70, 6,190,253,246,219,164,132,132,132,247, 43, -226,140,136,136,120,188,115,231,206,182,190,190,190, 58,169, 84,154, 5, 64,158,149,149,165,200,200,200, 32,106,181, 26, 60,207, -243,230,230,230, 92, 66, 66,130,126,200,144, 33,154,235,215,175,215,206,207,207,143,121, 27, 11,150,171,171,107,104,122,122,122, - 54, 33,228,173, 92, 56, 72, 36, 18,136, 68, 34, 72,165, 82,216,216,216,216,230,229,229,241, 0, 50,171,227,194,129,101, 89, 52, -109,218, 20,167, 47,223,195,137,115,215,145,147,240, 24,159,126,252, 62,234,215,175,143,211,167, 79, 87, 59,205, 26, 54,108,136, - 83,103,175,226,234,221, 7,136,142, 12,193,231,159,126,140,122,245,234,225,212,169, 83, 66,134,126, 7, 2, 43,128, 16, 82,220, - 18,127, 67,174,250,216,146,134, 78,117,100, 63, 47,232, 81,219, 71,210,101, 1,136,196, 8, 7, 60, 79,181,153,187,100,125, 68, -125,123, 50,226, 97,114,229,179,189, 94,177, 98, 37,211, 71,245,236,200,158, 7,225,117,135,191,215,194, 21, 91,127, 85,206, 3, -128,193,109,107,226,246,147, 84,220,138, 76,217,243, 40,133, 62,122,219,151,171,111, 79,148,160,216,243,237,196,190, 1,238, 46, - 14,216,118,248, 42, 8,193, 33,131, 42, 90, 74,105, 11, 95,119,172,217,249,250,140, 65, 7,183,149,251,213, 17,167, 67,115,122, - 0, 64, 87, 31,227,147,205,106, 91,186, 85,102,201, 48,146,137,199,246, 8, 28,169, 96, 35,127, 5, 94,158, 5, 97, 53, 80,233, -120, 36,166,229,162,192,220, 21, 23,111, 60, 80,101,171,181,147, 31,165, 84,207,106, 23,150, 74,159, 53,114, 36, 49,249,249, 42, - 71,165,109,109,181,152,240, 52, 79,205,227,118,216,203,236, 71,137,244,177, 33, 28, 81, 81, 84,219,202,133,180,253, 97,199,254, -249, 18,169,108, 48, 67, 64,236, 44,140,109,127, 88,245, 13, 76, 77, 77,192,107,243,128,252, 84,244,255,108, 73,234,195,120, 93, - 77, 0,240,178, 33, 38,237,106, 73,119,136, 69, 36,238,252, 83,237,151,149, 61,131,232, 49,110, 68,183, 70, 18, 94,155,143,137, -223,238,195,230,153,125, 49,178,147,143,228,183,107,145,227, 0, 44,172,110, 90, 83,142, 5,213,171,208,106,206,229, 8, 2, 92, -165,128,255,221,253,139,234, 2,247, 12,230,104, 66,136, 68,236, 72,124, 26,184, 25, 75,249,184,107,224,227,174, 81,198,181, 13, -136, 91, 59, 66, 28,154,210,239,191,251, 42,127,235,214,109, 65,188, 8, 95, 87,230,242, 66,128,128,255, 42, 40,165,207, 44, 44, - 44,186,247,236,217,243,220,233,211,167,173,252,252,252, 0, 0,119,239,222, 5, 0, 52,109,218, 20, 94, 94, 94, 72, 78, 78,198, -208,161, 67,211, 18, 19, 19,187, 83, 74, 43, 28,211,155,155,155,251,236,224,193,131,118,121,121,121,141,231,205,155,151,236,238, -238,158,163, 86,171, 73, 86, 86, 22,207,178, 44, 44, 45, 45,101,141, 26, 53, 66,235,214,173,243,174, 95,191,238, 17, 27, 27,155, - 3,224, 69,117,194,223,183,111, 95, 92,190, 92, 56, 9,239, 93,248,197,146, 72, 36,240,243,243,115,126,246,236, 89,124, 81,252, -220,172, 70,156,150,252,127,240,224, 1, 46,221,139,131, 88,171,130, 44, 53, 1, 55, 15, 31, 68,159,177,227,193,178,213, 31,173, -240,224,193, 3, 28, 57,123, 19,198,114, 49, 30, 63,126,132,131, 7, 15,226,211, 79, 63,125, 43,206,106,162, 66, 45,242,143, 20, - 88,148,210, 75, 40,195, 11,109,237,218, 68, 38,207,195,130,110, 77,157,103, 12,246,175,205,232,115, 18,192,115, 60, 24, 9, 96, -103, 99,134,159,127,222, 83,115,207,190,125, 55, 26, 58, 75,214,241, 44, 59,247, 97, 50, 45,168,194,179, 23,172,218,119,117,240, -207,211, 2,196,159,246,168,107, 5, 0, 82,177, 8,107,127,125,196, 2, 88,240, 54, 47,213,202,133, 40,242,244,248,196,193,218, -124,222,236,143,122, 89, 5, 52,245,194,165, 91,161, 88,119,240,198,101, 89, 10,118, 26,156,169,121, 61, 94,215, 77,101,205, 34, - 4, 95,249,120, 74,142,163, 14, 82, 99, 75,232, 94, 94, 0,116,106,168, 53, 58,196,166,115,136,205, 80, 67,172,148,226,110,100, -156,202, 58, 9,199,171,251,206,132, 16,226, 95, 75,225, 52,111,241, 74, 23,181, 42,143,205,201, 76, 99,165,178,155, 18,165,145, - 60,177, 42, 60, 55,226,168,186,125, 77,105, 19,128,103,100, 10, 90, 48,103,234, 40,227,248,176,211,168, 35, 74, 0,161, 20, 70, - 62,189, 96,106,196, 72,219,122, 72, 99, 0,192,195,193, 92,246,237,215, 95,152, 79,158,249,117,165, 99,188,124, 9,145,214,111, -230, 48,217,207,221, 18,151,131, 35,112,249, 97,244,163,203,119, 31,215,235, 80,223, 9, 94, 46, 22,147,124, 9, 89, 22, 70,171, -110, 17, 45, 76, 24, 22,208,171, 75,102, 17,250,218,147, 97,205, 6,127, 89,230,236,193,242,224, 1,240,145, 28, 5, 97, 24,128, -136, 10,103, 52,198, 94,131,216,162, 22,221,179,255, 72,193,182,109, 59,191, 9, 75,165,130,213, 74,128,128, 74,144,149,149, 21, -162, 84, 42,187, 53,104,208, 96,251,196,137, 19, 77, 71,140, 24,225,244,241,199, 31,139, 0, 32, 57, 57,153, 95,179,102, 77,194, -247,223,127,159,157,150,150, 54, 90,167,211, 61, 52,164,193, 75, 8,185,254,227,143, 63,166, 94,186,116,169, 94,203,150, 45, 21, - 77,155, 54,229, 44, 45, 45,197,114,185,156,211,106,181,234,200,200, 72,254,217,179,103, 78, 89, 89, 89, 79, 0, 68, 85,167,251, -190,200, 90,181,144, 97,152,249,148, 82,191,119, 49, 6, 75,169, 84, 58, 2,120, 74, 8,169, 83,213,238,193, 55, 42,108,177, 24, -153,153,153, 40, 72,122, 4, 69,220, 19, 52, 48, 22,193,215,210, 4,102,102,102,111, 37,134,178,179,179,129,252,120, 92,189,250, - 0, 96, 89,152,155,155,195,220,220,252, 79, 23, 88,229,105,145,127,186, 5,235, 13,212,179, 35,159, 90,202,176,102,108,175,218, - 82, 15, 55, 23,104,226,238,226, 65,108, 30,230,182,108, 30,198,200, 77,213, 99,223,239,219, 52,112, 96, 13, 4,180,110, 70, 60, - 28,205, 39, 45, 91,181,233,179,122,246,228,139, 71,201,116,173, 33, 15,126,148, 66,159,251,216,145,109, 23, 66,226,198,185, 40, - 85,224,121,138, 11, 15, 19,241,240,101,230,182,240, 20,250,188, 42, 47, 81,207,137,116, 22, 67,180,143, 82,170, 48, 55, 54,206, -109,212,176,174, 77,231, 86, 13, 69,221,219, 55,133,148, 1,174,222,126,128, 41,171, 14,221,228,121,218, 43,216,192,238,193,194, - 25,131,175, 10,167,194, 25,131,250, 87,102, 12, 82, 74,105,225, 44,194,138,135,117, 49, 12, 73, 42,136,190,227, 32,177,246,132, - 42,234, 2, 94,102,242,136, 78,201, 69,142,216, 1,154,248,120,128,242, 49, 23, 41,173,118,110,182,177,177,177,171,233,235, 85, -123,253,142,131,208, 21,100,227,249,197,237,200,203, 76,196,162, 31,126,173,237,226,226,210, 62, 46, 46,238, 82, 21, 10, 25,175, -115,199,247,216,129, 2,140, 68,142,223, 54,238, 71,154,181, 17,108,148, 82,240,170, 84,140,157, 60,194,188, 71,151, 17,230, 0, - 16,253,248, 62,220,149, 42,131,120,117,214, 8, 28,220,193,219, 2,122, 21,118,156,186,175, 22, 1,221,119, 6, 61,138,234, 80, -215, 66, 49,216,223,221,114, 97, 66,214, 0, 84,211, 25,104,177, 5,171,196,162, 87,141,217,131, 7, 40,229,124,108, 73,212,190, -235, 41,198, 3,187, 52, 81, 74,197,132,208,188,120, 80, 35, 27,108,218,113, 32, 79,166,199, 22,161,234, 20, 32,192, 48, 20, 20, - 20, 4, 19, 66,234, 79,159, 62,125,216,156, 57,115,218, 25, 27, 27,215, 4,128,252,252,252,231,122,189,254, 50,128, 61, 85,153, -237, 87, 36,152,158, 18, 66,158,191,120,241,194, 97,247,238,221,230,248,221, 31,163, 10, 64, 54, 10, 29,102, 86,123, 6, 97,177, -152, 34,132,204,127,135,162,225, 68, 17,103,157,234,220, 47, 18,137, 56, 66, 8, 8, 33,144,203,229,184,114,229, 10, 6,245,234, -130,240,223,178,224,103, 97,130,230,163,199, 98,223,153, 51, 96, 24, 6,132, 16, 48, 12, 83,165,122, 68, 44, 22,227,234,213,171, - 24, 57,116, 32,228, 98,192,220,220, 28,211,167, 79,199,209,163, 71, 33, 22, 11,171,233,253, 33, 2, 11, 4, 11,207,108, 95, 34, - 5,167,199,177,237, 43,112, 60, 52, 79,251, 56, 21,115,189, 83,177,230, 32,114,249,212, 85, 59,199,157,185, 26,186,252,195, 33, -189,149, 29, 59,116, 65,199,128, 14,226,122,205,218,207, 3,176,182, 84, 69,221,185, 34, 95, 25, 28,143,111,182,156,138, 24,187, -239, 98, 36,129, 46, 23, 67,186, 54,163, 28,143,111, 42,169,252,223,224, 52, 55, 50,217,119,245,198, 13, 75,232,242,240,242,254, -121, 69,141,154,181, 1, 78,135,167, 79,159,224,251, 29,135,249,139,183, 31,255,172,101, 49, 49, 42,131,230, 27,202, 89,168,168, - 88,152, 27,203,188,123,248,153,159,228, 65, 97,161,148,214,165, 60, 7, 11,165,164,110, 87, 31,227,147,148, 82,106,106, 36,169, - 75, 57,125,165,156, 42, 45,187,121,199,143,219, 86,142, 25, 51,198, 56, 45, 46, 9, 9, 57,161,200,147, 57, 67,175,116, 69,212, -253,203,170, 2, 13, 91,105,229, 93, 81,124,166,165,165,165, 4,223,202,192,190, 31,150, 66,175,213, 32, 37,174, 80,163, 38,164, -229,192,204,198,249, 70, 85, 56,117, 44,159, 29, 56,226, 19,169,145, 41,140, 70, 6,246,150, 69,165,107,208,216,201,180,176,176, -200, 75, 69,248,217,171, 8,200, 47,212,107,207, 98, 69,112,111,232,100, 80, 56, 77, 21,210,137, 61,154, 56,227,121, 76, 34,174, - 60,138,223,241, 44,157, 38,212,178, 38, 59,162, 18,178,198,245,109,233,134,213, 71,195, 62, 47, 79, 20,149,199,233,107, 79,134, - 1,240, 47, 28,228,174, 2, 5,252,125,237,201, 48, 67,102, 14,150,197, 41,150, 98,248,202,147,209, 95, 30,184,147,214,119,198, -240,182,102,173, 91,247,148,129,213, 34, 87,165,209,135,101,210,156,183, 73,163,183,176, 78, 10,156, 2,231, 63,146,179, 72,236, -252, 92,180,189, 75,206,248,162,237,157,189,123,233,238, 64, 74,169,184,200,122, 85,225, 32,247,202, 56, 75,119, 7, 82, 74, 79, - 20, 89,175, 42,180, 98,189,206,201,243,124, 66,211,166, 77,173,250,244,233, 3,142,227,240,228,201, 19, 68,199,198,162,243,184, -207, 97, 97, 97,129,203, 33, 33,120,252,248, 49,230,207,159, 15,189, 94,143, 35, 71,142,196, 85,198, 41, 22,139,117,181,107,215, -150,246,235,215, 15, 44,203,226,217,179,103,136,143,143,199,148, 41, 83, 96,110,110,142,224,224,224, 18,206,180,180, 52,136,197, - 98,221,159,145,151,254, 59, 2, 11,224,192,233,145,125,102, 1,214, 94,129, 78,167, 71,221, 71, 41,180,116,159,246,166, 6,214, -228, 88, 72,104,196,243,224,107, 29,101, 72,121, 88,120, 79, 21, 16,153, 70, 19,155,185,138,115,161,203, 53,195,179,147,120,145, -156,155, 23,153, 70, 19,171,250, 18,148,231, 8,116, 5, 64,226, 93, 92,191,124, 9, 23,111, 62,192,157,135, 17,220,245,224,200, -125, 34, 30,223,132,165,209, 39,213,104,117,192,164,215,106,140,122,248,212,173,153,151,189, 27, 56, 22,148,215,195,124,200, 30, -140, 14,107,237,214,172,150,133, 91,161,229, 74, 15,203,143,206, 3, 43, 21, 21,242,221,137,209,109,241,175, 41, 31,144,155,149, -222,178, 83,251, 86,198,230, 62, 61,144,246, 52, 18, 79, 30, 92, 85, 5,135, 70, 93,191, 19,163,123, 43,235,136,179,179,115,187, - 78,237,189, 49,100,236,108,232, 10,178,241,236,226,143,200,203, 72,194,149, 27, 38,136,200,201,105, 5,192, 96, 11,214,245,104, -125, 61, 0,240,247,144,198,152, 66,227,240,126,239, 62,144, 19, 53,120, 77, 14, 72, 65, 26,162,226,181,217, 3,126,136,229, 0, - 64, 41, 39, 98, 99,154,109,102, 8,175,175,187,181,167,146,209, 99,231,153, 71,224,249,194,101,150,120, 30,155,118,158,143, 26, -247,205,200,198,240,117,179,108, 72,138,156,159, 24, 92,104, 82,180,189,179,239,235,186,234,115,243, 0, 94,135,171,147,172,234, -182, 93,155,209,182,186,150,176,135,241, 52, 30,192, 56, 31, 39,178,121,210,218, 83,243,154,158, 9,243,159,246, 81, 95, 51, 80, - 97, 97,116, 1, 2, 4,252,249,200,203,203, 27, 59,122,244,232,205, 18,137,196, 22, 0,225,121, 30, 60,207,139,151, 47, 95, 46, -225, 56, 78, 36, 18,137, 56,134, 97,216, 19, 39, 78,232, 57,142, 75, 85,171,213, 99, 43,227,100, 89, 54,106,252,248,241,181, 43, -155,113,184,119,239, 94,136,197, 98, 29,203,178, 81, 66, 74,188, 75,129, 69,241,117,155,145, 11, 22, 0, 32,160,248,234, 53,113, - 5, 0, 8, 73,167, 9,245,236,200,148,122,205,218, 47, 40,190,167,170, 1, 80,115,220,192,102,245,189,246, 2,128,134,114, 35, -171,243, 18, 57, 26,213,224, 70,205, 90,237,227, 41, 21,179,148,110, 19,241,248, 69,205, 34,220,144,153,115,229, 33, 33, 37, 43, -184,120, 1,103, 30,244,247,110,193, 34,119, 12,148, 82, 90,210, 45,184, 66,129,180,108, 77,165,126,156,174, 62,215,116,105,230, - 38,253, 36,232,218,253,177, 28, 71, 29, 24,134, 36,169,180,236,230,183, 21, 87, 0, 16, 23, 23,119,201,215,142, 4,133, 52,180, -239,106,163, 44,178,106, 21, 0,105, 5, 8,138, 75,201,189, 84, 29,206,204,124,125,223, 57,107,142,254, 42,147, 48, 98, 80, 90, -232, 8,148, 82,168,117, 92, 70,177, 8,107, 96, 77,156,166, 31, 97,247, 50, 12,137,174,140,239,214,227,196,213, 67,150,157,253, -226,209,203,204,109, 47, 50,105, 40, 0,188,200,164,161,117,172,201,188,168,164,220, 47, 66,163, 51, 87, 84,117,220, 4, 37,184, -210,108,200,130, 55,142,189,109,124,134, 39,208, 7, 0,250,215,179, 35, 93,134, 76,251,126, 26, 33, 16,150,137, 16, 32,224, 63, -132, 98, 43,150, 72, 36, 90,248, 14, 57, 79, 16, 66,122, 2,120, 90,133,123,110, 1,168,255,142,223, 45, 29, 64,186,144,202,127, -145,192,122,148, 66, 55,193,128,197,156, 13,189,174,220,251, 19,232, 89, 0,214,111,243, 18, 69, 28, 86,239, 50, 98, 66,146,233, -188, 63, 34,194,139,196,212, 31, 50,150, 39, 44,133,118, 3, 0, 47, 47, 47,250,228,201, 19,188,173, 23,220,240, 84,250, 0,175, - 45,185, 80,150,200, 6,208,214, 16,190,200, 52,250, 13,240,102, 23,240,211,116,186, 8,192,162,106,189,115, 53, 61,181, 27,156, -183, 82,232, 25,160,114,111,250, 2, 4, 8,248,119,138,172, 63,128,243,132, 16,179,255,113,129, 37,224,159,139,200,200, 72, 34, -196,130, 0, 1, 2, 4,148, 11,238, 15,224, 20,156, 14, 11,120, 5, 34, 33, 10, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 45, 8, -128,206,101, 74,241, 42,204, 14, 32,132,116,174,178,212,175,132, 95,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,127, 31,103, -101,220,255,154,217,137,180,212,224,229,119,189, 1,232, 44,112, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249, 95,219,132, - 46, 66, 1, 2, 4, 8, 16, 32, 64,128,128,119, 12, 65, 96, 9, 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, 80,125,144, 42,174, - 76, 34, 64,128, 0, 1, 2, 4, 8, 16, 32,192, 16,129, 85,180,190,110,241, 58,187,130, 23,112, 1, 2, 4, 8, 16, 32, 64,192, -159, 43, 72,254,101, 90, 68, 16, 88, 2, 4, 8, 16, 32, 64,128, 0, 65, 96, 9, 2, 75,128, 0, 1, 2, 4, 8, 16, 32, 8,172, -191, 55,138, 7,185, 7, 16, 66, 40,128, 0, 33,137, 5, 8, 16, 32, 64,128, 0, 1,127, 1,254, 85, 90,164,100,144,187, 96,189, - 18, 32, 64,128, 0, 1, 2, 4,252,165,162,228, 95,164, 69,132, 89,132, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64, -128, 0, 1, 2, 4, 8,248,123,227, 15,117, 52, 74, 8,233, 44,112, 10,156, 2,167,192, 41,112, 10,156, 2,167,192, 41, 8, 44, - 1, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,128, 0, 1, 2, 4, 8, 16, 4,150, 0, 1, 2, 4, 8, 16, 32, 64, -128, 32,176, 4, 8, 16, 32, 64,128, 0, 1, 2, 4, 8, 2, 75,128, 0, 1, 2, 4, 8, 16, 32,224, 47, 2, 1, 80,230, 76, 0, - 74,233, 89,131, 73,170, 49,155,160, 50,126,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,255,125,156,149,113, 87, 69,127,252, -173, 65, 41,253,195, 54, 0,157, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,255,107,155,208, 69, 40,192, 80, 43,165, - 61, 33,196, 94,136, 9, 1, 2, 4, 8, 16, 32,160,114,136,223, 37,153, 15, 33, 29,199, 55,176, 63,240,217,131, 36,171,202,174, -181,179,179,219,172, 84, 42, 71, 20, 20, 20,228, 19, 66,248,210, 22, 53, 0,165,221,203, 63, 75, 73, 73,105, 91, 25,159, 92, 46, - 95, 99,111,111,255, 81, 94, 94, 94, 1, 33,132, 18, 66, 64, 8, 41, 22, 7,175,252,114, 28, 23,151,150,150,214,244, 31, 45,120, - 0,198,198,222,254,182,132, 97,156,171,122, 47,199,243, 47,146,147,146, 90, 85, 65, 92, 45, 37, 4, 51,138,254,127, 71, 41,157, -253, 47, 84,144,140, 33,151,249, 1,166,145,192, 16, 78, 36,250, 92, 2,108,208,240,252, 15, 69, 25,151,171,238,163,181,183, 73, -109, 66,209,144, 16,152, 83,138,108, 74,240, 64,214,156, 70,253, 69, 66,186,165, 68, 34, 25,108,105,105,105,154,146,146,114, 14, -192,175, 0,222,179,179,179,235,148,153,153,153,171,215,235,247, 83, 74,111, 86,135,187, 93, 35, 50, 83, 38,149,124,168,214,233, -191,189,122,159,254, 24,208,132, 88,179, 60,150, 41,164,226,182, 26, 45,251,221,149, 7,116, 91, 21,195, 74, 94,179,198, 87,121, - 89,138,131, 6,166, 59, 0, 28,177,180,244,146,219,154,157,147,200,152, 23, 89,201,121, 35, 6,166,164,196, 14,124,139,116,255, - 59,194,214,214,118,148, 72, 36, 90, 76, 41, 5,199,113,115,211,211,211,183,191,163,124, 53, 12,128,113,209,110, 62,165,116, 79, - 21,238,141, 6,224, 86,180, 27, 67, 41,117,175,232,184,128, 42,167,205,166,195,135, 15,143,235,208,161, 3, 86,175, 94,141, 77, -155, 54,189, 76, 77, 77, 93, 6, 96, 7,165, 84,251,103,243, 8, 2,171, 12,248, 18, 82,127, 76,247, 86,191,141, 29,212, 93,102, -192, 71,252,191,238,221,187,143,220,177, 99,135, 36, 50, 50,210,200,195,195, 3, 34,145,168, 68, 0,149, 46, 39,107,212,168,193, - 87,198,199, 48,204,218,254,253,251,143, 62,120,240,160, 50, 56, 56, 88,233,227,227, 83,194,199,243, 60, 94, 47,119, 61, 60, 60, - 42,228, 51, 55, 55,191,203, 48,140, 75, 89,226,172,188,255, 28,199,197,165,167,167, 55, 53, 32, 19,118, 3, 48,203,128, 40, 93, - 70, 41, 61, 93,209, 5, 18,134,113, 78, 72, 72,176,171,106, 90,185,186,186,234,170,240,209,216, 19,130, 25, 60, 79, 69, 0, 32, - 18,145,153, 70, 70, 70,155, 84, 42, 85,108,241,249,162, 52, 75,174, 74, 24, 92, 92, 92,122,240, 60, 63,172,144, 83,180, 39, 46, - 46,238,100, 85,238, 55, 51, 51,187, 43,147,201, 92,196, 98, 49, 41, 43, 93, 94,223,231, 56,142,234,116,186,184,140,140,140, 42, - 11,235, 75, 0,233, 14,180, 99, 25,102,178,181,141, 77,219,224,160, 32, 99, 63, 63, 63, 17,195, 48,179, 1,252,240, 54,223,141, -246, 54,169,205,233, 49, 72,165,151,247,150,187,127,229,165,137,254, 42,210, 72,162, 57,174,189, 77, 14,252,217, 34,139, 16,210, -253,131, 15, 62, 88,242,237,183,223,218,200,100, 50,209,254,253,251, 91, 77,153, 50,229,195,213,171, 87, 59, 15, 30, 60,216, 84, -171,213,242, 51,103,206,108, 71, 8,249,154, 82,122,180, 42,220,173, 27,145,150,222, 30,142,243, 39,140,232,136, 47,150,238,157, -224, 95,159,164, 25, 25, 75, 55, 13,104, 91,219,162, 94, 77, 75,124,189,249,250, 68, 0,219,170, 16, 86, 34,145, 72, 26, 57, 56, - 56,120,104, 52, 26,174,168,209, 70, 75,149, 9, 0, 0,141, 70,163,203,204,204, 60,241,182,113,243,133, 66,209,162,133,133,201, -153, 5,195, 62, 48,202,201,204,176, 95,251,219,175, 33, 7, 97,215, 96, 32,240,242,223, 84, 33,136, 68,162,197,241,241,241,142, -148, 82, 56, 58, 58, 46, 6,176,253, 29, 81, 27, 23,151,195,132, 16,227, 42,222,235, 86,234, 94, 55, 3,142, 87, 39,239, 43,196, - 34,209,120,153, 68,210,149,227,184,250, 69,121,232,161, 86,175, 63,195,242,252, 6, 74,169,250, 95,172, 3,102,140, 27, 55,174, -203,156, 57,115, 60,102,204,152,129, 25, 51,102,212,216,186,117,235,230, 37, 75,150,204, 36,132, 52,160,148,230,253,201, 60,130, -192,122, 77, 92,185,118,107,228,117,241,243, 15, 6, 73,249,131,107, 8, 70,125, 89,161,184,106,213,180,233,135, 59,118,236, 0, - 0,140,232,219, 23, 93,155, 55,135,169,137, 49,100,178,194,224, 16, 74, 32,149, 72,209,111,202, 84, 67, 62,140,239, 2, 3, 3, -135, 31, 60,120,208, 4, 0, 54,109,218,132,192,192, 64, 88, 89, 89, 65,169, 84, 66, 42,149, 66, 34,145,188,242,107,128, 96,115, -137,143,143,183, 83, 40, 20, 37,130,143,231,249, 87,182, 82,253,208, 96, 89, 22,158,158,158,134, 70,215,172,236,236,236,118,249, -249,249, 21,246,221,214,172, 89, 19, 0, 78, 27, 66,184,120,209, 55,224,217,124,136,197, 0,203, 2, 26,157, 8,124, 25,109,121, - 39, 39, 39,140, 31, 63, 30,111,179,254,100,239,222,125, 64, 41,221,228,236,236,124, 60, 57, 57,217,143, 16,140,173,142,101,139, - 82,250,254,211,167, 79,149, 60,207,195,219,219,123, 36,128, 42, 9, 44,177, 88,236, 18, 18, 18, 98, 39,151,203,203,181, 84,150, - 18,191,208,233,116,104,220,184, 49, 91,149,103,216, 3,110, 25, 34,209,199,141,154, 52,249,100,126,223,190, 70,119,239,222,149, -139, 68, 34,176, 44,139,229,203,151,179,148, 82, 11, 95,192, 44, 12,200,169, 32,127,206, 1, 48,170,200, 42,187,141, 82,186,252, -149,243, 20, 13, 85,122,121,239,103,121,253,154,183,168, 49, 19, 97,143, 30, 54,175,101,114, 4,166, 98, 77, 20,128, 63, 85, 96, -153,155,155, 15, 92,189,122,181,237,182,109,219,114, 30, 63,126,172,251,225,135, 31,108,199,142, 29, 91, 87,167,211, 97,220,184, -113,169,222,222,222,210,213,171, 87,219, 30, 62,124,184, 27,128, 42, 9, 44, 49,193, 55, 67,251,118,133, 90, 47,130, 94,207,218, - 58,218,154,254, 60,233,131, 0, 9,165, 90,236, 60, 26, 12, 61,203,255, 88, 69,203, 85,163, 1, 3, 6,184,239,217,179, 71, 28, - 30, 30, 46,246,241,241, 1,199,113, 37, 27,207,243,224, 56, 14, 94, 94, 94,111, 29, 47, 31, 2, 94, 54,246, 86,103, 90,245,236, - 97,228,168,144,195, 42, 51, 21, 99,164, 98,211,237, 74,205, 46, 0,173,255, 77, 21, 2,165, 20, 98,177, 24,177,177,177,176,179, -179, 51,178,178,178, 74, 4,240, 85, 70, 70,198,150, 63, 72,212, 87,219,178,245, 14,195,208, 92, 38, 22,255,178,243,199,181, 14, - 45, 90,183,102,236, 29,237, 16,249, 36, 6, 98,194,117, 14,185, 19, 28,240,225,167,211, 38, 17, 66, 6, 80, 74,111,255,219, 4, -128, 99,155,207,250, 59,250,127,190,137, 80, 30, 95,175,255, 53,119,233,119,107,148,227, 62,254,128,153, 50,101, 10, 92, 93, 93, - 61,250,247,239,255, 29,128, 79, 43,229,105,249, 89,127,135,214, 19, 54,129, 82, 44,248,254,215,220, 37,223,173, 81,126, 90, 13, - 30, 65, 96,189, 6, 63, 66, 44, 26,184,219, 95, 90, 52, 99,172, 9, 61,249,147,168, 32, 61, 5,229, 73, 24, 59, 59,187,205, 61, -122,244, 24,177,125,251,239,141,162, 86,126,126,232,223,209, 31,118,214,230, 80, 26,203, 10,171, 33,158,224,193,227, 23, 6, 9, - 1, 87, 87,215,113,191,252,242,139, 73,105, 17, 33,149, 74, 75,182,210,226,170,120,123,221,210, 81, 22, 20, 10, 5,206,158, 61, - 11,177, 88, 12,134, 97, 32, 22,139, 75,182,210,251, 12,195,192,222,190, 74, 67,147,150,153,155,155, 55,200,205,205, 53,203,202, -202,130,155,155, 91, 14,128,144, 82,231, 27,164,166,166,154, 85,133,144,103,243, 49,101,140, 15, 36,218,155,208, 74,154, 67, 37, -110,131,235,119,194,113,252,244, 37,196, 39, 36,193,191,101, 35,188, 63,108, 32,206,156, 57, 3,142,227,170, 90,224, 38, 19, 66, -190,123,239,189, 62, 51, 1,130,128,128,128,228, 73,147, 38,209,208,208,208,254,131, 6, 13,236,244,228,201, 83, 82,100,217,154, - 65, 8, 89,107,168, 37,139, 82, 42, 5,128,203,151, 47,131, 82, 42,171, 78,222,147,203,229,184,113,227, 6,138,187,131, 69, 34, - 17, 68, 34, 17, 24,134,193,177,167, 54,200,215,138, 80,144, 28,138,207,123,187,161,102,205,154, 16,137, 42, 31,114, 24, 0, 40, -174, 3,253,137, 68, 50,197,209,201,201,163,125,173, 90,202,179,103,207, 50, 0,224,238,238, 78, 19, 19, 19,179,142, 28, 57,146, - 43, 6, 54,185, 83,186,163, 34,113,229,230,230,214, 70, 36, 18, 45, 46,142,115, 66,200,119, 30, 30, 30,243, 75,210,141,231, 49, -172,139,149,100,210,164,201,210, 22, 1,133,141,146, 22,125,246, 32,231,217, 82, 31,146, 49,199,252,207, 46, 12,178,179,179,127, -246,242,242, 98, 82, 83, 83,207, 3,120,174,215,235,215,255,252,243,207,118, 99,198,140, 73,217,181,107,215, 4, 0,174,203,151, - 47,239,150,151,151,183,175, 42,188,109, 27,146,158, 77, 27,249,181,116,115,117,197,165,235,183, 33,149, 73, 44,198,143,234, 13, - 19, 19, 49, 86,108,251,141,143,142,203,152,112,229, 1,221, 81, 5,113,213, 96,224,192,129,174,123,246,236,145, 2, 64,104,104, - 40, 82, 82, 82, 96,109,109, 13,133, 66, 81,242,205, 23, 91,177,222, 86, 92,153,187, 90,223, 58,114,228,168,145,149,149, 5,214, - 79,157,132,247, 19,226, 96,198,136,160,215,195,227,223, 84, 25, 16, 66,188, 6, 12, 24,160,224, 56, 14,249,249,249,184,120,241, -162,185,145,145,145,185,139,139,203, 2, 0, 6, 11, 44, 35, 35,163,100,181, 90,109, 87, 84,142,166,168, 84, 42,123, 0, 5, 10, -133,194,168,232, 18, 85, 21, 45, 91, 49,165, 44, 84, 49, 6, 28,175,202, 59, 55,107,222,172,193,217, 67, 7,119,155,100,231, 38, -193,194, 50, 5, 34,100, 99,203,150, 13, 48, 50, 50,195,130, 5,115,196, 47, 58,119,116,238,214,115,192, 89, 66, 72,231,127,157, -200,162,100, 75,231, 62, 35,172,140,148,166, 69,117,137, 30,219,183, 78,130, 72, 36,194,252,249,243, 81,175, 94,189, 79, 8, 33, - 95, 82, 74, 51, 42,166,193,150,250,237, 6, 91,201, 20,133, 85, 49,207,233,241,195,222, 47, 10,121,102,143,197,208, 62, 53, 63, -121,176,139,156,170, 87, 11,185,133,229, 63, 84, 18, 17, 98,208,156,166,148, 74,139,246,148,210, 75,229,237,255, 35, 5, 22, 33, -132, 82, 74, 75,119,179,188,178, 95, 17,106, 16, 34,247,180, 52, 57,189,241,171, 73, 78,204,141,223,196,170,152,167, 72, 80,115, -176,248,189, 18,125,101,170,165, 82,169, 28,177,125,251,246, 87,244,151,155,189, 29,164, 82, 9, 36, 82, 2,139,182,189, 1, 0, - 89, 87,142,131, 16, 90, 94,197,252, 10,103,126,126,190,250,254,253,251, 38,219,182,109,131,157,157, 29, 60, 60, 60,160, 84, 42, - 75, 10,218,210, 91,177,208,122, 93, 96,189,206, 89,124, 94, 44, 22, 67, 36, 18,225,204,153, 51, 96, 89, 22, 3, 7, 14,124, 67, - 92,137,197,226, 50, 5, 91,121,211, 76, 41,165,167, 9, 33, 33,148,210,118, 69, 21,111, 8,165,180,125,169,103,119,179,181,181, -157, 5, 96,153,161,156, 12, 67,193,168,175,131,119, 89, 3,113,236, 36,104, 37, 13,113,225,106, 48,182,111, 94, 13, 0,240,168, -219, 12,131,250,247, 46,177,190, 25,194,249, 74,235,196,209,113, 71, 74, 74,106,227, 14, 29, 58, 32, 59, 59, 91,187, 96,193, 2, - 52,104,208, 0, 94, 94,222, 6,165, 81, 57, 5, 91,218,131, 7, 15, 28,213,106, 53, 8, 33,105, 6, 8,178,179,101,112,224,231, -159,127,134, 90,253,166,245,222,178,253, 18,124, 17,232,142,209,159,239,192,119,143,247, 99,227,198,141, 21,190,187, 18,104,160, - 54,175,179, 86,198,176, 13,190,157, 59, 65, 62,114,228, 72,102,244,232,209,136,137,137,193,152, 49, 99,212,103,206,156,209, 38, - 37, 38, 30,149,241,252,122,221,171,130,184, 92, 78,185, 92,190,243,244,233,211,216,191,127, 63, 0, 32, 50, 50, 18,158,158,158, -175, 84, 34,124,198, 1,228, 70,175,199,173, 99, 17,104,209,103, 15,110, 29, 27, 6, 46,235, 55, 73, 83, 79,100, 87, 37, 62,171, - 97,169, 56, 91,198,177,139, 0, 46,150,138,223, 47,119,237,218, 53, 8,192, 33, 74,233,117, 0,215, 1,236,173, 10,103, 33, 17, - 70, 15, 14,236, 7,177,212, 20, 17, 79,227,208,190, 85, 99,216,219,217, 33, 36, 60, 10,209,241, 25,201,132, 96, 84,247, 54,242, -101, 42,149,246,203,203,247,233,255, 42,227,116,117,117,173,121,224,192, 1, 73, 41,139, 51, 24,134,121,165, 65, 85,124,172,186, -249,179, 88, 92,153,186,152,220,250,102, 67, 27,227, 91, 15,119,193,211,189, 39,204,186,245,196,170,189,123, 16,151,150,173,102, - 11,216, 78,127,118, 26,253, 81,156,132, 16,175,192,192,192,235,187,119,239,182,136,141,141,197,229,203,151,225,225,225,129,130, -130,130, 74, 27,186,175,115,170,213,106,187, 82,162,169,120, 8,195, 94,141, 70, 83, 92, 80,210,170,132,179,188,177, 85, 85, 29, -115, 85, 70, 57, 47, 83, 72,165, 7,142, 28,218,107, 18, 22,113, 25,141, 26,182,132,137,185, 47,120, 46, 9,233, 25,121,200,124, -154,128, 69,139,190,195,130,175,230,226,215,195, 7, 77,188,125, 26,254, 66, 8,169, 83,186,187,240,159,158,238, 32,244,147,179, -199,118,109, 34,148,135, 42, 57, 66, 46,201,127,174, 28, 49,108, 0, 51,100,200, 16,252,250,235,175,120,244,232,209,166,242,196, - 85,105, 78, 66,241, 73,232,229,253,155, 64, 41, 84, 41, 17,114,169,234,185,242,131,225,131,152,247,135,118,197,205,243,107,209, -181,209,243, 80, 39, 59,244,207, 44,234, 36, 20, 51, 72,151, 43,112,205,232, 54,185, 89, 74,100, 93, 44,106, 67, 21, 11,171,139, - 40,116, 37,245,207,183, 96, 85, 69, 88, 21, 93,207, 52,145,137, 15,253,184,224, 51, 63,197,203, 80,169, 38,244, 6, 18, 52, 60, -221, 22,195,102,174, 41,231,158,130,130,130,252,168,168, 40,163, 81,253,251,163,181,159, 31, 28,173,173, 81,199,197, 5, 70,114, - 25,100, 82, 73,169,242,184, 74, 45, 16,234,237,237,141, 62,125,250, 64, 34,145, 64,169, 84,194,196,196, 4, 50,153,172, 76,235, -149, 68, 34, 49,216, 84,206, 48, 12, 66, 67, 67, 17, 29, 29, 13, 11, 11, 11, 92,187,118, 13,157, 58,117,122,195,138, 85, 90,148, - 85,197, 20,255,122,133, 95, 44,192, 96, 96,215, 96, 49, 56,142, 32,143, 54,132,226,229, 4, 20,144,198,208,104, 88,104, 52, 26, -252,239,170, 14,183,163,242,161,211,105,161,209,104,202,125,102, 69,214, 2, 7, 7,135,254,117,235,214, 29, 49,108,216, 48,173, - 68, 34, 65, 65, 65, 1, 10, 10, 10, 16, 30, 30,174,237,218,181,107,242,123,239,245,177, 63,126,252, 56,165, 20,223, 85,101, 28, - 22,165, 52,211,201,201,201, 81,161, 80,128, 82,154, 89,205,214,103,137,120,121, 29,163, 86,133, 65,204, 20,166,201,166, 77,155, -192,113, 28, 42,202,223,106, 66,206,125,181,100,165,249,183,107,126,132,185,149, 61, 46, 93,186,196,157, 58,117, 42,151, 0,145, - 79, 30, 61, 90,245, 30,112,226, 0,160,171, 74,248, 50, 51, 51,141, 60, 60, 60,224,226,226, 2,158,231,161,215,235, 17, 18, 18, -130,164,164, 36,164,167,167, 67,165, 82,193,202, 56, 11,181,173, 93,192,230, 94, 68, 98,232,215,112, 52,137,192,142,211, 90,125, - 19, 47, 60,248,203, 27,183,148,158, 0,112,226,237,137,224,108,231,224, 10, 17,213, 35, 33, 37, 29,253,122,117, 5, 35, 53,193, -139,216, 52, 52,244,173,229, 56,252,189, 54,142, 12, 97, 49, 99,217,158,241, 0,254, 87, 25, 93, 65, 65, 1, 23, 30, 30, 46,121, -240,224, 1, 24,134,129,153,153, 89,201,112,128,210,226,202,144,225, 0,149,137,171, 37,155, 58, 25,139, 36,249,200,225,206,226, -135,159,110,194,211,173, 19,182, 71, 60, 81,139,179,242, 58,175, 80,171, 35,255,209,221, 67,142,142, 99,121,158, 95, 64, 41,205, - 10, 12, 12,180,223,179,103,143,101,124,124, 60,130,131,131, 49,127,254,252, 84,142,227, 88, 74, 41,161,148,126,253, 14,242, 18, - 95,218,178,101,100,100, 84,108,217,202, 47,101,185,202,175, 70, 25, 32, 81, 42,240,185,141, 25,233, 43, 22,153,121,176, 57,121, - 47,210,180,244,104, 1,203,127, 79, 41,213, 87,116,175, 72, 36,250,232,224,190, 77, 78, 54,182, 60, 2,108, 59, 34, 49, 89,135, - 37, 83, 63, 64,122,122, 46,254,183,117, 41, 0, 25,116, 44,131,118, 1, 3, 96,103,231,140, 79, 62,254,196, 97,211,230, 31, 62, - 3,176,226,223, 98,192, 74,188,182,225, 48, 33,228,172,173,173,237,163,207, 62,249,196,214,195, 99, 36, 20, 10, 5,246,238,221, -139, 61,235,215,115,107,128, 65,155, 9,185, 48,150,210,195, 21,242,220,252,157,103,210,184,113,182, 62, 62,227, 32,151,203,113, -254,212, 79, 80, 39,253,156,219,171, 53,116, 5,106,244,170,209,135, 90,189, 60, 70, 50, 36, 18, 60, 5, 0,137, 2,137, 18, 32, -229, 53,186,127,188,176,122, 67, 96, 85, 21,181,164,202,235, 91,167, 14,110,108,203,171,196,218,171,199, 16,175,225,217,229, 79, -117,186,187, 89,116, 68, 5, 25,154,119,115,115, 67,199,166, 77,209,191,109, 91,136,197, 98, 40,100, 82,152, 42,140, 64,185, 66, -203, 85,113, 23,161,161, 90,175, 88,216, 88, 91, 91, 67, 42,149,150, 8, 43, 67,173, 87,229,113,242, 60, 15,177, 88,140,144,144, - 16,248,251,251,195,213,213, 21,251,247,239, 71,183,110,221,222,232, 50,172,170,184, 42, 22, 88,165,187,235, 74, 13,126,175,116, -112,251, 27,226, 64, 75,144,166,109, 8, 66,252,192,178, 0, 71, 1,141, 90, 13, 74, 1, 74, 1,189, 78, 11,181, 90, 93,242, 76, - 67,186, 94, 93, 92, 92,156, 60, 60, 60,166,206,154, 53,163, 78,131, 6,141,144,150,150, 6,158,231, 97, 98, 98,130,130,130, 2, -152,153,153,161,117,235,214,247, 22, 47, 94,156, 65, 41,102, 85,117,144,251, 59,232,206, 0, 0, 4, 5, 5,189,210, 61, 88,188, -229, 39,198, 97,244,196, 93,144,137,129,144,144, 16,212,173, 91,183, 50,113, 41,234,208,174, 13,174,223,139,100,199, 76, 95,163, -145,164, 7, 47,115,224,249,237,113, 64,242, 91, 84, 42, 72, 75, 75, 67,114,114, 50,250,246,235,135, 61,187,119,227,229,203,151, -240,245,245, 69,135, 14, 29, 96,103,103,135,151, 47, 95,226,246, 21, 13, 52,153, 25,200,208, 6, 67,105,218, 2, 71, 46, 69,105, -230,109,212, 70,253, 85,133, 2, 33,164, 25,128, 49,230,230,230, 53, 10, 10, 10,146,244,122,253,254, 34,209,223, 77, 34,145, 12, - 86, 42,149, 14,217,217,217, 47, 1,252,143, 82,122,167,210, 46, 35,133,194, 90,174, 48, 3,207,106, 32, 22,139,225,234,234, 1, -202,105,145,153,163,194,168, 33,125,112, 47, 36, 28,167, 46,220,100,245,122,126,157,161, 97,244,242,242, 66,122,122, 58, 24,134, -129, 82,169,132,177,177, 49,188,189,189, 17, 27, 27, 91, 34,174,170,219, 69,248, 33,224,101,230,102,114,115,241,134, 66,113,149, -148,144,136,248,151, 20,114,153, 12,155,183,108,202, 47, 72,202,108,241, 35, 16,249, 79, 47,252,121,158,255, 58, 62, 62,222, 78, - 44, 22, 59,176, 44,139,216,216, 88,220,189,123, 23, 19, 38, 76, 72, 78, 79, 79, 15,160,148, 86,235, 29, 21, 10, 69, 74,177,229, - 74,161, 80,164, 84,100,217,122,155, 49, 87,132,144, 90, 30, 46,166,103,182,174,158,226,214,172, 69,107,145, 82,108,150,153,247, - 52,201,255,234,229, 75,173, 39,172,254,223,103,132,144,174,148,210,103,229,221, 47,151, 72,122,180,108,211, 70, 12,154, 12,177, -204, 31,223,125, 59, 4,169,105, 57,200,204,200,133, 84,106, 12,173,158, 1,199, 19,180,246,111,139,159,118,236, 67,189,143,199, - 48, 50,137,164,203,191, 73, 96, 21, 97,233,247,223,127,239,230,237,237,141,237,219,183,227,194,206,157,120, 63, 59, 27,151, 68, - 34, 70, 47,145,216,156,208,235,183, 0, 56,108, 40, 79,189,122,245,240,227,143, 63,226,231,159,127,142, 25,209, 41,229,151, 41, - 35, 96,167,211,161,123,240, 99, 88,213,232, 3, 4, 63,134, 85, 19,111,212, 97,197,120, 74, 8,140, 94, 75,211,246,165,127,255, - 13, 2, 43,128, 20,246,199,149,252, 86,118,147,177,189,247,176,221, 35,187, 52,245,173,233, 34,210,239, 95,139,248, 2, 86, 61, -255,177,142,127,156, 75, 7,132, 85, 32, 14, 68, 34, 17,101, 24, 6,166, 70, 70,176,181,176, 40,108,105,138, 68, 0, 15,240,122, -128,112,133, 31, 31,229, 9,170, 50,249,153,231,121,200,100,178, 50, 7,180, 87,117,236, 85,105,206,220,220, 92,188,120,241, 2, -159,124,242, 9,148, 74, 37, 0, 32, 41, 41, 9,238,238,238, 16,139,197,136,143,143,199,249,243,231, 81,179,102, 77,200,229,242, - 42,169,172, 82,214,164, 6,132,144, 75, 0, 26, 36, 38, 38,154, 57, 58, 58,162,202, 22, 44,158,162, 64, 67,160,213,114,120,242, -228, 9, 18, 18, 18,240,226,249, 83, 52,203,207, 1, 5, 3, 74,105,149, 44, 88,142,142,142,222,158,158,158,139,151, 46, 93, 42, -113,117,117, 5,207,243,176,178,178, 64,126,190, 10,233,233,233,240,245,245,133,171,171, 43,190,251,238, 59,160,176,251, 40,249, -175,202,192,197,179, 69, 75,255,138, 68, 34, 76,124,207, 13, 25, 25, 38, 96,152,223,103,147, 86, 50, 6, 75, 10, 0, 1, 93, 3, -197,103, 78,157, 48,102,129,133, 73, 12,179, 80, 92,121, 58,234, 57,158, 87,150,119, 62, 54, 54, 22, 18,137, 4, 7, 15, 28, 64, - 70,114, 50, 26, 54,108,136,230,205,155,227,233,211,167,184,119,239, 30,172,173,173, 97,235,210, 10,151,158,235, 16,150,160,130, -185,185, 57,162,226, 68,127,217,212,127, 66, 72,239,206,157, 59,175, 95,181,106,149,131,131,131,131, 36, 53, 53,149,221,176, 97, - 67,183, 13, 27, 54,132,125,246,217,103,190,159,125,246,153,165,173,173,173, 56, 41, 41, 73, 63,117,234,212,110,132,144, 89,148, -210,189, 21,150, 23,198,166, 86,140,212, 24,132,136, 97, 97,110, 9,177,204, 24, 60, 43, 6,199, 3,102,230,182,184,126,239, 32, -174, 61,204, 29,155,146,142, 3, 6,124, 55,212,218,218,154, 50, 12, 3,107,107,235, 87,186, 6, 1,192,222,222, 30, 57, 57, 57, - 96, 24, 6, 18,137,164,202, 34,171, 88, 92, 45,217,208,201,132,148, 18, 87,121,105,214,184,112, 58, 60,171, 32, 41,211,255,223, - 32,174,138,203, 56, 74, 41,158, 63,127,142,130,130, 2, 92,185,114, 5, 95,127,253,117,234,235,226,202,222,222,254, 99, 51, 51, -179,175,242,242,242,190, 75, 76, 76, 92, 91, 25,111,145,101,234, 93,230,201,104,188,230,142,129, 16, 34,113,117, 84,156,190,119, -101,151,187, 57,125, 64, 16,253, 9,240, 36,231,145,233, 45,187,118, 61,155,245, 18, 53,222,248, 77,141,230, 99,103,159, 38,132, -120,151,103,201,226, 57,174,177,177,137, 41,128, 20, 4,223,189, 88, 34,174,210, 51,178,161,209, 49,208,104, 9,212, 58, 17, 58, -118,238,142,245, 63,252,140,248,148, 12, 20,207, 48,252,183,128, 16, 98,229,231,231, 55,110,208,160, 65, 88,184,112, 33,206,174, - 90,165,253,148,144, 28, 49, 64,127,227, 56,240,148, 18,145, 1,131,211, 95,231, 89,177, 98,197, 97, 0, 67,151, 77, 64,171,204, - 60,140,114,234, 67,173,106,244, 41,188,118,224, 76, 10, 0, 86,169,103,223, 24,170, 67,138,123,210,170,218,163,246,183, 21, 88, -148,210, 75,132, 16,148,254,173,232, 6, 11, 7,239,246, 95,206,156,180,166, 77,223,206,162,164, 79,253,145,149,163,209,206, 12, -215,139,226, 10,104,255, 48, 3, 45, 47,211, 55,108,192,189,200,194,239,215,197,206, 14, 51,134, 15, 7,101,129,107,143,194,176, -239,236, 89, 12,233,220, 25,198, 69, 51,248, 12,181, 54,149,101,181, 42,109,189,170,170,149, 41, 43, 43, 11, 7, 14, 28, 64,243, -230,205,161, 84, 42, 33, 22,139,209,160, 65, 3,132,135,135,163, 86,173, 90, 32,132,224,200,145, 35,232,223,191, 63,158, 61,123, -134, 86,173, 90,153, 84, 71, 96,133,133,133,153, 81, 74,219, 21, 91, 59,170, 11,141, 70,131,136,136, 8,244,233,211, 7,150,150, -150,112,118,222,131,179,167,119, 65,233,247, 62, 8, 65,149, 4, 22, 33,100, 96,175, 94,189, 36, 34,145, 8, 42, 85, 1,228,114, - 5, 76, 76,204, 96,106,106, 14, 47, 47, 47, 36, 36, 36,160, 91,183,110,186, 39, 79,158,252,156,152,152,248, 91, 85,195,106,111, -111,175,204,205,205,157,228,225,225,161, 40,106,229,118,180,177,177, 89,146,150,150,150, 87,197,194,161, 68, 88, 17, 66,192, 48, - 76,137,192, 18,139, 68,112,116,176, 43,217, 47, 26,127, 70, 42,224,202,137, 79,215,200, 1,192,205,205, 13,235, 55,255, 42,234, -213,171, 23, 38, 77,154, 4,189, 94,143,141, 27, 55, 2, 0,134, 13, 27, 6,157, 78,135, 95,126,249,165,240, 3, 18,139, 43,236, -115,190,123,247, 46,130,131,131,161,215,235,145,157,157,141,147, 39, 79,226,210,229,203,216,123,228, 28, 94, 62,127,138, 6,222, -238, 24, 51,230, 67, 72, 36, 18,236,216,177, 3,254,254,254,127,105,129, 32,149, 74, 63,216,186,117,171,243,246,237,219,179,142, - 30, 61,154,221,162, 69, 11,227, 53,107,214,216,173, 95,191,190,131, 86,171,197,228,201,147, 83,110,221,186,149,223,183,111, 95, -243, 45, 91,182, 56,215,169, 83,231, 61,148, 49, 46,171,168,219,103, 8,128,145, 1,205,205,197, 89,185, 42,240,172, 22,207, 95, -190, 64,118,158, 22, 60,167, 67, 76, 92, 2,242,212, 28,210, 51,114,209,160,113,215,239, 47, 94,188, 56,151, 16, 50,135, 82,122, -188,210, 70, 5,199,225,230,205,155,184,118,237, 26, 46, 95,190,140,232,232,232,146,115,102,102,102, 56,115,230, 12, 58,116,232, -240, 78,196, 85,110,106,161,184,202,138,201,248,215,136,171,162, 50,104,129,163,163,227, 2, 71, 71, 71, 69, 80, 80,144,121,141, - 26, 53,192,178,172,246,117,203, 85, 64, 64,192,151, 91,183,110,117,172, 85,171,214, 4, 0,107,171,251,188,242, 44, 91, 6,224, - 13,119, 12, 34, 17, 62,254,110,211, 56, 27, 83, 89, 76, 2,158,172, 44,242, 5,200, 0, 5, 57,192,197,221, 16,183,153,247, 98, - 66,191,153,150,179,182, 47,252, 24,192,198,242,136,163,158,197, 98,211,166,245,152, 50,121, 20,126,250,223,119,224,121, 49, 52, -122, 6,110, 30, 45,161,209,241, 32, 34, 49, 26, 54,110,138, 11, 23,175, 64, 34, 2, 14,108,223,244,175, 50, 93, 81, 74, 51, 8, - 33, 27,143, 28, 57,242,249,164, 73,147,192,243,188,236,171, 77,155, 84,169,169,169, 75, 81, 5,255, 85,101,240,244,223,180,105, - 83,228,172,245,169,135,167,140, 0,243,242, 24,201, 8,126, 12,171,129, 51, 41, 14,126, 75,208,196, 27, 25,202,178,171,248,203, -175,253,254,227, 45, 88, 37, 99, 83, 42, 82,140, 77,188,106,125, 99,110,101,249, 97,235,102, 62,214, 83, 39,124, 44,121,150,164, -198,233,166, 83,179,127, 93, 61,207, 36,134, 55,158, 28, 77,115,170,100,117,217,119,254,124,201,255,229,123,246,148,121, 46,113, -224, 64,131, 91, 98,229, 89,173,170,106,185, 2, 0,165, 82,105,209,165, 75, 23,116,234,212, 9, 3, 6, 12, 40, 25,115,213,168, - 81, 35,236,221,187, 23,129,129,129,184,127,255, 62, 28, 29, 29, 81,183,110, 93,212,173, 91, 23, 39, 78,156,168,106,198, 6,199, -113,240,243,243, 43,158, 69,216, 32, 46, 46,206,172,186, 9,169,209,104,144,158,158, 14, 43, 43, 43,200,100, 50,180,104,209, 28, -159, 79,108, 1, 27,199, 31,225,231,227,141,252,252,252,146,169,235,149, 65, 34,145,120,213,169, 83, 7,169,169,169, 72, 77, 77, -133,173,173, 45,156,156,156, 96,111,111,143,213,171, 87,211, 53,107,214, 92,226, 56,238,231,164,164,164, 42, 43, 66, 23, 23,151, -102, 54, 54, 54,159,167,164,164, 40, 74, 21,154,138,134, 13, 27,110,118,114,114,218,152,144,144,112,173, 42, 2, 75,167,211,129, - 16,130,223,158, 59, 33, 95, 75,144, 19, 23,140, 73,239,185,191, 34,184, 36, 18,137, 33, 3,117,243,135, 14, 29,106,231,234,234, -130,216,168, 71, 56,120,144, 98,213,170, 85,184,124,185,240, 59,143, 44,106, 16, 20,239,119,232,208, 1, 30, 30, 30, 85,114,110, -201,243, 60, 66, 66, 66,176,231,232, 37, 56,186,251, 32,230, 73, 4,238,157, 56,134, 26,182, 86,168,215,184, 41,244,122,253, 91, -185,208,120, 23,208,233,116, 91, 60, 61, 61,161,213,106,207, 1,216, 26, 18, 18,210, 63, 49, 49,113,245,175,191,254,234, 52,104, -208,160,132, 99,199,142, 77, 1,112, 56, 36, 36,100,244,226,197,139, 59,233, 11,187, 15,222, 0,195, 48, 63, 77,157, 58, 53, 96, -208,160, 65, 68, 42,210,107,131, 78,239, 16,179,172,158, 76,159,179,141,187,120,245,146,136,101,245,100,192,208,169,252,137,243, - 15, 69, 99, 39, 46,231, 26,181,236,133,208,208, 80,135,222,189,123, 47, 2, 80,161,192, 98, 24, 6, 28,199, 65, 34,145,148, 8, -232,178,174,169,138,245,106, 12, 80,203,204,221,228,230,146, 13,157, 77,136, 56,239, 95, 47,174, 0, 32, 45, 45,109, 51,128,205, - 86, 86, 86,201,198,198,198,200,205,205,125, 35,255, 17, 66, 20,222,222,222, 10,153, 76,134,174, 93,187, 90, 57, 58, 58, 70,138, - 68,162,181,241,241,241, 85, 86, 26,101, 89,182,170,235,166,193,210, 22,189, 91,180,109,108,250,216,124,161,169, 66,172,190, 95, - 35, 82, 97, 70, 0,100,107,236,159, 95,143, 30,146, 67, 82,228,141,154,118,104, 2, 51,177,113,239,242, 4,150,136, 97,238,101, -103,102,245,200,201,213,226,234,181, 80, 12, 29, 82, 7, 26, 29, 1,207,139,144,151,175, 1, 24, 9, 68, 0,134, 13,255, 0,148, -136,145,145,156, 0,134, 97, 30,226,223,135,217,227,198,141,235, 49,103,206,156,154, 69,254,171,220,139,252, 87,205, 32,132,212, -167,148, 22, 84,147,167,198,177,189,243,166, 29,189,242, 67,118,175,214,170, 39, 77, 10,231, 68, 89, 53,241, 70,134, 68,130,167, - 98, 6,233,148,190, 50,163, 20,197, 19,190, 74, 79,252,250,199, 11,172,202,224, 89,203,165,123,251,102, 77, 39,206,157, 51,215, -244,201,237,203,152,187,232,123,190, 78,211,110,217, 43, 15,159,202,205, 54,171,209,177, 32, 33,226,190,161,186, 2, 0,186,117, - 8, 68, 3,223,230,111,156,244,239, 80,232, 3,242,234,133,187, 72, 78,141, 55,184,146, 45, 18, 5,101,142,185, 50,100,106,126, - 25, 5, 65, 86,104,104,168, 93, 92, 92,220, 43, 3,218, 61, 60, 60, 64, 8,193,173, 91,183,112,243,230, 77, 12, 29, 58, 20, 98, -177, 24, 18,137, 4,151, 46, 93,202,173,142, 5, 11, 69,179, 8, 9, 33,221, 92, 92, 92,202,156, 61,104, 8,151, 74,165, 66,118, -118, 54, 78,159, 62,141, 58,117,234, 96,201,146, 37,112,114,180,199,220,185,211,192,243, 60,114,114,114, 74,252, 3, 25, 96, 29, -160,197,214, 33,158,231,145,154,154,138,154, 53,107, 98,195,134, 13, 88,189,122,245,247, 9, 9, 9, 85,158,229, 98,105,105,105, -166, 80, 40,198,246,238,221,219,191, 95,191,126,232,214,173,219, 43,231,119,237,218,101,114,248,240,225,153,174,174,174,237,121, -158,223, 20, 31, 31,159, 97, 8,239,143, 63, 22,186, 79, 82,182, 92,128, 89,131,106, 96,228,248, 29, 88,185,242, 16,228,114,249, - 43,149,237,194,133, 11, 43, 20, 47, 60,165,158,210,180,235, 9,211,102,174,176, 91,186,244, 44,206,158, 77,129, 72, 36,130,163, -163, 35, 68, 34, 17, 94,188,120, 1,145, 72, 4,119,119,119,136, 68, 34,196,199,199, 23,143,249,203,132,218, 48, 31,132, 34,145, - 8,106,181, 26,177, 49, 47, 17, 23, 21, 9,147,156, 36,216,154, 41,145,249, 40, 4, 13,198,124, 12,189, 94,255,119,104,209,158, - 1,112,166,212,161,131,132, 16, 61, 33,100, 56,128,125,148,210, 67, 69,199,183,161, 2,199,160, 45, 91,182,108, 52,103,206, 28, - 73,177,219, 12, 39,183,197,172, 78,167,227, 1,192,187, 65,187, 87, 84,254,211,167, 79,177,114,229, 74,228,231,231, 67, 90,133, -145,233,157, 59,119, 46, 25, 19, 41,149, 74, 97, 99, 99, 3,157, 78, 7,150,101,171,220, 53,104,237,238,242,253,173,224, 75,220, -131,168, 31, 84, 15, 31,159, 52,138,123,193, 35, 47,205,230, 95, 43,174, 94,183,100,185,184,184, 44,224,121,158, 82, 74,231,149, - 42, 91,229,110,110,110, 87,130,130,130,172, 89,150,197,186,117,235, 44,146,146,146, 44,218,181,107, 55, 11, 64,185, 2,171, 28, - 55, 13,229,161, 90,110, 26, 56, 14, 94,102,166, 22,200, 68, 28, 52, 54,250, 70, 89,214,108,198,153,196,143,239, 59, 69, 55,246, - 53,230,244, 53, 69, 57, 90, 56, 43, 45,192, 83, 90,174, 35, 52,141, 94,127,242,126,240,189,174,110,174,117,152, 95,143, 95, 70, -223,254,131,160,209,136,160,214, 19, 16, 70, 2,194, 72, 81,191, 65, 99,212,173,215, 0, 20,192,221,219,215, 89,173, 94,127,230, -223,148,246, 78,254, 19,135, 58,249,127,190, 22,148,167,101,248,193,170,217,191,127,255,165, 0, 38, 86,218, 43,209,106,226, 80, -135,214,133, 60,165,253, 96, 77,253,124, 28, 30,221,150,152, 95, 14,254, 86,218,173, 37,126, 75, 61, 75,160, 84,252, 62,139, 80, - 34,170,158,123,141,127,141,192,114,115,115,179,176, 51, 81,254,248,217,152, 15, 77,163, 31,220, 64, 92,200, 13, 92,187, 26,153, -185,251,151,163,241, 57,217,169, 99,170, 32,174, 74,186,243,108, 28,107,160,102, 25, 2,203,200,212, 22, 0, 80,211,183, 57,196, - 49,230, 85,122,145,178,172, 87,213, 17, 87,165, 43,229,178,124, 96,141, 29, 59, 22, 91,183,110, 69,155, 54,109,224,233,233, 89, -210, 82,174,170,149,236,117,107, 82,117,102, 15,150, 70,110,110, 46,220,221,221,177,101,203, 22, 60,124,248, 16,166,166,166, 24, - 58,116, 40,114,115,115, 75,132,149,161,131,220, 57,142,123, 25, 20, 20, 84,127,240,224,193, 84, 44, 22,147,172,172, 44,152,155, -155, 99,195,134, 13, 5,137,137,137, 23,170, 26, 54,103,103,231, 94, 86, 86, 86, 31, 13, 25, 50,132,241,246,246, 70,114,114, 50, -204,204, 76,181,132, 16, 25, 0,152,155,155,107,141,141,141,241,201, 39,159,160,126,253,250,205,103,206,156,217,204,193,193, 97, -103, 82, 82,210, 47, 21,229, 37, 66, 8,246,238, 45,236,157, 26,179, 54, 2, 90,109,161, 64,217,184,113, 35,138,198,178,253,222, - 21, 16, 21, 5, 24, 48, 51,197,196,196, 4,158,158,158,101,166,125,219,182,109,113,247,238,221,194, 46, 72,177, 24,118,118,118, -184,118,237,154, 65,211, 50,139, 29, 56,134,134,134,194,199,195, 6, 15,207, 6,193, 70, 41, 65, 67, 39, 7,184,180,109,143,200, -200,200,191,212,122, 69, 8,233, 11,160, 55,128, 19,148,210,195,132,144,129, 0,186, 21,239,163,138,142, 69, 89,150,165, 34,145, -136,196,198,198,234,148, 74, 37,177,178,178, 18,203,229,114,104, 52,154, 18,161,245,244,233, 83, 28, 63,126, 28,113,113,113,176, -178,178, 18,153,155,155, 67,167,211, 25, 52,163,148,227,184, 55,220, 51, 20, 61,183,202,226,106, 20,224,183,117,241,178, 26,114, - 17, 99,238, 99,211, 29,207, 30, 61, 85,229,165,101, 25,253, 23,196, 21, 0,100,102,102,110, 6,176,185,120,223,214,214,118, 52, -195, 48,115,205,205,205,205, 47, 93,186,100, 97,107,107, 75,118,236,216,161,159, 55,111, 94, 22,195, 48,153,132,144,213, 21,241, -149,227,166,225,109, 4,160,251,155,199, 16,150,150, 29,229, 46,177,116,226, 31,168,233,245,201,177,179,234,102, 74,234,216,146, -122,126,232,159, 18,126,117, 52, 27,213, 58, 57, 49, 73, 68,193,135, 85, 80, 6,111,155, 53,103,225,244,200,136,123,110, 10, 51, - 5,198,142,155,131,223, 78, 93, 0, 17, 73,112,229,250, 45,104,117, 28,210, 50,178, 49,100,216, 8,184, 56,218, 32,236,230,233, - 84,150,231, 55,252,187,196, 53,191,190,107,223,209,150,114, 35,101, 81,156,112,248,249,127,211, 32, 18,173,197,252,249,243,225, -231,231, 55,190,104,229,134,140,138,203, 15,126,125,253,246,195, 44,165,242, 66, 30,202,115,216,114, 96, 86,145, 31,172, 41,216, -176,249,151,250,245, 60,158,127, 85,145, 31,172,255,148,192,170, 81,163,134,220, 88,130, 79,172,140,164, 51, 62, 27,222,207, 54, - 37,234, 17,226,194,239, 21, 42,127,141, 74,159, 24,121,169,161, 1,133,118,231,215,252,111,208,138,186,168,212,234,202, 91,240, -175,115, 22, 87,180,175, 91,175,170, 34,174,202,226, 44, 45,178, 74,251,189,114,117,117,197,210,165, 75, 43,245,131, 85,198,187, - 23, 31,239, 6,160, 65,177,200, 66,225, 32,247,110,134,204, 28, 44,143,211,214,214, 22,233,233,233, 0,128,128,128, 0, 4, 4, -252, 62, 79, 65,167,211,149, 88,173, 76, 77, 77,223,176, 96,149,197,201,178,236,178,195,135, 15, 15,186,113,227, 70,239,105,211, -166,137, 59,118,236, 88,104,191,207,207, 87, 83, 3,214, 94, 43,131,115,248,169, 83,167, 24,158,231,177,101,203, 22, 4, 7, 7, - 83, 99, 99,147,201, 38, 38,166, 59,204,204,204,184,172,172,172,225, 31,127,252,113,191,175,190,250,138,180,109,219, 22, 55,110, -220, 32, 53,107,214, 12, 4,240, 75,101,239,126,235,214, 45,136, 68, 34,176, 25, 49, 24, 63,107, 31,140,141,196,136,136,136, 64, - 70, 70,198, 27,206, 71, 13,137, 79,158,231, 75, 42,238,226,173,109,219,182, 37,221,141, 45, 90,180, 0,195, 48,184,127,255,126, -153,221,173,175,113, 82,107,107,235,146,252, 33,149, 74,113,225,194, 5,124,243,205, 55,112,179,178, 64,102,248, 67, 56, 4,116, - 68,151, 15, 63,198,208,161, 67,193, 48, 12,172,172,172, 74, 44,189,149,189,251, 91, 10,170, 18, 78, 66, 72, 31, 31, 31,159,217, - 97, 97, 97, 46,245,235,215,247, 37,132, 4,248,249,249, 53,123,248,240, 97,241,190,132, 82,186,191, 42,156,119,238,220, 57,184, -126,253,250,113,163, 70,141,146,242, 60,207, 69, 71, 71,235, 1, 16, 7, 7, 7,230,206,157, 59,252,175,191,254, 10,149, 74, 5, - 23, 23, 23,145,179,179, 51, 57,115,230, 12, 31, 30, 30,126,139, 82, 58,199,208,119, 47,158, 41, 88, 60,152, 93,165, 82, 25, 36, -174, 94,231,172, 81,215,107, 73,167,118,222,174,105, 9,247,145, 24, 31, 5,117,134,165,254,194,233,107, 85, 18, 87,127,116, 26, -253,201,156, 11,159, 60,121,226,172,209,104, 32,147,201,176,113,227, 70,221,210,165, 75,195,210,210,210,252, 41,165,170,234,134, -179, 42, 14, 72, 43,227,204, 78,199,111, 71,142,222,105,102,210,127, 27,198, 39,164,150, 12, 92,164,132, 88, 29,178,247,245, 87, - 54,175, 31, 47, 58,177, 64,148,203, 21,252, 86, 30, 39,165, 84, 75, 8, 25,212, 63,112,216,185,189,123,247,152,204, 91,176, 0, -215,110, 61, 68,122, 86, 30,120,202,128, 39, 4,115,231,206,131,131,141, 21,114, 18,158, 20,104,116,186,254,175, 47,153,243, 79, - 79,119, 66, 68, 19,206,252,186, 99,173,136,128,207, 79,126, 44,103,114,163,148, 35,135,246, 23, 15, 26, 52, 8,135, 14, 29, 66, -104,104,232, 15,229,137,171,210,156,148,138, 38, 60,188,180,111, 45, 1,120, 85,234, 99,185, 56,239,185,242,131,225,253,197, 67, -135, 14,197,225,227,215,177,247,216,243, 77,123,126,165,199,240, 31, 67,185, 2,203, 84,140, 80,127,223, 90,206,109, 27,215, 83, -136, 57, 21,226,194,163,144,145,175,198,153, 71,209, 89, 34, 42,250,169,186, 15, 44, 28, 59, 33, 69, 76,204,147, 55,206,101,101, - 41,138,172, 49, 85, 91,246, 73, 36, 18,189, 98,189,122, 27,203, 85,233,112,218,219,219,191,178,236, 74,233, 10,187,120,140, 79, - 53, 92, 52,204,138,137,137, 49,139,137,137, 1,165, 20,183,110,221, 50,107,209,162,197,172,183,177, 94, 77,155, 54,237,149,229, - 65, 74,255,150,117,172, 50,164,166,166,230, 3,248,209,222,222,254,183,233,211,167,191,223,178,101,203,182,243,231,207, 39,148, -210,234, 70, 44,203,243, 60, 46, 94,188,136, 67,135, 14,113, 90,173,118,118, 98, 98,226,227, 82,231,127,114,117,117,189,210,175, - 95,191,149,145,145,145, 76, 88, 88, 24, 12, 17,114, 42,149, 10,158,158,158, 96, 89, 22,223,142,119, 69,110,110,125,176, 44, 11, -142,227, 96,108,108,252,202, 58,148,134,164,147, 72, 36,122,197, 50, 82,188,221,186,117, 11, 12,195,192,223,223, 31,247,238,221, - 43,177, 96, 85,102,113,210,233,116, 49,246,246,246,246, 11, 23, 46, 44, 9, 87,106,106, 42,130,130,130,208,178, 85,107,248,126, - 50, 22, 9, 9, 9, 88,189,122, 53,156,156,156,176,100,201, 18,100,100,100,128,101,217, 63,219,108,222, 61, 44, 44,204,101,248, -240,225, 41, 15, 31, 62,116, 57,126,252,184, 69,239,222,189,141,135, 13, 27,150,242,240,225, 67, 23, 66, 72, 59, 0,251,171,248, -253,204, 38,132,156, 90,178,100,201,172,137, 19, 39,182, 24, 53,106,148, 68, 34,145,240,241,241,241,236,158, 61,123,136,167,167, -167, 72, 42,149,146,211,167, 79,243,183,111,223,190,201,178,236,183,148,210, 43, 85,181, 50, 23,139,171,170,142,185, 42,198,100, - 59,249, 7,166,162, 84,255,245, 27,151,138,188, 61, 92,116, 59,247, 4,197, 94,185,241,228, 25,163, 97, 39,255, 8, 60,195,127, - 16, 12,195,236,247,241,241, 25, 61, 97,194, 4,163,110,221,186,201,191,250,234,171,236,220,220,220, 50,197, 85, 89,168,138,155, - 6, 84,209, 1,105, 41,252,111,246, 23,199, 39, 79,173, 63,186,214, 71, 14, 53,112, 54, 63, 5,153, 98, 70,100,102, 33, 66, 99, -119, 6,185,105, 79,109,143,157,219,254, 2,149,248, 85,163,148,222, 33,132,116,174, 87,191,209, 47,223, 46,249,214,238,203,153, - 51, 36,191, 28, 63, 9,202,234,112,235,210, 37,152, 72, 57, 26, 30,124, 54, 89,163,211,246,251, 55, 46,149,147,112,117,221, 94, - 66,200, 81, 43, 43,171, 7, 31,142, 26,229,233,227, 51, 12, 74,165, 18, 7, 15, 30,196,207,235,214,113,107,128,193,155, 9,185, - 55,150,210, 10,235,252,228, 27, 37, 60,247, 63,254,240, 67,175,198,141, 63,130, 82,169,196,129, 3, 7,176, 99,205, 26,131,121, -254, 51, 2, 11, 34,146,123,243, 73,116,222,173, 39,209,121,224, 41,229, 41,213,136, 68,136,205,215,233,150, 68, 62,139,171,150, - 24, 40,238, 34, 92,180,120,194,187, 84,230, 37,162,167, 58,211,178,203,169, 28,226,234,212,169,131,215, 45, 90, 21,253,215,235, -245,113, 6,210, 47,115,115,123, 99, 93,210,101,213, 13,107,113,183,159,161,226,202, 80, 63, 88, 0,144,156,156,156, 10, 96,133, -139,139,203,209, 30, 61,122, 12, 37,132, 36, 85, 51,141,246,118,232,208, 97, 40,165,148, 17,137, 68,187, 94, 19, 87, 0,128,216, -216,216,231, 46, 46, 46, 91, 60, 60, 60, 74, 22,128,174,136,147,231,249,231,245,235,215,215,149,149, 22,229,237,243, 60, 95,105, - 26,101,101,101,161,121,243,230,111,172, 57, 73, 41, 69,116,116,116,177,133,169, 36,238, 43, 18,110,121,121,121, 99, 63,255,252, -243,205, 18,137,196, 13, 0, 41, 22,183, 28,199, 49,223,127,255,189,130,227, 56, 6, 0, 17,137, 68,172, 68, 34, 81, 31, 58,116, -136,101, 89, 54, 70,163,209,140,253,147,203,129,125,132, 16, 9,128,204,176,176,176,118, 69,150,171,184,208,208,208,179,123,247, -238,181, 7, 42,119,159, 80, 78,222,188, 2,224, 10, 33,164,237,198,141, 27,103,143, 29, 59,182,249,208,161, 67,197, 1, 1, 1, -248,237,183,223,184,139, 23, 47,222, 82,169, 84,203,170, 42,172, 8, 33,121,238,238,238,133, 5,152,184,226, 81, 14, 44,203, 86, -216, 90,179,118,151,175, 31,241,169,147, 98,203,178,160,188,180, 4,237,117,125,158,118,206,118, 32, 20,255, 97, 36, 37, 37,125, - 65, 8,153,183,122,245,234,132,134, 13, 27,202,165, 82,169,214, 80,113, 85,212,240,177,175, 66, 30,225,171,153,183, 88, 66, 72, -207, 85, 93, 6, 30,109, 63,247,115,143, 46, 29,252,149,174, 53,236,156,195,163,146,241,244,198,111,249, 15,142, 45,126, 73, 53, -153,125, 41,165,172, 1, 92,183, 9, 33,117,166,205,152, 86,188,216,115,131, 78,103,142,208,255,208, 98,207,139,150, 47, 95,238, -233,227,227,131,131, 7, 15,226,204,174, 93, 24,146,150,134, 11, 12,195,136,164, 82,235, 99, 58,221, 10, 0,134, 8,163, 69, 43, - 87,174,244,242,243,243,195,254,253,251,113,122,199, 14, 12,174, 30, 79,121,104, 6,192,182,232,127, 26,128,199, 0,154, 0, 48, - 2,160, 1,144, 7,192,166,212,245,233, 69,231,138,207, 95, 6,240,167, 14,116, 45,183,116,122,248,228, 69,147,119,253, 48,149, - 74,149,225,233,233, 41,169,202, 61,122,189, 62,165,146, 2, 52,174, 86,173, 90, 6, 91, 41, 12, 17, 67,233,233,233, 77,255,168, - 8,127,219,177, 86,175, 8, 65,158,127,233,232,232,200, 23, 87,246,101,137,175,178,142, 81,224, 69, 85,158, 19, 23, 23,247, 12, -192, 55,213, 13,103, 92, 92,220, 73, 24,176,152,179,161,215, 1, 64, 70, 70,198, 59, 95,100,151, 80, 26,255,213, 87, 95, 85, 73, - 88,131,210,248, 10,210,250, 33,128, 22,127,247,210,149, 82,122,185,168,240, 1, 33,164, 63, 33,164, 39,128,211,148,210,131,239, -136,191, 68,104,109,217,178,101, 50,165, 20, 57, 57, 57,107,170, 42,172, 74, 9,255,243,239,234,221, 51,146,181,231,247,252, 16, -215, 81,149,165,155,188, 53, 79,187, 3, 2,138,211, 76,109,103,103,247,211,200,145, 35, 91, 2,216,254, 46, 56,223,194, 77, 67, -121, 97,124, 65, 8,105,120, 97,218, 55, 31, 94,176, 48,237, 5, 78,236, 13,173,232, 24,180,233,191, 1,248,209, 16, 43,120,233, -247, 5,176,178,104,251,207,160,200,127,213,228,209,163, 71, 99,222,188,121, 56,189, 98,133,238, 83, 66,178, 37, 0, 61, 85,216, -192, 20, 17, 96,166,161, 60, 31,124,240, 1,230,205,155,135, 19,223,126, 91, 45,158, 74, 96, 75, 8, 57, 14, 0,179,102,205,154, -179,116,233, 82,203,217,179,103, 55, 88,182,108,217,146,162,253, 71,197,231,139,210,180,247,236,217,179,235,149, 58,159, 11,224, -206,159,253, 33,253, 97, 27,128,206, 2,167,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,111,185,245, 42,148, 44,229,255,150, -247,191,212,177, 63, 51,188, 16, 9,109, 53, 1, 2, 4, 8, 16, 32, 64,192, 63,212, 10,119,252,109,206,255,161, 97, 3,208,185, - 28,203,214,217, 42,188, 96,231,106, 88,206,206, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,223,226,172,140,187,156,251, -123, 17, 66,142, 83, 74,123,151,247, 91, 44,168, 94,255, 95,234, 88,149, 87, 30,121, 43, 8, 93,132, 2,167,192, 41,112, 10,156, - 2,167,192, 41,112,254, 19,186, 8, 1,208, 89,179,102,205,254, 39,116, 17, 86, 48, 5,231, 32, 19, 31, 15, 51,153, 76, 41, 5, - 0,173,182, 64,231,236,140, 28, 96,224, 95,182, 16,173,128,127,172, 9,215,190, 72,204, 39,191,203,107, 5, 8, 16, 32, 64,192, -127, 6,169,197,150, 41, 0,169, 0, 72,209,190,182,232, 55,181,168,238,120,253,255, 43,231,255, 76,136,203, 19, 87,105,105, 74, - 27,177, 56,211,139,227,212,117, 1, 64, 44, 22, 69,164,165, 89, 70,218,216, 28, 76,171,142,200,178,181,183, 15,150, 48,140,179, - 33,215,234, 57, 46, 62, 45, 57,249, 21, 87,239, 20,248,199, 11, 59, 67,197,195,219,136,140, 63, 67,160,216,218,218,218,219,219, -219,191,103,102,102,214, 42, 43, 43,235,118,106,106,234,225,212,212,212,228,114,194,179,148, 16,204, 40,250,255, 29,165,116,118, - 5, 97, 55,248,218, 50,238,245, 84, 42,149,227, 9, 33,126, 69,239, 31, 90, 80, 80,176,145, 82,250,228, 63, 40,104,141, 0,244, - 19,139,197, 31,216,216,216, 52, 79, 74, 74,250,138, 82,186,186,154, 92, 98, 0,211, 44, 44, 44,134, 90, 88, 88,212,204,200,200, -120,150,147,147,179, 31,192, 74, 74,105,165, 83,158,191,158,228,212, 42,160, 91,192,151, 23, 79, 95, 92,180, 96,109,194,141, 55, -206,127,225,100,221,181, 75,155,121, 23,143, 93, 95, 56,123,189, 97,203, 35,149, 10,155, 8, 40, 25, 71,202, 23,181, 82,233,223, - 56, 93, 90, 2,152, 83, 20,230,149,148,210, 11,127,243,124,100,108,111,111,255, 45,128, 62, 98,177, 56, 44, 62, 62,254, 19, 74, -105,220, 59,226,150, 0,176, 2,144, 97, 72, 62,122, 45, 63, 54, 3,224,135, 66,119, 26,119, 12,113,197, 96, 96,185, 54, 74, 36, - 18, 45, 46,114,125, 51, 55, 61, 61,125,251,223, 53,109,228,114,249, 26, 7, 7,135,143, 84, 42, 85, 1, 33,132,150,246,215,200, -178,108, 92,106,106,106,211,127, 97,209,118,231,159, 22,224, 50, 5, 86,124, 60,204,196,226, 76,175,148,164,135, 67, 18, 18, 67, - 6, 3,128,147, 99,131,253,118, 14,245,247,197,199,203,116,205,186, 4,154, 72,148,226,141, 12, 35,105,164,214,106,108, 36, 98, - 73,154,142,213,223, 23,105,233,248,196,136, 67,101, 58, 73,148, 48,140,243,203,200, 11,118,172, 46, 3, 18,133, 19, 36, 70,110, -229, 6,202,201,201,169, 90, 47, 99,101, 85,219, 84, 39, 87, 76,150, 72,152, 46, 60,101,253, 40, 15,136,136, 36,148,229,244,231, -164, 26,205,170,140,140,168,220,234, 70, 84, 93, 27,226, 64,129,161, 32,232, 2,138, 51, 4,216, 27,145, 70,147,170, 80, 48, 24, - 36, 30,222, 82,100,148,190,119, 53,165,244,139,119,157, 97, 92, 92, 92, 44, 7, 12, 24,176,230,155,111,190, 49, 50, 49, 49, 33, - 49, 49, 49,221,102,206,156,217,206,197,197,101,106, 92, 92, 92,194,235, 98,143, 16,204,224,249, 66, 7,165, 34, 17,153,105,111, -111,175,100, 24,230,141,197, 67, 57,142, 83, 18,130, 9, 60, 95,184,224,184, 72, 68,102, 16, 66,214, 26, 34, 20,141,140,140,134, - 53,111,209,122,234,183,203, 87,154,216,219,217, 25,179, 28,175,123,241,242,165,241,151,179,191,104, 97,100,100,180, 86,165, 82, -237,169,234,123, 18, 66, 8,195, 48, 67,228,114,121,111, 0, 62, 69,135,195, 53, 26,205,113,142,227,246, 25, 90,145, 59, 56, 56, - 92,102, 24,166, 70, 85,158,205,113, 92, 76, 82, 82,146,127, 53, 43,174, 65,110,110,110, 63,182,111,223, 94,217,188,121,115,200, -100, 50,204,155, 55,111, 26,128,213,134, 8, 41,165, 82, 57,196,216,216,184, 86, 94, 94, 94,148, 74,165,250, 69, 38,147,117, 94, -187,118,173,107,155, 54,109, 76,147,147,147, 9,195, 48,246,199,143, 31,127,127,221,186,117,221, 8, 33,157, 42,171,220,178,163, -232,151,242, 62, 62,109,179,163, 46,124, 9,160,199,235,231, 89,181,226, 3,202,184,246, 86,209,123,177,168,194, 20,121, 66,136, - 72, 34,145,172,117,112,112, 24,173, 86,171,213, 0, 40, 33,132,218,219,219,151, 84, 52, 0,160,213,106, 51, 51, 51, 51,189, 43, -252,182,235,214,189,203, 48,140, 75, 5,233, 17, 23, 17, 17,241, 46, 42,172, 25, 73, 73, 73, 61, 37, 18, 9,113,117,117,101, 0, - 92,168,194,251,122, 1,152, 91, 84,201,108,164,148,114,132,144, 14, 64,225,247, 14,224,187, 98,193,198, 48,204, 70,111,111,239, -247,194,195,195, 55, 81, 74, 23, 85, 55,176, 14, 14, 14,155, 55,108,216, 48,184,111,223,190, 76,106,106,170,115,195,134, 13,119, - 3,104,251,150,194, 74, 6, 96,182,131,131,195,103,254,254,254,214,247,238,221,203, 32,132,108, 0,176,172, 34, 95, 83,132, 16, - 23, 0,157, 45, 44, 44, 58,205,157, 59,215,164,119,239,222,216,178,101, 75,207,173, 91,183,230, 17, 66,206, 1, 56,251,182,226, - 79, 36, 18, 45,142,143,143,119,164,148,194,209,209,113, 49,222,145,123,138,119, 13,134, 97,214, 14, 25, 50,100,244,238,221,187, -149, 47, 95,190, 84, 58, 59, 59,151, 56,189, 38,132, 84,187,254, 20,240, 39, 9, 44,153, 76, 41,229, 56,117,221,132,196,144,193, -237,218,127,111, 14, 0,151, 47,125, 62,216,206,161, 94,168, 76,166,140,148,155, 41, 14, 5,246,233,220,104, 96,239,246,196,197, -209, 14,113,137, 41,246,255,219,123,186,251,241,211, 23, 14,161,208,241, 87,153, 96,117, 25, 48,210,157,197,227,171,235, 96, 19, -144,128,245, 39,226,112,227,193, 11, 20,100,167,161,134,131, 17,150, 79,238, 10, 7, 75,101,181, 94,196,196,222,171,131, 72,161, -220, 55,124,216, 72,243,247,250,249, 72,220, 29, 28, 64,169, 28,145, 81,121,173, 79, 6, 93,104,246,203,129, 61,227, 77,236,189, -134,228, 37, 71, 26, 92,168, 53,113, 34, 70,249, 58,244, 19, 51,228,253,182, 45,234,117, 26,214,179,173,200,215,167, 14,194, 30, -133,119, 61,122,254,214,114, 95,123,209, 57,150,163, 59,141,165, 56, 18,156, 80,190, 35,190,178,132, 70,167, 78,157, 26, 27, 25, - 25,105, 75, 95,167, 82,169,100,132,160, 83,117, 68, 70,241, 51,180, 90,141, 72, 34,145, 65, 36, 34, 83, 27, 52,104, 80, 35, 45, - 45,237,178, 72, 36,218, 21, 23, 23,151, 89,149,248,156, 72,136, 44, 83, 44,110, 34,146,203, 29, 57,173,214, 26, 0,136, 76,150, -233, 98,105, 89,127,238,156, 57, 38, 12,195,240,233,233,233, 40, 40, 40, 32, 31,127,252,177, 34, 42, 42, 42, 16,192,186, 74,194, -136,173, 91,183,122, 57, 58, 58,106, 95, 63,151,152,152, 40,235,219,247,189,234, 20,216, 94, 45, 91,181,153,114,250,244, 41,159, -156,140, 76,245,214,213, 91,238,233, 21, 70,106,143,186, 94,210,141, 91,118,152,125, 50,122,196,231,132,144,251,148,210,200, 42, -112,186, 25, 25, 25, 29, 90,177, 98,133, 95,135, 14, 29, 36,118,118,118, 72, 78, 78, 70,120,120,184,223,249,243,231,251,237,216, -177, 99, 26, 33, 36,144, 82,106,136,199,117,207,115, 59,127,180, 51,182,178, 6,167,215,195,169, 65,227, 18,255,100, 79,207, 7, -129,213,233,192,235,245,240,233,221,175,208, 12,195,243,240,245,245,173,150,183, 92, 66,136, 83,189,122,245,126, 94,178,100,137, - 84,163,209,224,214,173, 91,184,112,225, 2,159,152,152,184,172, 50,113, 69, 8, 9, 90,176, 96,129,139,191,191,191,105, 90, 90, - 26, 56,142,179, 57,114,228,200,248,198,141, 27,155,185,186,186,202,118,238,220,137,188,188, 60,176, 44,107, 85,171, 86, 45,171, - 97,195,134,105,119,238,220, 57, 13,192,183,229, 89,174,114,162,232,151, 73,164, 86,119,239, 38, 31, 32,137,156,234, 62,181,135, -227, 73,179,218,164,196,146,213,163,118,109,211, 90,117,141,103,154,152,213,183,202,137, 63, 59,179, 71,237,218, 91, 79, 70, 85, -222, 8, 34,132,136, 68, 34,209,218,192,192,192,225,123,247,238, 85,134,135,135, 43,125,124,124,192,243,124,137,199,252, 98, 71, -177,158,158,158,134, 84, 88, 46,231,206,157,179, 51, 50, 50,122,195, 41,111,126,126, 62,250,246,237,251, 71,148,183, 85, 77,227, -175,159, 63,127, 62,232,208,161, 67, 35,102,204,152,225, 9, 96, 2,128,121,233,233,233,237, 1,192,218,218, 90, 6,224, 2, 33, -228,195,233,211,167,127, 58,107,214, 44,244,236,217,115, 30, 33,100,113,117,172,122,132, 16,198,198,198,166,103,223,190,125, 25, -189, 94, 15, 99, 99, 99,232,245,250,218,111, 41,174,228, 82,169,244,215, 21, 43, 86,116, 25, 54,108, 24,196, 98, 49,120,158,183, - 10, 10, 10,154, 63,122,244,232,182,132,144, 30,101,137, 44, 66,200, 7,159,126,250,233,128,145, 35, 71,162,105,211,166, 37,206, -101, 87,172, 88,129,133, 11, 23,154, 4, 5, 5,245,219,185,115,103, 63, 66,200, 47,148,210,106,251, 50, 43, 94, 47, 52, 54, 54, - 22,118,118,118, 70, 86, 86, 86,137, 0,190,202,200,200,216,242, 55,178, 42,126, 55,100,200,144,225,187,119,239, 54, 1,128,229, -203,151, 99,202,148, 41,176,183,183,135,137,137,137,160,104,254, 9, 2,171, 50, 20, 20, 20, 52,158, 61,241,125,136, 68,133,173, -196, 58, 53,221,176,116,206, 39,228,232,241,211,141, 43,186, 79,162,112,194,227,171,235, 32,119,157, 12,141,158,197,205, 7,207, -113,102,121, 55, 0,128, 87,143,185,208,232, 58, 21,103,116, 43,153,145,209,119, 90,142,187, 6, 7,135, 91,136,142, 78,173, 76, - 92,217, 58,216, 31,255,225,135,111,141,252,106,123, 67,199,234, 17,159, 18, 15, 66,228,112,113, 54,197,135, 31,244,144,180,111, -239,100,243,245,215,155,127, 51,182,245,234,159,159, 26, 89,169,163, 79,111, 91,178,189,109, 99,207,193,195,122,249,203,235,251, -213,131, 84,110,244,187,240,106,218, 20, 77,154, 54, 21,205,202,203,237,114,251, 78,112,151,131, 65, 55, 53,222,182,100,255,227, - 84, 58,170,162,111,163,180,208,152, 52,105,210, 27, 11, 18, 39, 38, 38,226,226,197,183,234, 53,120,229, 25,223,124,243,141, 73, - 86, 86, 86,231,255,253,239,127,237,156,157,157, 87,196,199,199,223, 52,132,228,125, 66,106, 64, 46,239, 52,122,229, 74,190,209, -123,239, 49, 22, 14, 14, 34,158,227, 72,194,179,103,214,171,215,173, 11,200,120,250,212, 40,223,202, 42, 35, 83,165, 42,136,140, -140,132, 66,161, 32, 98,177,184, 89, 25, 5, 86, 50, 33,228, 59,145,136,204, 36,132, 64, 46, 87, 68,142, 27, 55,238, 94,209,233, - 26,199,142, 29, 83,246,233,211,167, 0,192,203, 66,179,183,194,153, 97, 68, 94,133, 3, 4,241,157, 33,194,210,216,216,120,226, -162, 37,223, 25,231,100,100,169,116,249,249,122, 59, 51, 19, 2, 19, 19, 38, 55, 39, 47, 39, 33, 41, 85, 61,247,171,133,226,177, - 31,142,156, 8, 96,188,161,226,170, 97,195,134,183, 15, 29, 58,100,103,109,109,141,172,172, 44,164,167,167,227,246,237,219,224, -121, 30,129,129,129,242,214, 45,154, 55,158, 51,247,203, 27,132,144, 86,134,136, 44, 99, 43, 27, 44,247,111, 4, 0,152,255, 50, -189, 36,125,182, 12,234, 93,114,205,194,184,108, 0,128, 66,161,120,155,165,158, 90,117,234,212, 73, 10, 0, 99,198,140,201,201, -205,205, 93, 10, 96, 55,173,192, 25,106, 17,166,125,249,229,151,206, 53,107,214,116,223,189,123, 55,242,242,242, 0,192,174,102, -205,154,240,246,246,230, 46, 94,188, 8, 47, 47, 47,152,154,154,226,242,229,203,184,121,243, 38,154, 52,105, 98, 42,149, 74, 7, -151, 39,176, 2,186, 5,124, 41,239,227,211,214,187,201, 7, 48, 49,115,196,214, 61,251,240, 56,120, 71, 91,141, 46,252,203,165, - 19,156, 71,170,168,124,148,139,167,233,172, 26, 77,219, 91,215,169,247, 30,220,155,220,179, 81,115, 87,158,207,251,172,214, 50, -177, 66,189, 99,193,138,132,244,242,196, 21,128,229,129,129,129,131,246,238,221,107, 1, 0, 15, 31, 62, 68,114,114, 50,108,109, -109,161, 80, 40, 32,145, 72, 74,214, 15, 53, 20, 70, 70, 70, 72, 76, 76,132, 78,167, 43,182, 90, 33, 55, 55, 23, 14, 14, 14,133, -234,230,107, 34, 90,176,192, 48,175,227,132, 16,255, 22, 45, 90,236,114,119,119,119, 45,125,188, 87,175, 94, 24, 58,116, 40, 0, -160,125,251,246,157, 6, 14, 28, 72,139,133, 96, 98, 98, 98,222,157, 59,119,186, 80, 74,111,149, 99, 93, 81,197,199,199, 99,250, -244,233,120,241,226,197,103,132,144,104, 0, 10,153, 76, 86,210, 46, 38,132,120,213,171, 87,111,237,148, 41, 83, 16, 21, 21,133, -176,176,176,219,213,237, 50,165,148,114, 30, 30, 30, 79,245,122,125, 83,150,101,161, 82,169,208,191,127,127,133,149,149, 85, 50, -195, 48, 17,105,105,105, 35, 40,165,137, 85,176, 90,185,139,197,226,245,211,167, 79,239,212,185,115,103,132,132,132,224,208,161, - 67, 24, 54,108, 24,186,119,239,142, 21, 43, 86,180,159, 48, 97,194, 44, 0, 11,202,160,232,180,113,227, 70,112, 28,247,198,183, -161, 80, 40,224,239,239, 15, 95, 95, 95, 28, 61,122,180, 19,128,106, 9, 44, 66,136,215,128, 1, 3, 20,197,162,250,226,197,139, -230, 70, 70, 70,230, 46, 46, 46, 11, 0,252,109, 4,150,187,187,251,184,189,123,247,154,148,238,237,145,203,229, 40,149, 15, 4, -252,221, 5,150, 86, 91,160, 19,139, 69, 17, 78,142, 13,246, 95,190,244,121, 73, 23, 33, 32,138,208,106, 11,116, 0,192,241, 20, - 57, 5, 44,140,228, 34,188, 76,202,197,163,103,105,101,125,164,175, 76,181,148, 24,185, 65,222,252, 37, 40,165,208,234, 56,104, -178,147,176,244,183, 2,132,199,169,161,205,207,132, 86, 87, 56,204,202,198,198, 70,124,250,244,201, 41,103,207,158,255,244,167, -159,126, 98,226,204,205,195,144,157,221,184, 44, 78, 43,171,218,166, 98, 99,163,253,155,126,152,103, 68,153,103,136,140,201, 71, - 29,151,230,176,177,112, 69, 82, 90, 62,174,133,157, 64,196,147,227,168,233,232,142,201, 19,187, 43, 22, 45,217,189,207,210,178, -166, 91,102,230,243,156,242,194, 89,132, 15, 54,159,138, 4,155,241, 12, 92,122, 20,184,220,132, 55,133,157,173, 27,154,116,112, -134,173,107,109,249,168,201, 11, 63, 0, 48,170, 44, 78, 74,105, 50,195, 48, 27, 69, 34, 50,158, 16, 2, 63,191,250,207,215,172, - 89,163, 45, 43,234,253,252,234, 63,103, 24, 81,205,194,101, 88, 68,155,120,158, 75,174, 36,156,175,136, 25,153, 76, 62,163,208, -188,239,248,236,228,201,147,218,129, 3, 7, 98,249,242,229,210, 89,179,102,125,225,238,238, 62, 33, 58, 58, 58,169,162, 52, 10, - 36,196,205,185,118,237,174,139,175, 93,163, 18,189,158,100,220,190,157,147,149,152,200, 38,229,230,202, 14, 68, 68,244,252,232, -139, 47,100,174,174,174,184,122,252,184,117,106,126, 62,205,210,104, 84, 89, 89, 89,148,101,217,219,229,188,251,108,123,123,123, -229,214,173, 91,189,198,141, 27,119, 47, 33, 33, 97,118, 81,193,176, 20,128, 47,128,151,165,142,225,135, 31,246,197,127,252,241, -199,145,201,201,201,179, 43, 10,103, 41,212,179,179,181, 85,238,217,188, 51,196,202,212, 72,100,227,226, 40,146,152,155, 75, 88, -185, 82, 74, 41,212, 53,107,214, 86, 2,168, 87, 78,156,157,125,173,144, 37, 70, 70, 70,135,126,253,245, 87, 59,137, 68, 2,142, -227, 96,107,107,139, 23, 47, 94, 32, 43, 43, 11,185,185,185,120, 30, 17, 14, 15, 87, 87,124, 61,107,166,227,132,153,179, 14, 17, - 66,154,150,174,196,202, 10, 39,167,215,189, 97,201, 43,103,129,240, 87,126, 13, 73,247,215,240, 34, 38, 38, 6, 38, 38, 38,240, -243,243, 51,185,118,237,218,149,242,196, 85,105, 78,133, 66, 49,184, 77,155, 54,166,123,246,236, 65,147, 38, 77, 96,110,110,142, -139, 23, 47,226,225,195,135,208,233,116,162,188,188, 60,152,154,154, 98,217,178,101,112,119,119, 71, 78, 78, 14, 98, 98, 98,172, - 37, 18,137, 77,121,156, 23, 79, 95, 92,148, 29,117,225,203, 36,114,170,251,214, 61,251,240,241,176, 33,112,160,207,174,152,215, - 38,139,186,246,105, 51,159, 50,174,189,141, 77, 27, 88,122,250,245,129, 84,102,130, 9, 51, 22, 34, 50,244,152,101, 65,110,200, -103,132,139,117, 5, 48,233,117, 78, 82, 24, 49, 34, 87, 87,215,143, 14, 28, 56, 96, 90,202, 2, 85,178, 14,105,233,197,217,203, - 91,136,189,204, 52,226, 56,232,116, 58,232,116, 58,112, 28,135,180,180, 52,228,230,230,194,194,194,162,240,130, 5, 0, 1, 33, - 20,101, 11,150,215, 56, 71,156, 61,123,214,213,216,216,248, 13, 11, 73, 90, 90, 26, 88,150,133, 82,169, 44,121,166, 94,175,135, - 90,173, 54,241,245,245, 29, 15,224, 86, 89,156, 60,207, 79, 29, 60,120,112,155, 91,183,110,213, 90,183,110, 29,180, 90,237,242, -164,164, 36, 12, 24, 48, 0, 60,207,163, 83,167, 78, 45, 41,165,143,231,206,157, 11, 0,152, 50,101,138, 62, 63, 63,127,156, 33, -239, 94,142,224,240, 29, 56,112, 96,173,115,231,206,161,109,219,182,208,104, 52, 88,177, 98,133,217, 15, 63,252, 96,182,115,231, - 78,219, 25, 51,102,252, 8,160, 91, 69,156, 69,194,106, 78,247,238,221,167,246,237,219,215, 56, 62, 62, 30, 22, 22, 22,216,183, -111, 31,150, 45, 91,118, 89,171,213,206,217,185,115,231,210, 67,135, 14,181, 29, 54,108, 24, 86,172, 88,241, 25, 33,100, 17,165, - 84, 95, 22,231,243,231,207, 97,107,107, 11, 51, 51, 51, 0,133, 11,217,223,191,127, 31,103,206,156, 65,221,186,117, 13, 17,141, -229,133,211, 43, 48, 48,240,250,238,221,187, 45, 98, 99, 99,113,249,242,101,120,120,120,160,160,160,160,210,101,197,222,245,162, -204,149,113,170, 84, 42,117, 76, 76,140,201,183,223,126, 11, 71, 71, 71,184,187,187, 67,161, 80,128, 16, 2,189, 94, 95,110,120, - 13, 9,103, 64, 0, 17,167,197, 91,246, 53,183,176,252,140, 82, 42,206,206,206,220,172, 67,214,193,168, 40,170,253,179,222,253, - 95, 41,176, 8, 33,148, 82, 74,138,127,157,157,145,147,150,102, 25,105,231, 80,127,159,157, 67,189,162,117,185, 68, 17, 12, 99, - 25,105,111, 95,144, 3, 0, 58,150,226,122, 68, 22, 66,158, 38,225,225,211, 36, 24,203, 13, 91,166, 70,163, 99, 11,231, 89, 82, - 10,117,222,239,141, 84, 93, 65, 38, 52,186,194,225, 28, 90, 77, 1,178, 83,195,200,160,254, 93, 20,159,126, 58, 22,142,142,206, -182,229,241,233,228,138,201, 19,166,244,180,176,178,144,224,248,181, 83,104, 89,183, 63, 20,114, 9,210,179,213, 0, 1,158, 60, - 59, 3,240,166, 8,141,140, 65,139,122, 74,116,235,234, 99,114,248,224,227, 47, 0,204, 51, 36,188,108,220,109, 72, 61,123, 64, -194,233,161, 79,123, 12, 62, 43, 26, 48,118,128,138,152, 32, 61, 49, 26, 17, 87,126, 49,104,137, 82,142,227, 38,216,216,216,164, -204,158, 61,219,223,203,203, 75, 59, 97,194,132,208, 23, 47, 94,204, 45,125,141,135,135,199,226,245,235,215, 35, 50, 50,242,229, -210,165, 75,175,166,165,165,125, 83,197, 15,115, 22, 33,100, 77,145, 53, 44,237,215, 95,127,109,112,249,242,229,241,171, 87,175, -182,253,236,179,207,164, 19, 39, 78, 28, 1, 96,121, 69,221,130,198,114,121,231,197,151, 47, 83, 54, 46, 78,243,243,247,223,203, - 54, 92,191, 62, 87,199,243, 78, 54,118,118,164,117,139, 22,249, 74,145, 40, 45, 61, 57,153,181,173, 85,139,121,113,230,140, 53, - 53, 50, 74, 56,121,242,100, 78, 94, 94,222, 47, 21,116,193, 20,148,213, 45, 88, 22, 28, 29, 29,181,101,141,209,170,160, 34,200, -225, 41,213, 89,214,244, 64,215, 78,173,235, 60,125,252,236,153,220,220,130,241,244,172,225, 29, 22,241,242, 22,207,178, 26, 66, - 72,142, 33, 92, 12,195, 12, 89,179,102, 77,125, 51, 51, 51,240, 60, 15,115,115,115,164,166,166, 66,171,213, 34, 39, 39, 7,218, -220,108,104,179,179,241, 48,250, 5,218, 4, 4, 96, 80,247,174, 62, 59,143,252, 58, 4,192,222,138,120,157, 26, 52, 46,177, 92, - 45,172, 97,253,123,159, 79,108, 86,137,216,250,182,177, 39,164, 38, 38,232, 50,117,214,219, 20,204,247,100, 50,217,137,192,192, -192,158, 95,124,241,133, 40, 49, 49,241, 20, 33,164, 13,165, 52,172, 66, 11,176,137, 73,237, 98, 65, 97,110,110,142, 53,107,214, -192,222,222, 30, 5, 5, 5,184,115,231, 14,117,113,113, 33, 23, 46, 92,128,139,139, 11,210,210,210,160,211,233,144,159,159,159, -164,213,106,203,237, 22, 47,234, 6,236, 49,181,135,227,201,199,193, 59,218, 58,147,231,119, 6, 79,107,255,244,241,195,136,152, -160, 51,215,190, 97,213,138,216,172,184,179, 51,107, 54,187,103,243,217,244,175,177,126,249, 2, 60,190,117, 57,195,222, 45,103, -131, 17,209,108,111,209,165,252,240,230,231,231,171,195,195,195, 77, 67, 66, 66, 64, 8,129,185,185, 57,148, 74,101,153, 34,203, - 80,112, 28, 87,242,155,150,150,134,212,212, 84, 68, 70, 70, 98,199,142, 29, 72, 72, 72,176, 89,109,110,150,100, 35,147,134, 72, -179,200, 28,157,142,222,171,132,110,115,151, 46, 93,134,184,185,185,153,150, 62,216,172, 89, 51,140, 29, 59, 22,155, 54,109,194, -245,235,215, 95, 89,239, 50, 41, 41, 41, 81,175,215,111,175, 32,109,179, 8, 33,221,251,247,239, 31,124,229,202, 21,179,109,219, -182,129,101,217, 50,183,173, 91,183,226,230,205,155,243, 40,165, 17,213,180,230,212, 29, 48, 96,192,229, 93,187,118, 89,164,166, -166, 34, 45, 45, 13,121,121,121,200,207,207, 7,199,113,240,246,246, 38, 44,203,122, 87,214, 29,104,107,107,123,226,210,165, 75, - 29,188,189, 11, 47,213,235,245,184,118,237, 26,222,123,239,189, 28,173, 86, 59,128, 82,154, 78, 8,153,125,240,224,193,235, 45, - 90,180, 64,179,102,205,172,162,163,163,173, 0,148,105,185,206,203,203, 67, 94, 94, 30, 36, 18, 9, 28, 28, 28,176,104,209, 34, -104,181,133,197,138,151,151, 87,105, 11,231,234,186,117,235,246,143,136,136, 88, 70, 41,221, 80, 78, 57, 51,150,231,249, 5,148, -210,172,192,192, 64,251, 61,123,246, 88,198,199,199, 35, 56, 56, 24,243,231,207, 79,229, 56,142,165,148, 18,157, 78, 23, 36, 22, -139,163,125,125,125,157,194,194,194, 18, 56,142,155, 71, 41,253,249, 47,236, 34, 36, 18,137, 4, 99,198,140,129, 88, 44,134,145, -145, 17,212,106, 53,244,122,125,137,136, 71, 21,187,159, 61, 61, 77,173,197,144,126,236,229,213,110,242,160, 73,189,109, 29,157, -156, 97, 97, 38, 71,120,120, 88,155,243,231,206,124,239,235,109,251, 3,175,213,255, 16,241, 34, 43,230, 79,120,191, 87,180,200, -191,180,139,112, 32,103, 99,115, 48, 45, 62, 94,166,147,201,148,145,197, 86,173, 66,113, 53,144, 3,246,128,213,233,139, 10, 8, - 90,180, 25, 40,176,244, 28,158, 62, 14,197,149,160, 95, 97, 83, 16,143,180,231,141, 0,105,125,104, 85,217, 80,107,117, 69,173, - 53, 14, 15,130,207, 33, 39, 59, 3,126, 77,123, 3, 34, 81,185, 93, 91,230,214,164,119,235, 38, 13,152,167, 49,161,104,230, 53, - 16,181, 92,218, 34, 58, 49, 7, 89,121, 26,100,230,168,209,200,111, 22, 82, 51, 85,200, 41, 80, 35,236,233, 78, 56, 59,213, 18, - 17,241,179, 78,134, 10, 44, 77,216, 33,104, 34,142, 66,234,222, 6, 50,239,247,192,184,251, 35, 38,228, 2, 30,156, 92,141,184, - 71, 87, 65,121, 14,142, 94,205, 97, 96, 5,190, 57, 40, 40,168, 81,187,118,237,196,157, 58,117,242,115,113,113,241,139,139,139, - 11, 5, 0, 23, 23, 23,191,238,221,187,251,217,217,217, 97,237,218,181, 5, 12,195,108,174,102, 37, 91,186,112,186,231,232,232, -184,226,208,161, 67,223,141, 29, 59, 22, 14, 14, 14,190, 21,221,155, 42,145, 52, 28,181,100, 9,149, 48, 12,221,187,126,189,244, -235, 83,167, 86,254,180,125,187,180, 99,135, 14,132, 82,138,251,247,239, 43,191, 93,191, 94, 57,188,111,223,151,209, 41, 41,236, -165,235,215,117,137,113,113,185, 41,249,249, 95, 39, 36, 36, 36,253, 21, 25, 88,175,215,223,120,241,252,153, 75,227,230,141,108, -239,133, 61, 15,235,214,169,117, 43,145, 72, 36,138,120, 22,125,195,214,214, 76,121, 46,232,172, 78,175,215,223, 48,132, 75, 46, -151,247,238,216,177,163, 56, 51, 51, 19, 78, 78, 78, 72, 77, 77, 69,124,124,124,161,133, 33, 59, 19,186,236,108,232,115,178,192, -229,231,225,249,157,219,104, 84,171,166,252, 64,225, 32,248,189,149,164, 73,153,150,169,210,150, 44,153,169, 41,100, 38, 38, 32, - 85,236, 30, 36,132,244,181,176,176,152,153,149,149,117,130, 82,186, 72,167,211, 77,152, 57,115,102,179,117,235,214,217, 44, 94, -188,216,236,147, 79, 62, 57, 64, 8,105, 68, 41,213,148,199,145,151,151, 23,197,178,172, 13, 0,187,115,231,206,193,206,206, 14, -217,217,217,197,150, 21,109, 65, 65,129, 34, 61, 61, 29, 26,141, 6, 90,173, 22,102,102,102,184,123,247,110, 38,203,178,191, 86, - 22, 62,179,218,100,145, 70, 23,254,165,181,143,113,130,142,181,108,159,146,193,103, 46, 88,145,176, 16,192,202, 30,181,107,111, -213,241,151,159, 63, 9, 61,102,249,226,206,197,140,132, 39,249,181,182,254,246, 44,183,130,120,164,132, 16,158, 16, 66,189,189, -189,145,150,150, 6,134, 97,160, 84, 42, 97, 98, 98,130,186,117,235, 34, 54, 54,182,218, 2,139,101,217, 18,113,117,252,248,113, - 36, 38, 38, 98,207,158, 61,112,117,117, 21, 1,176,141,141,141,237, 50,104,208,160, 22,214,214,150, 75,211,211, 51,151, 85, 16, -206,251, 0,204, 94, 75,167, 14, 54, 54, 54,231, 53, 26, 13,158, 61,123,134, 35, 71,142, 4, 80, 74, 47, 85,241,219,126, 70, 8, -233,238,239,239,191,163, 73,147, 38,181, 41,165,168, 95,191, 62,134, 14, 29,138,157, 59,119,226,193,131, 7,200,206,206,230,207, -156, 57,243, 19,128, 21, 85,173,184,139,226,215,123,192,128, 1, 87,119,239,222,109,153,158,158, 14,149, 74,133,252,252,124, 28, - 56,112, 0,109,218,180,129,141,141, 13,118,237,218,197, 82, 74,143, 85,192,165,176,176,176, 56,113,245,234,213,128, 58,117,234, - 32, 44, 44, 12,231,206,157, 67,141, 26, 53, 32,147,201, 48, 98,196, 8,179, 77,155, 54,125, 78, 8, 89, 38,145, 72, 22, 13, 24, - 48, 0, 28,199,225,218,181,107,233, 0, 50, 12,248,230,145,149,149,133,172,172, 44, 24, 25, 25,149,254,198, 8,128,109,171, 87, -175, 30, 61,121,242,100,212,174, 93,123, 17, 33,100, 83, 89, 11, 74,243, 60,255,117,124,124,188,157, 88, 44,118, 96, 89, 22,177, -177,177,184,123,247, 46, 38, 76,152,144,156,158,158, 30, 64, 41,141, 36,132,108, 12, 12, 12,252,116,213,170, 85,112,117,117, 69, -108,108,172,219,212,169, 83,119, 18, 66,240,103,139, 44,111,111,203,122, 50, 70, 62, 73, 42,149, 88,103,102,102,150,148, 29, 90, -173, 22, 26,141,230, 21,203,149, 84, 42,177,110,222,216,253, 55, 85, 65,238,156, 71,145,153,229, 46, 92,238, 91,199,162,129,210, -216,124,114,175,238,131, 70,116,237,222,143, 97,245,122,156, 62,125, 12,255,251,223, 70,116,240,247, 66,173, 58,245,241,249,196, - 73,230, 26, 45, 59,235,204,153, 83, 51, 91, 55,175,121, 42, 55, 39,107,118, 69,156, 2,202, 16, 88,101, 43,198,129,156,179, 51, - 50,139, 62, 24, 27, 75, 75,203,245, 28,199,117, 0, 62,134,196,196, 1, 97,119,111, 33, 35, 83, 2,141,138, 3, 79, 11, 69,150, - 65,130, 69,163,197,229,211, 71,177,102,245, 74,164,167,167,195,191, 93, 0,242,196,174,112,115,117,131, 90, 85, 80,244,177, 0, - 58,173, 30,182,246,238,184,119,239,129, 62, 39, 63,191,220,130, 72,170,208,249,184,217,123, 65,163,107, 5,133, 76,134,236, 92, - 45, 50,139,196,213,174,131,131,161, 41, 80,129,213,234,192,106,245,176,117, 27,128,186,246, 29,193,115,199,234, 85, 41,150,120, - 14,186, 23,151,161,123,113, 25, 70,173, 38,226,215,165,195, 94, 43,248, 12, 91, 16, 62, 57, 57, 57,213,197,197,229, 84,112,112, -112,239,193,131, 7,227,226,197,139,163, 0, 76, 45,170,220, 71, 13, 30, 60, 24,193,193,193,136,136,136, 56,149,156,156,252, 78, -124,118,200,100, 50,117,113, 43, 79,161, 80, 40, 42,185,214,185, 89, 96,160, 40,251,222,189,156,213,215,174, 45,216,186,109,155, -180,115,167, 78, 68,207,178,224, 57, 14,117, 60, 61, 73,215,174, 93,141,119,238,223,111,205,232,245, 55,167, 79,152,112,110,211, -200,145,185,183,242,242, 12, 29, 64, 94,163,168,107, 16, 0,106, 84,112,204, 96,104, 52,154,117,227,198,126,212,229,194,197, 75, -174, 53,220,157, 77,131,206, 93,126, 32,147, 75, 69,181, 60,106, 49, 89, 89, 89,226,175, 22,204, 54,210,104, 52,223, 27, 72,231, - 99, 99, 99,131,164,164, 36, 60,125,250, 20, 26,141, 6,122,189, 30,124, 65, 62,180,153, 89,208,102,103,128,168, 85,144,115, 28, -212,105,201,168, 81,171, 38,240,251, 12,195,202, 42,176, 50, 5, 86,241,175,194,204, 12, 82, 99, 19,136, 36, 18,131, 23, 45, 39, -132, 52,105,222,188,249,254, 95,126,249, 69,250,225,135, 31,182, 32,132,172,167,148, 70, 19, 66, 58,205,155, 55,239,246,250,245, -235,229, 99,199,142,245, 94,177, 98,197, 7, 0,202, 21,236,106,181,122,255,111,191,253, 54,220,221,221,221,238,225,195,135, 80, -171,213,224,121, 30, 61,122,244, 0,128,146, 60,243,248,241, 99,149, 90,173, 78, 9, 13, 13,205,137,142,142,214,194,128, 89,127, - 11,214, 38,220,152, 58,200, 37,208,222,193,249,166,194,168,134, 7,205,187,215,127,234, 32,151,229,171, 14,196,169, 79, 70, 69, -229,206,251,172,214,178,252,220,144,207, 44, 92,242, 54,156, 60,246,204,144, 89,190,180,120, 90,186,181,181, 53,196, 98, 49, 36, - 18, 9,164, 82, 41, 0,192,222,222, 30,217,217,217, 21,118, 17,150, 39,176,114,114,114,144,157,157,141,136,136, 8, 36, 38, 38, -226,198,141, 27,224, 56, 14,133,147, 20, 1, 23, 23, 23,220,190,125,219,180, 89,179,102,115,136,148, 92,160, 58,106,240,180,113, -134, 97, 38,143, 28, 57, 18, 90,173, 22, 67,135, 14,197,214,173, 91, 39, 3,184, 84,213,252, 78, 41,189, 73, 8,241,124,240,224, -129, 25,128,247,134, 12, 25,178,125,192,128, 1,184,116,233, 18,142, 29, 59, 22, 0, 32, 18,128, 10,192,210,162,133,149,151, 86, - 52,193,163,200, 21,195, 70, 91, 91,219,247,234,213,171,247, 96,192,128, 1,126,187,119,239,182, 72, 73, 73, 41,158,212,128, 23, - 47, 94,224,199, 31,127, 76,220,182,109, 91, 14,199,113,214, 34,145,232,183,172,172,172,242,102, 65, 43,140,141,141, 79, 94,189, -122,181,125,157, 58,117,112,246,236, 89,204,153, 51, 7,237,219,183,199,158, 61,123, 80,183,110, 93,212,175, 95, 31,118,118,118, -159,101,100,100,180,222,178,101, 75, 64,203,150, 45,177,107,215, 46, 36, 38, 38,110, 44,207,101, 67,101, 93,117,122,189,158, 0, -104,177,122,245,234,154,147, 39, 79,198, 47,191,252,130,198,141, 27,155, 63,123,246,108, 69,113, 25,251,154,192, 2,165, 20,207, -159, 63, 71, 65, 65, 1,174, 92,185,130,175,191,254, 58,181, 88, 92, 1, 64,239,222,189, 63, 93,181,106, 21, 6, 13, 26, 4,157, - 78,135,169, 83,167, 98,213,170, 85, 56,122,244,232, 55, 0,254, 52,129, 85,215,211,122, 89,243,102,237,103, 58, 58,215,193,174, -221,123,144,145,145, 81, 18, 39,197,241, 66, 41, 69,110,110, 46,146,146,146, 96,110,102,138,229, 43, 22,245, 28,255,201,104, 87, - 20,186,179,120,179,160,171,109,181, 98,224,208,143,166, 13, 29, 62, 26, 15, 31, 4, 99,231,246,205, 8,125,120,191,132,143,213, -235, 16, 25,126, 23,145,225,119, 97,239,224,142,174,157, 3,200,176, 97,195,122,140, 28, 62,196, 22,192, 31,230, 2,226,223,100, -189, 42,183,139,240,181, 15,198,198,210,210,242,209,190,125,251,172,253,253,253, 25,150,101,113,234,244,105,124,246,233,251,248, - 96,228, 44,232, 96, 9, 86, 43, 5, 47, 85, 24,244, 64,149,170, 0, 20, 20,249,249,249,184,126,253, 58, 40,207, 98,231,150,149, -160,148, 47, 17, 88, 0,133, 86,167,131,179,155, 55, 54,110, 93,204, 66, 34, 41,183, 32,203, 73,103, 56, 61, 75, 17,159, 18,131, -152,196, 80,152,155,186, 65, 44,113, 67,122, 86, 1,196, 34, 7,232,213,143,193, 21,153, 79, 11,242,227,160,210,189, 93,186,113, -217,111, 90, 73, 41,207, 27,124,127, 65, 65,193,254, 93,187,118,117, 93,181,106,149,180,103,207,158,181, 93, 92, 92,154, 3, 64, - 96, 96, 96,109, 83, 83, 83,236,218,181, 75, 87, 80, 80,176,255, 29, 90,120,218, 53,107,214, 12, 25, 25, 25,120,249,242,101,133, - 45, 15, 78,171,181, 54,177,179, 99, 82, 46, 92,208,167,102,102,186,118,236,216,145,232, 89, 22, 34, 66,144,145,157,141,232,151, - 47, 97, 97, 97, 65, 30, 61,126,108,242,253,231,159, 31,246,242,243, 19, 23,207, 48, 52, 4,199,142, 29, 83,162,112,220, 85,133, -199,170,248, 65,230, 19, 66, 70,125,254,249,231,135,127,254,121,151,121, 82,114,242, 19,185, 76,206,154,152, 24, 57,142, 28, 49, - 68,156,149,149, 53,156, 82,154,103, 40, 95,102,102, 38,158, 63,127, 14, 35, 35, 35, 72, 37, 18,240,170, 2,112,249,121, 80,103, -164,130,209,105, 33,227, 56, 88, 41,229,112,181,183,135,155,173,141, 65,156, 79,207, 7,149, 12,104, 47,221, 45,184,188,185, 15, -100,198, 38,144,153,154, 96,252,241,139, 69,173, 79, 41, 48,175,242,158, 97, 66,136,141,179,179,243,175,187,119,239,150,166,166, -166,226,254,253,251, 15, 40,165,217,132, 16, 83, 0,124,120,120,248,217,208,208,208,222, 69,179,232, 42,155,253,181,242,208,161, - 67, 93,252,253,253, 89, 15, 15, 15,227,228,228,100,183,244,244,116,146,152,248,234, 24,230, 19, 39, 78, 40, 84, 42, 85, 62,207, -243,135, 81,232,199,169, 82,255, 67, 83, 7,185, 40,174,223,195,196,246,221,106,212, 55,179,105,128, 12,246, 94,253,155, 15, 18, - 39, 78, 29,228,178,110,213,129, 56,181, 17,209,108, 39, 92,172,171, 88,161,222, 97, 96,122, 83, 27, 27, 27, 80, 74,113,251,246, -109, 92,189,122, 21,151, 47, 95, 70,116,116,244,239, 86,109,115,115,156, 57,115, 6, 29, 58,116,168,202,119, 9, 71, 71, 71, 88, - 90, 90, 98,231,206,157,216,179,103, 79,201, 64,247, 98,164,165,165, 65,169, 84, 98,213,170, 85, 38, 3, 7, 14,252, 6, 64, 87, - 3,133,112,205, 46, 93,186,244,114,116,116, 68,122,122, 58, 28, 28, 28,224,239,239,223,135, 16,226, 65, 41,125, 81,205,172, 63, -190, 91,183,110,139,190,254,250,107,232,245,122,140, 25, 51, 6, 79,158, 60,217,255,228,201,147, 53,110,110,110, 19,103,204,152, - 97,111,111,111,143,193,131, 7, 27, 3, 8, 44,143,196,202,202,106,233,230,205,155,135,247,234,213, 75,164,211,233,218,157, 63, -127, 30, 47, 95,190,132, 86,171, 5,203,178,136,138,138,194,132, 9, 19, 18,211,211,211,219, 83, 74,163, 12, 8,215,172,160,160, -160,246, 62, 62, 62, 56,126,252, 56, 2, 3, 3, 47, 88, 88, 88,120, 53,104,208,192,209,201,201, 9, 7, 14, 28,128,153,153, 25, -220,220,220,172, 22, 47, 94,220,177, 95,191,126, 56,126,252, 56,166, 76,153,114, 17,192,178,234, 68, 4,207,243,100,245,234,213, -126,171, 87,175,118, 41, 22, 87, 34,145, 8,251,246,237,195,131, 7, 15,250,150, 37,176, 40,165, 11, 28, 29, 29, 23, 56, 58, 58, - 42,130,130,130,204,107,212,168, 1,150,101,181,148,210, 72, 23, 23,151,120, 39, 39, 39, 11,185, 92,142, 57,115,230, 32, 39, 39, -231,131,199,143, 31,239,108,216,176, 33, 29, 49, 98, 4,124,124,124,156,255,204, 74,154, 17,145, 81, 75, 22, 78,199,157,123,143, -113,232,144, 20,119,238,220,129,189,189, 61,228,114, 57, 40,165,208,104, 52, 72, 77, 77,133, 94,167, 65,253,122, 53,177, 99,219, - 50,164,164,164, 2, 34, 82,238,208, 26, 34, 34, 35, 70,191,223, 31, 87,174,158,198,166, 77,155,145,151,151, 95, 78,163, 91,129, - 58, 94, 62,112,118,178, 67,108, 92, 44,136, 8, 54,127,228,187,254, 71,186, 8,127,135,133,133,197,154,189,123,247, 90,119,232, -208,129,201,207,207, 7,207,243,104,235,239,143,137,147, 39,227,216,238,221,240,108, 49, 20, 68,107, 2, 86,105,216, 44, 6,181, -170, 0,190,141, 91, 99,208,224, 33,136,137,142, 70,183,222, 3,160, 86, 23,148,180, 40,138, 45, 88, 90,173, 14, 54,118,174, 8, - 10, 10, 98, 48,102,204,163,114, 69,129, 78, 22, 18, 25,165,110,147,165,186,135,235,119,118, 66,167,209,161,126,253,121,208,241, -214,176,115,249, 4,122,253, 17,228,164,158, 47,236,174,176,238,128,184,152, 24,136, 24,233,163,234, 70, 24,159,159, 90,229,214, -213,107, 21,120,142,163,163,227,209, 27, 55,110, 12, 10, 12, 12,196,153, 51,103, 62, 40, 18, 88,184,113,227, 6,158, 63,127,126, - 52, 51, 51, 51,231, 93, 36,174,139,139, 75,143,128,128,128,192,102,205,154,225,248,241,227,224, 56,238,186, 65, 31,180, 68, 66, - 69, 34, 17,120,158, 7, 1,144,158,149,133, 39, 79,158, 32, 61, 45, 13,122,189, 30,249,121,121,188,143,151, 87, 30,229,121,211, -170,132,167,244,140, 65,148, 49,139,176,248, 88, 53, 68, 86,180,137,137, 73, 76,110, 94,158,173,153,165, 85,174, 66, 38,227,178, -179,178,179,195, 30, 61,212, 26, 88, 41, 20, 35, 60, 52, 52,212, 47, 33, 33, 1, 49, 49, 49, 96,243,115,193,104,180, 16,105, 10, -208,169,117, 43, 24,129, 66, 1, 30, 18, 94, 15, 9, 35, 65,110,225,108,187,240, 74, 69,185, 94,255,134, 37,139, 16, 82,216, 45, -104,108, 12,153,137,233, 43, 22, 45, 67,242,147, 92, 46,223,125,224,192, 1, 71,103,103,103, 44, 92,184, 16, 46, 46, 46,117,235, -215,175, 95,208,182,109, 91, 35,123,123,123,248,250,250,162,117,235,214, 56,121,242, 36, 0, 68, 85, 18,127, 44, 33,164,235,149, - 43, 87,166, 93,187,118,109, 16, 33,132,204,154, 53, 11,221,187,119,135, 66,161, 64, 65, 65, 1, 50, 51, 51,177,101,203, 22, 66, - 41,109, 92, 20, 86,119,133, 66,177,135, 16, 18,167, 82,169, 6,191,206,185,115,117, 3,167,148, 12,126,140,189,131,115,255,246, -221,106,212,239,216,173, 51,106,122,118, 68,199,110, 49, 0,176,204, 74,252,114,232,242, 47,253, 14,219,184, 90,253, 24,116,234, -204, 2,255,246, 29,231,206, 26,107,185,104,217,230,202,243, 62, 33, 4, 28,199, 65, 44, 22, 67, 36, 18,149,105,165, 18,139,197, - 96, 24,195,134,162,112, 28, 23,215,175, 95,191,146,253,132,132, 4, 27, 87, 87, 87, 81,177,229, 10, 0,178,179,179, 17, 27, 27, - 11,189, 94, 15,107,107,107,232,116,186, 6, 85,200, 87, 19, 63,252,240, 67,162, 82,169,240,209, 71, 31, 97,235,214,173, 24, 58, -116, 40,185,116,233,210, 68, 0,147,171,154,223, 69, 34,209,242, 25, 51,102, 76,155, 48, 97, 2, 50, 50, 50,112,226,196, 9,244, -232,209, 3,251,246,237,179, 61,113,226,196,146, 14, 29, 58,128, 97, 24, 28, 63,126, 28, 44,203, 62,174,136, 75, 42,149,190,215, -171, 87, 47, 81,108,108, 44,164, 82, 41,154, 54,109,138,184,184, 56, 20, 20, 20, 32, 62, 62, 30,147, 38, 77, 74, 42,178,234, 68, - 25,144, 46,146, 58,117,234, 76,168, 91,183, 46,206,156, 57,131,129, 3, 7, 94,210,235,245,189, 82, 83, 83, 39,100,102,102,126, - 55, 98,196, 8,248,249,249, 33, 50, 50, 18, 93,186,116, 65,155, 54,109,112,226,196, 9,124,244,209, 71, 23,245,122,125,175, 10, -252, 96,229,166,164,164,152,215,174, 93, 27,201,201,201,200,203,203,195,141, 27, 55,204, 46, 94,188,232,225,228,228,100,241,236, -217, 51,250,229,151, 95, 42, 39, 79,158,140, 53,107,214,224,254,253,251,216,185,115, 39, 58,118,236,168,127,250,244,105,153, 86, -214,180,180,180,205, 0, 54, 91, 89, 89, 37, 27, 27, 27, 35, 55, 55, 23, 38, 38, 38,159,184,184,184,196, 95,191,126,221,201,213, -213, 21,233,233,233,248,244,211, 79,161, 82,169,224,230,230, 86,103,241,226,197,136,141,141, 69,102,102,230,159, 90, 73,243, 28, - 15,128,135,135,171, 9, 78, 31,219,134,224, 7,207, 16,252, 32, 20, 50,121,225,224,118,149,170, 0,141,235,215, 65,139,166,205, -145,144, 24,143,159,119,110,131,149,141,115,133,229, 8,165, 20, 82, 49, 7, 31, 47, 7,236,222,185, 25,199, 79,156,195,206,159, -247,148,140,105, 19,139, 37,104,212,184, 5,154, 54,245,199,179,231, 81,216,182,109, 19,108,237, 92,133, 62,191,234,118, 17,150, -254,125,173,117,208,209,223,223,159,201,203,203,131, 90,173, 70, 82, 82, 18, 94,190,124, 9, 11, 75, 11, 60, 75,120,129, 0,165, - 14, 73,124, 14,194, 31, 60,226, 8, 35,185, 95,217, 3,123,181,111, 4,180,111,132,207, 62, 28, 90,126,226,131,194,216,204, 6, - 26,141, 6, 58,189,254, 41,214,173, 43,183,165,204,114,250,179,167,207,156,111,254,225, 7,239, 73,130,206,111,133, 94,203, 67, -165, 55, 71,190, 90,139,124,157, 4, 34,243, 30, 64,218, 37, 48, 98, 57, 90, 54,172,131,195,135, 78,234, 40,171, 63,103,112, 4, -217,251,129, 77, 14, 45, 37,176, 82, 94, 57,175, 48,181, 50,184,139,176, 84,156, 30,222,189,123,119,207, 86,173, 90, 41, 59,116, -232, 80,171,168,194,212,238,222,189,187,160,200, 58, 80, 85,213,255,138,247,118,103,103,231, 6, 98,177, 56,176,119,239,222, 13, - 70,143, 30,141, 71,143, 30, 97,215,174, 93, 79,189,188,188,174, 86, 40,172,100,178,244,188,148, 20, 11, 19, 15, 15,177,165,169, -105,194,201, 19, 39,220, 59,119,233, 66, 98, 98, 98,144,158,158, 14,181, 90,141,251, 15, 30, 80, 9,195,196, 17, 51, 51,209,227, -123,247, 68,140, 76,150, 94,133,160,190,172,100, 22,225,210,234, 90,179, 92, 29, 45,107, 47,152, 61,174,166, 90,173,246,203,201, -201, 97,197, 18,137,196,197,193, 34,186,138,221,141,199,207,158, 61,219,175,115,231,206,242,200,144,251, 96,179,179,161,205,206, -132,148,231, 96,213,184, 33, 24,157, 6,208,234,225,236, 67,161,206, 82,226,210,173,199,122,141, 70, 83,233, 74,237,197, 2, 75, - 84,202, 25, 32, 0,200, 76, 76, 32, 55, 53,131,220,196,228,245, 46, 68, 82, 73,122, 43,223,123,239,189, 78, 45, 91,182, 4,165, - 20, 91,182,108,129, 78,167,147,233,116, 58,104,181, 90,232,116, 58,228,228,228, 96,231,206,157,216,184,113,227, 53, 0, 63, 25, - 32, 82, 89,137, 68, 50,129,101, 89, 59,185, 92,174,179,181,181,149,238,223,191,191,196,109, 68,163, 70,141, 96,108,108,172, 33, -132,232, 0,192,193,193, 65,191,125,251,118,113,223,190,125,165,101,241,121,215,175, 59,189, 38,107,217, 94, 97, 84,195,195,204, -166, 1,106,122,118, 4, 0,116,233,253, 33,106,214,113, 67, 78, 90,136,135, 90,245,178,191, 84,156,105,249,104, 93,124,152, 81, - 47,191,209,249, 41, 23,159, 0,216,102,224, 55,132,206,157, 59,163, 91,183,110, 37,221,129,118,118,118,208,106,181,101, 78,231, -175, 8,197, 78, 68,191,254,154,136,176, 0, 88,109,110,150, 4,192,182,180,184,138,137,137, 65, 76, 76, 76,177, 85,184,210, 52, - 42,149, 86, 70,158,158,158,163, 26, 55,110,140, 19, 39, 78,224,206,157, 59,241,167, 79,159,118,246,247,247,135,135,135,199,104, - 66,200, 28, 74,203,247,161, 87, 86,151, 94,187,118,237, 62,159, 48, 97, 2, 66, 67, 67, 49,110,220,184,244,216,216,216,195,251, -247,239,255,104,193,130, 5,162,110,221,186, 33, 49, 49, 17,203,151, 47,231,174, 94,189,186, 2,192,194, 74,210, 61, 34, 54, 54, -214, 69,173, 86, 35, 35, 35, 3, 44,203,162,160,160, 0, 39, 79,158,196,206,157, 59,139,199, 35, 61, 53, 48,120, 86,254,254,254, -150, 79,158, 60,193,182,109,219,160,213,106,231, 82, 74,213,132,144,159,102,206,156, 57,199,222,222,222,188, 75,151, 46,104,220, -184,208, 23,220,190,125,251, 48,105,210,164,139, 90,173,182, 87, 37,113,176,202,193,193,225,147,113,227,198,213,157, 58,117, 42, -162,163,163,205, 78,156, 56,209,230,250,245,235,164, 88, 8, 89, 91, 91, 99,205,154, 53,152, 50,101,202, 79, 0,146,111,221,186, - 53, 42, 42, 42,234, 27, 74,233,166, 74,222,127,129,139,139,203, 2,158,231,149, 93,186,116, 57,185,114,229, 74, 50,104,208, 32, -104,181,218, 18,215, 7,150,150,150, 59,100, 50, 25,218,182,109,139,105,211,166,129, 97,152, 17,127,118, 69, 77, 41,135,130,204, - 80,112, 26, 75, 52,170,239,141, 70,126, 53,112,250,124, 48, 0,160,211, 0,127, 20,228,231, 98,251,246, 45,120,250,244, 9,196, - 18, 9, 44,172, 28, 12,250,134,180, 57, 17,200,210, 37,162,115,135,166,232,209, 45, 0, 63,237,216, 7, 86,175,195, 71, 31, 14, - 71,102, 86, 22,118,236,216,134,103,207,163, 32,150, 72, 96,109,227,244, 39,188,103,249, 90,228, 95,105,193, 42, 46, 80,120,158, - 71,124,124, 60,238,222,189,139, 23, 47, 94, 64,169, 84, 66,197,114,252,166,179, 87,121, 66,164,113, 60,165,215, 40, 91,226, 85, -248, 77, 14,142,139, 47,229, 97,214,220,210,210, 82,166,209,168,192,178,250, 82, 37, 21, 1, 8, 32, 21, 3,142, 78, 53, 17, 27, - 19, 75, 85,106,245,197, 10, 91, 96, 26,245,154,163,135, 15, 76,104,221,198,223,166, 71,167,175,113,248,200, 60,100,230,228, 64, -173,147, 32, 95,173, 67,129, 26,176,176,242, 66,179,250, 13,144,144,144,142,144, 59,151,242,196,154, 2, 67, 6,128, 62,249,126, -238,135,158, 31,126, 54, 29, 70,238,109,160, 9, 63, 12, 62, 47,185,196,130,165, 48,177,132,149,155, 15,178,242, 53, 56,112, 46, - 24, 0, 12, 94,146, 37, 57, 57,185,192,209,209,241,224,248,241,227,151,221,191,127,175, 38, 0,220,190,125,251,121, 66, 66,194, -172,228,228,228,130,170, 36, 96, 41,239,237,196,200,200,232,150,167,167,231,139, 30, 61,122,152,245,235,215, 15,182,182,182, 8, - 14, 14,198,183,223,126,251, 68,171,213,206,191,120,241, 98,133, 93, 58, 90,173, 54, 62,248,200, 17,179,128,247,223,183,152,222, -167,207,242, 9, 19, 38,172, 89,184,112,161,196,211,211,147,232,117, 58, 60,124,248,144,238,222,181, 75,191,113,246,236,213, 50, - 99, 99,241,237,163, 71, 37,172, 70, 19,255, 87,103, 98, 23, 23,151,246, 61,187,183,247, 89,177,106, 29,212,170, 60,220,186,254, - 27, 50, 51, 83,177,121,203, 33, 31, 23, 23,151,246,113,113,113,151, 12,180,100,236,251,241,199, 31,167,181,104,220,184,113, 45, - 87, 87, 60,140,126, 1, 25,207, 65,202,178, 96,116, 26,136, 88, 53, 92,253, 40,136,200, 20,137, 73, 57, 88,188,247, 96, 40,199, -113,251, 42,227,173,219,243, 61, 44,140,203, 6, 33, 4, 43, 91,249, 65,102,106, 2,169,177, 9,198,255,122,190, 68, 84, 29, 95, - 56, 27, 50, 19, 19,212,110,225,111, 72, 33, 84, 96,106,106,122,247,225,195,135,205,252,252,252, 48,109,218, 52,188,124,249, 18, - 60,207, 35, 57, 57, 89,157,152,152, 24,159,154,154,250, 18,192, 97, 0, 91,169,129, 45, 0,150,101,237,130,131,131, 1, 64, 10, - 0,231,206,157,131,147,147, 19,204,205,205,145,147,147,131,233,211,167,203,231,207,159, 15, 0,184,123,247,174,164,120,128,113, - 89,120, 24, 28,190, 34, 43,151,102,210,188,123,253, 51,216,123,245, 59,118,139, 69,151,222,163,113,230,248, 79, 56,127,250, 44, -172,196, 47, 95,192, 56,247,100,218,139,180,156,184,124,207, 31,124,154,124,196, 36,230,159,254, 97, 98, 95, 75,198,209,145, 63, - 48,107, 99,118, 86, 37,113, 0,134, 97, 74,198, 96, 21, 15,104,175,170,184, 42,141, 5, 11, 40, 79, 64,136,141, 76, 26, 18, 27, - 27,219,197,197,197, 5,201,201,201,136,141,141, 69, 76, 76, 12, 98, 99, 99, 81,167, 78, 29, 60,123,246, 12, 82,169,244,190,129, -180,195, 7, 15, 30,108,170,213,106,177,103,207, 30, 22, 64,239, 3, 7, 14,220,109,214,172,153,184,123,247,238,166, 27, 54,108, - 24, 14, 96,107, 21,130,105,108,102,102, 38,213,233,116,216,176, 97, 3, 98, 99, 99,219, 83, 74,195, 9, 33, 63, 12, 30, 60,120, -163,159,159, 95,157,208,208,208, 39,121,121,121,227, 41,165, 33, 6,148, 69, 31, 54,109,218,244, 0,207,243,238,157, 59,119, 54, - 94,181,106,149,217,227,199,143,225,226,226, 2,158,231, 31, 86,113,169,169,140,179,103,207,102,182,110,221,218,178,104, 64,251, - 98, 66,200, 55, 12,195, 44, 11, 12, 12, 52,223,189,123, 55, 78,156, 56, 1,173, 86,139,136,136,136,212,208,208,208,239, 1,172, -168,104, 2, 70, 81, 90, 63, 7, 48,147, 16,210,224,135, 31,126, 24,234,236,236, 60,252,250,245,235,228,202,149, 43, 88,185,114, - 37, 59,111,222, 60,113,145,248,121, 14,224,163,162,252, 62,199,192, 30,133,205, 0, 54,187,184,184,196,175, 92,185,210,244,202, -149, 43, 72, 74, 74,242, 4,208,162, 89,179,102, 59, 54,109,218, 4,107,107,107,196,198,198,162,117,235,214, 28, 33,100,132,165, -165,229,190, 6, 13, 26, 32, 36, 36,228,207, 42,226,244, 58,157, 22,102, 86, 53,145,151, 21,131,212,216,235, 80,154, 58,160, 91, -199,134, 40, 80,105,113,236,232, 47, 8,121,248, 0, 34,145, 8,246, 14,174,176,176,180, 65,100,228, 19, 0, 8,171,152, 83, 7, - 83,203, 26,200,203,142,133, 54, 37, 24, 70, 38,118, 24,253,126,127, 20,168,116, 56,116,248, 23,132,134,134,128, 97, 24, 56, 56, -186,194,220,162,144,147,208, 10, 57, 5, 84, 85, 96, 49, 12,115,225,212,169, 83, 3, 91,180,104, 33,126,250,244, 41,158, 62,125, - 90,156, 49, 89, 2,238, 96,114,200,145, 97, 21, 84,254,157,139,125,101,148, 94, 91,208,196,212, 52,254,113, 68,184,125,102, 70, - 50, 30,220,187,138,167,145, 15,241,226, 89, 56,116, 58, 53, 24,145, 8, 34, 70,132, 26, 53,235,225,234,181,235, 90, 45,199,221, - 40,143, 19, 0, 50, 50,162,114, 77,236,189,134, 44, 90, 56,231,248,148,233, 95, 25, 13, 26,184, 9, 33,143,195,144,199, 58,128, - 82,192,193,218, 24,141,106,205, 64,124, 66, 42,246,254,180,161,128,215,233, 70,148,246,129, 85, 22, 39, 0,216,167,193,119,227, -150,159,198,108,221,185,251,171,233,159,143,181,239, 27, 56, 2,178,140, 48,232, 19,130, 81,179, 89, 15, 16,185, 5, 78, 4,157, -199,165,187, 97,201, 60, 71,191,178, 79,199,255, 42,227, 44,141,236,236,236, 59,201,201, 73, 53, 75,121,109,175, 41,151, 43,238, - 84, 34,166, 58,191,230, 23,232, 21, 15,241, 12, 35,106,177,112,225,194,124, 71, 71, 71,109,104,104, 40,126,248,225, 7,254,238, -221,187, 23,100, 50,217,230,132,132, 4, 77,101,156,182,122,253,131,221,179,102,249, 54, 15, 12,164,195, 62,255,188, 0,114,249, -196,229, 43, 87,206, 74,205,204,116,162, 60, 15, 91, 43,171,184,229,179,103, 47, 29, 56,120,112,230,163,171, 87,141,174, 31, 57, - 98, 36, 99,217,224,202,194,249, 46, 80, 17,103, 92, 92,220, 37,207,218,110,216,190,117, 21,116, 58, 13, 18,227, 11, 13, 87,105, -233,217,168, 72, 92,189,206, 89,212,249, 31,248,229,252,249, 55,191,156, 50,217,161, 93,167,206,136,121,112, 31,186,140, 84, 16, - 61, 11, 9, 17, 35, 63, 69,137,148,228, 60,204,252,121,127, 74, 94, 65, 65,224,235,142, 28,203, 11,103,177,133, 74,110,102, 10, -169,177, 9,100, 38,166,175, 88,173, 20,102,102,144, 25,155, 64, 44,147,149, 53, 24,254, 13,206,188,188,188, 1, 3, 7, 14, 12, -185,125,251,182,229, 71, 31,125,132,214,173, 91,223, 83,169, 84, 29, 40,165,185,213,141, 79,177, 88,156,210,164, 73, 19, 59,137, - 68,194,142, 25, 51, 70,156,150,150, 86,226, 9, 61, 47, 47, 15, 39, 79,158, 68,241,148,251, 71,143, 30,161, 94,189,122,229,114, -126, 52,227, 97, 60,128,133, 83, 7,185, 44,191,249, 32,113, 34,128,101, 53,235,184,226,252,233,179,184,114,254,250,172,150,126, -252,186,158, 35,154,125,163,236, 48,120,186, 79,147,143, 24, 19, 51, 71,236, 56,244, 11, 19, 30,188,109,113, 65,193,195,218, 0, -190, 40, 47,156, 69,179,184,222,112,201,160, 82,169, 12, 18, 87, 21,229, 37, 10, 74,165, 89,100,206,160, 65,131, 90,220,186,117, -203,212,196,196, 4, 58,157, 14,148, 82,212,174, 93, 27, 98,177, 24,223,127,255,125,126, 90, 90,218, 60, 67, 56,141,141,141, 39, -116,235,214, 13, 17, 17, 17,184,115,231,206, 47,148,210, 16, 66,200, 47, 79,159, 62, 29,210,182,109, 91,252,244,211, 79, 19,202, - 19, 88,229,113,242, 60, 95,218,231, 81, 70, 81,222,125, 0,160,101, 85,223,189,200, 89,104, 27, 0,176,182,182,142,181,183,183, - 55,123,240,224, 1,220,220,220,160,211,233, 90, 84, 37, 47, 81, 74,245,132,144,245, 23, 47, 94,156,223,166, 77, 27, 76,152, 48, -161,253,197,139, 23,219,183,105,211, 6, 62, 62, 62, 56,127,254, 60,118,237,218,117,144,227,184,241, 0,178, 40,165, 92, 85,210, -168, 72, 48,134,212,175, 95,127,184,171,171, 43, 86,174, 92,169, 11, 9, 9,153,180,104,209,162,213,247,239,223,151,215,171, 87, - 79, 20, 18, 18,194, 87, 39,221, 45, 45, 45, 81,204,105, 97, 97,241, 84,171,213,182,144,201,100, 24, 48, 96, 0, 52, 26, 13, 18, - 18, 18, 56, 43, 43, 43,241, 95, 81,214, 81, 66,230,126,244,241,196, 31, 62,254,104,184,162,105,147, 70, 40,200,137,131, 42, 47, - 25, 5,185, 73,248,126,107, 16, 8, 17,193,214,214, 17,118, 14, 46,136,142,142,193,181,223, 78,104,243, 11, 84,107,100,122,126, - 89,197,156,159, 23,114, 54, 46,228, 44,200, 79,129, 42, 47,165,132,211,206,206,169,136, 51, 26, 87,175,159, 80,171,242,243, 87, -105, 41,249,238,143,124,247,255,156,192,202,204,204,156, 52,118,236,216, 14, 51,103,206,180,102, 89,150,177,178,178, 66,116,116, - 52,123,240,224,193,140,188,188,188, 73,213,122,168, 68, 18,226,233,229,221,161,111,223,190,236,123,239,245,145,142,252,176,187, -216,214,206, 14,217, 89,233,136,140,184,143,199, 97,193,240,244,110,136, 5, 11, 87, 3, 22, 22,149,206,212,201, 75,142,188, 96, - 98,239,213,251,235, 47,191,216,215,166,125, 87, 51,239,122, 13,165,141,106,155, 67,167,103, 17, 23, 23,135,163, 71, 30,232, 66, -239, 94,201,225, 89,237,144,252, 84,195,150,202,185, 88, 56,128,119,115,125,123,178,107,201,242,239,167,109,216,188,125,250,204, -137, 31, 25,183,245,239,130,135,103,127,194, 47,199,247,229,171, 53,218,229, 82, 6, 43, 31,166,209,130,170,198,129, 90,173,214, -191, 62,116, 68,173, 86,235,223, 54, 65,183,111,223,142,164,164, 36, 93,108,108,236, 89,150,101, 15, 87,101, 54,226, 58, 74,181, -129,132,156,253,210,223,191,251,151,167, 79, 43, 70,205,152,161, 29, 49,114,228, 23,208,104,116,144,201,168,216,216, 88, 4,185, - 92,242,232,234, 85,163,181,159,126,106, 69,180,218, 51, 63, 85,210,250,124, 13,239,124, 22, 97, 41, 11, 22, 70,125, 52, 5,170, - 82, 22,172, 27,119, 34, 81, 21, 11, 86, 81, 33, 30, 67, 8,105, 57,113,238,151,135,134,116,235,228,227,231, 94, 67,110,235, 81, - 3, 38, 14, 14, 72, 79, 77,197,213, 59,143,245, 11,247, 29, 10, 45, 18, 87, 6,249,133,225,121,190,100,150, 91,167, 73, 51, 65, - 24, 6, 40, 18, 2,197, 51,129, 60,154,181, 6, 17,139,193, 81, 30, 26,141,134, 26, 16,206, 56, 66,200,128, 17, 35, 70,156, 59, -126,252,184,168, 91,183,110,141, 14, 31, 62,204,191, 77,222,209,235,245, 46, 69, 66, 43, 71,169, 84,138, 71,143, 30, 13,189, 94, -143,130,130, 2,100,103,103, 35, 60, 60, 92, 51,104,208, 32,121,145,112,208, 15, 25, 50,164,210,242, 99,213,129, 56,245,212, 65, - 46,235,172,196, 47,135,230,164,133,120, 88,137, 95,190,104,233,199,175, 91,117, 32, 78,253,245, 20,139, 69,105, 47, 47, 69, 38, -230,159,254, 97,199,161, 95,152, 15,250, 15,224, 92, 76,158,204, 82,216,209,131, 29,251, 84, 90, 9,189,225, 84,244, 45, 60,224, -191, 2,157,142,222,179,182,182, 92,218,188,121,243, 57,171, 86,173, 50,177,181,181, 5,203,178,120,254,252, 57,214,175, 95,159, -159,153,153,185,152, 82,122,215, 16, 46, 47, 47, 47, 15,177, 88,140,189,123,247, 2,192,250,162,195,235, 15, 31, 62, 60,228,163, -143, 62, 66,141, 26, 53,124, 9, 33,114, 90,133,239,136, 82, 90,210,171,240,142, 43,246,103,107,215,174,117,118,112,112, 32, 39, - 79,158,100, 25,134, 57, 86, 13,154,165,187,118,237,106,197,243,124,167,182,109,219,162, 78,157, 58,197, 22, 79, 28, 57,114,100, - 31,199,113, 35, 42, 18, 86,134, 32, 60, 60,252, 74,108,108,236,208,105,211,166, 73, 87,173, 90,181,122,234,212,169,242,216,216, - 88,132,133,133,221,122, 11,206,107,177,177,177,131,139, 56,213,102,102,102,242, 37, 75,150, 96,202,148, 41, 52, 34, 34, 98,148, -149,149,213,206,191,170,146,142,120,146,190,179,126, 45,251,211, 11, 23,173,154, 95,187,150,199,184, 49,163, 7, 51, 94,158,245, -144,159, 29, 7,107, 27,123,184,184,214, 68,106, 74, 26, 78,157, 58,201,165,165,101,253,200,137,200,215, 79,158,164, 39,188, 13, -167,179, 75, 77,164,164,164,224,196,137, 19, 92, 86,102,206, 22,232, 69, 11,195, 94,102, 38, 67, 64,149,251, 60, 43,221, 0,216, - 88, 90, 90,238, 49, 51, 51, 75, 54, 51, 51, 75,182,180,180,220, 3,192,198,128,251, 58,151,252,167,148,121,101, 27, 56, 80, 1, -133,162, 37,196,226,169, 22,150,150, 39,205,205,205,211, 3, 2, 2,180, 63,252,240,131, 58, 60,252, 17, 31, 31, 31, 75,205,205, -205,115,138,175, 47,139,243,245,205,210,178,150,169,177, 99,189,249,230, 46,141,174,154, 56,250,230,154, 56,250,230,154,187, 52, -188,102,236,232,251,149,165,101, 45, 83, 67,194, 89,222, 86,211, 14,182,158, 54,216,224,109, 75, 84,158, 54,216, 80,211, 14,182, -134,190,123, 5,215, 44, 37, 4, 28, 33,224, 80, 56,157, 26, 85,229, 44,197,193, 51, 12,243,147,155,155,155, 3, 0,198,144,116, - 45,143,115, 36, 80, 99,164, 92,254,241,129, 89,179, 70,189,184,120,113, 68,206,243,231,195,178,159, 61, 27,124,127,223,190, 33, -235,135, 12, 25, 57, 76, 46,255,100, 32, 80,203, 80, 78, 71, 71,199,165,193,193,193,199, 13,221, 28, 29, 29,151, 86, 53, 62,107, -213,116, 62,221,173,115, 11, 58, 97,108, 32,157, 48, 54,144,118,235,220,130,214,170,233,124,186,186,105, 4,128, 48, 12, 51, 84, -169, 84,238, 49, 86, 42, 31, 26, 43,149, 15,149, 74,229, 30,134, 97,134, 2, 32,134,114, 90, 91, 91,223,181,183,183, 79,174,202, -102, 99, 99,115,175, 10,225, 28,230,225,225, 17, 43, 18,137, 86, 27,154,230, 6,112,182,102, 24, 38, 27,128,174,244, 38, 22,139, -227, 74, 93,227, 46,151,203,111, 40, 20,138,253,134,112,126, 55,183,222,252,107, 65,159,133,124, 55,183,222,252,215,207,125,222, -207,242,195,155,231,190, 78,255,188,159,229,135,134,132,211,206,206,238,162,157,157, 93,162,157,157, 93,162,189,189,125,133,155, -141,141,205,221,234,124,155,148, 82, 64,130,102, 54, 54, 54, 65,102,102,102,169,102,102,102, 41, 54, 54, 54,167, 1, 52,173, 74, -124,138, 68,162,101,190,190,190,106,134, 97,254,247,218,245, 43,106,215,174,173, 22,139,197,203,171,248,189,155,181,109,219,150, -123,240,224, 1,109,223,190, 61, 5, 96,249, 14,211,221,193,210,210,242,164,153,153, 89,140,169,169,233,247, 0,140,171,195, 89, -212,197, 60,171, 86,173, 90, 73, 1, 1, 1,180, 86,173, 90, 49, 0, 62, 3, 32,122, 71,225,108, 18, 24, 24,168,139,137,137,161, -148, 82, 26, 19, 19, 67, 3, 3, 3,117, 0,154,188, 5,103,179,114, 56, 71,190,109, 57, 95,213,173, 34, 78,159,154, 54,181,234, -214,177,220, 63,124,128, 63, 31,116,116, 53, 93, 48,103, 28,237,210,190, 30,245,174,109,121,200,211,211,218,243, 93,112,206,159, - 51,150,118,110,231,203,251,212,178,220,231, 83,211,166,214,159,249,238,255,182,141, 84,115,169,170, 42,155, 58,137, 33,222,101, -157,156,156,144,158,222, 66, 33, 22,251,203,229,242, 14, 34,145,232,114, 70, 90,218,231,133,166,123,112,127, 69,247,211,235,168, - 93,155,200,202, 91, 58,160, 58,156,175, 15, 80,175, 14,103, 85, 56, 12,229, 44,111,177,103, 94,163, 73,176,102,217,187,235,104, -249,113,240, 58,167,139,139,203,199, 60,207,123, 24, 26, 38,145, 72,244, 34, 46, 46,110,107,117,226,211,203,203,139, 62,121,242, -196,160, 65,146,127,117, 94,250, 47,113,238, 92,221,192,201,187,126,221,233, 15,131,195, 87, 20,117, 31,150,224,235,137, 86,166, -254, 29, 3,230, 93, 61,127,241,155, 5,235, 50,114,255,109,239, 78, 8, 17,149, 53, 14,174,120, 46,122, 85, 57,165, 82,233, 15, -205,155, 55,255,248,230,205,155,255, 99, 89,246,147,191,235,187, 23, 45,109, 36,163, 85,179,114, 27, 20, 78, 66, 72, 19,134, 97, -166,250,250,250,182, 8, 11, 11,187,197,113,220, 42, 74,105,240,223,141,243,143,202,159,190,158,214, 77, 41, 45,113,150,189, 56, -252,105,250,237,119,198, 73,121,142,167,204,162,199,207,210,238,253,217,239,254,159,235, 34,124,103,150,178, 34,129, 84, 33, 18, - 18, 98, 1,196, 2, 56,240,119,141, 48, 67,196, 85, 21, 45,136,201,127, 7,142,178,186, 11, 1, 92,127, 23, 92,175,139,165, 63, - 18,145,145,145, 68,248,172,255,126,120,127, 74, 72, 2,128,201, 77,203,112, 77, 85, 36,170,166,119,120,239, 95,219, 75,192,151, -115,188, 90,173, 91,157, 78, 55,142, 16, 50,181, 42,179, 15,255,162,247,166, 0, 52,127, 16,119, 48,128, 97,127,119,206, 63, 10, - 97, 79,210,239, 2,232,243,119,231,252,175, 67, 36, 68,129, 0, 1, 2, 4,252,227, 68,155, 74,136, 5, 1, 2,254,222, 32, 0, - 58,151,243, 1, 27,108,250, 35,132,116,174, 70, 1,113, 86,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,255, 22,231,127,169, - 37,244,135,109,248,147, 7, 0, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,207,228,252,183,109, 66, 23,161,128, 63, 28, -223, 7, 18,231,239, 3,137,243, 31,117,189, 0, 1, 2, 4, 8, 16,240,119,131,248,175, 14, 0, 33,196, 9,133, 14,242,106, 3, -120, 12,224, 10,165, 52,243, 45,248,108, 0, 12, 38,132, 12, 42,178,208, 29, 0,176,159, 82,154,102,200,253, 70, 70, 70,201,106, -181,218, 14, 0, 20, 10, 69,138, 90,173, 46,189,230, 0, 41,181, 1, 0, 45,222, 42, 26,176, 90,179,102,205,100,141, 70, 99,103, -192,227,179, 41,165, 33, 34,145,232,161,137,137,201,249,199,143, 31, 31,175,202,187,119,236,216,113, 20,195, 48,139, 1,128,227, -184,185,231,207,159,223,254, 7,166, 91, 11, 87, 39,135,159,116,122, 29,155,156,154, 49,143, 82,122,180,172,235, 54,246, 33, 75, -197, 4,211,139,254, 47, 31,127,140,206,174,136,183,170,215, 87, 16,190,166, 18,137,100,130,189,189,125,143,184,184,184,187, 0, -102, 80, 74, 43,245, 66,236,230,230,246,190, 88, 44, 30,193,113, 92, 45,134, 97,158,177, 44,187, 43, 38, 38,102,167, 80, 84, 8, - 16, 32, 64,128,128, 63, 76, 96,213,181, 33, 14, 20, 24, 10,130, 46,160, 56, 67,128,189, 17,105, 52,201,208,251,123,213, 37,122, - 61, 91,248, 76,169, 8,220,201, 40,209,150, 94,189,122,185,124,254,249,231,104,221,186, 53,110,222,188,217,234,199, 31,127,252, -144, 97,152, 16,158,231, 47, 0,184, 73,169, 65, 46, 17,140, 1,244, 5, 48,188, 71,143, 30,157, 23, 47, 94,204,212,171, 87, 15, - 42,149, 10, 23, 47, 94,244, 95,190,124,249, 26, 66,200, 89, 0,187, 1, 28,165,148,230,151,199,165, 86,171,237,138,181, 18, 33, -196,110,192,128, 1,119, 74,175, 17, 71, 8,129, 72, 36, 2,165,244, 6,128, 27, 60,207,223, 56,112,224, 64,108, 93, 66, 90,140, -245,144, 30,156,244, 92,235,242, 58,167, 70,163,177, 59,242,221, 18,136,229,114,104,114,115,208,106,244,239, 51,171,207,204,159, - 14,194,179, 96, 64, 51, 59, 44, 90, 19, 2,224, 97, 66, 66, 66, 72,251,246,237, 95, 84, 53, 49, 25,134, 89,124,234,212, 41, 71, - 74, 41,186,117,235,182, 24,192, 31, 34,176, 8, 33,242,150, 77, 27, 94, 56,246,203, 30, 69, 94, 70, 50,186,247, 29,178,139, 16, - 50,138, 82,250,203, 43, 98,169, 39,177, 39, 98, 76,255,116,201,110, 6, 0, 54,206, 25, 62, 99, 77, 55,178,110,242,105,154, 68, - 8,233, 0,148, 44,173,244, 29,165,244,194,198,158,196, 30, 12,102,126,186,100, 55, 1,128, 77,115,134, 79,223,216,147,172, 29, -127,162,106,179, 36, 9, 33,227, 71,141, 26,181,110,241,226,197,140,163,163, 35,226,227,227,187,251,250,250,122, 17, 66,124, 43, - 26, 28,236,225,225,177,175, 67,215,126,181, 2, 7, 13, 53,178,177,182, 68,124, 98,170,249,254, 61, 63,142,245,240,240,232,241, -226,197,139, 33, 66,113, 33, 64,128, 0, 1, 2,222,153,192,106,226, 68,140,242,117,232, 39,102,200,251,109, 91,212,235, 52,172, -103, 91,145,175, 79, 29,132, 61, 10,239,122,244,252,173,229,190,246,162,115, 44, 71,119, 26, 75,113, 36, 56,161,226,153, 45,122, - 22,226,160, 35,187, 1, 0,227, 63, 28,206,220,190,125,187, 78,147, 38, 77, 74, 86, 80,239,212,169, 19, 58,117,234, 68, 54,110, -220,216, 48, 40, 40,168,225,182,109,219,116,132,144,159, 40,165,191, 85, 80,153, 78,168, 93,187,246,242,117,235,214,201,219,183, -111, 15,185, 92, 94,114,206,196,196, 4,125,250,244, 65,159, 62,125,152,132,132,132,110,199,142, 29,235,246,221,119,223,105, 9, - 33, 95, 80, 74,215, 27, 18, 65,243,231,207,111, 82,198,225, 83,132,144, 40,150,101,239, 53,104,208, 32,214,155,144, 58,227,122, -182, 62, 51,190,141,167,113,185, 17, 45,147, 97,199,168,194, 58,186,180,192,122,113,254, 36, 76,204, 76,211,149,166,166, 33, 0, - 30, 2, 8,161,148, 62,140,138,138, 10,247, 33,164, 97, 75, 75,209, 79,219, 50,184, 6, 85, 16, 89,136,141,141,133,185,185,185, - 81, 64, 64, 64, 34, 33,228,171, 11, 23, 46,108,121,199,249,166,197, 87,211,199, 75, 51, 95,134, 32, 41,226, 6,166, 14,242, 87, - 78,254,254,215,111, 0,252, 82,177,240, 17,137,190,187,206,207,154, 12, 76, 2, 48, 47, 61, 61,189, 61, 0, 88, 91, 91,203, 0, - 92, 88,125, 11, 61,167,180, 33,213,118,179, 64, 8,145, 50, 12,179, 97,199,142, 29, 31,189,255,254,251,133, 75, 60, 92,189, 10, - 19, 19, 19, 44, 92,184,176,198,180,105,211,150,162,240,217,101, 90,174, 2,186,244,171,185,102,249, 55, 62,185, 25,217,154,205, - 27,246,223,113,246,243,102,198, 77,152,102,186, 94,175,117,112,115,115,123, 95,176,100, 9, 16, 32, 64,128,128,119, 34,176,188, -109,201,246,182,141, 61, 7, 15,235,229, 47,175,239, 87, 15, 82,249,239,139,187, 54,105,218, 20, 77,154, 54, 21,205,202,203,237, -114,251, 78,112,151,131, 65, 55, 53,222,182,100,255,227, 84, 58,202,208,135, 23, 47, 22,187,184,175,125,199,252,172, 20, 5, 0, - 24, 91,216,169,231, 28, 73, 58,223,166, 77, 27,184,184,184, 72,207,157, 59, 55, 6,192,111, 21,208,204,121,252,248,177,156, 97, - 42,246, 99,234,228,228,132,129, 3, 7,194,219,219, 91, 22, 16, 16, 48, 7,191, 47, 91,241, 10, 20, 10, 69, 10, 33,196, 14, 0, -172,172,172,184,175,190,250,234, 1, 45, 2, 0,240, 60,127,131, 97,152, 27, 60,207,223, 58,122,244,104, 92, 61, 66,236,122, 55, -241,190, 50,126,228, 64, 37, 61,184,166, 92,113,160,206,201, 41,243,184,210,196, 56,213,200,216, 56, 68,174, 84, 60, 4, 16, 2, -224,161,179,179,115,120, 61, 66, 92, 90,122,123, 4,109,156, 50,220,212,144,184,108,210,164,137, 87,135, 14, 29, 20, 28,199, 33, - 63, 63, 31,155, 54,109, 50, 55, 50, 50, 50,239,209,163,199, 2, 0, 37, 2,203,151,144,250, 3,156,152, 79,190,138,103, 63,171, -134,128,177,104,219,170,233,203,239,151, 45, 48,107,218,178, 45,158, 92,248, 25, 25, 25,185,200,206,202, 3,207,243,111,172,252, - 59,254, 4, 77,222,216,135, 44,223, 56,123,248, 76, 34, 18,145,134,253,103,224, 61,135,236,137,132,144, 71, 0, 36,197,171,213, - 3, 16, 19, 66,156,252,252,252,150,215,233,218, 22,155,230,142, 4,229,121, 10, 96,185,161,214, 43, 66,136,157,169,169,233,209, -160,160,160, 22,205,154, 53,195,205,155, 55,241,252,249,115,140, 31, 63, 94,251,217,103,159, 73, 63,248,224, 3, 50,117,234,212, -207, 9, 33, 7, 41,165,215,222,248, 16,196,226, 17,125, 3,135,200,242,178,114,212, 58,173, 78,107,109,109, 78,213,249,234,220, -244,204, 28,213,224,161, 31,233, 30, 6,223, 28, 1,224, 13,129,245, 54,241, 41, 64,128, 0, 1, 2, 12, 70, 51, 0,182, 0, 82, - 1,220,121,109, 31, 69,255, 81,198,126, 26, 10,135,245, 88,151,226, 74, 67,225,240, 30, 91, 20,250,232,188, 13, 32,243, 93, 7, -152, 80, 74, 81,228, 80,184,216,177, 48, 41, 37,176,232,227, 84, 10, 54,227, 25,184,244, 40,112,185,111, 46,111, 68, 20, 22,200, - 86,113,136,125, 22,142, 81,147, 23,226,113,106,249, 30,180,123,213, 37,122,115, 25,196,166, 82, 64,170,180,208, 12, 91,118,250, -122,211,166, 77,213,115,218,139,122, 45,221, 88,104,217,154,250,201,112,180,154,114,240,244,179,103,207, 88, 39, 39, 39,188,255, -254,251,160,148,246,174,160, 98, 77,206,189,115,221, 46,162,119,107, 52, 79, 46,123, 24, 84,100,100, 36, 46, 95,190,140,152,152, - 24,212,170, 85, 11, 99,198,140, 73,161,148,218,151,199,217,189,123,247, 75,223,125,247, 93,187,149, 43, 87,134,236,216,177,163, - 13,165,101,175, 53,232, 75,136,113,195, 26, 14,119,182, 45,157, 89,139,156,252, 73, 82, 16,243, 20, 22,151, 84,164, 12,113, 71, - 19, 18,126,143,187,111,189, 28, 97,108,110, 10, 99, 51,147,228, 15,130,238,150, 88,174,138,126, 31, 55, 33,196,204,197,209,250, -238,222,213,243,156, 69,231,247, 41,164,155,111,144,202,196, 85, 64, 64,192,245,197,139, 23, 91, 38, 36, 36,224,236,217,179,168, - 81,163, 6, 10, 10, 10,176,106,213,170,196, 43, 87,174, 56, 21,133,215,190,185,183,123,200,166,105,163,205,165, 99,230,203,171, -154, 89,164, 98,241,250,235,167,246,125,102, 46,167,200, 74,120,142,168,240, 71,184, 29,246, 66,191,243, 76, 8,151,163,210,244, -162,148,158, 47,235,190, 9,254,164,206,133, 4,219, 99,167, 46,222,241,116,116,116,196,216,177, 99,145,148,148, 4, 74, 41,120, -158, 47,153,113, 49,103,206, 28,120,121,121, 97,212,208,247, 10,228, 25,193, 1,199,194, 12, 91,239,141, 16,226,231,238,238, 30, -116,225,194, 5,123,103,103,103, 92,185,114, 5, 73, 73, 73,112,112,112,192,185,115,231,176,108,217,178, 29,159,126,250,233,160, -197,139, 23, 43,134, 13, 27, 22,127,250,244,105,215,215,199,204,213,168, 81, 35,252,216,233, 43, 38,231, 14,159,126,102,105,106, - 12, 19,123, 43, 48,166,150, 42, 80,168,236,109,205,165, 67,250,117,174,253,242,229, 75,159,215,210,255,173,226, 83,128, 0, 1, - 2, 4,188, 82,150,151,169, 69,138, 37, 4, 33,228,120,145, 30,208, 2,144,149,218, 7, 33,228, 56, 0,188,190, 63,107,214,172, - 57, 75,151, 46,125, 84,188, 95,124,205,236,217,179,235, 45, 91,182,108, 73,171, 86,173,246, 94,191,126,253, 43, 0, 79,255, 84, - 11, 86, 49,216,184,219,144,122,246,128,132,211, 67,159,246, 24,124, 86, 52, 96,236, 0, 21, 49, 65,122, 98, 52, 34,174,252, 82, -168, 5, 43,193,111, 17, 84, 66, 8, 57, 23, 30, 30,142,136,136, 8,196,198,198, 66,169, 84,190,113,221,213,171, 87, 97,100,100, - 4, 71, 71, 71,131, 94,130,106, 95,117, 22, 28,210,196, 29, 38,173,218, 35,109,216, 56,156, 59,119, 14, 41, 41, 41,144, 74,165, -144,201,100, 96, 89,182, 82, 62,145, 72, 68,138, 18,129, 2, 40,211, 11,115, 0, 33, 98, 23, 43,147, 99, 27, 23, 76,242, 16,221, - 56, 46, 81,197, 60, 69,130,154,131,133, 33,150, 59, 19, 99, 40,141,149,137, 70, 70,202,215,197,213,147, 38,132, 72,140, 77, 20, -199,126, 90, 52,213,129,185,119, 78,161,122, 26, 2,105, 25, 28, 93,186,116, 25, 11, 96, 1,165, 52, 43, 32, 32,192,126,241,226, -197,150,241,241,241, 8, 11, 11,195,254,253,251, 83,217,194, 23, 37,148,210,175, 1,160, 21, 33, 10, 55, 91,139,211,235,231, 79, - 50,197,133,125, 50,140,153, 95,229,204, 98,238,211,231,183, 1, 31,124,250,217,186, 73,125,144,159,171,194,238, 51,247,112, 42, - 56,234, 61, 0, 87, 43, 26,215,182,254, 42,125, 74, 8,233, 20, 24, 24,120,255,242,229,203, 54,219,182,109, 3,203,178,101,110, -219,182,109,195,217, 43,193, 19, 13, 93, 76,151, 16,226,228,225,225,113,246,214,173, 91,182, 74,165, 18,103,206,156, 65, 86, 86, - 86,137,229,106,212,168, 81, 36, 43, 43,107,232,166, 77,155, 6,188,124,249,114,197,149, 43, 87,210, 81,184,108,211, 43, 25,129, - 97,152, 40,150,213,213,117,242,241,100, 6,245,105,219, 54, 47, 61, 4, 38,214, 13,112,243,126,212,241,236,172, 12, 21,195, 48, - 81,165,175,127, 23,241, 41, 64,128, 0, 1, 2,170, 44,194,142, 83, 74,123,151, 22, 76,175, 11,173,226,255,197,215, 45, 93,186, -180,119,105,241, 5, 0,203,150, 45, 91, 82,106,191,224,143, 8,171,248,119,189, 64, 40,128,128,178, 46,210,132, 29,130, 38,226, - 40,164,238,109, 32,243,126, 15,140,187, 63, 98, 66, 46,224,193,201,213,136,123,116, 21,148,231,224,232,213,220,208,103,170,235, -214,173, 11,181,186,112,232,149, 70,163,129,212,216, 82, 61,245,147,225, 10, 0,224,197, 10, 77, 41,149,105, 16,161,105,155, 14, -104,158, 76,113,219,190, 80,240, 22, 91,178, 22,141, 30, 13,169, 84, 10,169, 84,138,226,129,234,134, 8,172,162, 53,180,138, 87, -171,167,101,157,111, 42,151,236,222,187, 96, 66,115,249,203,135, 50, 77,232, 13, 36,104,120,122, 44,153,251,205,215,128,240, 42, -141,149,241, 70, 74,229, 67, 35, 19,227,210, 2, 43, 10, 0,168, 68,178,243,231,175, 39, 52, 48, 78,126,102,172,190,115, 14,137, -106, 94,103, 86, 54,205,215, 39, 79,158,180, 19,139,197, 14, 28,199, 33, 38, 38, 6,143, 30, 61,194,218,181,107,147,115,115,115, - 3,130,131,131, 35, 75,133, 87,212,204, 72,182,127,231,194, 73, 53,197, 33,151, 20,154,168,208, 50, 69, 91, 69,176,173,223,191, -219,123, 1, 13,127, 27, 59,114, 46,250,245,236,138, 15, 2,124,233,139,132, 12, 53,128, 51,148,210, 74,151, 65,162,148,198, 19, - 66,186,180,107,215,110, 87,163, 70,141,124, 40,165,168, 95,191, 62,134, 14, 29,138,157, 59,119,226,193,131, 7,200,201,201,209, - 5, 5, 5,173,161,148,254,104,224,135,166,180,180,180, 60,117,254,252,121, 91,165, 82,137,160,160, 32,168, 84, 42, 56, 58, 58, -226,179,207, 62,147, 45, 91,182,108, 71, 78, 78,206,160,165, 75,151, 42, 94,188,248, 63,123, 95, 29, 94,197,241,127,125,102,247, -122,238,141,187,160, 9, 9, 49, 8, 78,112,135,226, 46,197,161, 72,177, 34, 45,238, 69, 10, 20, 43,180,184, 22,119,119,119,135, - 16, 2,129,144, 16,119, 79,174,239,206,251, 71,164, 33, 68,110,128,190,191,126,219,123,158,103,159,123,215,206,206,206,204,206, -156,249,204,204,103, 66,215,157, 63,127,190, 34,114, 22,156,253, 36, 19,104, 52,154, 77,123,118,237, 88, 59,102,236, 56,231, 43, -247, 2, 47,171,179, 50,204,203,149,143,200,176,177, 82, 40, 86, 45,155, 95, 78,163,209,140, 44, 58, 62,175,125, 86,124, 26, 97, -132, 17, 70, 24, 81,148,237,162,120, 45, 82, 80, 52, 21, 22, 89,101, 17,103, 0,148,211,166, 77,155, 65, 8, 57,149,107,225, 82, - 2,136,254, 91, 4, 22,165,244, 58, 33, 4,148,210,235,197, 94,201,115,208,134,222,128, 54,244, 6,100,254,227,113, 98, 73,191, - 66, 47,205,127,118, 32, 58, 45,184,120, 69,173, 86, 11,118,236,216,145, 63, 46, 11, 0, 56,142,251,234,169,103,136,192, 66,238, - 18, 66,185, 2,235,147, 64, 84,146, 40,174,111,154,216,171,190, 53,151, 45,212,220, 58,137, 40, 53,175, 95,241, 86,155,253, 48, -149, 46,155, 81, 12,225,177, 31, 70, 34,226,230, 37,152, 40, 20, 17,195,111,188, 40,104,181,122, 14,224, 61, 0, 84,146,154, 93, - 62, 48,169, 95, 35, 7, 17, 68,154,211, 7, 17,173,230,213, 27,194,116,219,214, 20,157,201, 64, 41,197,251,247,239,145,157,157, -141, 59,119,238,224,240,225,195, 9,133,197, 85,110,120,175,109,253,169,127, 61,179,140, 88,145,230,225, 37, 68,171,121,181,135, - 33,162,170,122,183,134, 34,134, 92, 32, 12, 43,107,223,216, 27, 63,124,215, 13,171,182,158,208,107,236, 26,119, 92,123,252, 76, -239, 76,181,118,134, 33,226,170, 64,152,159, 3,240, 38,132, 72, 0, 52,239,219,183,239,153, 30, 61,122,224,250,245,235, 56,121, -242,164, 59,128,152,220,143, 96, 1, 0,123,228,204, 46, 12, 41,230, 67, 97, 68, 34,209,190, 75,151, 46,249, 56, 57, 57,225,210, -165, 75, 80, 42,149, 24, 61,122,180,102,236,216,177,162,193,131, 7,147,180,180,180,124,203,213,157, 59,119,146,138, 19, 87, 0, - 16, 25, 25,121,182, 98,197,138, 13,155, 52,105,210,181,178,123, 85,179,144,140,244,120,133,137, 84,118,243,250, 85,209,227,135, -119,215, 69, 70, 70, 62, 40, 58, 62, 47, 27, 28,159, 70, 24, 97,132, 17, 70,148, 88, 71,148,174, 69, 10, 89,162,202,200,159,119, -159,112,201,146, 37, 47,151, 44, 89,242,145,133,235,239,178, 96,149, 9, 92, 90,248,167, 1,231,249,178,188,228, 39,199, 44, 45, - 45,245, 50,153,236, 35,129,197, 27,200,153,124,116, 47, 66,190,255, 54,223,114,149,103,201, 66,187,193,159, 37,176,242, 44, 88, -185,131,161, 63, 10,132,220,190,106,191,125, 3, 90, 55,244,174,236,204,232, 14,172, 65,100,182, 94, 53,247,181, 86, 21,148, 65, - 59, 7, 22, 49,120, 58,159, 83,175,131, 84, 46,251, 32, 83,200, 11,139,171, 48, 0, 80, 56,120,244,216,217,175,121, 51,191,170, -110,140,126,255, 74, 68,101,235, 50,167,189,210,106, 67,178,232,145, 98,226,112,110,155, 54,109,230, 90, 91, 91, 75,215,174, 93, -107, 94,161, 66, 5,232,245,122, 77, 97,113, 37,183,175,218,111,255,224,118, 13, 61, 28, 44, 25,221,161,223, 16,161,228,178,215, -132,232,118,110, 48, 64, 92,217,152, 43,206,111, 88,252,189,204, 68, 34,132, 74,165,194,210,223, 15,225,194,237,128,142, 9, 47, -142,158, 7,112,254, 11,242,221,240,142, 29, 59,174, 90,176, 96, 1,116, 58, 29,134, 13, 27,134,119,239,222, 93,120,253,250,245, -154,242,229,203, 79,249,233,167,159,156, 28, 28, 28,208,187,119,111, 17,128,193,197,112,252,178,103,207,158,142,126,126,126,184, -126,253, 58, 82, 83, 83,225,232,232,136,177, 99,199,138,151, 44, 89,178, 51, 61, 61,189,215,226,197,139,165,239,223,191, 47,209, -114, 85, 40,111, 44,220,184,234,251,201,117,234, 55, 98,222,190,125,163, 15,175,219,148,185,122,233,228, 13, 75, 75,203,157, 31, -197,231,144,111,202, 28,159, 70, 24, 97,132, 17, 70,124, 53,156, 6,208,161,176, 85,171,176,248,202,179, 80, 21,220, 47,124,125, -238,249,191,101, 81,114, 65,129, 0, 26, 60, 61,158,207, 74, 48, 72, 52, 21, 70, 7, 79,162, 27, 89, 7,130, 25, 77, 25,136,228, -150,170, 78, 11, 46, 94, 41,238, 90,185, 92,110,176, 5,139, 87,171, 74, 19, 76,101, 18, 88, 44,203, 18, 0,231,120,158,191, 91, - 80, 96, 89, 56, 84,109, 58,107,234,132,213,141,122,180, 99,226,190,243, 71,106,166, 90,253, 83,160,158,143,204, 46, 89, 92,229, -168, 82, 93,168,137, 92,241, 66, 42,255,104,220, 85, 56, 0,200,236,171,212,157, 54,113,220,239, 45,250,117, 34, 9,163, 27, 33, - 37, 85,169,158,242, 82, 79,162,148,180, 87, 32,165, 87,139,162,187,124,249,242, 70, 0, 27,155, 53,107, 22, 39,151,203,145,153, -153,249, 73, 26,228,133,183, 97,143,118, 76,220,240,122, 72,206,210,170,127,122,169, 71,180,146,223, 87,154,184,178,181, 48, 61, -191, 97,209,247, 38,209,145, 97, 16,137, 68, 80, 40, 20,184,120,235, 5, 18, 2,142,125,137,176, 2,203,178,243,102,204,152, 49, -119,204,152, 49, 72, 74, 74,194,201,147, 39,209,190,125,123,236,221,187,183,194,153, 51,103, 86, 53,111,222, 28, 44,203,226,212, -169, 83,208,233,116,193,197,164,103,183, 17, 35, 70, 76,233,209,163, 7, 30, 60,120,128,152,152,152,143, 44, 87,169,169,169,125, -127,255,253,247, 30,161,161,161,165, 90,174, 10,161,110, 37,183,154,162,233,179,127,133, 58, 59, 94,144, 16,117,239,250,229,139, -204,221,228,228,100, 19, 0,105,159, 27,159, 70, 24, 97,132, 17, 70, 24,108,128, 41, 78,139, 36,228,138,167,132,162,246, 11, 8, -171,162,246, 73, 33,171,151,166,208,249,103,255,103, 22, 44,129,189, 47,244,113, 1, 5, 4, 86,252, 71,231,165,166, 86, 6,117, - 17,234,244, 16,108,216,150,239, 7, 75,154,148,148, 36,181,177,177, 81, 21, 20, 6, 38, 38, 38,112,114,114, 66, 74, 74, 10, 54, -109,218, 4, 0,165, 13,118,214,155,245, 24,128,186,253,134,225,161,139, 24, 84,167,205,183,100,109, 24, 50,228, 35,145, 37, 18, -137,242,198,126,149, 86,217,222, 39,132,132,241, 60,127,151, 82, 74,107,121,184, 46,148,202,229, 67,106, 87,119,179,249,225,251, -225,194,208,120, 53,174, 52,154,158,122,232,151,169,138, 8,170, 24,243,129,166,222, 46,133, 47,164,203, 31,187, 11, 91,174, 34, -107,122,184,206,148,154, 72,191,171,239,235,225, 48,109,210,247,194,208, 56, 53,185, 82,247,167,244,195,203,126, 50,121, 15,211, - 41, 17, 52,229,170, 1,201, 51,183,125,251,246,115, 41,165,148,231,249,217, 0, 80, 48,188,147,198,126, 39, 12,137, 85,225,114, -163,153, 41,135,127,153,106, 26,129,146,195,107, 91,189, 91, 67,123, 75,179,243, 27, 22,143, 49,137,137,250, 0,137, 68, 2, 83, - 83, 83, 68,196,165, 65, 40, 96,149, 95,146,217, 8, 33,146,166, 77,155, 78,253,254,251,239,241,226,197, 11,140, 30, 61, 58, 38, - 60, 60,252,200,254,253,251, 71,207,153, 51, 71,208,182,109, 91,196,196,196, 96,249,242,229,186, 91,183,110, 45, 6,176,188,200, -252, 40, 16, 12, 95,184,112, 33,141,142,142, 38,239,223,191,135,163,163, 35,198,141, 27, 39, 94,188,120,113,254,152,171,178, 88, -174,242, 16, 25, 25,121,221,221,173, 60, 58,159, 93, 13,189, 78,125, 61, 53, 41,252, 70, 80, 72,202,117, 43,177,120,114,163, 90, -213, 63, 43, 62,141, 48,194, 8, 35,140,248, 42,120, 88,202,254, 63, 14,165, 9,172,224,223,102, 14,117, 31, 58,230, 71,200, 42, - 52,132,250,213, 81,240,153,113,249, 22, 44,169,194, 18, 86,229,189,144,154,165,198,193,203,143, 1, 32,184, 44, 15,207,200,200, - 64,173, 90,181,176,126,176, 71, 11, 85, 70,146, 84, 6, 64, 45, 49, 83, 29, 19, 55,190,114,230,204,153,108,158,231,247, 1, 56, - 83, 10,205, 60, 31, 31,159,117,191,254,250,171,216,171,223, 80,100,222,187,249,209, 73,134, 97, 32,147,201, 32,145, 72,240,252, -249,115, 92,185,114, 69, 3, 96, 94, 41, 66,224,190, 94,175,127,118,240,224,193, 8,119, 87,151,118,205,234,212, 29, 63, 99,250, - 52,211,192,155, 23, 48,123,241, 58,190, 74,237,182,105, 75,247, 30,203, 72, 83,148,111,153, 29, 29,244,212,128, 87,125, 86, 72, - 92, 69,123, 85, 46,223,194,191,102,141, 31,103,207,158,105,246,242,230, 69,204, 89,182,129,186,251,181, 74, 91,118,248,120,122, -162, 73,197, 54,202,184, 87, 15, 12,137,195,107,215,174,109, 4,176, 49,111,191,112,120,167, 45, 88,195,123,212,105,151,178,116, -239,225,172,116,211,242,173, 74, 10,175,157,119,247, 6,229, 28,173,206,255,246,243, 40,147,216,168,112, 72, 36, 18, 40, 20, 10, -132,199,164, 98,238,234, 3, 89, 90,158,111,247,133,249, 77, 98,106,106, 42,209,106,181, 88,191,126, 61,194,195,195,253, 41,165, -225,132,144, 13,125,250,244, 89, 91,173, 90, 53,207,151, 47, 95, 6,103,102,102,142,161,148, 6, 21, 71, 98, 97, 97,225,111,107, -107, 75,238,222,189,139, 81,163, 70,105,198,141, 27, 39, 26, 52,104, 16, 73, 73, 73,249, 92,203, 21, 0,192,197,197,165,105,151, - 14, 13,208,176,245,232,235, 26, 85,234,141,208,160,157,215, 25,122, 91, 90,171, 70,245,207,138, 79, 35,140, 48,194, 8, 35,254, -219,230,184, 98,183,166,128,192,195, 26, 35,125,156, 69,177,187,126, 25, 71, 51, 66,238, 80,229,131,141, 52,253,232,119,244,244, -242, 65,244,204,111, 63,208,209, 29,124,168,167, 29,137,245,176,198,200,166,128,160,164,213,182,219, 87,133,174,181, 27,104,107, - 55,208, 14, 30,208, 1,152, 81,179,102,205, 99, 99,235,130,210,192, 61,148, 6,238,161, 99,235,130, 2, 24, 5, 64, 97,232, 10, -222, 0, 28, 1,108,170, 85,171,150,254,234,213,171,244,117,175, 86,244,137,167, 13, 29, 51,102, 12,157, 51,103, 14,253,246,219, -111,169,173,173,173, 30, 57, 14, 55, 29, 75,227,236,220,185,179, 11,165, 20,229,202,149,179,168,237, 85, 37,246,249,229,147,244, -198,174,181,116,235,216,238,180, 94, 53,175, 68, 7,207, 38,207,100,142, 85,107, 24,186,210,184,131,131,195,116, 74,105, 59, 74, -169, 35,165, 20,238,238,214,138,154,158, 85,162,159, 93, 58, 73,111,238, 94, 71,183,142,237, 78,235, 87,247, 78,114,241,106, 30, - 36,181,243,172,251,185,171,151, 23, 25, 94, 95,207, 68,251, 42, 13,158, 22, 23,222,130,156,149,235,246, 62, 30, 25, 29, 71,239, -223,191, 79,207,156, 57, 67,111,222,188, 73,119,237, 63, 78,203,215,233,149,105, 83,173,107,195, 47, 93,101, 29,128,121,135, 14, - 29,104,112,112, 48,253,230,155,111, 40, 0,243,207,225, 4,112, 44, 52, 52,148, 6, 4, 4,208, 25, 51,102, 80, 0, 59,190,255, -254,123,101, 90, 90, 26,109,213,170, 85, 56,114, 38, 41, 8, 62, 39,156,174,149,156,151,118,235,212,120,222,216, 81, 61,154,126, -105,124,254,147, 87,173, 55,114, 26, 57,141,156, 70,206,127, 26,231,191,109, 43,209,130,117, 45,167,245,191,177,154, 61,249,115, -241,242,223, 38,175,223,184,227,199,169,227,135,203, 27, 55,106,141, 23,151,182,227,240,169,253, 89, 42,181,102,185,136,197,175, - 47, 18,105,169,126, 36, 78, 7, 81, 97, 17,214, 34, 19, 43, 55,228,251, 80,122,155, 2, 80, 74, 55,148, 81, 36,198, 0, 24, 65, - 8,249,181,121,243,230,139,190,107, 88,183,251,216, 6, 45,160,211,233,176,107,215, 46,124,248,240,225, 8,128,153,148, 82,131, - 44,108, 47, 94,188, 72,244,169, 82,113,130,149, 76,244,227,152,111,187,217, 38,188, 11, 68,228,171, 39, 0, 0,181, 90,169,139, -121,115,221,175, 44,225,147,201,100,247,109,109,109, 95,219,218,218,166,112,234,204, 17, 82,129,217,236,209,125,187,216, 37,133, - 6, 33,226,101, 78, 15,168, 90,149,173,141,120,115,197,243,115, 68,114,197,138, 21, 37,114, 33, 70, 22, 25, 94,141, 74, 23, 27, -252,170,134, 33, 60,217,106,205,226,249,171,118,181,249,249,199, 33, 18, 51, 51, 51, 60, 14,120,139,217, 43,247,102, 41, 53,186, -118, 9,207,143,222,254, 90,130, 94,167,211, 25, 60,129,161, 24, 76,245,243,243,171,186,104,209, 34,247,193,131, 7,227, 75, 45, - 87, 5,241,238,125,228,180,102,205,154,121,191,125,253,184,185,149, 76,244,231,151,196,167, 17, 70, 24, 97,132, 17,255, 93, 24, - 52, 6,235, 69, 28,205, 6,176,192,213,158,108,152,190,104,213, 92,134,172, 30,194, 83,186, 93,207, 96,126, 72, 34, 77,248,194, - 10, 55,187,131, 39,209,183,233,250,173, 0, 0,132, 2,232,191,128, 43, 24, 64, 15, 66, 72,157,205,183, 31,204,202, 61,252, 51, -165,180, 76,125,181,166, 2, 4, 52,242,118,117,110, 92,211, 71,202,114, 74, 68,190,122,135,228, 44, 21, 46,190,252,144,202, 80, -102,123, 89,195, 21, 18, 18,114, 13, 0,124,171, 84,124,213,216,219,173,124,147, 90, 62, 38, 66,162, 65,100,224, 99,164, 41, 53, -184,240,242, 67, 26, 8,249,236,129,210, 95, 43,188,177,207,143, 61,180,173,222,173, 21, 33,228,210,140,177,253, 36,115, 87,238, -251,170,226, 10, 64,118, 84, 84, 84, 82,118,118,182,117,116,116,180, 6,159,233,220,141, 82,250,150, 16, 82,237,135, 31,126, 88, - 48,101,202,148, 31,127,249,229, 23,209,231,140,185, 42, 14, 41, 81, 31,142, 54,241,249,122,233,111,132, 17, 70, 24, 97,132, 81, - 96,149, 44, 20,226,104, 2,128, 49,110,110,100,210,187,119, 84,243,181, 2, 81,148,101,235, 11, 69,219, 67, 0,157, 62,155,128, - 33, 25,247,130, 63,100,222, 15,254,144, 9,158, 82,158, 82, 53,195, 32, 34, 75,171, 93,252, 38, 36,242,243,103,209, 17,194, 61, -124, 27,174,124,244, 46, 66, 69,121,158,242,148,106, 8, 65,172, 78,199, 47, 14, 8, 9, 59,254, 79, 8,111,194,243,163,183, 29, -188,187, 55,190,125, 63, 96, 82, 86,150,118, 93, 66,224,209, 59, 95, 49, 93,116,132,144,254,254,254,254, 67, 57,142,219, 64, 41, -213,125, 1,151, 6,192, 84, 66,200,145, 23, 47, 94, 28,184,115,231, 78,204,215, 16, 87,127,107,250, 27, 97,132, 17, 70, 24, 97, - 20, 88, 37,225,107,138,171,127, 34, 94, 4,135,214,250, 59,120, 3,130, 67,125,255, 23,194, 27, 27,120,228, 17,128,190,127, 71, - 88, 41,165, 23, 0, 92,248,154, 98,154, 16, 82, 9, 0,251, 85,196,213,223,152,254, 70, 24, 97,132, 17, 70, 24, 5,150, 17, 70, -252,207, 32,119,205, 72,189, 49, 38,140, 48,194, 8, 35,140,248,167,128, 0,104, 85, 76,165,117,201, 96, 18, 66, 90,125, 70,165, -120,201,200,105,228, 52,114, 26, 57,141,156, 70, 78, 35,231,127,139,243,191,212,250,255,219, 54, 24,167,176, 26, 57,141,156, 70, - 78, 35,167,145,211,200,105,228,252, 15,110,140, 81, 98, 26, 97,132, 17, 70, 24,241,183,117,147, 16, 34,201, 93,224,253,179,206, - 27, 97,196,255, 42, 4,159,241,177, 84,201,181,124,189,253, 27, 63,200,177,142,142,142, 35,170, 87,175,238, 37, 18,137,152,140, -140,140,249, 87,174, 92,153, 87,248,186, 38, 62,194, 71, 44, 3,151, 2,119, 2,132, 5, 24, 6, 28, 69,228,141,103,217,181,141, - 73,252,143, 46,120, 43,200,204,108, 79, 16,134, 21,115,122, 45, 56,157, 22,192, 95,203, 38,241,188,254,131, 94,163,106, 91,220, -253,142, 53,186,151,215,115,116, 41,192,255, 78,192,140,166,224,255, 32,148, 25, 77, 25,252, 78,120,140,130, 64,183, 28,122,225, - 20,129, 72, 48, 51,250,241,193,136,127, 67,156, 29, 58,116,136,253,146,251,123,246,236, 89,228, 2,159,206,206,206,167, 76, 76, - 76,220,138,187, 47, 43, 43, 43, 38, 58, 58,186,249,191, 60, 63, 54, 1,240, 27, 0,159, 66,167,130, 0, 76,160,148, 94,254,210, -103, 52, 35, 68, 96, 15,140, 20, 1, 63, 1,128, 22, 88, 22, 7,108,188,246,149, 38,104,124, 13,216,217,217,221, 16, 8, 4,238, - 89, 89, 89, 89,233,233,233,174,102,102,102, 33,114,185, 92,174,215,235,131,227,227,227,155,148, 49, 78,191, 71,238,146, 87,132, -144, 31, 41,165,191,151,229,188, 17, 70,252,171, 5, 22, 33,196, 3, 64,211,220,173, 73,157, 58,117,236,179,178,178, 64, 8,137, - 3,112, 3,192,117, 0,215, 41,165,111,190, 70,128, 88,150, 93,177,102,205,154,201,227,198,141,203, 95,164,249,249,243,231, 69, - 95,203,192,229,234,169,203,118, 15,159,191, 70,157, 86, 61,115, 5, 22, 3,100,199,162,121,171, 58,159, 91,200,154, 90, 90, 90, -206, 39,132,244, 98, 24,166,212,202,140,231,121,142, 82,122, 48, 37, 37,101, 46,165, 52,163, 44,207, 82,200,165, 58, 61,199, 21, -249, 12, 1,203,114,153, 89,170, 98,221, 87, 88, 91, 91,223, 97, 24,166,114,193,133,172,115,195, 95,228,255,130,251,122,189, 62, - 50, 33, 33,161,182, 1,113, 33,101, 4,162, 9,132,136, 90,131,225, 61, 0, 2, 2,230, 13,207,105, 46,242,122,237, 26, 74,169, -234, 75,196,149, 99, 57,215,155, 19,103, 46,117, 9,120, 21,132, 25, 99,191,197, 47,191,237,192,244, 9, 67,177,102,211, 94, 76, - 24,209, 15,222,222, 62, 37,114,112,148,204,159, 61,161,127,243, 69,107,246,212,153, 57,225, 91,249,162, 53,123,234,204,252,225, - 91,197,162,181,123,106,207,252,161,191,226,231,181,127,214,158,245, 67,127,179, 69,107,247,104, 1, 12,251,156,112,246,247,112, -206,130, 94, 95,116,235, 90, 32, 80,255,249, 38, 74,254,127,241,225, 14, 30, 60,184,186, 82,169,124,252,109,235,154, 75,107,120, - 56, 71, 21,117, 77, 82,108,148,115,200,235, 39,211,132, 34, 89,173, 46,211,118, 60, 47,137, 79, 34,145, 84, 14, 10, 10,114,231, -121, 30, 28,199, 65,175,215,231,255,106, 52, 26, 52,105,210,228,171, 76,136, 33,132,116, 2, 48, 63,231, 99,197, 18, 74,233,129, - 47,224, 82, 8, 4,130,137, 98,177,184,169, 94,175,247, 2, 0,161, 80,248, 74,173, 86, 95,215,235,245,171, 40,165,153,101,164, - 92, 29, 21, 21,229,173, 80, 40,160,213,106,243, 23,134,103, 89,214,179,124,249,242,235, 1,184,127,233,251,219, 3, 35, 27, 52, -106,180,102,208,228,201,172,242,198, 13,172,217,182,109, 53,210,211, 1, 96,125,105,247, 74, 36,146,243, 12,195, 84, 40,203,243, -120,158,255,160, 86,171,219,150,169, 82, 16, 8,220,163,163,163,237,156,156,156, 0, 0,114,185, 92, 94,112,191, 44,150, 43, 0, -203, 41,165, 50, 0, 96, 24,102, 77,131, 6, 13,252, 9, 33,122, 0,148,231,121,134, 16,210,143,231,121, 65,238,245,203, 9, 33, -219, 40,165,106, 99,213,108,196,191, 90, 96, 17, 66,206, 0,104, 90,167, 78, 29, 89,223,190,125,209,180,105, 83,184,187,187, 67, - 42,149,230, 20,222, 73, 73,246, 79,159, 62,237,125,227,198,141,222, 39, 79,158, 4, 33, 68, 9,224, 22,165,180,200,143,185, 85, -167,198,227,164, 10,201, 90, 0, 72,136, 76,138,137,124, 31,191, 54, 38, 38,102, 57, 45,176, 74, 52, 33,196,117,208,160, 65,147, -198,143, 31,143, 83,167, 78, 97,239,222,189, 80,171,213,200,200,200,192,149, 43, 87,138,105, 90,199, 35,229,202, 82, 64, 30, 6, -132, 95, 3, 76,236, 0,185,253,103, 71,136,165,165,229,252, 9, 19, 38,252,224,237,237,157,239,117, 92,167,211, 65,175,215, 67, -167,211, 33, 37, 37, 5,147, 38, 77, 66,174, 21, 15, 60,207,227,236,217,179,227, 70,140, 24, 1, 0, 19,139,226,244,175, 93,254, - 17, 67, 24,151, 60,219, 12,229,184,200,187, 79, 34,106,235, 57,142, 85,169,180, 69,174, 28, 46,149,138, 74, 20,119, 66,161,208, - 37,240,196, 9, 59, 70, 44, 6,229, 56,128,231, 65,121, 30, 64,129,141,230, 28,163, 28, 15,170,227,192,235,121,232,149,106,212, -253,254,123, 67, 10,199, 6, 66,177,108,111,255,239, 38, 59,212,171, 95, 95, 88,177,156, 19,244, 28,143,119,161,145, 14,143, 31, -221,107,120,112,231,250,209,132,144,126,148,210,207,242,147, 37, 54, 49,187,176,238,143,205, 46, 15,159, 6,224,242,213, 27,184, -116,229, 58, 0,224,252,213, 28, 58,134, 97, 74, 11,159,165,181,123,243,234,227,134,118,149,255,252,235, 22,201,184,161, 93, 5, -127,253,110,150,140, 27,218, 69,176,104,213,102,201,184,161, 93,132, 11,151,173,171, 65, 8,177,164,148,166, 20,199, 87, 92, 26, - 65,175,151,252, 25, 18,199, 2, 64,194,134, 13,208,197,199,195,105,238,220, 28,241,229,106,111,112,183,134,173,173,237, 35,161, - 80,232, 82,218,117, 58,157,174, 84,241, 59,120,240, 96, 63,165, 82,249, 72,175,215, 83,129, 64, 48,237,219,110,109,142,181,107, -236,151, 84,240,154,231,207,159, 89, 47, 94,124,162,235,129,199, 25,180,119, 45,211,199,167, 86, 12,174,221,113,202,142,103, 37, - 84,196,140, 90,173, 70,112,112, 48, 10, 46,190, 94, 80,207,126,166, 8, 98, 0,172,177,182,182,174,151,148,148,212, 31,192,140, -244,244,244,234, 44,203,194,202,202,106, 6, 33,228,157,185,185,249,150,180,180,180, 59,185, 86, 34,222, 64,222, 38,102,102,102, -187,142, 30, 61,106, 89,179,102, 77, 38, 33, 33, 1,149, 43, 87, 70,114,114,114,221, 27, 55,110,212, 26, 54,108,216, 48, 66,200, - 64, 74,233,141, 50, 4,183,170,137,137, 9, 29, 52,104, 16,225,184,191, 94,119,235,214,173,104,235,171,119, 27,213, 78,158,173, -210,208,180,203,193,230,163, 68, 34,209,173,176,176,176,180,178,198,135, 8,248,105,208,228,201,172, 34, 44, 12,138,103,207,208, - 63, 61, 93,240, 75,142, 53,171, 84,129,197, 48, 76,133, 93,251,182,187,139,197,226,252,114,169,184,141,227, 56,104, 53, 90, 44, -253,121,249,103,151,133, 38, 38, 38, 38, 78, 78, 78,113, 38, 38, 38, 38, 95,163,178,145, 72, 36,130,157, 59,119,246, 19,139,197, - 0, 0,141, 70, 3, 95, 95, 95, 98,172,134,141,248, 47, 90,176,190, 73, 79, 79, 7,199,113, 48, 53, 53, 5,203,178,133, 45, 40, -104,221,186, 53,154, 52,105,130,190,125,251, 34, 48, 48, 80,214,183,111,223,214,197,145,125, 59,185, 35,202,185,219,231, 86, 34, -188,227,237,211, 79,151,110, 93,120,200, 22,192,228, 2,151, 13, 27, 57,114, 36, 73, 74, 74, 66,175, 94,189,110,168,213,234,206, -148,210,244, 98, 45, 24, 60, 34,155,247,253, 22, 60, 37,178, 85,247, 55, 17,141, 74, 73, 25,134, 81,230,117, 17,126,102,133,208, -203,201,201, 9,251,246,237,131, 70,243,169,187, 47, 51, 51, 51,188,124,249,178,160,197, 13,245,235,215,103, 9, 33,189,138, 19, - 88,132, 48, 46,183, 31,134,217,229,237,119,108,237, 35,242,175, 93, 33,206,214,218,148, 2, 32, 51,103,206,204, 23,108, 0, 48, -127,254,124, 67,194, 9, 70, 40, 68,194,245,235,127, 21,192, 2, 6,140,136,128, 8, 1, 70,144,211, 91, 10, 10, 80, 14,224,245, - 0,175, 3,164,142,229, 12,225,174,235, 92,222,253,212,226,149,191, 91,168,117, 20,251,142, 95, 70,104,232,123,176, 12, 3, 87, - 55,119,180,105,214, 88, 88,171,142,127,185,101,243, 38,159, 36,132,124, 67, 41,125, 80,230,136,230,169,212,173,188, 13,182,108, -125, 12, 91, 75, 5,122,117,109, 15,153, 84,130, 95,126,219,142,159,167,143,133,187,107, 5,108, 92,189,168,216,219,205,205,205, - 23,212,172,230,233,186,253,192, 57, 52,109,210, 64,176,227,192,121, 52,107,210, 80,176,253,192, 57, 52,107,218, 88,176,227,192, - 57, 52,107,210, 72,184,227,192, 57,212,175, 93,205,237, 78,210,243, 5, 0,198, 22,255,206,133,210,168, 77, 78, 26,185, 11, 68, -249, 21, 64,216,232,209, 0,144, 47,176,202, 2,161, 80,232, 18, 29, 29,109, 87,218,117,165, 89, 9,114, 45, 87,143,244,122, 61, -226,227,227, 73,106,106, 42,181,176,176,232,122,110,227,140,163,109, 27,249, 37, 3,192,179,103,207,172,150, 44, 89,220,117,255, -163,116, 40,239,173, 35,127,158,184,206,247,239,220,244,209,241,165,131,107,245,236,217,243, 73, 81,188,106,181, 58,180, 70,141, - 26, 52,247,191,179, 68, 34, 17, 21,202, 19, 78,238,238,238,159, 88,169, 13,232, 58, 92,115,247,238,221,177,222,222,222,240,244, -244,188, 83,175, 94, 61, 51,185, 92,142,115,231,206,193,203,203,203,199,204,204,236,254,193,131, 7,133, 83,167, 78,245,219,182, -109, 27, 0,140, 51, 32,127,182,106,222,188,249,190, 83,167, 78, 73, 69, 34, 17,148, 74, 37, 94,190,124, 9, 11, 11, 11,136,197, - 98,116,233,210,133,109,216,176,161,117,179,102,205, 14,231, 54, 2, 12,158,209,164, 82,169,232,140, 25, 51, 96, 98, 98, 2, 19, - 19, 19,200,229,114,200,229,114, 40,164, 32, 27, 38,148,151,141,223,148, 42,155, 56,119,195,210, 93,191,207,187, 90,190,124,249, - 57,225,225,225,169,101,205, 11,202, 27, 55,160,120,246, 12, 40,240,237, 26, 10,115, 19, 43, 76,155, 54,173, 52, 11, 20, 68, 34, - 17, 26, 52,104, 80, 42,159,181,181,245, 17,129, 64,240, 81,139,148, 82, 42,157, 54,109, 26,247,230,205, 27, 57,195, 48,114,158, -231, 49,109,218, 52, 78,175,215, 75,237,237,237,239,240, 60, 31,151,144,144,208,189, 52,110, 74,169,154, 16,242, 35,195, 48,107, - 36, 18,137,160, 98,197,138, 31,102,207,158,125, 55,215,122, 9, 74, 41, 83,177, 98,197,186, 50,153,172,130, 90,173,214, 3,248, -209,104,189, 50,162, 4,212,202, 49, 2,231, 67, 3, 64,156,103,176,207,169,237, 96, 83,232, 56, 0, 36,230, 54, 16,237,139,217, - 79, 2, 16, 8,160, 42, 0,187,220,115, 15, 1, 36,127, 21,129, 69, 8,161, 5, 62,138,252, 10,197,212,212, 20, 15, 31, 62, 4, - 33, 4,166,166,166, 48, 51, 51,131,185,185, 57,210,211,211, 17, 24, 24,136,160,160, 32,132,133,133,129, 16, 2, 87, 87, 87,228, -125, 56, 5,184,242, 11,182, 61,191,158,130, 84, 33, 1, 33, 64,205, 22,213, 81,189,137, 47,234, 60, 8,153,224,228,228,180, 41, - 58, 58, 58,152, 16, 34,240,245,245, 29, 86,191,126,125,172, 92,185, 18,106,181,122,101, 81,226,170, 32,231,141,151,186,218,185, -149,210,148,221,231,222,153, 12,104,231,150, 29, 29, 29,189,162,172,145, 80,184, 0, 78, 76, 76, 52,120,173, 60,158,231,145,146, -146, 82, 34,103, 97,139,192,170, 53,235, 44, 50,210,226,176,240,151,221,208,233,116,152, 60,121, 50,120,158,207,223, 82, 83, 83, - 13, 10, 39,229, 10, 25, 21,152,156,141, 48, 0, 17, 0,229,251,228,232,137,240,125,235, 64, 40, 64, 56, 0,133,222,171, 48, 39, - 33, 68,202,138,100,251,231,253,178,214,226, 73, 80, 36,142, 95,126, 2,109,122, 20, 98,158, 29, 5, 0,184, 54,232,135, 3,106, - 22,245,170,187,225,135,153,203, 44,103,253, 48,112, 63, 33,196,179, 96,119,161, 33, 21, 26,165, 28, 22, 46, 88,128, 77,107, 87, - 98,217,202,181, 72, 79, 75,133, 80,104, 3, 0,208,235, 57,112,133,222,237,147,119,167,180,221,172, 41, 35,201,154,205,135,225, - 91,197, 1, 39, 47,222, 65,109,159, 10, 56,123,229, 1,234, 87,171,132,243,215, 31,163,126,245,202,184,126,239, 37, 38,143, 25, - 68,110,159,221,209,174, 44,105,180,122,245, 58,139,140,244, 56,156, 90,180, 19,241,235,215,227,195,216,177,168,155,123,205, 3, - 66, 32,114,113, 1, 68,165,167, 81, 97,188,122,245, 10,106,181,186,168,214, 61,188,188,188, 74, 77,119,165, 82,249, 88,175,215, -211,184,184, 56, 18, 23, 23, 7,185, 92, 78, 94,190, 12,224,124,124,124,187,209,160, 67,155, 1, 96,201,146,197,221, 14, 60, 78, - 71,246,157,181, 80,222,253, 13,162, 74,207,153, 77,243, 71,106, 71,204,221,248,184, 64,229,246, 81, 56, 99, 98, 98,190,201,251, -239,234,234, 26,244,230,205,155,170,121, 93,202,185, 93,133, 34,189, 94,239,158,215,109,168,215,235,161, 86,171,209,170, 85, 43, -182,164,119,183,180,180,172,239,229,229,133, 39, 79,158, 96,237,218,181, 86,205,155, 55,199,219,183,111, 65, 8,193,226,197,139, -137,183,183,183, 48, 49, 49, 17,109,219,182,197,145, 35, 71, 26,148, 22,159,132, 16, 83,185, 92,190,237,228,201,147, 82,134, 97, -144,145,145, 1,158,231,209,168, 81, 35, 48, 12,131,128,128, 0,204,156, 57, 19, 71,142, 28,193,177, 99,199,100,181,106,213,218, - 70, 8,241, 42,216,125, 95, 66, 26, 81,149, 74, 69, 37, 18, 9, 36, 18, 9,164, 82, 41,164, 82, 41,196, 98, 49, 50, 85,192,136, - 85, 31,212,172,212,134,247,169,209,200,109,200,248,197,204,138,217, 67,175, 0, 56,110,104,158, 7,114,198, 92,173,217,190,125, -109,255,180, 52, 6, 0,182, 16,194,107, 41, 93,102,200,247, 14, 0, 25,170, 84, 84,112,115,193,225,125,199,208,163,111,215, 34, -197,149, 80, 40,130, 72, 40,132,169,149, 73,169,156, 34,145,200, 62, 40, 40,200, 90, 40, 20,230, 91,228,117, 58, 93,220,236,217, -179,109, 59,116,232, 96,122,246,236, 89,166, 67,135, 14,188,141,141, 77,214,147, 39, 79,226,181, 90,173,117,195,134, 13, 13,206, -243,148,210,223,107,212,168, 81,243,232,209,163, 67,167, 77,155,246,104,202,148, 41, 11, 11,158, 95,190,124,249,130, 51,103,206, - 84,232,214,173,219,174,167, 79,159,254, 94,150, 50,228, 75,203,121, 35,231, 63,143,179, 56, 45,146, 11,123, 66,200,169, 2,231, - 59,230,237, 79,155, 54,109,198,146, 37, 75, 94, 18, 66, 78, 21, 60,158,119, 93, 46,247,169,162,246,115,239,181,154, 62,125,186, -239,210,165, 75, 23,251,251,251,239,187,115,231,206,251,175, 38,176,242, 94,164,224,203, 21,138, 72,164,167,167, 35, 61, 61, 29, - 17, 17, 17,216,176, 97, 67,238,135, 44,132, 64, 32,128, 64, 32,200, 31,175, 80, 28, 46,157,188,249, 27,128,223,106,213,170, 37, -124,113,247,224,217,159, 54,141,111, 89,187, 85, 77,246,241,229, 23, 61, 1,252, 12,224,155, 65,131, 6,217, 0,192,206,157, 59, - 19, 1,156,253,191,144,200,148,210,131,193,193,193, 63, 56, 58, 58,230,143, 65, 41,216, 77,168,215,235, 33,149, 74,145, 55, 86, - 69,165, 82, 97,195,134, 13,122, 74,233,193, 18, 56,241,230,229, 21, 4,191,188,154,115, 31,207,131,231,254,186,127,222,188,121, - 5,167,190, 98,116,174,165,164, 84,113, 87, 84,156,211, 66,191,133,142,127, 34,202, 62,233,134, 16,141,239, 57,112,172, 35, 79, - 4, 56,113,229, 41,132, 66, 33,248, 2,214, 75, 33,155,211, 58,126,249, 54, 26, 78,246, 62,232,220,111,164,195,209, 93,235,198, - 3,248,165,172,113,237,233,231,143, 9, 63,252,128,205,155, 54, 97,230,220, 5,249,234, 92,207,113,208,151, 26, 78,134,105, 88, -219, 27,153, 73,145, 96, 89, 22, 13,106,184,129,101, 89, 52,174,237, 1,150,101,209,168, 78, 85, 8, 4, 2, 52,171,239,141, 42, - 85,170, 64, 32, 16, 48,165,164, 59,222,188,188,140,224,151,215, 10,136,221,156, 52,209,198,196,124,114,189, 46, 38, 6,180,188, -117, 89,243, 22,134, 13, 27,150, 26, 17, 17,161, 45,124,174, 92,185,114,162, 27, 55,110, 88, 20,211, 61,151, 15,153, 76, 86, 75, - 32, 16, 60, 78, 78, 78,230, 77, 76, 76, 24,158,231,120, 31, 31, 95,246,220,198, 25, 71,243,174,153, 62,125,198,209,222,181,204, -186,237, 62,120,138,138, 42, 54, 34, 68, 40,209,127, 55,119,163, 72, 40,146, 25,228,161, 62,175,187,240,245,235,215, 40, 45, 60, - 69, 20,130, 31, 33, 37, 37,101,144,151,151,215,141,223,126,251,205,138, 16,130,155, 55,111,130,101,217,252, 45, 36, 36, 4, 12, -195,224,167,159,126,210,166,167,167, 15, 47,181,192, 18, 8,126, 56,124,248,176,185, 88, 44, 70, 70, 70, 70,254,119,195,178, 44, -130,130,130,176, 98,197, 10, 12, 26, 52, 8,225,225,225,112,114,114,194,228,201,147, 21, 75,151, 46,253, 1,192, 2, 3, 94,253, -185, 70,163,169,109, 98, 98, 2,169, 84,138, 60,161, 5, 0, 23, 94, 10, 3,178,179,179,171,217,216,216, 56,216, 94, 63,117,162, - 65,243,206,126,214,182,142,254,121, 2,203, 80,188, 3, 54,189,215,235,103,125,115,244,168,221,237,163, 71,249,187, 39, 78, 68, - 74, 51, 51, 55, 26, 76,160, 99,241,225, 93, 36,106,213,170,133,199,143, 31,163, 86,173, 90, 5,197, 18,196, 98, 49, 68, 34, 17, - 68, 34, 17,108, 44, 12, 26, 42, 65, 25,134,193,237,219, 31, 47, 55,218,184,113,227,228,171, 87,175, 42, 0,224,195,135, 15,180, - 99,199,142,169,129,129,129,112,119, 47,121, 24,154,131,131,195, 13,150,101, 43, 22,250, 86, 45,187,119,239,142,148,148,148,246, -221,187,119,111,148,123, 44,234,208,161, 67, 3, 0, 64, 44, 22,131, 97, 24, 14, 70,252,231, 81,154, 22, 41, 40,144, 10, 11,173, - 37, 75,150,116, 44,124,172,160,152, 42,234,127,193,123,151, 46, 93,186,184, 0,183,242,107,188,143,160,160,114, 44,173,176, 44, - 9,165, 9,172, 60, 60,126,252, 88,231,236,236,188, 57,248,105, 88, 75,183,234,174,144,201, 37,109, 8, 33,191, 73, 36,146, 73, - 3, 7, 14,196,189,123,247, 16, 16, 16,176,245, 75,151, 61,169, 86,173,218,121,137, 68, 82,161,152,238,144, 15, 47, 94,188,104, - 91, 76,133, 48, 55,119, 76, 89,177,131,220, 11,142, 7, 43, 56,200,189,216, 12,193, 83,232,180, 58,100,101, 43,255,170,188,115, - 5, 86, 86, 86, 22,250,244,233,243,145, 5, 43, 62, 62,222, 16,165,143, 21,199,143,227,226,193,131,104,239,231,135, 35, 15, 30, - 96,233,192,111,225, 89,193, 25,148, 35,160, 4, 8,223,187, 14, 73,233,153,216,115,249, 54,146, 51,178,209,191,113, 99,184,155, -217,148,204, 43, 20,181,174, 91,223, 95,116,233, 78, 32,132, 66, 1, 24,240,160,186,108, 56,121, 53, 3,203, 48, 48,183,175, 4, -145, 80, 8,161, 80,128,144,136, 68,120,249,214, 17,159, 18, 75, 91,127,142,192, 42, 95,161, 50,120,142,195,160, 65,131,176,111, -223, 62, 88, 59, 84,128,121, 57, 95,252,188,114, 19,218,183,106, 92,234,251,231,181,216, 5, 2, 1, 88,150,253,228, 55,239,191, - 33,214, 72,202, 83,104, 11,167, 17, 79, 65, 1,184, 44, 90, 4,151, 69,139,240, 32,247,153,222, 89, 89, 80, 42,149, 64, 61,159, - 50,137, 43,141, 70,131,136,136, 8,109, 76, 76,140,125, 17, 21, 83,156, 70,163, 41, 85,208,236,216,177,227,249,224,193,131,107, - 91, 89, 89, 61,122,254,236,153,174,186,159,159,240,236,134, 25,199,242,186, 7, 1,192,207,207, 47,121,198,140, 25,199, 6,244, -234,216,245,247,105,125,185,239, 23,236, 18, 72,100,178,218, 29,167,148, 60,208,189,192,247, 17, 90,189,122,117,106,200,181,217, -217,217,177, 37,164, 81, 39, 0,243,107,214,172,105,214,188,121,115,220,184,113, 3, 61,122,244, 80,107,181,218, 96, 0,232,208, -161,131,199,158, 61,123,196,129,129,129,176,181,181, 21,126,248,240, 97, 27, 33,164,196,129,239, 98,177,184, 89,157, 58,117, 24, -181, 90,253,137,184, 90,186,116, 41,250,245,235, 7, 15, 15, 15,240, 60,143,204,204, 76, 52,111,222, 92,184,118,237,218,102, 6, - 10,172, 9,158,158,158, 43,144, 51,139,176, 96, 89,248, 10,192,143,185,214,237,216,142, 61, 6,189,108,220,170,123,237,138, 85, -124, 29, 75, 35,180,183,183,159,206, 48, 76,111,158,231,217,244,244,244, 8, 13, 33, 85,188, 43, 86,180,111,216,181, 43,210,132, - 66,118,205,229,203, 76, 92,102,166, 2,128, 65, 93,141, 74, 93, 38, 42,184,229, 12,229,235,209,183, 43, 30, 63,126,140,158,253, -186, 65, 36, 18, 65, 32, 16,230,124,155,162, 28, 11,150,133,141,169, 97,154, 77,167,251, 36,175, 82, 74, 97,102,102,150,223,147, -145,119, 76,167,211,149, 88,249, 1,112, 63,176, 96,182,157,204,204, 28,156, 78, 7,159,174, 61,243,243,244,253, 45,191,203,192, -243,178,212, 15,161, 24,119,240,164, 16, 70, 24, 81,140, 21,171, 36, 45, 82, 80, 32,125,133,103,157,154, 54,109,218, 12, 0,116, -218,180,105, 51,242,246,151, 44, 89,162, 4, 16,245, 85, 4,214,151,138,171,188,110,132,146,208,162, 69,139,113,166,166,166,107, - 1,160,118,237,218,136,184, 23,133,136,123, 81,240,170,234,211,176,166, 95,237,180,126,253,250,193,218,218, 26, 83,166, 76,161, - 0,182,150,245,249, 33,111, 94, 42, 0, 80, 39, 39,167, 41, 0,224,228,228,228,247,224,193, 3,219,135, 15, 31,162, 78,157,191, -102, 20,106,181, 90, 52,106,212,168,164,138, 48, 3, 57, 99,169, 38,126, 61, 85,206, 67,171,213, 34, 59, 91, 9,141, 70, 11,189, -142,135, 94,175, 71, 45, 31, 83,236,218, 52, 45,231,152, 62,207, 90,150, 99, 37,115,113, 48, 69,173,106, 14, 58,134, 33,202,135, -207, 98,204,138,226,213,104, 52,120,254,225, 3,158,133,133, 1, 0, 58, 47, 89, 86, 98, 56,118, 93,190, 1,111,111,239,210, 66, -235,230,226,228,128,232,139,207,115, 10,109,101, 4, 30,222, 58, 0, 83, 83, 5, 0,192,167,105,127,136, 68, 57, 2, 43, 75,169, -133, 77,213,114, 32,148, 22, 59,189, 95,110,229,120, 94, 32,146, 86,160, 28, 15, 74,121, 80,158, 3,165, 60, 36,166,214, 38, 99, - 71, 13, 1,207,115,168, 91,183, 46, 8,203,130,211,169,209,171, 83,107,164,164,101,192,218,194,204,160,184, 21,137, 68,104,218, -180,169,172,184,243,111,223,190, 85, 22, 20,100, 37,167,145, 14, 89, 89, 74,168,213,106,104, 53,122,104,117,122,240,149, 69, 88, - 56,235, 91,232,181,122,100,247,245,207, 57,246, 67, 55,104, 53, 58,132,155, 48,140,159,183,173,142, 1, 81, 62, 9,140, 55, 43, - 77, 96,229,137,130,226, 80,212,152,191, 98, 68,214,179,193,131, 7,215,170,238,231,247,184,119, 43,191, 95, 95, 4,188,140,126, - 17,240,242,147,235, 42,120,248,133,126,191,116,223,100,161, 72, 86,203, 80,113, 5,124,220, 93,248,133,152,145,145,145, 81, 93, -161, 80,224,205,155, 55, 96, 89, 22,132,144,183,148,210,234, 0, 48,114,228,200,119, 2,129,192,149,101, 89,172, 95,191,158, 8, - 4,130,106,254,254,254, 51, 0, 28, 40,161, 33,231,101,106,106,250,145,245, 74, 36, 18, 97,218,180,105, 24, 48, 96, 64,190,184, - 18,137, 68,216,177, 99, 7,106,215,174, 13,141, 70,227,101,160, 8,126, 8,160,177, 1, 22, 62,146, 43,202, 75, 21,161,122,189, -126,112, 82,239,222, 85,112,253, 58, 26,186,186,122,215,170, 85, 11, 90,237, 95, 6,204,202,149, 43,151,203,200,200,136, 37,132, -252, 9,224,119, 74,233,211, 18,249, 84, 20, 31,222, 69,230, 53, 86, 81,183,110,221,124,139, 85, 65,235,149, 72, 36,130, 76,164, - 40,179,192,162,148, 34, 43, 43,139, 57,119,238,156,141,151,151, 23, 1, 0,111,111,111,114,239,222, 61, 43,153, 76,150,232,228, -228, 84,106,195, 87,102,102,142, 29,131,251, 0, 0,230,180,106,151,223, 32, 58, 55,127, 6,132, 66, 33, 90, 78,153,241, 73,190, -231,121,158,133, 17, 70,113,101,128, 22,249, 90,226,170,176, 5,107,201,146, 37, 47,151, 44, 89,242,137, 53,236,171, 89,176, 12, - 49,249, 27,218, 10, 42,140,149, 43, 87,162, 90,181,106, 37, 86, 64,107,215,174,197,238,221,187, 87, 82, 74, 67,202,250,252,142, - 45,107,250, 96,213,209,151,174, 30, 62, 4, 0, 22,252,208,137,201,202,202,194,237,219,183, 97,110,110,142,183,111,223, 26,154, -192,166,230,230,230,243, 25,134,233,197, 22, 30,217, 95,180,176,228,120,158, 63,152,150,150, 86,172,155, 6, 74, 1,173, 78,143, -172,108, 21, 52, 26, 13,126,248,105, 93,169,225, 88, 2, 16,173, 38, 67,208,180,137,191,172, 56, 11, 78, 93,223,166, 24, 51, 64, -254, 73,165,205,230,184, 2, 67,141,186, 57,107, 75, 63,185, 31, 0, 74, 1,142, 3,108,236,172,176,117,223,175, 37, 70,129,158, -227,115, 91,195, 28, 50,213, 28,188,234,119, 68,228,171,235,249, 22, 35,177, 40,167,107, 88, 36, 20,130,167, 36,199,123, 67,113, - 2, 72, 44,171,144, 18, 19,226,190,233,212, 11,140,232, 88, 13,135, 46, 61, 71,207, 86,213,113,245,126, 32,154,215,243,198,203, -224, 48,248,184, 87,196,250,109, 7, 65, 41, 50,254, 88,245,115,236, 95, 21,153,254,131, 33, 22,172,123,247,238, 41, 11, 91,173, - 10,254,210,210,235,193,156,174,192, 92, 11,150, 82,165,198,148,233, 6,185,227,201, 73,163,198,245,101,134, 92, 92,146,133,202, - 16, 1, 86,216,146,133, 82,220,172, 84, 6, 80, 27,152,250,127, 89, 96,114, 28,135,211,167, 79,231,167, 71, 81,233, 88, 48,237, - 12, 16, 55,248,240,225, 3, 2, 2, 2,224,239,239,143,180,180, 52, 8, 25, 6,147, 95,188,128,247,192,129,208,136, 68,224,121, - 30, 98,177, 24, 35, 71,142, 52, 56, 62,203, 88, 42,231,142, 99,227,104, 41,101,201,175, 29, 59,118,172,242, 38, 43, 11, 47,131, -130,208,106,222, 60, 0,192,233,211,167, 63,202, 19,147, 38, 77, 18, 7, 6, 6, 14,123,244,232,209, 48, 66,200, 74, 74,233,228, -226, 56,181, 84,149, 63, 6,171,119,255, 30,168,226, 85, 25,187,183,237,205, 63, 63,233,167, 9, 16, 10, 69, 16, 10,133,176,176, -176, 48,232,109, 10,150,221,217,217,217,204,161, 67,135, 92,154, 53,107, 38, 26, 49, 98, 4, 1,128, 77,155, 54, 49, 91,182,108, -145, 95,184,112, 65,100,110,110, 30, 83,170,168,212,106, 63, 73, 99, 66, 8,132, 66, 33, 68, 98, 17,192,243, 32,132,200,151, 47, - 95,190,224,229,203,151,117, 60, 61, 61,161, 86,171, 7, 18, 66,158, 24,253, 96, 25, 81,154, 22, 41,106, 44, 85,174, 21,170, 56, - 36, 20, 28,151, 85,156, 64, 43, 56, 38, 11,192, 87,153,108, 33, 40, 77, 84,177, 44, 91,170,117,138, 97,152, 82,187, 8, 39, 77, -154, 4, 83, 83,211,226, 42, 30,250,226,197,139,192,152,152,152, 77,148,210,117,159,243, 34,167, 46, 63,121, 57,127, 98,183, 12, -228,246,157, 90, 88, 88, 36,182,104,209, 34, 19,128,246,192,129,143, 27,196,106,181,186,216,138,219,220,220,124,254,150, 45, 91, -198,119,237,218,149, 41,236, 42,160, 96, 55, 94,222,166,211,233,112,224,192,129,241, 83,167, 78, 69,113, 86,175,188,202, 59, 59, - 75, 9,101,238, 0,231,119, 1,135, 12, 45,204,139, 61,165,176,116,130,139, 43, 87,108, 37,194,136,114,198, 8, 57, 84,240,203, - 63,102,106, 42, 5, 87, 2, 39, 33, 76, 72, 88,120,180,115, 57, 7, 43,188,139, 72,128,125,197,106, 72,137,250, 43, 30, 4, 2, - 22,194,220, 46, 66, 11, 51, 57, 18,226,227,193, 48,108,137,130,248,231, 61, 79,112, 63, 32, 12,135, 47, 61,133, 86,149,133, 85, - 59,207, 65,171,206,132, 86,149, 5,173, 42,231,119,241,212,239, 64, 8, 98,181,170, 76,143, 50,101, 96,129, 0,245,234,213, 43, - 86,224, 68, 69, 69, 25,104,193,162,249, 22, 44,165,170,140,105,100, 88, 75,169, 68, 11, 85,222,249,207, 21, 4,121,174, 27,100, - 50, 89,237, 29, 59,138,119,199, 80, 20, 28, 29, 29,207, 42, 20,138, 74,134, 94, 95, 6,167,163,139, 45, 44, 44,230,123,122,122, -122,173, 90,181, 74,200,178, 44, 90,182,108,233,241,221,119,223,125, 0,128,106,213,170, 57,229,149, 49,223,127,255, 61,189,119, -239, 94, 64, 78,219,162,120,136,197,226, 32,115,115,243,218, 45, 90,180, 64, 90, 90, 26, 34, 34, 34, 32,151,203,225,253,235,175, -120,241,253,247,240,219,176, 1, 76,139, 22, 32,132, 64, 44, 22,227,197,139, 23,144,201,100, 65, 37, 20,230,245, 0, 44, 3,208, - 16,127,117, 11, 82, 0,183, 1,252, 68, 41,189, 95, 68,121,199, 0, 0,199,243,165, 37,214,183, 83,166, 76, 65,170, 80, 8,116, -232, 0, 81, 72, 8,180, 90, 45,252,253,253, 81,187,118,142, 39, 14,127,127,127, 8, 4, 2, 84,175, 94, 29, 78, 78, 78, 88,191, -126,253,183,248,120,102,245,199,101, 87,166, 14, 31,222, 69,194,223,223, 63,223, 82,213,161, 67,135,124, 11,150, 80, 40,204,183, -100, 17,142, 53,168, 50, 43, 40,176,116, 58, 29, 17,137, 68,130, 81,163, 70,145,225,195,135, 83,157, 78,199,139, 68, 34,102,243, -230,205,228,222,189,123, 2,165, 82, 89,106, 3,220,183, 91, 47,204,105,157, 99, 4,253,185,146, 45,132, 34, 33,196, 34, 17,166, - 4, 69,230,167,139,217,142,125,226,165, 75,151,246,244,244,244,204,233,110, 7, 4, 70, 63, 88, 70,148, 98,224, 73, 40, 36,142, - 52, 5,246, 19, 0,144,220,253,132, 2, 66, 42, 1, 57, 51, 2,235, 20,186, 54,239,188,166,208,111,222,249,103, 95,227,125, 74, -106, 1, 7,223,189,123,215,189, 86,173, 90, 8, 15, 15,255,100,102, 91, 94,133, 37,151,203, 33,147,201,112,231,206, 29, 0, 8, - 46,142,236,202,149, 43,191, 33,199, 75, 50, 0,192,201,201,201,191,121,239,102,119,234,182,171,131, 61, 75,246,166,197,196,196, - 84,207,243,129, 67, 8, 33, 78, 78, 78, 3,132, 98, 65, 31, 87,223,242, 77,193,243,203, 46,157,184, 53,175,164, 23,113,245,240, -201, 4,160, 44, 48,139,112,197,231, 68, 8,195, 48,189,186,118,237,202, 4, 6, 6,162, 79,159, 62,216,189,123,119,177,215, 14, - 24, 48, 0,251,246,237, 67,215,174, 93,153,233,211,167,247, 42, 77, 96,229, 88, 71, 52, 95, 45, 51,190, 9,126,134, 93,123, 55, - 23, 59,198,200,206,206, 22, 0, 16, 31,159,144,127,172,118,237,146, 29, 49,243,122,205,197, 39,143, 30,248, 55,104,210, 82, 20, - 17,151, 10, 94,175,134, 42, 35,241,175, 22,110,106, 28,168, 94, 5,145,137, 21, 28,108,204,241,248,238, 5,141, 86,163,186, 88, - 18,231,248,174, 62,248,190,147, 23, 64,121,116,155,188, 21,167,214,141,203,239,222,105,212, 99, 2, 46, 31, 88, 99,240, 24,190, -194, 16, 10,133,120,241,226,133,178, 56,235, 21,203,178,165,250,212,250,203,202,168, 67,118,182, 18,217, 74,213, 87, 75, 35, 66, -136,173,189,189,253, 31, 86, 86, 86,210,162, 4, 20, 33,196,214,214,214,246, 15,107,107,107,169,161, 93,132,197,137,171, 92,191, - 88,143, 6, 15, 30, 92, 38,145, 37,145, 72, 42, 5, 7, 7,231, 59, 25, 45,233, 87,163,209,160,121,243,230, 2, 3, 11,203,147, -132,144,247,142,142,142,183,189,189,189,205,223,189,123,135,189,123,247,138,132, 66, 97,249,188,242, 35, 35, 35, 3, 44,203, 34, - 62, 62, 94, 7, 96,104,105, 93,100,106,181,250,250,245,235,215,107,116,234,212,137, 13, 10, 10, 2,203,178, 57,225,242,247,135, -223,134, 13, 8,152, 56, 17, 77,195,194,160,210,106, 33,149, 74,113,254,252,121,109,118,118,246,245,226,248,100, 50,217,166,208, -208, 80, 31,169, 84, 10,173, 86, 11,158,231,193, 48, 12, 17, 8, 4,141, 44, 44, 44,214, 2,168,243,241, 55,101,103, 55,114,210, - 47, 85, 57,189,158,139, 9,127,151, 80, 90, 28, 36, 37, 37,225,228,201,147,168, 95,191, 62,154, 54,109,138,168,168, 40,132,132, -132,160, 67,135, 14,249,215, 60,123,246, 12, 79,158, 60,129,155,155, 91,233, 22, 60, 86, 7, 55,207, 74, 16, 9, 69, 16,138,132, - 57,191, 66, 97,238,150,243, 63,239, 88,158,207,194,178, 88,176, 0, 64,161, 80,228,229, 11,190, 82,165, 74, 49, 49, 49, 49,142, - 0,216, 60, 7,172,134, 52, 86,242,234,136, 60,113, 37, 18,139,242, 45, 89, 0,144,154,154,170,234,218,181,235,159,106,181,122, - 8, 62, 99, 69, 17, 35,254,147,120,248,127,116,239,223, 34,176,218, 55,104,208, 96, 67,191,126,253, 90,174, 94,189, 26, 10,133, - 2, 49, 49, 49,249, 21,161, 88, 44, 70,185,114,229,144,156,156,140,141, 27, 55, 34, 50, 50,242, 10,128,145,134, 62, 56, 38, 38, -230,222,219,167,193, 73,205,123, 54,176,246,105, 80,213, 34, 34, 56,178, 62,128, 59,185,226,106,107,191, 73,237,135, 52,239, 94, - 23, 34,177, 16, 17,111, 99,255,191, 69, 8,203,178, 44, 33, 4,125,250,244, 49,232,250,190,125,251,226,250,245,235, 40,169, 59, -145,207,179, 96,101,171,144,165,252,122,141,179, 49,227, 7, 96,204,248, 1,249, 34,194,144, 46,150, 28,113,187,191, 4,129,165, - 93,125,106,255,198, 17, 53,235,250, 87,168,237, 83, 9,247, 31, 61,197,158, 13,127, 25, 21,182,253,182, 0,191,108,187,130,114, -246,150,208,170,179,112,246,208,230, 88,173, 58,123,245,103, 26,225,114, 68, 45, 33, 48,208,191,228, 71, 86,211, 60,129,229,235, -235, 91,172, 5, 43, 57, 57, 89, 89, 90,133,144,159, 70, 26, 29, 50,179,148, 80,102,127, 29,129, 69, 8,241,107,212,168,209,197, -131, 7, 15, 90,219,217,217, 33, 58, 58,250, 35,129, 69, 8,241,107,216,176,225,197,131, 7, 15, 90,219,219,219, 35, 34, 34,194, - 96,247, 32, 69,136, 43, 36, 36, 36,144,148,148, 20,222,210,210,178, 76, 34,139, 97, 24,168,213,106,188,122,245,202,208,199, 26, - 60,227,203,220,220,124,199,190,125,251,204, 19, 19, 19,193,178, 44, 94,189,122,245,209, 44,194,188,109,235,214,173,162,110,221, -186,109, 1, 80,163, 36, 62,189, 94,191,114,192,128, 1,195,162,162,162, 44,237,236,236, 16, 19, 19, 3,177, 88, 12, 74, 41, 72, -243,230,104,252,254, 61,180, 28, 7,153, 76,134, 55,111,222, 96,211,166, 77, 89,106,181,122,101, 49,233, 35, 54, 49, 49,113, 23, -137, 68,232,223,191,255, 71,231,118,238,220,137,206,181,217,218, 35, 90, 75, 50,245,144,170,227,100,223,156,101, 89,150,140,156, -178,204,163, 94,147, 14,190,175, 3,238,191, 75,136,139,188, 93,202,235,235, 52, 26, 13, 60, 61, 61,241,240,225, 67, 92,186,116, - 9, 45, 90,180, 64,211,166, 77,241,252,249,115, 92,184,112, 1, 79,158, 60, 1, 33, 4,214,214,214,121,195, 44, 74, 28,107,161, -201,210, 35, 62, 42,233, 19,107, 85,225,125,145, 72, 4,181, 88,107, 80, 26, 5, 5, 5,225,225,195,156,250, 39, 59, 59, 27, 2, -129, 64, 63,101,202, 20, 48, 12, 67, 3, 2, 2, 96,103,103, 71,127,250,233, 39, 78, 32, 16,232,195,195,195, 13,205,251, 57,214, -170, 92,113, 37, 16, 9, 63, 18,102, 60,207,103, 60,123,246,108, 4, 33,228, 57, 33, 36,207, 27,170,209, 15,150, 17,255, 42, 8, - 74,104,133,188, 7,208,138, 16,242,237,177, 99,199, 86,174, 93,187,214,182, 99,199,142, 72, 73, 73, 65,133, 10, 21,224,232,232, -136, 83,167, 78,225,204,153, 51,137, 28,199, 77,166,148,238, 46,226, 35,107, 85,156,175, 12, 74, 41,117,114,114, 58,168,206,204, -252,190, 86, 83, 47, 92, 57,112,115,137,163,163,227, 72,103,103,231, 31, 6,207,232, 50,164, 89,215, 58,120,243, 36, 20,247, 46, -188, 64, 92,120, 34, 6, 55,254,169, 68,206,194,131,220, 45, 44, 44,134,153,152,152,136, 1,104,139,104, 5,127, 52,139,176, 32, - 39,199,113,156, 70,163,193,254,253,251, 13, 18, 89,123,247,238,133, 74,165, 2, 87,168, 31,181, 32, 39,229, 41, 17, 8, 37,112, - 42,231, 9,173, 54, 11, 60,255,121,214,154,130,156,132, 16, 48, 12,131,119, 98, 49,236, 18, 19,113,255,254,125,131, 56, 10,182, -156,139,138, 79, 74,169,138, 16,210,127,205,162, 41,167,198, 78, 91,102,209,162, 65, 13,204,249,117, 39,180,218,109, 96, 88, 6, - 50,137, 8,181,234, 54, 4, 11, 53,254, 88,250, 99,106,118,122, 74,255,194, 75,230,124,194, 89, 82, 79, 10, 5, 56,158,199,165, - 27, 15, 12,126,247,252, 90,158,227, 32, 16, 8,240,246,237, 91,101, 81,179, 7, 89, 54,167, 59,147, 97,152, 34, 91,221, 31,167, - 17, 79,132, 34, 41,202, 85,240,134, 70,157,249, 85,210,200,206,206,238,199,163, 71,143, 90,231,185, 60,120,254,252, 57, 8, 33, -175, 10, 88, 67,126, 60,122,244,168,181, 82,169, 68, 64, 64, 64,222,146, 80,175,202,242, 29,229, 89,174, 18, 18, 18, 72, 76, 76, - 12, 76, 76, 76,152,231,207,159,171,171, 87,175,254, 8, 37,175,212,144,207,169, 82,169,194,138, 27, 31,169, 82,169,156,165, 82, -169,176,208,189, 78,238,238,238,111, 10,119, 21, 22, 21,206,180,180,180,251, 83,167, 78,173,213,174, 93, 59,252,248,227,143,201, -150,150,150,166,127,252,241,135,128,101, 89, 50,118,236, 88, 46, 62, 62, 62,115,243,230,205,230,199,142, 29, 67,106,106,234,157, -210,222,157, 82,154, 65, 8, 25,209,160, 65,131,157,231,206,157, 51,113,119,119, 71,122,122, 58, 40,165,216,177, 99, 7,198,142, - 29, 11,169, 84,138, 55,111,222,160,115,231,206,217,217,217,217, 35, 10,143,141, 44,192, 73, 8, 33,148,231,121,204,158, 61, 59, -223,169,104,158,147, 81, 83, 25,193,166, 73,149,229, 19, 54,167,201,191,157,179,121, 32, 0,112,122, 61,247, 58,224,254,187, 29, -235,230, 92, 21,137, 68, 55, 74, 73,163,153, 19, 38, 76,248,163, 67,135, 14, 50,133, 66,129,228,228,100,220,190,125, 27,119,239, -222,197,189,123,247,160,209,104, 96,109,109, 13, 75, 75, 75,196,196,196, 32, 40, 40, 72, 9, 96,102, 73,156, 98,185, 16,174, 85, -243,102,242,254,101,189,202,223, 23, 9, 33, 20,252, 53,147,208,144,188,212,164, 73, 19,212,171, 87, 47, 79,248,112, 31, 62,124, -136, 81,171,213,164,128,216,143,202, 19,226,229,203,151,215,111,221,186,149,150,196,121,111,211,122,156, 91, 56, 19, 98,145, 8, -147, 95, 69,228,139,173,157, 45,106, 66, 40, 22,193,171, 83,143,130,245,192,239,132,144,109,185,255,213,134,228,249, 47,104,240, - 24, 57,255,225,156,255, 25,129, 85,224, 3,216, 67, 8, 57,251,221,119,223, 45,245,243,243,251,110,213,170, 85, 68, 36, 18, 97, -222,188,121, 52, 58, 58,122,123,110,171, 35,229,115, 30, 78, 41,221,126,237,200,157,209,131,166,117, 37,147, 86, 15,110,244,232, -114, 64, 80,181, 6,238,168,214,192, 29,143,174, 4, 98,221,140,189,187, 57, 29, 55, 59, 38, 38,166,180,102,147,186, 85,195,170, -133, 7,185, 91, 95,191,122,217,186,172,179, 8,121,158, 63,184,119,239,222,241,221,187,119,103, 30, 60,120,240,201,152,171, 60, -103,124, 60,207,227,226,197,139,208,106,181,216,190,125, 59,207,243,124,241,126,176, 64,143,175, 89,189,116,208,246, 93,199,197, - 98, 17,193,221, 27,135,145,150, 82,178, 85, 78, 36, 18, 98,235,142, 35, 90,145, 72,248,186,168,243, 90,173, 54,226,242,229,203, -246,109, 57, 78,200, 48,204, 39,194,169, 56, 28, 60,120, 80,199,243,252,135, 82,210,229, 14, 33,194, 78, 63,255, 56,116,111,135, -222,223,217, 55,104,208, 72,104, 99,103, 15, 66, 8,226,227,226,241, 38,224,129,238,236,225, 45,113, 89,217, 25, 6, 45,149, 51, -116,197,181,252, 49, 87, 0,208,113,236,218,252,241, 87, 0,208,105,240, 84, 52,175,239, 3, 98,136,169,233, 47,113,197,235,245, -122,200,229,114,232,245,250, 34, 93, 53,152,155,155,203, 84, 42,149,146, 82, 10,142,227, 74, 52, 13, 81,224,171,167, 17,199,113, - 94, 41, 41, 41,200,202,202,194,221,187,119,233,162, 69,139, 18, 18, 18, 18,242, 7, 99,234,116, 58,175,228,228,100,100,102,102, -226,206,157, 59,116,233,210,165, 9, 73, 73, 73, 51,202,242, 13,201,100,178,218, 2,129,224, 81, 74, 74, 10,111, 98, 98,194,232, -116, 58, 93,245,234,213, 37, 50,153,204,224,133,206,163,163,163,219, 21,119,206,205,205, 45, 56, 56, 56,184, 10,199,113, 5,215, - 40, 20,169, 84, 42,247, 6, 13, 26, 24,210,181, 51, 97,219,182,109, 56,114,228, 72,221,244,244,244, 1, 31, 62,124,216, 9,160, -174, 64, 32,192,211,167, 79, 95,169, 84,170,126,221,187,119,223,145,146,146,114, 31,192, 4, 3,203,141,115,132,144,254, 94, 94, - 94,219,230,207,159,175,104,218,180,169,192,201,201, 9,117,234,212,193,155, 55,111,112,250,244,105,221,239,191,255,158,149,157, -157, 61,148, 82,122,177,228,100, 7,209,235,245, 16,139,197,249,155, 68, 34,129, 72, 36, 66,134,146, 98,248,175, 33, 74, 61,100, -202,149,243, 70,156,166, 0,137,141, 8, 73,140,143,141,184, 79, 8,185, 17, 29, 29,157, 86, 76,156,137, 85, 42, 85, 13, 71, 71, - 71, 1, 33,100,181, 86,171, 29, 50,110,220, 56,135,197,139, 23,163,106,213,170, 72, 76, 76,132, 92, 46,135,187,187, 59, 18, 18, - 18,240,224,193, 3, 46, 59, 59,123, 3,128, 5,148,210, 18,187, 29, 83, 19,210,225, 98, 95,254, 35, 75, 39,165, 20, 84, 15,232, - 56, 14,156,150, 66, 67,116, 16, 10,117, 16,137, 68,134, 84,146,148,231,121,164, 56, 58, 34,234,252,121,228,174, 42, 81,172, 21, -237,212,169, 83, 6, 36, 16, 15,177, 68,252, 81,183, 32, 33, 4, 34,177, 24, 66,177,232,147, 25, 49, 70,171,149, 17,255, 89,129, -149,251, 1,164, 2, 24, 73, 8,217,217,172, 89,179, 83,148, 82, 33,128, 14,148,210,155, 95,242,240,152,152,152,199, 78, 78, 78, -211,237, 93, 44,151,126, 51,160, 17,170,214,168, 0, 78,207,225,246,153,167,216,190,248,216,190,168,136,168,193,134,172, 77,198, -243,252,213,134,181,171, 50, 40,224, 91,219,201,201,137,255,156, 89,132,105,105,105,115, 39, 79,158,140, 31,127,252,177,204,179, - 8,139,187,230,249,171,248,145,126, 94,182, 46,157,190,105,220, 22,132,161, 26,141,186,132, 2, 15,249, 30, 71, 69, 34,225,235, - 7,207,162,171, 23,117, 93, 66, 66, 66,219, 33, 67,134, 92, 20, 8, 4,149,202, 18,231, 60,207,127,136,139,139,107, 89,122,154, -235,110, 19, 66,220, 79,238,219, 56,241,220,145,109,109,121,158,115, 35, 0, 88,129,232,157, 78,171, 61,175, 86,166,175, 50,116, -177,231,229, 35,253, 49, 97,205, 5,172,255,177, 19,198, 45, 61,128, 45,179,135, 99,250,175,123,177,236,199, 9, 88,180,246, 79, -204,153,208, 31, 61,191, 29,194, 83,194,220, 50,244, 61, 88,150, 61,183,113,227,198, 65,195,135, 15,207,159,140, 64, 41,253,168, - 64,215,233,116, 74,158,231,177, 97,195, 6, 30,192,185,146,248, 62, 78, 35, 66, 75, 26, 15,101,104, 26,165,167,167, 15,245,247, -247,223, 1, 64, 66, 41,125,155,146,146, 50,138, 82,154,191,132, 83,102,102,230,208, 6, 13, 26,236,160,148, 74, 8, 33,159,156, - 55, 4,185, 46, 27,106, 91, 90, 90, 62,202,181, 92, 73, 62,103,160,123, 73, 81, 93, 66,247, 33,103, 64,217,193,163,192,242, 55, -132,144,197,117,235,214, 45,184,216,243, 43, 0,181,203, 26, 40, 74,233, 69, 66,136,207,236,217,179, 39, 74,165,210,230,217,217, -217, 30, 0, 32,151,203,223,168,213,234,171, 74,165,114, 85,110,185, 85, 18,135,198,196,196,228,141, 94,175,247,181,181,181,205, -153, 33,155, 43,178, 0,224,196, 35,238, 17,165,250, 50,175, 26,127,230,204,153,138,150,150,150,109, 8, 33, 61, 41,165,158, 25, - 25, 25,234, 89,179,102,221, 61,114,228, 72,106,133, 10, 21,190,233,208,161, 3,177,178,178,194,195,135, 15,105, 82, 82,210, 97, - 0, 51, 12,153, 57,205,243,252,135,229,203,203,182,182, 96,105,141, 41,173, 86, 27,123,230,204, 25,155,118,241,241, 2, 43,158, -255,104,134, 99, 81, 19, 46, 94,191,126, 13,181, 90, 93,162, 19, 70,117, 90, 10, 90, 76,156, 10,228,206,230,204, 67,142,229,138, -130,106,140,122,202,136,255, 6,200,223, 50,141,185,140, 38, 68, 39, 39,167, 62, 82,185,100, 76, 5, 15,199,234,209, 33,241,129, - 25,105,217,187, 99, 98, 98, 54, 82, 74,185,207,229, 44,139,163, 81,163,153,247,239,227,252,203, 15, 22, 7, 74, 57, 80,158,130, - 82, 30, 60,207,229, 44, 68, 77,121, 80,142, 35,132,224,150, 58, 59,109,184,161,225, 36,132, 88,218,216,216, 44,160,148,182, 99, - 89,150, 41,104,252, 42,248, 63,215,114,117, 46, 33, 33, 97, 78, 97, 75,235,255, 98,124, 30, 58,116,168, 72,209,111,232, 44,194, -158, 61,123,114,101,252, 54,175,202,229,242, 34, 29,106,102,101,101,133, 71, 71, 71,183,249, 39,196,103,158,245,147, 26, 80,160, - 21,234,106, 47,243, 44,194,210, 56, 43, 86,172, 40,209,106,181, 53, 1,120, 0,176, 0,144,172,211,233,206, 37, 36, 36,196, 17, - 66,106, 3,152,157,123,219, 66, 74,233,163,255,203,239,157, 16, 34,179,177,177,217,198, 48,140,139, 33,247,235,245,122, 77,114, -114,242,160,130, 13,129,130,156, 54, 54, 54,143, 4, 2,129,139, 1, 60,145,137,137,137,181,141,229,167,145,243, 63,111,193,250, -187, 17, 29, 29,189, 31,192,254,175,201, 89,156,167,118, 35,254,255, 34, 43, 57,230,111, 73,135, 92,177, 52,246,191, 22,159,121, - 2,169,136,227,143, 1,144,191,225,219,108,254,191, 16, 47,244, 51, 91,138,185, 2,170,241,215, 12, 75, 88, 88,152, 26,192,157, -220,173,240,243, 30, 1,232,244, 15,138, 55, 37,128, 62, 95,139,175, 36,209,100,132, 17,255, 53, 48,198, 40, 48,194, 8, 35,140, - 48,194, 8, 35,140,248,186, 32, 0, 90, 21,211,178, 49,216,244, 71, 8,105,245, 25, 45,167, 75, 70, 78, 35,167,145,211,200,105, -228, 52,114, 26, 57,255, 91,156,255, 25,228, 57,124,252, 59, 54, 0,173,140,156, 70, 78, 35,167,145,211,200,105,228, 52,114, 26, - 57,255,107,155,177,139,208, 8, 35,140, 48,194, 8, 35,140, 48,226, 43,195, 96,129,165,112,240,242,178,173,232,183,195,170, 92, -245,231, 86,229,170, 63,183,173,232,183, 67,225,224,229,245, 95,140, 52, 66,136,140, 16,242,173, 80, 40,188,232,232,232,152, 78, - 8,153,248, 47,125, 79, 51, 66, 72, 79, 66,200, 2, 66, 72, 55, 66,136,201,215,228,111, 70,136,160, 47, 33, 99, 6, 17, 18, 62, -136,144,240,190,132,140,105, 70,200,191,110,217,140,249, 19,156,252,111,158,235,127,118,254, 4, 39,255, 34,207, 79,113,178,190, -127,177,247,154, 37, 99,157,173,190, 82,186,153,218,219,219,111,114,112,112, 8,179,183,183,255, 96,111,111,191,141, 16, 98,110, - 44,238,140, 48,194, 8, 35,254,255, 65,144, 91, 32, 55, 5,112, 13, 64, 51, 74,233,245,194, 23, 89, 85,168, 54,220,203,179,234, -143, 63,207,155, 73,108,109, 44,101, 58, 29,167,141,136,140,241,158,251,243,146, 67, 86, 21,170,173, 76,254,240, 98,203,103, 84, - 2,132,101,217, 62, 18,137,164, 35,128, 60,161,246, 74,173, 86,159,226, 56,110,191,161,179,130, 28, 28, 28,110,176, 44, 91,177, - 44,207,230, 56, 46, 60, 54, 54,182,209,103, 86, 94,189,202,151, 47,191,173,105,211,166, 38,117,235,214,133, 88, 44,198,236,217, -179, 39, 3, 88,101, 40,135,149,149,155,169, 86, 34,253, 65, 32, 22,183,166, 58,141, 47, 5, 5, 24, 73, 0,175, 87, 95, 22,169, -213, 43,147,147,223,101, 24, 24,150, 25, 0, 6, 35,103, 90,249, 22, 74,233,242, 47,201, 12,131,107, 18,157,142,203,201, 19, 34, - 1, 56,115,115,243,107, 51,103,206, 20,116,236,216, 17, 91,182,108,105,180,105,211,166, 17,132,144,203, 0, 78, 80, 74,223,125, -105,230,179, 7, 70, 54,104,212,104,205,160,201,147, 89,229,141, 27, 88,179,109,219,106,164,167, 3,192,250,178,230, 37,145, 8, - 61,109,108,132, 29, 41, 69, 77, 2, 16, 2, 60, 77, 72,226,207,104,181,220,126, 90,214,117,120, 62,230,254, 22, 31, 79,171,223, - 83, 86,142,180,119,116,150,164,147, 87,227,180,119, 87,103, 1,248,166,240,121,189, 74, 58,136,178,229, 58, 42,233,147, 8, 0, -191,126,161,184, 50,177,181,181,125,126,252,248,113,151,186,117,235, 10, 0,224,209,163, 71, 3, 59,118,236,216,130, 16,226, 75, - 41, 77,255, 63, 18,235, 82, 1,195,140, 17, 11,133,173, 57,142,171, 6, 0, 44,203,190,208,232,116, 23,245, 60,191,222, 80,159, -106, 70, 24, 97,196,191,218,120, 81,162, 22,249,159, 20, 88, 0,174, 81, 74, 9, 33,132,162,208, 84,111,133,189,167,183,143,143, -215,228,115, 71,119,150, 75, 75, 78, 85,253,246,235,174, 39,153,172, 40,203,195,203, 93,252,219,170,229, 22, 99, 38, 76,250, 65, - 97,239,121, 63, 51, 46, 40,176, 12,145, 88, 94, 38,147, 29, 89,177, 98,133,111,243,230,205,133,118,118,118,136,139,139,195,171, - 87,175,124,175, 92,185,210,117,231,206,157,147, 9, 33,221, 41,165,134, 44,124,229,126,121,215, 54, 59,185,149, 53, 56,157, 14, - 78,213,107,230, 59,200,123,123,229, 2,244, 90, 45,120,157, 14, 94, 29,187, 2, 0,120,158,135,183,183, 55,251,153,137,239,228, -227,227,179,123,241,226,197, 34,181, 90,141,251,247,239,227,234,213,171,124, 76, 76,204, 82, 67, 57, 20,246, 30,205, 25,153,124, -127,159,254,223,153,119,233, 88, 89, 88,222,222, 22,128, 9, 94,135,234, 27,156,189,112,165,206,209,253,219,191, 87,216,123,244, -201,140,123,115,181,100,145,102, 85,159, 16,178, 40,207,163, 51, 33,100, 89,165, 74,149,230, 20,188,166,240,186,118,148, 82, 8, - 4,130,184,140,140,140, 62,137,137,137, 79, 10,115,234, 56, 8,246,236,201,209, 15,179,198,124,203,222,186,117, 75,238,237,237, -173, 6,128,229,203,151, 99,193,130, 5,226,243,231,207,183,223,181,107, 87,123, 66,200,106, 74,233,137, 47,201,124, 34,224,167, - 65,147, 39,179,138,176, 48, 40,158, 61, 67,255,244,116,193, 47,192, 79,101, 17, 88,132,144,202, 14, 14,194, 67,147, 39, 13,241, -114,117,171, 47, 18,137,108,114, 22,215,214, 36,122,132,135, 63,233,185,244,151, 77,211, 8, 33, 61, 40,165,111, 13,228, 19, 0, -152, 15, 64, 10, 96, 22,128,217, 9, 9, 9,238, 28,199,193,193,193, 97, 54, 33,228, 24,128,159,109,109,109,105, 66, 66,194, 84, - 74,169,190, 36,203, 85,250, 59, 58, 43,150,184,182,171, 90,107, 16, 98,201,185,118,147,190,113, 60,107,230, 70,126,158,187, 38, -250, 46, 0,124,227,230,102,234,234, 41,159,170, 48,171,102,149, 30,117,105,234, 55,110,110,155,207,190, 51, 76, 96, 23, 22,153, - 0,224,228,228,180,124,215,174, 93,229,234,213,171,151,159,199,107,212,168,193, 46, 95,190,220,121,226,196,137,171, 1, 12, 49, -144,207,195,214,214,246, 60,199,113,234,164,164, 36,143,188,227,118,126,221, 27, 88,155,202, 91, 38,164,100,220, 72,124,121,236, -186,129, 92,117,165, 34,209,225, 19,187,215, 56,214,168,231,207, 40,108,236,160,138,138, 70,166, 78,219,234,234,237,123,205, 70, -140,249,105, 66,110, 26, 61, 48, 86, 49, 70, 24,241,159, 70,177, 90,228,127, 89, 96, 33,247,133, 62,129, 68, 34,158, 54,119,230, - 84,146,154,148,170, 84,103,100,106,244, 42,149,146, 17,242,170,231,175,222,199, 51, 2, 54,117,210,248,241,166, 83,103,204,156, - 6,160,191,161,226,202,207,207,239,193,145, 35, 71,236,172,172,172,144,150,150,134,164,164, 36, 60,120,240, 0,148, 82,116,239, -222, 93, 82,175, 78,157,154,179,102,207,190, 75, 8,241, 55, 68,100,201,173,108,176,188, 81,206, 26,177,115,194,146,242,158,131, - 77,189, 58,230, 95,179, 32, 50, 13, 0, 32,149, 74,243, 23, 10,254, 12,248,183,108,217, 82, 4, 0,195,134, 13, 75,207,200,200, - 88, 2, 96, 15,165, 52,202, 80,113,101,227,232,116,234,143, 13,203,101,213,220,220,161,213,233,241, 33, 54, 26, 2,161, 5, 92, - 92, 68, 24,210,191,181,176, 73, 3, 43,155, 69, 11, 55,157,150,219,122,116,203, 74,120,115,190, 56, 46, 11, 11,139,157,251,247, -239,199,129, 3, 7, 0, 0,111,222,188,129,187,187,187,188,180, 48, 4, 4, 4,184,118,238,220,121, 31,128, 42,165, 93, 91,216, -145,189, 68, 34, 65,163, 70,141,224,237,237,141,227,199,143, 55, 3,112,226, 75, 51,160,242,198, 13, 40,158, 61, 3,174,151,189, -177, 66, 8,169, 92,171, 86,133,123,103, 78,239,182, 57,125,230, 21,126,253,117, 27,222,189,203, 49,172,185,186,186,226,219,126, -189,132, 47, 94,220,241,233,217,243,219, 59,132,144, 70,148,210, 55, 6,208,206,223,188,121,243,140, 74,149, 42,161,103,207,158, -189,124,124,124, 28,204,204,204,176,113,227, 70, 56, 58, 58,186,106, 52,154,183,199,143, 31,119,138,141,141,197,248,241,227, 1, - 96,114,113, 68,205,218, 54,155, 37,233,228,213,184,106,173, 65, 80,152, 57, 98,243,222,253,120,253,120,103, 99,181,246,213,172, - 37, 99,157, 7, 40,169,100,176,139,187,233,180,138,181,155, 90, 87,241,233,140, 10,181,158,216,168,184,155,239,103,143,113, 93, - 42,144,170,118,206, 93, 17,157,244,201, 59,247, 58,196,250,166, 7, 89, 5, 92, 68, 18,165,115,249, 92, 97,149, 95, 16,113, 20, -157,155, 52,105,146,159,112, 97, 97, 97, 80,171,213,240,242,242, 98, 52, 26, 77,115, 3,227,213,163, 77,155, 54,183,206,156, 57, - 99,237,225,225,241,209,210, 45, 14,214, 22,109,175, 31, 89, 61,126,209,154, 63, 61,237,188,187,165,198, 7, 30,125, 81,154,184, -106, 88,191,214,165,179, 71,118, 43, 72,102, 4,196, 22,137, 0,159,132,144,125, 91, 65, 76,172,208,103,244, 36, 65,243,150, 45, -156, 91,127,211,227, 18, 33,164, 37,165,244,161,177,142, 49,194,136,255,180, 21,139,254, 91,222, 69, 80,192,186, 65,138,122, 49, -158,242,213, 29,236,172,101,171, 87,236,120,200,106, 53, 26, 19, 11, 51,173,185,153, 57,133,169, 25,171,213,105, 51,203,187, 87, - 18,241,148,175, 94, 20,121,225,169,154,132, 16, 34,147,201,142,156, 56,113,194, 78, 40, 20,130,231,121,216,218,218, 34, 52, 52, - 20,169,169,169,200,200,200,192,187, 87,175, 80,169,124, 57,204,155, 54,213,113,252,212,105, 71, 8, 33,181, 11,118, 23, 22, 53, -253,147,211,105, 11, 39, 80,113,139,251,126,244, 91, 18,103, 49, 8, 13, 15, 15,135, 66,161,128,175,175,175,226,246,237,219, 55, -139, 19, 87,133, 57,173,172,220, 76, 5, 10,217,129,223,255,152, 45,211,234, 2, 16, 24,146,140,170,149, 26,195,222,186, 60,162, -147, 53,184,247,224, 4, 2,158,239,129,155,115,121,140, 29,221, 66,186,116,249,161,253,150,150,149,203,167,164,188, 79, 47,138, - 51, 61, 61, 93, 81,185,114,101,148, 47,159,179, 46, 25,199,113, 8, 12, 12, 4,199,113,249,251, 5,127,119, 28,190, 2,125,250, - 7, 12, 26, 56, 16, 73, 73, 73,138,162, 56,133, 44,244,147, 70,124, 43,144, 9, 1,177,220, 74,147,153,153,153,111, 13,212,106, -181,120,250,244, 41,252,253,253,155, 30, 60,120,176, 68, 53,100,104,124,106,129,101,107,182,111, 95,219, 63, 45,141, 1,128, 45, -132,240, 90, 74,151, 25,154,151,236,236,132,135,207,157,221,101,195, 50, 65,176, 50,255, 5, 15, 30,124,128, 86,155, 19,222,164, -164,120,140, 27,147, 14,145,208, 20,199,143,255,105,237,229,213,232,112,110, 23, 25, 95, 74, 56,165,103,207,158,197,184,113,227, - 16, 24, 24,232,196,178, 44,238,223,191, 15,153, 76,134, 21, 43, 86,176, 94, 94, 94, 78,114,185, 28,231,206,157, 67, 92, 92, 28, - 41, 41,156,215,206, 95,251, 57,237,221,213, 89,177,228, 92,187,205,123,247,227,187,126,125,224, 64, 67,110,154,187,145,159,219, -116,106, 56,135,178,229, 58,202, 77,171, 91,186,251,118,130, 72,172,192,216,159, 22,224, 77,192, 73,203,236,140,231, 99, 8, 23, - 81, 14,185,107,243,125,180,216,241,193,158,220,218,189,119,106, 93, 44,255,176,130, 83,173,145,247, 1, 60,255, 75, 96,185, 10, - 8,195,153,231, 89, 43,223,190,125,139,119,239,222, 65, 32, 16, 64,169, 84, 66,175,215, 23, 25, 78,103,103,231,145,122,189,126, - 78,110, 58,239,112,116,116, 28,186,123,247,110,235,130, 2, 59,207,114,149,156,154,158,114,231,225,203,215,147, 70,246,108,118, -227, 94, 64,132,133, 95,215,240,212,103,199,210,138, 73, 35,169, 76, 44, 62,124,238,232,159, 10,221,251, 43,144,123, 53,131, 80, -225, 14, 78, 23,133,236,148, 44,100,188,139,129,250,143,117,168, 49,102, 34, 78, 30, 59,164,240,169, 86,251, 32, 33,196,157, 82, -170,249,140,111,211, 96, 24, 57,141,156, 70,206,127, 38,103, 73, 90, 4, 64, 45, 0,246,185,255,147,144, 51, 52,198, 6, 64, 34, -114,150,237,178, 7,160, 1, 32, 46,112, 79,225,253,130,215, 22,222, 47,248, 63, 41,247,191, 93,238,239, 67, 0,201,159, 45,176, -138, 87,147, 76,186,158,231, 37, 98, 91, 91,245,208,222,173,124, 47, 92,122,244, 84,110,109, 46,104,211,188, 86,211, 7, 47,222, -221,101,192,232, 8, 97, 12, 26,215,193,178,108,159,213,171, 87, 87, 51, 51, 51, 3,207,243, 48, 55, 55, 71, 66, 66, 2, 52, 26, - 13,210,210,210,160,206, 72,135, 54, 35, 29,207, 34,194,208,176,105, 51,244,104,215,198,235,207, 99, 39,250, 0,216, 87, 18,175, - 83,245,154,249,150,171, 5, 21,173,255, 50, 69, 68,164,230,139,173, 95,106,186, 67,164, 80,160,245,164,105, 95,146,240, 79,196, - 98,241,217,238,221,187,127, 51,101,202, 20, 38, 38, 38,230, 28, 33,164, 33,165,180,212,238, 81,173, 68,250,195,247, 63,116,180, -180, 84, 80, 28,188,120, 2, 77,106,246,131,137,152, 69, 82,186, 22,132, 0,175, 94, 30, 1, 33, 86,120,254, 38, 6,141,107,152, -161, 77, 91, 47,197,177, 67,175,166,224,175,241, 63,159, 36, 77, 74, 74, 10,226,227,227,161,211,233,160,211,233,208,179, 87, 47, -236,218,185, 19, 89, 89, 89, 80, 42,149,208,104, 52,224, 56, 14, 12,195,224,226,169,131,136,120,255, 10, 13,252,253, 81,156,233, -117,199, 19, 42, 36,132,220,123,253,250, 53, 94,189,122,133,200,200, 72, 72,165, 82, 56, 56, 56, 96,193,130, 5, 80,171,115,214, - 16,235,213,171, 87, 83, 0, 47,190,244, 67,122, 7,108,122,175,215,207,250,230,232, 81,187,219, 71,143,242,119, 79,156,136,148, -102,102,110, 52,228, 94,145, 8, 61,151, 47, 27, 93, 85, 46,151, 35, 50,124, 53, 60, 61, 69,152, 60,209, 26, 75,126, 73, 4, 0, -140, 31,231,130, 58,181,109,144,158,122, 8, 54,118, 51,176,118,237, 4,183,193,131, 87, 14, 4,176,163, 20,234, 89, 39, 78,156, -232,225,238,238,238,252,228,201, 19, 34, 22,139, 33,147,201, 32,147,201, 32,149, 74, 17, 31, 31,143,208,208, 80,186,124,249,242, - 40,228,116, 33, 22,139,220,110,192,111, 38,125,227,120,246,245,227,157,141,157,217,247,207,122,140,109, 20,246,252,222,147,140, - 11, 23,111, 47,212,171,164, 17,169,145,151,166, 86,174,243,196,102,204,143,243,177,110,249, 92,188,190,127, 35,217,190,124,250, -122, 25, 81,239,168,215,186, 8,171, 88,179,249,130, 49,179,123,235, 71, 14,238, 97,113,210,254,206,200, 51, 2,146, 16,155,248, -120, 5, 66,159, 40, 37, 85,106, 14,240,112,101, 52, 87,174, 92,145, 53,105,210, 4, 42,149, 42,223, 18,185,123,247,110, 94,175, -215, 23,217,237,172,213,106,231, 68, 69, 69, 57, 42,149, 74,180,107,215,110,252,138, 21, 43,228,121,107,200,113, 28,247,145,229, -234,231, 85,187,206,255, 48,103,253,213,243,251,126,113,250,121,218,208,102,253,199, 46,186,138, 98,214,121, 20, 48,204,152,147, - 71,183, 57, 72, 45,117,144, 89,181,129, 42, 78,137,215,155,190, 67,118,186, 10,117,126,158, 15, 64, 12,141,142,193,198, 78, 61, - 33,180,118,194,220,225, 67,157,102,110,220, 60, 26,192,106, 99, 59,222, 8, 35,140, 40, 4,123, 66,200, 41, 0,152, 54,109,218, -140, 37, 75,150,188, 36,132,156,162,148,118,204,109,208,157,162,148,118,204,187, 38,183,206,254,100, 63,239,218,194,251,133,255, - 79,159, 62,221,103,233,210,165,139,253,253,253,247,221,185,115,231,253,231, 8, 44, 38, 79, 49, 22,252,253,200,130,197,243, 55, -222,134,132,101,183,109, 93,223,249,228,181, 23,143,134, 12,233,208,178,119,231,198,109,222, 71,196, 7,185, 85,112,176, 9,120, -249,204,140,231,249, 27,134, 60, 76, 34,145,116,108,209,162,133, 32, 37, 37, 5, 38, 38, 38, 72, 72, 72, 64, 84, 84, 20,180, 90, - 45, 84,105,169, 80,167,165, 66,149,154, 2,109, 90, 10,222, 61,122,128,234,110,174,146,220, 65,240,165, 9,159, 34, 45, 83, 5, - 45, 89, 98, 83, 83, 72, 76, 77, 65,202,216, 61, 72, 8,233, 98,105,105,121,143, 16, 50, 43,183, 50, 26, 51,117,234,212, 68,158, -231,177,104,209, 34, 51,133, 66,113,144, 16, 34, 41,141,199,212,150,237,232, 95,195,151, 9, 10,125,142, 70,126,131,224, 81,185, - 61, 66,227,148, 72,204,208, 34, 62, 85,139, 58, 77,126, 67, 69,191,249, 40, 87, 99, 9, 94,125, 72,134,147,179, 59, 3,129,164, -196, 69,153,227,226,226, 62,218,223,183,119, 47,178,179,179,225,230,230,134,126,253,250, 97,234,212,169,232,215,175, 31,156,156, -156,208,191,119,103,204,157, 59, 23,241,241,241,165, 5, 85,237,225,225,161,174, 80,161,130,186, 66,133, 10,106,173, 86,139,204, -204, 76,164,166,166, 22,142,239, 9,101,254, 58,236,237,167, 59, 58, 58, 62,183,183,183,127, 41,149, 74,207, 60, 37, 36, 72, 93, -177,162,125,195,174, 93,137,119,239,222,108,184,137, 9,185, 14, 40, 12,225,178,177, 18,118,104,222,226, 27,113,106,202, 54, 0, - 57, 70,169,161, 67,108,113,235,186, 15,110,223,172,141,113, 99,220, 64, 24, 41, 8, 35, 70,118,214, 21,212,171,235, 47,178,176, - 32, 29, 75, 73,235,111, 1, 60,109,216,176,161,211,216,177, 99,137, 68, 34,193,248,241,227,181,195,135, 15, 15,238,215,175, 95, -240,229,203,151,185, 10, 21, 42,160, 92,185,114,164, 92,185,114,142, 0,158,230,222, 83, 34,204,220,200,207,106,237,171,155, 22, -238,242,247, 28,108, 26,100,234, 36, 61,231,174,136, 78, 90,184, 62,228,215,208,215,217,174,175,239,223, 72, 10, 14, 56,201,135, - 62,188,150, 24, 29,156,225,186,112,125,200,175,211,215, 69, 21,249, 49, 95,191, 14,254,200,169,235,218,236,172,108, 65,215, 78, -205,179, 71, 14,235,227, 97,165,240,217, 13,231, 54,126, 21,203,187,244,159,187,120,173,118,248,232, 31,180, 91,182,110,163, 25, - 25, 25, 72, 79, 79,199,218,181,107,245, 39, 79,158,140,226, 56,238,135,226,218, 62, 0,160,211,233, 48,114,228, 72,185,153,153, - 25, 34, 34, 34,242, 45,160, 0, 16,147,144,244,226,246,195,128,160, 73,163,122, 53,205, 82,171,213,231,175, 61,122,229,237, 94, -193,133, 16, 90,236, 4, 19,177, 80,216,186,118,189,122, 44,165,169, 32,130,242,120,183,115, 57,210, 99,147,145, 30,159, 12, 86, - 40,135, 30, 18,232,120, 49, 44,170,215,197,155,135, 79,224,108,107, 47,144, 8,133,198, 37,174,140, 48,226, 63,138,146,180, 72, - 65,145,180,116,233,210,197, 37,157, 47,240,171, 41,180,159, 47,160, 10,139,175,130,255, 1, 96,233,210,165,139, 41,165, 29,239, -220,185,179, 23,128,242,115,222,167, 84,181,193,170, 52, 75,166, 76,157, 5,115, 51,153,121,189,154,238, 14,199,206, 93,123,124, -227,206,163, 87, 21, 93,108,108,169, 78, 99,185,108,229, 58, 23,146,173, 52,116,144,183,151,141,141, 13,180, 90, 45,222,190,125, -139,200,200, 72,104,181, 90,232,179,178,160, 78, 77,133, 42, 37, 5, 92, 86, 6, 68, 28, 7,101, 66, 60,172, 77,164,192, 95, 51, - 12, 75, 19, 66, 69, 10,172,188, 95,169,153, 25, 36,166,102, 96,132,194, 34,187, 15,139,225,172, 85,183,110,221, 3, 1, 1, 1, -245, 90,181,106,181,144, 16, 98, 78, 41,253, 16, 21, 21,213,114,246,236,217,106,123,123,123,140, 28, 57,178, 42,128, 65,165,138, - 75,177,198,171,130, 67, 85,120,184, 14, 66,197,114, 45,144,154,165, 67, 66,186, 14,241,169, 90,108,252,205, 31,135,183,212,197, -173,195,141, 17,112,190, 53, 82,117, 14, 80, 56,117, 1,229, 52, 62, 37,113,222,185,115, 7, 27, 54,108,192,134, 13, 27,240,199, - 31,127, 96,221,186,117, 72, 73, 73,129,175,175, 47,194,195,195,113,246,236, 89,196,196,196,192,198,198, 6, 79,159, 62,197,198, -141, 27,241,224,193, 3, 67, 50,185, 65,215,148,181,175, 92,175,215, 15,142,233,218,181, 90,156,149,149,119,205,154, 53,191, 25, - 63,126,188,107,195,134, 13,243,207, 87,174, 92,185,188, 76, 38,139, 37,132,108, 33,132,212, 40,137,139, 7,106,218,218,250, 66, -163, 14,202, 77, 43, 33, 8,145,162, 69,235, 87,104,216,248, 17,180, 58, 17, 24, 34, 1,195, 72,161,215, 39,193,210,210, 9,148, - 18,223, 82,130, 56, 59, 33, 33,193,253,210,165, 75, 76,104,104, 40,164, 82, 41, 0,132,205,155, 55,111,221,175,191,254, 26,104, -109,109,205,157, 58,117, 10,199,142, 29, 67,199,142, 29,217,225,195,135,187,151, 43, 87,110, 67,105,239, 61,119, 77,244,221, 61, - 43,207,246, 21,234, 44,107, 72,101, 21, 43, 33, 75,209,101, 76, 51, 91, 57, 0,156,125,247, 46,195,174,124,250,210,172,140,231, -225, 22, 46,153,191,148, 54,192,157,210,185,252,227,224,160,123,123,142,158, 75,139,143, 75, 17,214,172,230,163, 92,178,224, 71, - 81,197, 74, 85,150,205,157, 58,202, 33, 42, 93,154,218,122,252,217,160, 35,231, 30,100, 14, 24,242,157,126,216,136,177,170,179, -231, 46, 30,229,121,190, 90,113, 51, 8,121,158, 71, 76, 76, 12, 94,190,124,137,144,144, 16, 36, 36, 36, 32, 49, 49, 17, 25, 25, - 25,249,221,138, 38, 25,233,167,215,109, 63,249, 76, 46,147,153,212,171,230, 94,254,254,147,192,120,185, 76,102,226, 94,169,188, - 7, 33,243,139, 44, 71, 56,142,171, 38, 53,145, 1, 32, 72, 13,184,129,204,148, 76,100,166,102, 34, 35, 57, 19,106, 45, 11,149, -154,129, 82,195,160, 66,211, 54,200,204, 82, 33, 51, 41, 13, 60,199,249, 25,171, 25, 35,140, 48,162,132,122,249,212,180,105,211, -102, 24,120,185,193,221,152,133, 5,215,180,105,211,102, 16, 66, 78, 77,159, 62,221, 7, 6,140, 89, 46, 10,165,186,105, 72, 76, -124,147,105,102,235,221,125,226, 79,115,206,238,221,186,222, 86,163, 81,134,219, 88, 42, 56, 83, 19,137,229,240,145,139,144,145, -153,210, 45, 51,217,240, 89, 79, 41, 41, 41,120,255,254, 61,100, 50, 25, 68, 66, 33, 56,165, 18,156, 50, 11,202,148, 36, 48, 90, - 53, 68, 28, 7, 43, 19, 25, 42, 56, 57,160,162,189,131, 65,156,111,175, 92,200, 31,208, 94,176, 91,112,121, 93, 47,136,229, 10, -136, 77, 21,248,254,212, 53, 0,128, 72, 36, 2,102, 47, 52, 36, 17,109,156,157,157, 79,236,217,179, 71,148,144,144,128,167, 79, -159, 62,163,148,166, 17, 66, 76, 1,240,175, 94,189,186, 20, 16, 16,208,209,221,221, 29, 0,220, 74,227, 75, 79,100, 56,157,158, - 34, 34, 54, 12,161,145, 79, 96,101, 94, 25, 66, 19, 15,196,167,106, 33,145, 85,134, 78,253, 87, 47,163, 42,253, 3,148, 90,195, - 38, 58,106,181, 90,104,181, 90,232,116, 58,168,213,106, 12, 24, 48, 0,183,239,220,193,190, 99,151,241,254,221, 27, 84,173,228, -128,129, 3, 7,160, 70,141, 26,120,248,176,228,241,195,131,107, 18,221,204, 38, 16,172,252,134,129, 88, 97,173,174, 63,245,252, -125, 67, 68, 86, 73,173,141, 2,241,249,107,199,142, 29,171,188,201,202,194,203,160, 32,180,154, 55, 15, 0,112,250,244,233,252, -107, 52, 26, 13, 38, 77,154, 36, 14, 12, 12, 28,246,232,209,163, 97,132,144,149,148,210,162, 7,145, 83,224,244,233,187, 24, 53, - 42, 16, 9, 9, 57,227,176,247,239,253, 75,143,134,190,215,162, 93,135,156,158, 43, 11, 11, 11,172, 92,233,107, 80,124,114, 28, -135, 77,155, 54,229,119, 11, 2,128, 64, 32,104, 56,105,210,164,238, 69, 93, 95,165, 74, 21, 81,105,156,147,122,185, 72,159,126, -144,141, 49,175, 82,209,199,204,166, 58,146,116, 79,124,159, 68,197,140,155,212,203,101,245,202,131,145, 42, 25, 81,239, 32, 92, - 68, 57,129, 84,181,211,144, 48,190, 59,187, 86, 99, 81,113,200,206,216,132,244,153, 99,191,251,214,218,204,194, 46,107,203,186, - 37,150, 12,203,208, 19,143,180,169, 62,174,214, 22, 93,234,175,201, 28, 53,113,246, 19,141, 62, 98, 44, 34, 78,188, 41,201, 85, - 5,199,113,136,142,142, 70, 66, 66, 2,194,195,195,145,152,152,152,251,237, 39,126, 50, 19,181,140, 5, 33,148,225,225,248,112, -116, 11, 42, 14, 24,128, 58, 11, 23,128,227, 5, 80,102,115, 88,217,160, 37, 82,210,148, 80,243, 4, 78,181, 26,224,187, 51, 55, -193, 80, 14,216,184,222, 88,131, 24, 97,196,127, 87, 60, 21,171, 69, 10, 11,161, 37, 75,150,116,252,218,207, 47, 40,178,150, 44, - 89,242,114,201,146, 37, 95,244,172, 82,221, 52, 0, 64,122, 66, 96,136,117,133,234,209, 89,202, 76, 19, 59,123, 27,141, 66, 42, -225,211,210,179,216, 39, 47,158,105, 51, 99,222,190, 46,195,243, 94, 5, 4, 4,248, 70, 71, 71, 35,252,195, 7,232,149, 89, 96, -212, 26, 80, 85, 54, 90, 53,106, 0, 41, 0, 41, 67, 32,226,181, 16,176, 98,100,100,166, 3,192,171, 82, 43, 69,157,238, 19, 75, - 22, 33, 4, 98, 83, 83,136,229,114,136, 21,166, 31, 89,180, 12,177,208, 72, 36,146, 61, 7, 15, 30,116,116,118,118,198,130, 5, - 11,224,226,226,226, 89,173, 90,181,236,198,141, 27,203,236,237,237,225,237,237,141, 6, 13, 26,224,236,217,179, 0, 80,170, 79, - 40,157, 94,250,252,117, 24, 26, 38, 38,223,193,205,107,127, 64,163, 84,163,102,211, 63,160, 21, 84,132,173,207,124,240,111,119, - 35, 59,246,120,142,181,192,161, 19, 34,195,195, 64, 88,241,203, 50,102, 14, 60,127,254, 28,123,143, 95,135, 99, 5, 47,132, 7, - 7, 33,232,234, 37,220,182,181, 70, 69,111, 31,232,116,186, 18,223, 93,199, 65,240,243,250,124, 55, 13,146,228,228,100,137,149, -149,149, 58, 47,238, 28, 29, 29,191, 68,100,125, 59,101,202, 20,164, 10,133, 64,135, 14, 16,133,132, 64,171,213,194,223,223, 31, -181,107,215, 6, 0,248,251,251, 67, 32, 16,160,122,245,234,112,114,114,194,250,245,235,191, 69, 49,179,244, 24,130,167,122,125, -146,167,171,171,107,190,192,218,185, 43, 1, 79, 30,181, 6,129, 24,107,215,253,229,149,161,124,249,242,136,141, 9, 1, 33, 52, -160,148, 48, 46,116,112,112,152,237,232,232,232,250,235,175,191,178, 82,169, 20,163, 71,143,174,156,153,153, 89, 49,215,100,140, -233,211,167,231, 88,165,230,206,197,188,121,243,160, 86,171,179,139, 35,219,181,170,186, 83,124, 50, 63,204,222,193,185, 91,115, -155,138,213, 90,180,109,133,202,238, 45,208,162,109, 56, 0, 44,182, 18,132,245, 94, 62,203,247,168, 77, 57,171,109, 23,206, 93, -156,219,168,105,139,153,211, 70, 90,254,188,116, 99, 74,169, 99, 26,211, 62,236,200,120, 45,238,179,234,183, 13,187, 86,205,153, - 62, 65, 26,158,160, 73,137, 74,161,153, 10,137, 64,225,102, 79, 20,227,126, 90,248, 62, 58, 58,100, 50, 34,206,149, 58,115,146, -231,121,132,132,132,228,143,217, 83,169, 84,200,202,202, 66, 68, 68, 68,126, 23,161, 82,110,214,110,236,144, 78,126, 89, 74,101, -246,253, 23,193,225,179,198,247,247,207, 82, 42,179,131, 67,195,223, 80,186,166, 72, 21,198, 48,204,139,236,140,236, 86,217,169, - 42, 36, 60,125, 13,151,150, 21,160,211, 19,104,244, 28, 18,146, 50,160,214, 3, 28, 35,132, 79,239,129,224,136, 0,137,209, 81, - 96, 88,246,153,177,154, 49,194,136,255, 44, 74,117,211, 64, 8, 57,229,239,239,191,175,160,149, 41,239, 63, 0, 53,128,146,134, -236, 36, 20, 20, 81,121,221,134,197, 61,167, 16,239,103, 11,172, 18,187,123, 8, 33,196,175, 90, 5,167,229,115,191,117,225,245, -250,170,241,137,113,122,129, 64, 34, 44,103,174,140, 41,203,195,212,106,245,169, 75,151, 46,117,109,221,186,181, 36,248,197, 51, -104,210,210,160, 73, 75,133,144,215,195, 74, 86, 27,140, 86, 13,162,209,192,217,147,135, 42, 67,134,235,183, 3,116,106,181,250, -148,161, 2,139, 97,217,143,199, 93, 41, 20,144,152,154, 65,162, 80, 20,238, 66, 36,165,168,104,147,206,157, 59,183,172, 95,191, - 62, 40,165,216,180,105, 19,180, 90,173, 88,171,213, 66,163,209, 64,171,213, 34, 61, 61, 29,187,118,237,194,239,191,255,126, 27, -192,246, 82, 43, 49,189,230,210,249,139, 87,234, 14,237,223, 81,120,230,212, 74,232, 53, 28,148,196, 5, 89, 89, 58,100,106, 76, -192, 89, 15, 0,226, 78,131, 21, 72,225, 95,189, 50,142, 31, 58,162,133, 94,125,217, 16, 81, 85, 16, 42,149, 10, 17,225, 97,136, -124,247, 6,138,244, 88,216,154,153, 32, 59,228, 13,106, 12, 28, 4,141, 70, 83,230, 12, 82,174, 92, 57,240, 60,143,230,205,155, -231, 15,154,254, 92,145,149,148,148,132,147, 39, 79,162,126,253,250,104,218,180, 41,162,162,162, 16, 18, 18,130, 14, 29, 58,228, - 95,243,236,217, 51, 60,121,242, 4,110,110, 37, 27, 5, 19,147,117,103, 34, 35,158,246,234,210,165,139,232,222,189,123,160,148, -194,221,221, 12,102,166,114, 16, 70, 2, 47, 47, 59, 0, 57,218,191, 89,179,102, 72, 79, 15,209,167,164,208, 51,165,196,229, 30, - 66,200, 49,141, 70,243,182, 73,147, 38, 78,239,222,189,195,196,137, 19, 5,251,247,239,207, 51, 25, 99,218,180,143, 39, 73, 40, -149,197,119,205, 87,173,230,249, 99,101,189,101, 83,169,172, 98, 37, 51,155,234,168,236,222, 2, 0,208,186,227, 80, 84,174, 82, - 30,233,137,207, 43,169,148, 97,221, 68,130, 20,203,231,107,163, 2,101, 29,124,135,168,226,175, 5, 3, 48,196,113, 47, 85, 6, -239,143, 11, 23, 14, 56,112,236,196,217,145,237, 59,118, 22,234, 56,189,222,183,130,208,226,224,209,211,241, 81, 31,194,215, 32, -252, 92,192, 95,246,190, 18,173,118, 92,122,122, 58,228,114, 57, 2, 2, 2,212, 29, 58,116,144, 48, 12,131,183,111,223,230, 11, - 44, 59, 27, 43,239,134,117,124, 61,127, 94,181,235,188, 92, 34,145,180,109, 86,219, 43, 48,248, 67, 36,165, 36,172, 56, 94,141, - 78,119,241,197,211,103,205,109,157,170,176, 33,215,238,193,186,113,123,168,213, 12,148, 26, 30,106, 61,160,103, 69,112,172, 81, - 15, 22,110, 94,160, 0, 30,222,187,173, 83,235,116,231,141,117,140, 17, 70,252,167,173, 88,180, 36,113,148,251, 63, 25, 64,216, -146, 37, 75, 18, 11, 88,151, 18, 0, 60, 3,224,151,123, 93, 66,161,251, 18,144, 51, 27,176, 78, 1,158,132, 2, 66,171,224,127, - 77,161,107, 62,171,225, 87,170,155, 6, 0,176,177,177,177,171, 89,179,182,219,230,173, 7, 64, 41,197,235, 39, 43,144, 18, 31, -132,217,139,239,186,185,184,184, 52,141,140,140,188,110,200,195, 56,142,219,191,109,219,182,201,245,106,213,172, 89,201,197, 5, -207,194, 66, 33,162, 28, 68, 28, 7, 70,171,134,128,211,192,197,151, 3, 67, 20,136,142, 78,195,210, 61, 7, 2, 56,142,219, 95, - 26,175,103,251,206, 88, 16,153, 6, 66, 8,126,245,247,133,216, 84, 1,145, 92,129,239, 79, 92,201, 23, 85,167, 22, 76,135, 88, -161,128, 91,189,210, 29,184, 83, 74,179, 77, 77, 77, 31,189,120,241,162,142,175,175, 47, 38, 79,158,140,176,176, 48,240, 60,143, -184,184, 56, 85, 76, 76, 76, 84, 66, 66, 66, 24,128,163, 0, 54, 27,226, 41, 92,164, 86,173, 62,117,120,231, 88,255, 70, 77,109, -186,116,251, 29,199, 14, 77, 66,106, 90, 58,178,245, 50,100,169,244,200, 82,179,176,178,174,134,122,213,171, 35, 58, 42, 30, 47, -239,157,207, 20,168,179, 87,148,197,122,197, 48, 12,158, 61,123, 6, 87, 39, 83,188,185,121, 29, 54, 38, 66,248, 57, 57,192,169, - 97, 35,132,132,132,148,202, 33,100,161,255,246,219,111,243, 61,185,183,105,211, 38,116,192,128, 1,142,147, 38, 77,194,214,173, - 91,113,251,246,237, 79, 6, 94, 55,109,218, 20, 55,110,220,152, 15, 96,110,105, 70, 60,141, 70, 3, 79, 79, 79, 60,124,248, 16, -151, 46, 93, 66,139, 22, 45,208,180,105, 83, 60,127,254, 28, 23, 46, 92,192,147, 39, 79, 64, 8,129,181,181, 53,116, 57,162, 89, - 87, 28,153, 86,139,131,191, 44,219, 54, 99,213,170,223,125,250,247,239,143,195,135,247, 97,232,144,170, 32,140, 4,132, 72,208, -185, 83, 85, 44, 88,248, 16,245,234, 53,131,141,141, 16,171, 86, 30,127,175, 84,114,187, 12,136,202,159, 47, 92,184,224,164, 82, -169,144,154,154, 74, 21, 10, 5, 73, 74,202,153,161, 90,148, 5, 43, 59, 59, 91, 90, 28,209,139,199,175, 86,164,102,208, 20,154, -249,164, 91,178,254, 73,181, 22,109, 35,208,186,227, 16, 92, 60,181, 29, 87,206, 95,130,149, 32, 44, 20,242,140,179,137,161,137, -233, 49, 89,238, 27,188,106, 13,103, 35,179,206,111, 24,223,197,146,117,116,228, 15, 78,251, 61, 45,181,132,244,166,132, 16,146, - 28,184,251,196, 81,138,206, 13,252,235, 85,241, 45,239, 40, 78, 73,140,167,135,142,159, 13,208,134, 30, 62,153, 39,172, 74, 91, - 21,129, 82,186, 96,218,180,105,115,114,255,239,152, 53,107,214,240,165, 75,151,218,198,198,198,230,143,193,138, 79, 76,190,210, -160,195, 56, 46, 41, 53, 77,179,109,213, 79, 61,101, 82,137,120,214,210,109,215,116, 44,238, 21,199,171,231,249,245,189, 39,206, -158, 16,252,250,137,115, 69,153, 24,199,127,154,139,103, 23,174, 66,199,136, 48,234,210,125,168,181, 28, 82, 19,147,112,121,216, - 24, 40,236, 45,241,251,181,195,113, 60,207,255, 97,172, 98,140, 48,226,191,139, 18,180, 72, 81, 99, 92,226, 12,184,238,161, 1, - 60,127, 11, 12,154, 82,151,152,152, 24,127,227,198,125, 92, 59,245, 51,174,159,250, 25, 47,159, 60, 67,116,148, 6, 81,113, 42, -152,153,153,221, 45, 65,137,182, 42, 92, 41,100,103,103,119,159, 53,123, 78,172, 84,102,130, 38, 45, 91,194,193,214, 14, 38, 34, - 33, 88, 61, 15,150, 8,145,153, 96,129, 55,207,179, 49,117,219,238,248,204,236,236,238,133, 43,135,194,156, 5,142,131, 16, 2, -137,153, 41,196, 10, 83, 72, 76,205, 62,234, 46,148,154,153, 65,106,106, 6,129, 88, 92,212, 96,248, 79, 56, 51, 51, 51,123,244, -236,217, 51, 37, 45, 45, 13,195,135, 15,199,245,235,215,159,156, 63,127,222,236,217,179,103,178,248,248,248, 42,148,210, 54,148, -210,141,197,137,171,194,156,201,201,239, 50,168, 94,221,103,201,156, 31,148, 42,189, 53,122, 13,218, 15, 57, 19, 1, 61,199,131, - 2,112,178, 18,163, 97,171,133,136,215, 52,192,254, 13,139,178,121,173,170,127, 65, 31, 88,133, 57, 41,165,212,218,218,250,163, -119, 97, 24, 6,215,174, 93, 67,175,158, 61,208,182, 91, 87,216, 86,114,133, 93,171,246,104, 59,124, 20, 54,110,220, 8,134, 97, - 96,101,101,245,145, 69,163, 32,231,142, 39, 84,184,231, 57, 37,123,158, 83,178,253, 49, 21, 0, 24,184,123,247,238, 95,252,252, -252,174,222,190,125,123, 5,128, 62, 5,227,187, 64, 88,230, 21,180, 94, 21,147, 70, 51, 39, 76,152,160, 12, 14, 14,134, 92, 46, -135, 94,175,199,237,219,183,241,251,239,191,227,215, 95,127,197,147, 39, 79, 96,109,109, 13, 55, 55, 55,168,213,106, 60,124,248, - 80, 9, 96,102, 9,121,137, 79, 72,208,247, 88,187,118,105, 82,199,142,141,177,109,219, 58, 56, 56, 52,128, 80,224, 0,129,208, - 22,114,133, 39,182,108,254, 5,223,124, 83, 19, 39,142, 31, 72, 78, 76,210,247, 40,236,117,189,152,112,170,238,223,191,143, 13, - 27, 54,160,103,207,158, 81,189,122,245,226,210,210,210,242, 45, 88,121,171,164,207,203, 29, 67,166, 86,171, 37,197,113, 14,255, -233, 69,212,143, 63, 7, 44,136,139,141,170,127,253,234,221,111,175,156,191,132,247,193, 87,112,229,252, 37,220,188,114,103, 90, - 92,108, 84,253,154,117, 61, 68,221,135,143,253,113,231,145,195,172,194,204, 17, 59,143, 28,102,251,141,251, 97, 81,237,182, 45, -102,150,150,231,115,211,145,102,198,199, 77, 95,188,226,183, 76,189, 86,197, 44, 95,179, 62, 90,153, 16, 51, 19,121, 83, 43,139, -177, 94, 21,228,204,206,206,222,168, 84, 42,157,148, 74,165,147, 74,165,154, 25, 22, 22,214,100,242,228,201, 9, 28,199,229, 91, - 72,227, 95, 30,191,251,234,230,246,197,118, 54,150,178, 6,117,124,170,174,220,120,232, 90,120, 68,220,159,121, 62,176,138, 73, - 35, 85,166, 82,213,163,107,247, 1, 89,169, 41,106,248,255, 48, 13,188, 84, 1, 53, 7,232, 40, 11, 61, 17,224,197,207, 43, 33, -179, 50,197,158,208,199,217,105, 58,109,143,130, 62,176, 74,121,247, 47,105, 33, 27, 57,141,156, 70,206,127, 32,231,191, 13,130, - 60,197, 88,240,183, 48,156,157,157,155,116,233,220, 10,205, 58,206, 2,165, 20, 65,143,151, 33, 37,225, 53,156, 29, 36, 8, 9, - 79,247, 7,112,221,208, 7, 82, 74,195, 9, 33,245, 39,204,156,117,164, 87,155,150, 94,190,149, 42, 73, 42, 86,172, 0,185,157, - 29, 18, 19, 19,112,235, 94,160,110,209,222,131, 1,185,226,202,144,165,114,192,243,124,206,224,117, 0, 45, 39, 76, 5, 97, 89, - 32,215, 29, 67, 94,133, 88,169, 78, 3, 16,129, 0, 28,229,161, 86,171,169, 1,225,140, 36,132,244,232,223,191,255,229, 83,167, - 78, 49,109,219,182,173,113,244,232, 81,254, 75, 34, 59, 51,238,205, 85,133,189, 71,199, 69,211, 71,238,175,223,162,171,153,187, - 79,109, 81,237,138, 44,180, 58,130,232,168, 15, 56,117,228,129, 54,240,254,249,116,170, 87,245,201, 74, 40,121,169, 28,173, 86, - 27,110,111,111,111, 63,127,254,124,232,245,122,232,245,122,112, 28,135,196,196, 68,220,189,123, 23,213,234,212,131,215,144, 97, - 72, 72, 72,192,218,181,107,225,226,226,130,197,139, 23, 35, 57, 57, 25,122,189, 62,220,192,180,226, 0,156,207,221, 62, 18,178, -121,173,140,210,186, 7,221,220,220,196, 42,149,170,134,163,163,163,128, 16,178, 90,163,209, 12,153, 62,125,186,195,226,197,139, - 81,181,106, 85, 36, 38, 38, 66, 46,151,195,221,221, 29, 9, 9, 9,120,240,224, 1,151,157,157,189, 1,192, 2, 74,105, 66, 41, -225,123, 75, 8,169, 63,126,252,247, 71,126, 89, 58,210, 93,165,110, 38,182,178,106, 4, 74,245, 72, 72, 8, 67, 70,250,109,237, -194, 5,219,223,197,197,235,186, 83, 74,131, 13, 76,166,185, 99,199,142, 5,114,151,202, 9, 9, 9,121,234,229,229,229, 94,156, - 5,203, 16,172, 60, 24,169, 2,176,119,249,196, 6, 19,211, 19,159,187, 91, 9,194, 66,235,251,242,107, 87, 30,140, 84,205,159, -104,241,115, 98,216,245, 55, 49, 89,231, 55,236, 60,114,152, 29,212,173, 7,231,162, 8,158, 38,181,163,135, 90,116, 42, 53,125, -104,141, 26, 53,202, 17,146, 92, 57, 62,233,245,163,161,195, 71,246, 54, 23, 41,207,248,185, 36,185, 49,229,107, 74,159, 60,121, - 18,106,232,154,158,133,120,223, 16, 66,154, 76,159, 62,253, 60,165,244,163,177, 7,241,137,201, 87,252, 59,142,165,169,169,105, - 79,227, 3,143,191, 48,128,235, 1, 33,164,165,111,181,154,135,127, 89,188,212,190,217,132,201,130, 55, 87,175, 1,156, 14, 31, -174, 95, 3, 39,209,240, 43,239, 92,140, 75,211,106,187, 25,189,184, 27, 97,132,209,122, 85,146, 22,249,159, 20, 88,165, 33, 50, - 50,242,186,155,171,203,133, 55,111,154,180, 41,239, 98, 11, 0, 8, 9,141, 70, 84,156,250,130,161,221,131, 69,136,172,218,187, - 79,158,233, 35,145, 72, 58,146, 92, 87, 12,244, 51, 22,123,214,235,245,145,149, 42, 85, 42,230,108,209,174,154, 56,142,139, 51, - 48,156,215, 8, 33, 3,220,220,220,150,126,248,240,225, 8,165, 52,235, 75, 35, 60, 51,238,205, 85, 43, 43, 55,215, 59,151, 14, -255,112,239,218,169, 86, 84,175,169, 6, 0, 68, 32, 46,211, 98,207,153,153,153, 35, 71,143, 30,189, 81, 40, 20,150, 71,238,152, -178,188, 25, 95, 28,199,177, 90,173, 86,202,113, 28, 11,128, 48, 12,163, 23, 10,133,170, 35, 71,142,232,245,122,125,184, 90,173, - 30,249,165, 31,128,161, 56,115,230, 76, 69, 75, 75,203, 54,132,144,158,148, 82,207,140,140, 12,245,172, 89,179,238, 30, 57,114, - 36,173, 66,133, 10,237, 58,116,232, 64,172,172,172,240,240,225, 67,154,148,148,116, 8,192, 76, 74,105, 72, 25,194, 19, 66, 8, -241, 27, 57,234,143,190, 86, 86, 27, 59, 80, 10, 63, 80, 16,194,224, 69, 90, 26,127, 38, 59,155,251, 51, 87, 40, 26,202,167, 47, -100, 57, 91, 24, 16, 16,176, 29,128,176,168, 49, 88,101,130, 73,230, 9,149, 50,172, 7, 81,100, 31, 93,185, 38, 82, 5, 0,115, - 87,165,166, 1,216, 50,190,155, 21,255,234,241,150,101,206,102,193, 63,173, 57,154,188,205, 16,186,154, 53,107,186, 50, 12,211, - 7,128,175,157, 36,181,138,173, 56,141, 35,132, 54, 39,132,177, 1,240,220,219,219,251, 20,128,200,207, 76,231, 55, 0, 42, 20, - 62, 30,255,242,248, 93, 0,119,203,200,245,128, 16, 82,101,226,148, 73, 99,196, 66, 97,107,112, 92,245,133,199, 14, 82,227, 98, -207, 70, 24, 97,196,191,222,130,101, 8,222,133, 68,182, 5, 0, 15, 15, 15, 26, 28, 28,252,197, 10, 51, 87, 64,237, 67, 41, 94, -218, 75, 67, 98, 98, 98,237,191, 89, 81,239, 5,176,247,107,114,230, 10,168, 5,185,219,231,134,235, 5,128,122,255,215,173,141, -220,190,242,249,197, 93,211,166, 77,155, 15, 90,173,246, 82,110, 69,111, 1, 32, 89,167,211,157,211,104, 52,113,132,144,218, 43, - 87,174,204,243, 84,191,144, 82,250,232, 51,195,193, 3,216,147,187,125,237,119,220,227,228,228, 52,201,218,218,218, 77,165, 82, -137, 85, 42,149,168,160,246,151,201,100, 9,134,114, 89,152,146, 29, 34, 65,138,181,133, 41,249, 68, 64, 89, 57,227,176, 50, 43, -160,170,149, 51, 14, 27,202,247,228,201,147,144, 26, 53,106,236,102, 24,166, 18,165,212, 30,160,230,148, 34,129, 82,154, 40, 16, - 8,162, 2, 3, 3,163,254, 41, 5, 77,174,128, 90,145,187, 25, 97,132, 17, 70, 24, 5, 86, 97,188,121,243,134, 24,163,205,136, -130, 34,171,164,243, 97, 97, 97,106, 0,119,114,183,194,247, 62, 2,208,233,159,254,142,209,209,209, 53,191, 6,207,240,159, 94, - 68, 1,248,161,118, 17, 75, 46,207, 93,155,156, 1,224,199,230,157,203,198,249,244,233,211,112, 0,225,198,156,104,132, 17, 70, - 24,241,207, 2, 99,140, 2, 35,140, 48,194, 8, 35,140, 48,194,136,175, 11, 2,160,200,153, 0,101, 89, 41,251,115,102, 19,148, -198,111,228, 52,114, 26, 57,141,156, 70, 78, 35,167,145,243,223,199,249,159, 65,222, 44,187,191, 99, 3,208,202,200,105,228, 52, -114, 26, 57,141,156, 70, 78, 35,167,145,243,191,182, 9,140, 18,211, 8, 35,140,248,175,226,208,161, 67, 6, 45,250,217,247,167, - 45, 29, 21, 10,203,217,153,233,105, 75,247,173, 24,122, 52,239,120,207,158, 61, 57, 99, 44, 26, 97,132, 17, 69,161, 88,129,229, -234, 90,206,155,225,248,134,148, 50, 44,101,168,142,164, 43,247,191, 75, 78,254,200,125, 64,249,242,229, 45,132, 12, 58, 17, 74, -229,132,240, 28,207, 50,183, 67, 66, 34, 2, 13,125, 56, 33, 68,108,105,105, 57, 86, 36, 18,181,210,104, 52, 46, 12,195, 68,170, -213,234, 75,217,217,217,235, 10, 59, 28,252,191, 68,213,170, 85,251, 93,187,118,205,162, 81,163, 70,106,153, 76,166, 87, 42,149, -130,115,231,206, 73,190,249,230,155,212,183,111,223,126,214, 12, 67,103,103,231, 22, 91,182,108,169,220,182,109, 91, 84,169, 82, - 37,171, 79,159, 62, 34,127,127,127,209,240,225,195,223, 71, 69, 69, 93, 41, 11, 23, 33,196,155, 16,178,139, 16,194,242, 60, 63, - 48,119,134,225, 87, 7, 33,132, 1, 48, 2, 64, 87, 0,174, 0, 66, 0, 28, 3,176,201, 16,111,246, 69,240,245, 0,208, 30,128, - 95,238,161,103, 0,206, 80, 74, 15,127, 65, 24,123, 0,104, 79, 8,169,145,107,161,125,250,181, 56,133, 66, 97, 13, 0,208,233, -116, 79,255, 41,225, 36,132, 12,145,201,100,223, 1,128, 82,169,220, 76, 41,221, 94,230,192,108,244,162, 0,224,189, 44, 8, 0, - 16,248,147, 39, 12,221, 15,124, 95,198,217,196,197, 60, 11, 35, 95,145, 47,136,203,246,253,251,247, 95,252,231,159,127,206,165, -148, 30,255, 59,242,190,131, 67,185,117,191,174,217,228,244,195,216, 97, 75,145,179,130, 67,137,240, 33,164,181,152,101, 59,107, - 56,238,102, 32,112, 16,128,192,202,202,170,159, 88, 44,110,162,209,104, 28, 5, 2, 65,140, 70,163,185,145,150,150,182,151, 82, -170,251,226, 0, 6, 17, 75,109, 54, 28, 8,255,215, 58,108,148,129, 90,100,130, 88,120,210,148,146,110,101, 89,118,133,179,179, -243,136,212,212,212, 76,134, 97, 40,201, 65,110,212,230, 59,107, 38, 60,207, 71, 37, 39, 39,215,254,204, 52,146, 2,152,135,156, - 53,221,214, 80, 90,114,152,138, 9,231, 15, 78, 78, 78,221,210,211,211,179, 89,150,165, 5,194, 71, 0,128, 97, 24,194,243,124, -124, 82, 82,210, 64, 99,213, 94, 60,156,156,156, 24,145, 72, 52,136, 97,152,149,122,189,190,114,120,120,120, 10, 0,216,217,217, -249,197,199,199, 27,215, 2,253,218, 2,171,128, 91,250,102,148,210,235,174,174,229,188,123,118,237,190,120,212,200,209,132,101, - 25, 4,188,124, 41,248,118,224,144, 54, 86, 86, 86,206, 10,181,218, 11,132,240,217, 82,105,128, 78,167,141, 58,184,247, 79, 83, -207,170, 85, 57,142,227,177, 97,227, 31,223,184,186,150,155, 97,136,200, 34,132,120, 56, 56, 56,236,154, 54,109,154, 67,231,206, -157, 89, 7, 7, 7,132,133,133, 89,236,219,183,175,234,111,191,253,214,155, 16, 50, 48,215, 23, 79, 89, 63,228,198, 14, 86, 76, - 27, 83, 25,105,137, 12, 14, 25, 58, 92,142, 85,226, 2,165,244,230,231, 70, 82,118,118,246,184,236,236,236,122,117,234,212,161, - 91,183,110, 37,131, 7, 15,166,132, 16,162, 84, 42,119,224, 51, 93, 56,200,229,242,245,109,219,182,117,119,119,119, 15,121,247, -238, 93,251, 3, 7, 14,156, 25, 52,104,144,171, 92, 46, 15, 6,224, 81, 70,186,237, 73, 73, 73,126, 74,165, 18, 46, 46, 46, 91, - 1,212,250, 27,196, 21, 1,112,216,202,202, 74,181, 96,193,130,205,205,154, 53,115,142,142,142,230,166, 78,157,218,240,233,211, -167,237, 8, 33, 93, 13, 21, 89,132, 16, 75, 0, 27, 20, 10,133,201,212,169, 83,111,180,110,221, 58, 84,161, 80, 72,159, 63,127, - 46,156, 58,117,234, 8, 66, 72, 47, 0,163,202, 82, 8,231,113,218,218,218, 90,204,157, 59,247, 69,131, 6, 13,174,139, 68, 34, -209,235,215,175,133,211,166, 77, 27,243, 37,156,238,238,238,166,115,230,204,121, 88,163, 70,141, 56,169, 84, 42,122,247,238,157, -112,198,140, 25,163, 88,150,237,197,243,252,103,113, 90, 89, 89,153,205,152, 49,227, 81,211,166, 77, 19, 36, 18,137, 56, 48, 48, - 80, 48,125,250,244, 81,101, 9,167,181,181,117,115,107,107,235, 77,177,177,177, 2, 0,112,116,116,172,235,230,230,246, 91,158, - 63,180, 92,225,134, 92, 81,152,161, 82,169,250, 39, 37, 37,125,226,192,214,123, 89, 16,126,156,179,163,223,143,115,114,246,119, -230, 30, 47,109, 31, 24,108,112,222,247,174,156, 83,198,140,153,242,251,128,156,223,156,227,127,228, 6,117,125,101, 66,203, 34, -214, 8, 33, 93, 90,180,104, 49,239,202,149, 43,127, 52,107,214,108,234,238,221,187,237, 34, 34, 34,126, 33,132,148,235,219,183, -239,224,203,151, 47, 47, 73, 72, 72, 56,244,181,242,191, 88, 36,145, 16,134, 64, 38, 53, 49, 51,228,122, 33,195,116,188,211,165, -203,119,155, 95,191,174,249, 91, 80, 80,229, 44, 71,199,122,227,199,143,183,239,222,189, 59, 83,174, 92, 57,188,125,251,214,122, -247,238,221, 94,155, 55,111,238, 70, 8,153, 64, 41,253,240, 37,226, 42, 43, 21,213,212, 26,212,164, 20, 22,127,197, 17, 82, 37, - 90, 60,145, 7,145, 23,197,137, 44, 66,200,170, 46, 93,186, 12, 60,118,236,152, 98,247,238,221,138, 6, 13, 26,192,222,222, 30, -132, 16,112, 28, 7,158,231,193,243,124,238, 90,159,238, 95, 50,131,124,245,205,155, 55, 71,188,125,251, 22,195,135, 15,103, 1, -204, 42, 99,249, 51,169, 91,183,110, 29,142, 28, 57, 34, 59,120,240,160,172, 78,157, 58,112,112,112, 0,128,252,240, 81, 74, 81, -185,114,229,127, 93, 37,237,234,234, 74,197, 98, 49, 88,150, 5,165, 20, 60,207, 67,167,211, 65,163,209, 68,168,213,234,110,241, -241,241, 79, 12,229,178,183,183,103,164, 82,233, 96,153, 76,182,149,101, 89,232,245,250,171,110,110,110, 45, 56,142,131, 68, 34, -185, 10,252,149,127,254, 47, 80, 88,139,252,107, 44, 88, 5, 87,176,102, 56,190,225,168,145,163, 73,159,126,125, 99,223,134,188, -231, 5, 66,113,191,115,231,207,155,120,123,123, 51,234,117,235,160, 79, 72,128,110,226,196, 6,151, 46, 93,210,245,234, 55, 64, - 41,100,201,118,215,202,149, 76,246,239,221,231,112,228,240,161,134, 0, 2, 75,179, 92, 57, 56, 56,236,186,118,237,154,115,229, -202,149,145,154,154,138,176,176, 48,100,101,101,161,119,239,222,194,134, 13, 27, 58,247,236,217,115, 23, 33,164,145,161,150, 44, - 66,136,125, 21, 23,193,169, 95,231,244,246,248,166, 77, 67,185,115, 57, 55,208, 88, 21, 34,222, 5,213, 57,117,237,222,120,119, - 11,230,205,219, 52,218,145, 82, 26, 87,214, 72, 74, 76, 76,252,169, 91,183,110,135,155, 55,111,110, 43,145, 72,224,228,228, 68, - 58,119,238, 28, 31, 29, 29, 61,255, 11, 50, 18,114, 91, 93, 92,193,223,194,203,248, 24, 8, 23, 75, 75, 75, 88, 90, 90, 2,128, -243,151,100,136, 94,189,122,177,225,225,225,223,241, 60,239, 85,240,184,157,157, 93, 85,142,227, 82, 62,124, 8,175,170,212,104, -189, 70,143,157, 49,175, 79,207, 86, 22,119,238,220,225,219,182,109,171,190,113,227,198, 8, 0, 27, 12,124,204,134,234,213,171, -191, 91,189,122,181, 58, 56, 36,180, 82,192,171, 96,200,165, 34,174, 92,185,114,146,192,192, 64,245,236,217,179,179,214,172, 89, -179, 1, 64,175, 50, 4,125,195, 55,223,124,147, 50,107,214,172,248, 55,239, 66, 29,159, 5,190,161, 10,137, 72,103,111,111,199, - 62,122,244, 72,245,203, 47,191,240, 75,150, 44, 41, 51,231,128, 1, 3,162,167, 78,157, 26,154,144,148,234,156,146,154, 65,197, -217,217, 90, 23, 23, 23,193,213,171, 87, 51,127,255,253,119,245,212,169, 83,203,204,217,172, 89,179,216,133, 11, 23,134, 7, 5, -135, 56, 61, 9,120, 13,133, 68,168,115,112,176, 99,159, 60,121,146,189,100,201, 18,237,178,101,203, 12,226,148,203,229, 59, 15, - 28, 56, 32, 56,126, 60,199,104,115,247,238, 93,198,213,213,213,164,224, 53, 74,149, 26, 12, 1, 18, 19, 19, 77,252,253,253,119, - 2,112, 41,142,111,208,160, 65,177,101,201, 43,131,212,203, 12,182, 90,229, 9,171,209,163, 71, 23,231,155,107,128,119, 25, 68, - 86,251,246,237,103,158, 62,125,218,109,247,238,221, 43,247,236,217,163, 1, 0,169, 84,106,179,111,223,190, 37,189,123,247, 70, -239,222,189,103, 3,248,106, 2,139,163,156, 22, 0, 36, 82,137, 36, 40, 40,136,120,122,122,150,232, 8, 89,203,243,143, 54,191, -126, 93,251,123, 79,207, 58,201, 60, 95, 69,244,205, 55,153,147, 38, 77, 74, 76, 79, 79, 71, 88, 88, 24,180, 90, 45, 6, 15, 30, -204, 54,107,214,204,169,119,239,222,107, 9, 33, 61, 40,165, 90, 3,172, 56, 43,156,157,157, 71,164,165,165,101,230, 89,113,188, - 42,153, 10,154,212,208, 75,170, 87,209,137, 69,172, 94,212,105, 34, 79, 46,172, 35, 89,158,149,113, 11, 0, 68,217, 72, 16, 1, - 41, 69,148, 65,203,186,116,233,210,251,216,177, 99,150, 0,112,232,208, 33,100,103,103,163, 66,133, 10, 16,137, 68, 16, 10,133, - 16, 10,133,249,255,203, 82, 54, 17, 66,166, 40, 20,138,246,153,153,153,199, 40,165,107, 1,184, 55,106,212, 8,174,174,174, 0, -208, 48,247,154,129, 44,203,246,229, 56,110, 19,165,244, 88, 9, 92,227,187,116,233,210,250,200,145, 35,166,121,225,212,233,116, -112,117,117,133, 72, 36,130, 88, 44,206, 15,231,191, 17, 98,177, 24, 82,169, 20, 2,129, 0,148,210,188,245, 65,175,233,116,186, -241, 0,222, 91, 90, 90, 50, 41, 41, 41,134, 54,110, 89,129, 64,176,178, 64,218, 86,227, 56,110,187, 94,175, 47,175,213,106,205, -255, 9,239, 91, 80,139,252,175,167, 29, 83, 72, 57, 54,203,121, 65,134,101, 89, 6,239, 67,194,116,205,155,183, 28, 20, 30, 30, -174,168, 87,175, 30, 35, 20, 10,145,117,229, 10, 84, 15, 31, 66,161, 80,160, 91,183,110,194, 27, 55,110,152,153, 41,204,134,135, -190, 15,205, 96, 89, 6,148, 50,165,142,105,176,180,180, 28, 59, 99,198, 12, 7,119,119,119,232,245,250,124, 15,228,122,189, 30, - 17, 17, 17, 80, 40, 20, 24, 56,112,160,157,137,137,201, 88, 3, 51, 77, 69, 15, 87,187, 39,215,206,108,172, 53,105, 84,123,185, -135,201, 69,200, 35, 38, 64,113,232,123,120, 69,159,195,180,174,245,228, 23,214,207,174,233,230,100,245,132, 16, 82,177,172,145, -164, 82,169,110, 5, 4, 4, 12,191,126,253, 58, 15, 0, 87,175, 94,165,175, 94,189, 26,249, 37,173, 78,158,231,145,154,154, 10, -158,231,217,220,253,188,223,255,179,204,208,171, 87, 47, 54, 34, 34, 98,164,151,151,151,199,253,251,247,113,226,196, 9, 92,186, -116, 9,231,207,159,135, 88, 44, 46,223,179,103,207,132,132,164, 84,203,212,212, 52,105, 76,228,187,186,251, 54,109,114,138, 14, - 13,189,243,231,159,127,102, 34,167,219,208,144,180,234,161, 80, 40,100, 43, 87,174,204, 50,181,112,232, 80,175,126,227, 58, 66, -169,153,141, 72,162,176, 77, 75, 75,215, 62,123,246, 44,104,249,242,229, 30, 85,171, 86,181,204,237, 70, 51,136,211,198,198,198, -124,230,204,153, 90, 19, 83,219,198,117,234,213,247, 21, 75,205,172,132, 98, 19,171,134, 13, 27,118, 11, 10, 10, 10,157, 59,119, -174,115,141, 26, 53,236,202,194, 89,185,114,101,211,169, 83,167,170,205,204,173, 90,123,123,121,215,108,224, 95,183, 79,173, 90, -181, 6, 10, 4, 2, 46, 46, 46, 46,120,210,164, 73,206, 77,155, 54,181, 46, 11,167,165,165,165,233,194,133, 11, 53,149, 92,171, -246,232,212,169, 99,115,169,137,133,149, 88,102,106,165, 84, 42,185, 87,175, 94,189, 93,176, 96,129,179,159,159,159,141, 33,156, -217,217,217, 66, 27, 27, 27,248,250,250,194,219,213, 21,105,105,105, 56,114,228, 8,182,111,223,142, 45, 91,182, 96,239,222,189, -168,221,168, 13, 76, 77, 77, 17, 29, 29,141,244,244,116, 97, 81, 60,249,221,116,127, 7, 54,122,209, 63,248,177, 3, 70,143, 30, - 29, 85,130,184,194,232,209,163,163,198, 76,249,125, 64, 94, 23, 98, 73,150,171,150, 45, 91, 62, 63,115,230,204,187,221,187,119, -195,219,219, 27,109,219,182, 21, 3,192,216,177, 99,197,189,123,247,198,129, 3, 7,112,232,208,161, 64, 15, 15,143,219,132,144, - 46,134, 4,115,224,192,129,141,122,245,234,117,179, 87,175, 94, 79,251,244,233,179,105,228,200,145, 78, 5,207,199, 68, 71, 62, -210,104, 52,240,171, 89,199,100,225,214,251,253, 75,227,123, 5,236,222, 20, 20,180,125,233,203,151, 31,102,123,123, 91, 84, 8, - 13,181,218,177, 98,133, 77,222,226,217, 58,157, 14, 17, 17, 17,176,180,180, 68,255,254,253,109, 36, 18,201, 64, 3,242,207,170, - 46, 93,186, 12, 9, 15, 15, 87,108,222,188,217,241,233,211,167, 78, 49, 49, 49,142,151, 47,157,183,253,113,242, 88, 83,115,133, - 88, 28,157,144, 35, 80, 67,163, 33, 15,122,143, 70,148,194,162, 96,183,225, 71,173, 50, 23,151, 17,199,142, 29,115, 40, 80, 46, -127, 36,168, 10,255, 7, 67, 25, 43, 31,178,173, 98, 23, 18,111,225, 77,126, 40, 33,156, 29, 14, 30, 60,184, 60, 52, 52,180,105, -199,142, 29,215, 16, 66, 42, 20,113,141,109,243,230,205, 55,191,126,253,186,109,151, 46, 93,142, 18, 66,218, 20,219,122,116,113, -233,118,236,216, 49,235,188,125, 27, 27, 27, 72,165,210, 79,196,149, 72, 36, 2,195,252,251, 60, 15,177, 44, 11,129, 64,144,159, - 14, 2,129, 0, 44,203, 94, 96, 24, 38,130, 97, 24,173,161,226, 42, 87,188,176, 28,199,245,227,121, 62,147, 16, 2,161, 80, 8, -137, 68,210, 81, 44, 22,251, 10,133,194,127,196,251, 22,212, 34,255, 26,129,149,235, 48,242, 26, 0, 80, 66,178,158, 7, 4, 8, - 89,177,120,192,159,123,246, 72, 68, 34, 17, 62,124,248,128,192,192, 64,100, 95,190, 12,229,157, 59,136,139,139, 67,102,102, 38, -236,237,237,177,113,235, 86,185,134,163, 67, 95,191,121,195, 82,230,175,241, 4,197, 77,213,148, 72, 36,173,186,119,239, 94,172, - 16,139,142,142, 70,251,246,237,133, 44,203,182, 42, 34,131, 92, 42,148, 24,196,201,150,156,188,124,120,161,163,163, 56, 16,120, - 59, 9,200,120, 2, 80, 53,160,215, 0, 81, 47,128,211,243, 81, 33, 51,136,156, 95, 56,200,193,217, 68,112,146, 20,106,138, 25, - 48, 77,213,213,211,211,115,203,128, 1, 3, 24, 0,104,209,162, 5,241,244,244,220, 68, 8,113, 45, 33, 35, 95, 42,165,114,188, -151,146,146,130,222,189,123, 91,187,185,185, 93,234,221,187,183,117,222,241,207,229,204,235, 57,242,241,241, 73,146,201,100,123, - 9, 33, 18, 3, 62,184,124,206,240,240,240,239, 60, 61, 61,171,108,222,188,153,101, 89, 22,155, 55,111,198,254,253,251,113,235, -214, 45, 36, 37, 37, 41, 38, 77,154,100,126,234,210,189,115,183,111, 61, 56,177, 98,214, 20,235,110, 45,155,185, 90,166, 37,164, - 59, 59, 59,183, 66,206,152, 44, 67,194,217,126,220,184,113, 23,158,190, 10,177, 99,133, 34,145, 88, 40,144,217,218, 88, 84,112, -176,181,172,226,108,109, 89,197, 84, 44,180, 72, 79, 79,127,127,224,192,129, 76,228,140,207, 50,136,115,206,156, 57,207,130, 66, - 34,172, 25,161, 64, 32, 18,136,196, 22,230, 10,235,206, 29,219, 52, 7, 0, 25, 75, 36,233,233,233, 17, 59,119,238,204, 42, 11, -231,236,217,179,239,198, 36,164,216,137,164, 82, 86, 34, 17,230,199,165,165,153,194, 94, 46,145,200,178,179,179, 63,108,217,178, - 37,173, 44,156,211,167, 79,127,248, 50,248,131, 13, 97,192, 50, 32, 66, 75, 75, 83, 59, 91, 11, 83, 7, 59, 51,133,131,148,129, - 52, 61, 61, 61,108,231,206,157,233,134,112,106,181, 90, 97,124,124, 60,130,130,130, 80,174, 78, 29, 92,186,116, 9,229,203,151, - 71,239,222,189,209,183,111, 95,200,100, 50,180,240,175,134, 25, 51,102,224,221,187,119,208,235,245,226, 50,230, 37, 56, 57, 57, - 93, 43,238, 92,222, 56,170,226, 56,189, 43,147,124,113,101, 8,119, 81,215, 21,230,108,223,190,253,204,203,151, 47,187,237,218, -181,171,243,192,129, 3,111,237,218,181, 11,245,235,215,199,171, 87,175, 80,169, 82, 37,236,216,177, 3,125,251,246,189,181,118, -237,218,206,143, 31, 63,246,171, 92,185,242,140,210, 56,251,244,233, 51,166, 70,141, 26, 87, 98, 99, 99,253,147,147,147,125,143, - 28, 57, 50,180, 91,183,110,239,251,245,235,215, 50,223,130,165,211,237, 57,125,226, 48, 58,116,238,142,170, 62,190, 27, 6,207, -216, 93,173, 36, 78, 74, 41,125, 9,108,218, 30, 19,147,176, 71,165,202,238, 45, 20,154,152,220,191,111,117,232,143, 63,108, 10, -174, 4, 16, 21, 21,133, 78,157, 58, 9, 69, 34, 81,227,146,194, 73, 8, 89,214,181,107,215,222, 71,142, 28,201,183, 54,221,185, -115, 7, 47, 94,188, 64, 88, 88, 24, 82, 83, 83,209,114,100, 38, 70, 47,201,225, 30,189,132,162,205, 88, 42, 47,137, 51, 51, 51, - 83,121,244,232, 81,244,234,213, 11, 35, 70,140, 64,229,202,149,243, 69, 86, 97,113,117,253,193, 69,136,125,147,173, 26,109,194, -144,214,199, 97, 43,119,193,244, 98,194, 41,106,213,170,213,198,206,157, 59,131,227, 56,168, 84, 42, 30, 64,114, 81,186,161, 82, -165, 74,194,114,229,202,225,231,159,127,134,133,133,197,106, 66, 8, 91, 20,103, 86, 86,150,250,204,153, 51, 24, 56,112, 32, 38, - 76,152,128, 42, 85,170,228,135,115,231,238,253, 54,125,135,142,242,168,213,168,137,159,119,173,250,213, 51,212,108, 29,145,137, -213,119,164, 8,115,219,223,225, 58,224,255, 7,103, 94,183, 96,222, 70, 8, 1,203,178, 75, 89,150,237,201, 48, 12, 45, 11, 39, -207,243,122,189, 94,127, 95,175,215, 15,206, 19, 89, 44,203,130,101,217, 50,139,211,191,203, 21, 67, 65, 45,242,175,233, 34, 44, -184,228,137,142,199,201, 1,131,134,118,186,116,249,178,137, 88, 44, 70,104,104, 40,226,226,226,176,127,239, 94,238,160,157, 93, -182, 80, 40,164,253,183,111, 55, 29,246,221,119, 68, 40, 20,194,211,211, 19, 61,123,246,148,245,232,221, 47,222, 86, 40,220,111, -128, 66,117,204,235, 63, 31, 58,116, 40, 86,173, 90,245,209,249, 31,127,252, 17,123,247,238, 5, 33,196,193, 16,195,203,248,249, - 93, 93, 44, 43, 91,196,209, 39, 59,133,132, 53,177, 2,107, 2, 48, 34, 64,202,230,136, 44,134,133,250,241,149,100,166,254,129, -244,238,141,179,157,215,156,219,216, 11,192, 1, 67, 35,201,201,201,105,246,149, 43, 87,108, 39, 77,154, 68,211,211,211, 73, 76, - 76, 12, 93,188,120,177,237,152, 49, 99,102, 3, 24,244, 57, 17, 31, 29, 29,189,176, 67,135, 14,109, 79,159, 62,109, 63,104,208, - 32,115, 0,232,208,161, 67, 92,116,116,244,194, 47, 73, 80,145, 72,196,190,124,249,210,106,229,202,149,125, 39, 79,158,236,227, -235,235,235,144,154,154, 26, 22, 21, 21,213,179, 52,139, 27,207,243, 94,155, 55,111, 6,203,230,148,115, 12,195, 64, 44, 22, 67, - 44, 22,195,204,204, 44, 37, 36, 36,132,175,104, 47, 19,103,197,197,164, 89, 10, 44,133,196,209,193,218,194,193,177, 89, 82, 82, -210,125, 0,134,154,151,253,218,181,107,247,252,206,211,183,220,168, 65,205,171,152,136, 24,161,169, 76,202,202,196, 66, 66, 40, -229,180, 58,141,255,250,157, 87,183,121,120,120,120, 27,106, 34, 38,132,212,168, 95,191,254,229,167,175, 62,224,233,139,119,145, -182, 86, 38,214,237, 90, 52,172,154,119,190,122,221,250,125, 11, 92,158,106,208,135, 33, 16,248,213,169, 83, 39, 50, 46, 57, 11, -118, 86,230, 31, 9,105, 75, 27,187, 86, 0,144,149,150,182,190, 92,185,114,158, 2,129,160,146,161,225,108,220,184,113,204,227, -192,112, 56,216, 90, 89,229, 30,254,104, 76, 79, 98, 76,204, 6,119,119,119, 79, 67, 44,173, 26,141, 70,114,236,216, 49, 60,126, -252, 24, 11,125,124,240, 99,197,138,176,181,181,197,229,203,151, 65, 41,133, 66,161, 64,106,106, 42, 14, 28, 56,128,150, 45, 91, - 66,163,209,200,139, 19, 74,121,227,171,138, 19, 66,209,209,209,127, 75,139,178, 48,183,247,178, 32, 4,150,176, 82,230,153, 51, -103,118,239,222,189,123,137,183,183, 55,126,248,225,135, 70,171, 87,175,190,229,235,235,219,168, 69,139, 22,184,114,229, 10,134, - 14, 29,122,107,237,218,181,141, 70,141, 26,133, 13, 27, 54,224,253,251,247, 91, 75,122,126,159, 62,125,230, 13, 31, 62,124,214, -186,117,235,144,215,130,239,218,181,107, 94,217,184,173, 87,175, 94, 73,121,215, 30,220, 18,121,167,178,171,123,131, 49,227,167, -136,199,142, 26, 56, 13, 64,223, 82, 42, 10,234,228,228,148,161,111,210, 36,249,192,221,187,232, 35, 18,153,236,121,250, 20, 39, - 85, 42, 52,238,214, 45, 17, 0,166, 79,159,142, 93,187,118, 1,128,125, 73, 92, 46, 46, 46, 35,142, 30, 61,154,159, 87,172,173, -173, 33, 22,139,115, 68,144, 64, 8,150, 99,113,105,131, 28, 33,225,217, 24,189,132,226,143,233, 4,149,156,144, 85,163,106,137, -249, 17, 13, 27, 54, 68,122,122, 58, 88,150,133,169,169, 41,172,172,172, 62, 18, 87,233,153,169, 88,190,117, 30,226,171, 94, 67, -235, 19, 96, 8, 11, 60, 91, 4,100,188, 45,118, 73,167, 78, 43, 87,174,116, 84,169, 84,184,122,245, 42, 46, 95,190,252, 27,165, - 52,179,176,222,161,148,198,178, 44,187,125,217,178,101, 67,157,156,156, 48,122,244,104,143,197,139, 23,119, 5, 62,229, 37,132, -160,118,237,218, 80,169, 84, 16, 10,133, 48, 51, 51,131, 70,171, 23,246, 26, 48,194,181,130,155,175,100,241,138,197,140,189,149, - 0, 2,198, 10,193, 31,148,230,107, 86,253,188,230,222,205, 27,195,136,137, 77, 55,154,157, 24,243,191, 94, 73,115, 28, 7,157, - 78,151,183,238,170,107,158, 40, 18, 8, 4, 91, 88,150, 77,181,177,177, 57,150,152,152,104,144,208,226,121,158,227, 56, 46, 83, -167,211,165,232,116,186, 44, 66,136,130,101, 89,112, 28, 7,142,251,103, 76,136, 45,109,249,181,255, 57,129, 85,120,185,147,240, -240,240, 84, 43, 43, 43,231,170, 85,171, 50, 26,141, 38,167,235,225,208, 33,110,203,182,109,167, 85, 42,213,120, 0,162,117,191, -255,190,193,217,197,165,249,128,129, 3,137, 78,167, 67,135, 14, 29,196,167, 78,157,178,126, 23, 23,151, 97, 64, 4,126,244,188, -193,131, 7, 99,245,234,213, 0,128,113,227,198,229,155,208,137, 1,157,254, 10,115,180,111,219,177,182, 89,132,252, 55, 51,109, - 3, 93,102,197,119,166,247,228,153,178,218, 96,196, 2, 72, 89,240, 90,157, 62, 56,190,219,163,119,193, 94,222,178,228,164, 74, -173,124,154, 98,203,197, 93,237,203, 34,176, 76, 76, 76,234,154,154,154,226,209,163, 71,201,181,107,215, 78,165,148,154, 47, 92, -184,208,198,196,196,164,238, 23,168,244, 80, 66, 72,147,134, 13, 27,142,101, 24,166, 21,207,243,151,226,226,226,214, 81, 74, 67, - 13,204,132,163, 1,204, 69,129,113, 38, 26,141, 6, 12,195,128, 82,138, 62,125,250, 96,250,244,233,222, 47, 94,188,192,149, 43, - 87,172, 90,181,106,117,143, 16,146, 10, 96, 24,165,180, 88, 43, 89, 82, 82, 18,254,248,227, 15,176, 44, 11, 11, 11, 11,152,154, -154, 66, 42,149,162, 81,163, 70,177, 75,151, 46,245, 58,124,248,112,118,106,124, 60,145,101,164,169,137,181,181, 20, 78,229,219, - 13,238,214, 61, 0, 57,179, 9, 13,130, 92, 46, 55, 17, 67,157,193,112, 42,102,249,188,245, 2, 19,145,136, 72, 69, 2, 72,248, -108,118,198,210,159,169,148, 80, 97,174,117,149, 26,202, 41,149, 74, 69,114, 49, 85, 11, 37,140,206,132,161, 95,165,159, 85, 44, - 22,139, 36,194, 44,101,177, 98,150, 33, 44,203,178,146,178,112,202,100, 50,145, 66,204,169,139,125, 15, 6, 44,195, 48,197,114, -246,242, 33,244,224,216,252, 46,189,252,176,233,245,122,212,173, 91, 23,251,142, 95,197,153,203,119,144,248,225, 57,198,143, 30, - 10,119,119,119,156, 63,127,254,139,226, 33, 58, 58,186, 72,145, 85, 98,215, 98,238,184,171,146,186, 5, 63,226,158, 99, 94,234, -172, 68, 66, 72,151,198,141, 27,143,217,179,103,143,166, 93,187,118,226, 62,125,250,192,215,215,183,209,144, 33, 67, 0, 0,173, - 90,181,194,234,213,171, 27, 13, 25, 50, 4,251,247,239,199,145, 35, 71,212,205,154, 53,155, 74, 8,137,162,148,158, 41,166,194, -233,180,113,227,198,194,150, 65,232,245,122,232,116, 58, 71,189, 94,239,152, 91, 22, 97,205,154,181,137, 23,206,159,194,212, 25, -243, 97,103,235, 80,195,192,238, 29, 50,120,202,148,196, 29, 43, 86, 96,197,254,253,152, 82,169,146,201,174,192, 64, 92, 80,169, -112,224,202,149,196,220,231,148, 58,190, 41, 43, 43, 75,121,230,204, 25,179, 3, 7, 14,192,194,194, 2, 85,170, 84,201, 23, 67, - 12, 43, 3, 43,178, 68, 85,159,186, 0, 30, 0, 0, 42, 57, 33,203,179, 50,110, 17,130, 84,202, 64, 93, 66,126,132,131,131, 3, - 4, 2, 1,158,190,126, 0,211, 84, 51,212,242,169, 7,161, 80,136,140,172, 52,140, 89,209, 19,238, 63, 39,160,154, 39,160,140, - 3,238, 79,130, 46,246, 14, 86,102, 71, 96,125, 49,148, 53,203,151, 47, 15,181, 90,141,205,155, 55,211,220, 50,170,184,202,126, -230,175,191,254, 58,104,206,156, 57,108,157, 58,117, 0,160, 70, 81, 2, 43,183,204,128,179,179,115,190,240,235, 51,104,148,235, -200, 73,163,100,221,218, 52,135, 64, 96,131,212, 44, 29,146, 50,116,176,180, 81, 96,234,164, 94,210, 75,181,157,235,108, 92,251, -231, 9, 66, 72, 29, 90,208,100,248, 63, 8,173, 86, 11,158,231, 79, 51, 12, 51,139,101,217,159, 5, 2, 65,135,220, 83, 25, 12, -195,196,179, 44, 75,202, 82, 86,242, 60, 63, 64,175,215,175,212,104, 52,102,121, 22, 49,142,227,160,209,252,223, 79,220,255,210, - 53,142,255,177, 22,172, 79,186,241,116,186,170,234, 13, 27,144,117,233, 18,196, 23, 46,224,128,147, 83,166, 74,165,154, 76, 41, -141,200, 45,236,126,216,190, 99,199,237,206,119,239,154,105,130,130,224,250,226, 5,132, 22, 22, 53,202, 26,128,109,219,182, 33, - 61, 61, 29,105,105,105, 0,128,223,126,251, 13,233,233,233,121, 3,249, 74,127, 1, 17, 26, 57,216, 85, 66, 44,130,193, 11, 24, - 69, 88,213,236,250, 10,149,105,180,115,184,125, 86, 26,227,140,160, 15,245,228,202, 36, 77,125,194,106,160, 74,204,134,115,195, - 42, 16, 64,208,168, 44, 97,204, 51,157, 10, 4,130,228, 55,111,222,116,242,240,240, 56, 9,192,230, 75,251,251, 41,165,111, 1, -140,255,156,123, 89,150,157,251,254,253,123,187,173, 91,183,142, 93,184,112, 33, 45, 40,176,242,254,231, 13,138, 52, 55, 55,135, - 80, 40,180,191,115,231,142,125,189,122,245,214,231, 22,100,197,137, 73,216,219,219, 67, 40, 20,194,220,220, 28, 89,233, 41,242, - 63, 22,207,106,102, 98,105,111, 53,101,202, 20,102,240,224,193,239,214,175, 95, 95,222,161,106, 85,207,231,207,159,127,232,220, -179,215,227, 51,103,206, 0,192, 38, 3,131,254,236,197,139, 23, 98,119,183,138, 2, 94,167,228,229, 34, 64,250,108, 13, 47, 54, -117,128,148,101, 33, 32,160, 50, 19,185,221,219,176,176,104, 0,241, 6,198,227,211,224,224, 96,161,139,147,189, 32, 35, 75,149, - 42, 23,240,226,247, 15, 31,188,170, 92,167,174, 23, 0,168, 30,222, 57, 42,169,234, 99,250, 62, 62,193,204,213,213, 53,204, 16, - 78,189, 94,255, 44, 52, 52, 84,228,236,236, 44, 12, 14,126,251,167,181,153,169,147,149,189,125, 51, 0,208, 36, 39,220, 32, 74, - 85,180, 80, 40,116,142,142,141, 77,208,235,245,209,134,134,243,205,155, 55, 34, 23, 39,123,193,201,211,103,246, 57,200, 77, 28, - 45,100, 18,115, 41, 3, 34,165,124,154, 88,175,143,149,153,200,157,222,135,135, 39, 82, 74, 35,139,227,249,131, 31, 59, 32, 39, - 15, 76,217, 82,240,248,173, 91,183,112,245,209,123,152,179, 28,132,186, 44,220, 59,114, 0,221,199, 77, 44,245, 91, 10,252,201, - 19, 80, 47,219,235, 93,121,240, 71,194, 41,167, 11,208,177, 72, 33, 84,170,192, 42, 13, 27,189,174, 21, 18, 89,136,142, 46,185, -112,237,223,191,255,252,221,187,119,231, 79,226,120,245,234, 21, 90,180,104, 1, 0,152, 63,127, 62,218,182,109,139,122,245,234, -225,213,171, 87,112,119,119,199,149, 43, 87, 36, 44,203, 74, 6, 12, 24,176, 24,192,153,210,130,180,105,211, 38, 12, 29, 58,180, -168, 1,211,239, 0,168,136,165,103,230,244,165, 59,109,146,147, 18, 17,159, 16,251,180, 12, 45,114, 12,158, 50, 37,113,163, 70, -131, 61,247,239, 99,160, 92,110,178,227,237, 91,116,168, 87, 15,213, 90,180, 72, 52,164,172, 43,202,138, 99,109,109, 13,145, 72, - 4, 86,232, 4,129,216, 15,140, 72,132,154,141,253,176, 98,178, 60,123,208, 55, 88, 75, 8, 82, 37, 98, 60, 17,153, 32,182, 56, - 78,189, 94, 15,161, 80,136, 3,231,118,224,185,197,159, 64, 6,112,251, 73, 23, 76, 28, 58, 19, 63,173, 30, 1,143,197, 9, 48, -247, 0,226,239, 1, 15, 38, 49,124, 90, 40, 63, 92,157,128,179,148,210,164, 98, 4,155,151, 76, 38, 67, 86, 86, 22,130,131,131, - 63, 80, 74,211, 75,248, 30,226, 90,181,106, 21,207,178,172,163,179,179, 51, 0,148, 47,174, 65,206,243,124,254, 56,171, 93,123, - 14,218,212,104,226, 42,109,221,200, 27, 59, 79, 46,194,247,189,214, 66,200, 18,112,156, 22, 43, 87,119, 4,167,206, 68,175,206, - 35, 72,211, 86,238,126,151, 78,106,134, 3,216,252,191, 92, 73,107, 52,154,227, 90,173,118, 34, 33, 36,131,101,217,241, 66,161, -208,158, 97, 24,119,142,227, 6, 18, 66, 94,136, 68,162,138,142,142,142,201, 49, 49, 49,105,165,113, 37, 37, 37, 81, 0,219,114, - 55, 35,254,102, 48,185, 25,184, 41, 33,132, 18, 66,154,230,171, 92, 74,121,125,114, 50,168, 58,167,241, 35, 20, 10, 41,128,130, - 51,148, 76, 44, 44, 44,136,208,197, 5, 68,146,211,224,166,192, 87,179, 49,234,116,134,185,134,225, 57,176, 32, 90,208, 2, 2, - 62, 75, 74,176,200,166, 37,198,139,103, 35, 86,108, 81,240,139, 6,244, 20, 28,120,182,140,193,161,153,153,153,208,235,245,150, -110,110,110,167,245,122,189,101, 94, 23,192,255,161,217, 56,132,101, 89,140, 29, 59, 22,200,237, 74,211,104, 52,136,141,141,133, - 90,173,134, 70,163,193,251,247,239,145,150,150, 6,141, 70,131,151, 47, 95,162,114,229,202, 96, 89,214,177,148,214, 13,108,109, -109,225,232,232, 8,117, 86,186,252,240,166,213, 29,150,205,159,110,211,207,141, 50, 91,215,254,202,187,184,184, 36,249,248,248, - 56, 72, 36, 18,109,173, 90,181,212, 39, 79,158,188, 0,160,123, 25,252, 96,157, 89,176, 96, 65,189,122,245,234, 85,180, 80,200, -181, 18, 49, 11,137, 62,139, 74,212, 73, 84,160, 76,164, 21, 92, 42,106, 33, 87,212,237,211,167,143,216,144, 74, 49,143,243,167, -159,126,170,226,229,229,101, 99, 97, 38, 79, 23, 48,136, 18,113, 92, 84,202,163, 59, 23, 1, 64,100, 99,167,132, 92, 81, 55,119, - 12,157,193,156, 83,167, 78,245,113,118,118,182,102, 24,146,170,215,106, 63,228, 23,248, 42,101, 28, 43,145,102, 65, 34,109, 60, -108,216, 48, 97, 25, 57,189,170, 87,175,110,109,105,110,150, 42,100, 72,184,136,211, 71,200, 40, 23, 41,214,105, 19, 36,118,246, -153,144, 43, 26,246,235,215, 79, 80, 28,103,158,245,170,176,101, 72, 32, 16, 32, 42, 42, 10,217,209,207, 33,138, 10,130,159, 66, -136,250, 14, 54,144,203,229,165, 55, 86, 70,190, 34, 24,249,138, 4,190,167, 36,240, 61, 37, 5,247, 63,177, 54, 45, 72,195, 71, -215, 21,131,194,227,179, 62, 17, 87,133,238,205, 21, 89, 37,126, 79,127,254,249,231,140,230,205,155,199,183,109,219, 86,115,250, -244,105, 16, 66,112,229,202, 21, 68, 69, 69,161,109,219,182,160,148,226,222,189, 28,227,236,211,167, 79,209,170, 85, 43, 77,147, - 38, 77,162,254,252,243,207,185,134, 36,206,208,161, 67,161,211,233,144,153,153,137,228,228,100,156, 58,117, 10,126,126,126,212, -196,196,164, 59, 91,174,205,162, 94,195,103, 52,240,173, 94, 3,235,215,174,208,136, 5,194,165,101,236,246,192,160,201,147, 19, -211,106,214, 76,222,149,149,149, 61,216,204,204,196, 45, 34,194,234,209,249,243, 54, 90,173,214, 32,142, 60, 43,142,139,139, 75, -190,184, 18,137, 68, 16,136,109,193,202,171, 65,108,221, 22, 38, 14,221,113,245,137, 68,109, 46,199, 81, 83, 5,206,201, 45,240, -162, 4, 63, 88, 68,175,215, 67, 36, 18,225,218,227,179,240,155, 9,248,205, 4,162,235, 30, 71,223,137,237, 96, 51,254, 13,204, - 61,128,216,155, 64,234, 10, 63,232,222,155,167,171, 19,112,160, 56,113, 5, 0,106,181, 90,197,113, 28, 8, 33, 16,137, 68,226, - 2,167,110, 95,187,118, 13,151, 47, 95, 6,128,224,188,131, 41, 41, 41,148, 97, 24,200,229,114, 0,144,151,212, 77,150, 55, 30, -236,218,189, 27,214,125,123,116, 36,119,158, 93, 68, 67,191,126, 72,202,212, 34, 46, 77,139,212,108,192,167,206, 44,248,182, 58, -138,231,239, 51, 80,163,186, 47,203,138,229,131,240, 63, 14,141, 70, 51, 82,173, 86, 39,168, 84,170, 12,149, 74,149,152,157,157, - 61, 76,169, 84,118,210,235,245,183, 4, 2,129,167, 84, 42,125,108, 98, 98,114,188,124,249,242, 12, 0, 56, 59, 59, 51, 78, 78, - 78, 59,254, 23,223,181, 40, 45,242, 63, 47,176, 0, 92, 43, 60,176, 76, 47,145,188,212,143, 25, 3,139, 19, 39, 32, 12, 14,198, -144, 65,131,204, 76, 76, 76,214, 18, 66,106, 17, 66, 26, 42, 20,138,245,243,230,205, 51,181, 89,178, 4, 78, 55,110, 32,236,212, - 41,232,132,194,135,159, 19, 8,165, 82, 9,129, 64,144,111,121,145,203,229,121,253,193,165, 10, 24, 78,143,187, 81,113, 65, 16, -163, 34,120,208,204,115,233, 77,238,247, 11,153,101,119, 42,189,178,251,219, 44,145,251, 2,219,250,118,107, 43, 52,186,159, 69, - 4,153, 98, 11, 41,194,195, 35,192,129,191, 91,150,240,169, 84,170,180,172,172, 44,212,168, 81,195,250,209,163, 71,110,126,126, -126, 86,185,199, 31,124, 97,102,242,119,118,118, 62,232,226,226, 18,234,236,236,124,144, 16,226, 95,134,219,183,222,188,121, 19, - 44,203, 98,222,188,121,200,200,200,128, 86,171, 69, 82, 82, 18,194,195,195,161,209,104, 16, 25, 25,137,215,175, 95, 67,163,209, - 32, 44, 44, 12,106,181,218, 32, 97,107,106,106,138,212,164,120,249,254, 63,126,237,176,104,254,108, 89,218,219,199,136,140,142, - 3,207, 41,163,151, 47, 95,254,218,221,221,253,178, 86,171, 45,199,243,124, 83, 74,233, 70, 67,133,102,174,163,210, 91,158,158, -158,245,150, 47, 95,222,116,246,210, 45, 18, 83, 54,131,138, 77, 37,188,216, 84, 76,197,158,245, 49,124,238, 58,233,210,197, 11, -159, 62,123,246, 44,217, 16,167,155,121,156,245,235,215,247,137,141,141,109,228,231,231, 87,195,161,138,135, 84,226,236,148, 40, -118,170,144, 68,149,217,151,152,242,149, 58,173, 93,187,246,209,189,123,247,226,202,194,233,236,236, 92,237,247,223,127,175, 83, -190,124,249, 58, 82,115,115, 89,102,106,234, 38,117,106,242, 22,161,141,131,140,177,182,233,181,107,215,174,187, 23, 46, 92, 72, - 44, 11,167,183,183,183,239,226,197,139,107,213,172, 89,179,150,163, 71, 85,169,204,217, 37, 65,228, 92, 33, 94, 86,189,182,148, -169,224,218,115,245,234,213,247, 31, 62,124,152, 96, 8,167, 64, 32,224, 24,134,129, 80, 40,132, 92, 46,199,245,235,215,209,175, -123, 59, 56,216,153,193,163,106, 85, 52, 27, 57, 14,167, 79,159,134, 88, 44, 6,195, 48, 96, 24,230,139, 29, 90, 26, 34,132, 74, - 67,113,226,171, 52,110, 74,233,153,107,215,174,253, 50,120,240, 96,113,251,246,237,113,255,254,125, 12, 29, 58,244,214,145, 35, - 71, 0, 0,247,239,223,199,196,137, 19,111, 93,190,124, 25,163, 70,141, 66,139, 22, 45,196, 55,111,222, 92,111,136,243, 81,189, - 94,143,109,219,182, 65,175,215, 67,161, 80,192,202,202, 10, 29, 59,118, 68, 64, 64,192,168,237,219,183, 7,177, 66,225,183, 29, - 58,247,192,233, 19, 71,240,250,101,192,168, 29,139, 7,148,217,153, 47,195, 48,104, 63,104, 80, 98,162,143, 79,242,142,244,244, -236, 97,150,150, 38,158,177,177, 86, 87, 15, 30,180, 49, 32,255, 16,142,227,242, 69, 85,158,216,200,159, 89, 38,182,133, 64,238, - 11,129,105, 29, 60,127, 43,210, 9,235,210, 39,162,218,244, 85, 73, 78, 70, 9, 33,224,121, 30, 66,161, 16, 53,171, 52,196,219, -221, 57,199,171, 12, 0,106,237, 76,130, 93,131,156,110,193, 15,203,237,240,227,176,249, 16,178, 34, 93,105,110,115,120,158,127, -153,148,148, 4,129, 64, 0, 15, 15, 15, 7, 66, 72,158, 85,106,101,243,230,205, 23, 12, 28, 56,112, 25,128, 31,114,159, 95,161, - 87,175, 94, 78, 90,173, 22, 79,159, 62, 5,128,199, 37,164,125,254,172,193,228,244, 48, 73, 37,167,106,240,243, 26, 9, 75,203, -234,136, 74,214, 32, 58, 89,131, 45,127,116,197,227,155, 63,227,209,133,129,248, 16, 27, 11,153, 67, 55,112,122,181,239,255,122, - 37,157,144, 3,101, 66, 66,130, 94,171,213, 42, 53, 26,205, 91,173, 86,251,144, 82,234, 42, 20, 10, 47, 74,165, 82,115, 19, 19, -147, 38,114,185,124,187,135,135,135, 64, 38,147,109,151, 72, 36, 69, 10, 75,115,115,115, 98,110,110,206,154,155,155, 11,138,218, -242,174,115,117,117,165, 94, 94, 94,212,215,215,151,250,248,248,208,170, 85,171,210,138, 21, 43,166, 59, 58, 58,142,180,182,182, -102,255,198,215,189,246,111, 26,228, 94,216, 77, 3, 0,192,205,202,202, 84,167,211, 70, 94,188,120, 81,203, 48, 12, 76, 76, 76, - 48,120,232, 80,230,143,223,127,111,220,207,223,255,202,136,214,173,207, 94,185,124,185,102,189,122,245, 64, 41, 5,195, 48,216, -191,127,191, 82,165, 82, 38,149, 47, 95,222,194,144,194,162,224,135,147,158,158,158, 47,176,210,210,210, 96,111,111,111,112, 23, - 97, 86, 58, 46, 93, 62,247, 56,133,114,223,135,183,127,187, 74,187, 52,182,107,189, 84,158, 19,164,113, 58,164, 41, 41, 50, 84, - 16,220,103,172,234, 13,118,239,166,125,223,170,222,235,235, 65,119,146, 84,156,170, 76,179, 31,226,227,227,103,246,234,213, 43, -201,209,209,145,152,153,153,193,217,217,153,233,210,165, 75, 98, 68, 68,196,130,207,141,120, 27, 27,155,190,205,155, 55, 63, 25, - 21, 21,213,243,250,245,235, 21,111,220,184,209,179,121,243,230, 39,109,108,108,250, 26, 72,113, 96,198,140, 25, 89, 98,177, 24, -245,235,215, 71, 70, 70, 6, 52, 26, 77,169, 91,169, 22, 65,158,135, 84, 42,197,193, 45,171,219, 44,154, 63, 91,150,244,234, 46, -158,223,186,136,115,161,234,236,185, 75,215,220,147, 74,165,159,245,190,238,118,242,106,213,156, 76, 95, 77, 28,218, 39,122,250, -180,105,166, 47, 94,188,144,141,159,240, 3,194,226, 82,169,184,253, 74, 22, 77,103, 51,207,178,108, 72,135,111, 90,224,151,197, -115,154, 2, 24, 85,106, 69,109, 39,175,230,235,100, 26, 56,101, 68,191,144, 9, 19, 38,200,150, 46, 93,170,170, 91,183,174, 46, - 38, 38,198, 92, 97, 99, 87, 91,104,109,227, 31, 26, 27,103, 81,187, 78,157,183, 19, 38, 76, 80,149,149,115,206,156, 57, 38,183, -111,223, 22,181,108,217,146,198,199,199, 91,138,100,178, 6, 66, 83,243,166,209,137,137, 86,173, 90,181,122, 59,100,200, 16,238, -115, 56,223,188,121, 35,170, 93,187, 54,141,137,137,177, 52,177,182,173, 47,178,182,109,242, 62, 38,214,178, 70,205,154,193, 19, - 39, 78,212,149,196,217,107,221, 95,226, 68,161, 80,196,248,249,249, 97,238,220,185, 88,184,112, 33,122,247,238,141,208,176, 80, - 52, 29, 50, 2,149, 7,143,194,169,123, 15, 16, 29, 29,141,153, 51,103,194,221,221, 29, 66,161, 48,248,107, 20, 26,134,136,172, -226,186, 15,189, 43,147,107, 37,141,179, 42,141,187,103,207,158, 99,242, 92, 49, 12, 27, 54,236,214,218,181,107, 27, 13, 27, 54, - 12, 0, 80,191,126,125,252,252,243,207,141,102,205,154,117,107,209,162, 69,104,217,178, 37, 92, 93, 93, 75,245, 39,198,113, 28, -244,122, 61,250,245,235, 7,189, 94,143,132,132, 4,188,121,243, 6,155, 54,109, 2,165, 84, 10, 0,142, 78, 46,181,197, 98, 49, -158, 61,121,152, 61,123, 88,189, 63,203,208,136, 34, 5,191,173,204,204, 76,244, 28, 61, 58, 49,178, 74,149,228, 13,137,137,217, -195, 45, 45, 77, 42,125,248, 96,101,170,209, 56,151, 52,230,180,160, 24, 42,232,150,160,240,150, 55, 65,197, 80,228,113,142,234, - 55, 17,210,115,141,243, 69,150,162, 2,192,235,129,199,211,132, 24,219,109, 46,252,170,213,128,129, 51,214,238,221,191,127, 31, - 98,177, 24, 19, 39, 78, 36, 44,203,174, 38,132, 16, 74,105, 10,165,116, 46,165,116, 42,165, 84, 69, 8, 33, 18,137,100,227,208, -161, 67,161, 86,171,113,235,214, 45, 0,184, 92,156, 48,165,148,230,191,123,102, 50, 1,199,139,113,251,201, 57, 92,184,113, 8, -161, 81, 9,248, 16,175, 2, 4,230, 80,101, 69, 66,171,140,130, 38,245, 9,210,213, 38,255,186, 46,167,228,228,100,158,227, 56, - 13,199,113, 90,158,231, 43, 2, 48, 19, 8, 4, 16,137, 68,144,201,100, 3, 77, 76, 76,158,200,100,178,129, 98,177,184,200,251, -211,210,210,104, 90, 90, 26,151,150,150,166, 47,106,203,187, 46,207,247,150, 76, 38,131, 68, 34,129, 72, 36,138, 21, 8, 4, 3, - 9, 33, 7,240, 55,251,167, 42,168, 69,254,215, 81,148,163, 81, 80, 51, 89,159, 67,235,255, 48,239,213,111, 64,150,159,159,159, -165,179,179, 51, 8, 33,232,218,173, 27,105,126,253,186,169,208,201, 9,214,181,106,229,123,207,189,116,241, 34,206,157, 59,151, -117,250,216, 81,231,161,195,135,119, 66, 65,103,207,159, 70,158,192,205,205, 45,255,185, 49, 49, 49,121, 9, 8, 0, 72, 79, 79, -135,173,173, 45, 98, 98, 98, 96,160, 97,100,215,244,105,247,166,197,215,155, 89,185,158,169,144,156,205,138, 5, 71, 41,132,132, - 3,148, 20, 58, 14, 80,235, 40,106, 87, 98,173, 46, 40,245,150,167,238, 31,121, 15, 96, 87, 25, 45, 88, 87, 9, 33, 35,121,158, - 63, 4,128,185,126,253, 58, 31, 24, 24, 56,198,208, 1,233, 69,193,196,196,228,167, 43, 87,174, 88,253,244,211, 79, 41,167, 78, -157, 74,235,216,177,163,249,166, 77,155,172, 90,180,104,241, 19,128,125,165,246, 89, 82,170, 36,132,236,140,136,136, 24, 83,167, - 78, 29, 36, 39, 39, 67,171,213,226,241,227,199,112,119,119,199,163, 71,143,224,225,225,129,135, 15, 31,162,106,213,170,121, 83, -166,193,243,124,169,221,184,209, 17, 31, 20, 38,234, 20,179,232,251,103,240,250,249, 35,156, 9, 81,103, 47,223,182,255, 76,181, - 26,181,179,202, 90,128, 3, 64, 85,123,185,143,179,157,245,133,165,243,231,216,133, 93,221,143, 35,219,214,241,215,206,158,245, - 22,155, 98,100,179,190, 19,122,104,116, 40, 15, 64,210,160, 94, 29,250,141,197, 27, 94, 86, 17,177,151, 95,150,236,201,188,170, -189,220,199,201,214,250,252,242,165, 11, 77,223,157,221,142, 3, 27, 87,210,195,187,247,250,169,128,122,213,170, 85,107, 79, 8, -113, 4,160,207, 77, 35,131,150,160, 41,138,243,242,169, 83, 53, 85, 64, 61, 55, 55,183,246, 66,161,176, 98,174,149, 47,234,107, -112, 86,175, 94,189,125,110, 11,159,230,142,185, 42,211, 82, 57,195,134, 13, 91, 49,101,202,148,137, 58,157,206,186,128, 5,146, -221,180,105,147,128,227, 56,134, 82,170,101, 24, 70,123,254,252,121, 78,175,215, 71,171, 84,170,209, 95, 90, 96,244,232,209, 3, -247,238,221,155,143, 18, 6, 47, 23,170, 16, 4, 86, 86, 86,250,210,132,151,161,220,215,175, 95, 95,248,237,183,223, 78,223,183, -111,223,155,181,107,215,118, 30, 53,106, 20,246,239,223,143, 42, 85,170,224,217,179,103,152, 57,115, 38, 0, 52,154, 53,107,214, -137,173, 91,183,186,134,133,133,173, 48,196,106,171,215,235,177,119,239, 94,116,237,218, 21,182,182,182,112,114,114, 2, 33,228, -234,240,225,195,127, 7, 0,150,176, 34, 0, 80,171,212,106, 79,207, 58, 6, 91,108, 93, 93, 93,243,203,186,216,216,216,252,153, -127,109,190,253, 54,113,203,210,165,248, 83,169,196,112, 75, 75,147, 72, 23, 23,199, 19,239,222,141, 32,132,108, 42,206, 34,156, -103,197, 41, 77, 92,149,193,162,140,188,177, 77,246,246,246,152, 53,118, 9,150,252, 49, 11,111,113, 13, 85,250, 3, 47, 87, 1, - 93, 93,199,161,142, 95,125, 56, 57, 57, 25,154, 69,174,126,255,253,247, 15, 3, 3, 3,235, 84,175, 94, 29, 11, 22, 44,232, 50, -111,222,188, 11,132,144, 17,121,179,152, 9, 33,149, 88,150, 93,125,241,226,197,214,102,102,102,120,245,234, 21, 14, 30, 60,248, - 22,121, 35,244,139, 8,103, 94,165, 47, 20, 10, 81,190,156,135,234,117, 88,166, 73,124,212,109,220,186,121, 12, 85,252,126,128, -204,161, 19,172, 60, 23, 65, 27,180, 6,154,164, 11,176, 42,215, 17,145, 97,239,192, 10, 36, 1,255, 54,145,149,146,146, 66,173, -173,173,121,142,227,206,115, 28, 55,147,227,184, 69, 2,129, 32,111,252,173,175, 94,175,255,226, 25,129,121,190,183,242,120, 41, -165,114,129, 64,144,206,178,172,146, 16,242,183, 78, 55, 44,168, 69,254, 53, 22,172,143, 50, 52, 79,132, 85, 61, 60, 56, 17,131, -237, 93, 59,117,202,126,250,244,105,126, 43, 79,245,224, 1,178,206,157, 3,199,113,160,148,226,198,245,235, 24, 56, 96, 64,166, -144, 37, 91, 42, 85,170, 72, 9,253,203,247, 10, 33,228, 19, 63, 86, 34,145,168, 87,175, 94,189,242, 11,157,136,136, 8,200,229, -114,136,197, 98,240, 60, 15,189, 94, 15,150,101, 97,110,110, 14,189, 94,175, 41,226, 99,107, 85, 40, 49,116, 92,114, 86,207,173, - 29,250,199, 56,101,106,233, 72,139, 74,168, 32,146,229,127,148, 14,102, 4,157,253,132,176, 17,196,211,203, 43, 90, 71,243,234, -164,158,133,215,254, 42, 42,156,133,206,123, 84,175, 94,253,247,129, 3, 7, 50, 0,208,170, 85, 43,166,122,245,234,191, 17, 66, - 60, 74,184,167, 68, 78,169, 84, 42, 1,128,147, 39, 79, 38,191,121,243,166,221,201,147, 39,147, 11, 30, 55,144,115,211,178,101, -203, 96, 98, 98, 2,189, 94, 15,141, 70,147, 63,254,170,224,175, 86,171,133,141,141, 13, 78,159, 62, 13,142,227, 78,151, 22, 78, - 47,223,234,153,105, 2,139,184, 29, 39, 46,227,108,152, 54,179,172,226,170, 32,103, 21, 71, 69, 85, 7, 27,235,139,203, 23, 47, -180, 77,121,251, 24,145,145,145,244,252,185,211,119,149,148, 70,165,166,211,217, 41,153,180,106,182,154,202,234,186, 34,252,226, -198,169,116, 86, 19,232, 64, 62,237, 26, 46,200,233,227,168,168,234,108,107,125,126,229,138,165,166,169,193,143, 16, 19, 27,139, - 51,167, 79, 62, 85, 82, 26, 69, 41, 61, 76, 41, 29,194,243,124, 53,158,231,171, 81, 74,135, 20, 39, 90,202,202,169,213,106,171, -105,181,218,175,202, 89,214,112, 22,152, 65,136,249,243,231, 7, 71, 70, 70,142,138,139,139,235,145,183, 37, 39, 39,119,205,200, -200,232,152,157,157,221, 94,185,170,162,121, 86, 86,150, 93, 70, 70,134,163, 82,169,172, 77, 41,125,108,104,254, 44,140,130, 21, -108,116,116,244,188,232,232,104, 82, 98,254, 28,249,138,172, 95,241,253,238,131, 7, 15,218,127, 9,119,225,112, 38, 36, 36, 28, -218,187,119,111,141,202,149, 43,187, 14, 25, 50, 4, 27, 54,108,192,218,181,107,213, 0,176,117,235, 86,117, 1,203, 85,185,208, -208,208, 58, 69,117, 15, 22,228,100, 24,102, 87,155, 54,109,232,141, 27, 55,208,181,107,215,124, 7,160,155, 55,111,134, 94,175, - 79,111,217,178, 37, 15, 0, 74, 85,118, 58,229, 41, 52,218,162,251,217,139,138, 79,177, 88,252, 77, 65,127,127,121, 78,148,197, - 98, 49, 40,165,168,218,168, 81, 98,170,159, 95,242,182,180,180,236,121,213,170,153,141,240,244, 28,226, 5, 12, 40,138,147, 16, -242,145, 21,167,240,246, 57,223,102, 30,242, 56, 92, 92, 92,176,112,242, 74,184, 60,232,129,171,141,173, 81, 35,105, 8,218, 54, -238,140,170, 85,171, 26,204, 73, 41,165,241,241,241,163,230,204,153,195,139,197, 98,124,247,221,119, 56,114,228, 72,171,142, 29, - 59,134, 57, 59, 59,135,249,248,248,196,142, 25, 51, 38, 36, 49, 49,177, 99,253,250,245,145,156,156,140,209,163, 71,107,147,147, -147,123, 21, 28,199, 89, 56,156,121, 78, 49, 69, 34, 17,186,116,104,149,252,199,111, 43,249,150, 77,199,192, 68,102, 6,157,176, - 28,146, 51,117, 72,201,162,208, 72,234, 65, 44,146,160,173,191, 15,238,157,223,145,205,105,178,118,126,110,158,255,220,248,252, -255,193, 73, 41,165, 28,199,169,244,122,253, 86,158,231,103,231,245, 36,229,249,179, 42,108, 12, 45,107, 56,121,158,207,119,221, -144,203,173, 16, 8, 4,199, 89,150,245,201,155, 72,245,119,188,251,191, 13, 31,185,105,200,251, 37,132,231, 56,142, 71,165,202, -149, 76,195, 66,195,215,245,238,221,107, 88,251,246, 29, 76, 58,116,232, 32,245, 9,202,233,162, 56,121,242, 36,142, 28, 57,146, -125,225,194,133,116,137,144,221, 90,174,124, 57,123,142,227, 65, 72,201, 22, 18, 83, 83,211, 9, 51,102,204,144,165,165,165, 97, -237,218,181,124,141, 26, 53, 24,185, 92, 14,173, 86,139,173, 91,183,234,124,124,124,132, 12,195, 32, 45, 45, 13, 12,195,188, 54, - 80,241, 62, 39,132,180,253,189,121,247, 35,117,198, 14,181,246,110,222,192,178, 89, 57,103,232,106, 81, 68, 71,132,226,205,229, - 11, 41, 47,207,175, 78,130, 42,174, 59,165, 52,176,172,145,228,228,228, 52,247,194,133, 11,118,227,198,141,163, 42,149,138,132, -135,135,211,197,139, 23,219,125,247,221,119,115, 81,138, 47,156,146,190,163,212,212, 84, 16, 66,248,220,204,154, 87,184, 24,108, -126,165,148, 6, 16, 66,142,119,235,214,173, 75,203,150, 45, 17, 20, 20,148,223, 21, 88, 80, 96,229,205, 38, 92,178,100, 73, 42, -240,151,131,192,226, 32,145, 72,176,249,208,185,179,209,145, 31, 76, 42, 85,114, 83,153, 91, 90,242,159, 99,185, 2, 0, 49,195, -204,251,101,225, 28,187,196, 87,247, 72,192,221, 43,252,193,231,113,241,122,142, 22,237,161, 63, 35,154,230,170,254,146, 91, 47, - 12, 59,111,217,146,133,230,121,221,151,251,158,196,164, 19,142,142,251,178,166,198,255, 8,231,255, 1,114,102,248, 69, 19, 39, - 39, 39,154,215,133, 87,148,192, 42, 13, 69,117, 15,126, 46,247,251,247,239, 23,215,170, 85,107, 74,112,112,240, 65,111,111,239, - 81, 0,202,171,213,234,212, 89,179,102, 45,223,186,117,235, 48, 67, 44, 87, 0,176,127,255,254,213, 67,135, 14, 61,215,169, 83, -167,169, 60,207, 87, 47, 80, 33,189,183,179,179,203,247,200,149, 16, 23, 59,109,228,176,126,211, 50, 51, 83, 12,246, 83,167, 80, - 40, 70,204,154, 53, 75,154,149,149,133,245,235,215,243, 62, 62, 62, 76, 94, 99,104,247,238,221,122, 15, 15, 15, 65,175, 49, 99, - 18, 87,197,198,226,231,155, 55,179,166,249,250,214,216,246,230, 77,237,162, 44,236,121, 21,102, 81,150,171,188,225, 21,159, 81, -145,127, 36,176,242, 68,214,220,137, 75, 17, 21, 21, 5,145, 72, 4,119,119,119, 20,215,221, 84, 66,185,244,140, 16,210, 47, 60, - 60,124,231,250,245,235,197,245,235,215, 71,221,186,117, 33, 20, 10, 43,228,133, 87,163,209,224,249,243,231,152, 49, 99, 6,125, -240,224,193,119, 37, 45, 80,207,113, 92,188,135,135, 71,126,247, 17, 33, 36, 41, 93, 77,204, 15,120,213, 83, 12, 25,121,144,220, -122,120, 7,209, 90, 30,106, 29,143, 74,149,107,162, 89,187, 85, 56,113,246, 5, 23, 29, 22, 24,168, 83,166,108,249, 55, 86,220, -201,201,201,212,206,206, 78,159,107,148,104,152, 55,164, 38,111,102,232,151, 90,176,114, 27,236, 33, 60,207,199, 49, 12,211, 48, -215,247,150,153, 64, 32,184,204, 48,140, 13, 0,253,223,241, 94,133,181,200,191,166,139,240, 35,245,202, 50,183, 55,108,252,227, -155,253,123,247, 57,176, 44,227,240, 46, 36,228, 97,231,238, 61,163, 46, 94,188,104, 37, 50, 55,175, 11,128,215,140, 26,117, 87, -171, 86, 38,159, 58,126,188, 66,165, 74, 21,253,114, 23,123,166, 60,203,220, 46,233,129,153,153,153, 89, 55,111,222,204,158, 62, -125, 58,137,136,136,216, 99,111,111,223,231,236,217,179,138,238,221,187, 43,131,130,130, 14, 59, 56, 56,116,105,222,188,185,233, -148, 41, 83,212,153,153,153,235,202,144, 48,129,132, 16,175, 7,115, 86,124,251, 96,217, 31,173, 33, 96, 27, 66, 45, 4,120,221, -109,104, 51, 46, 2,216, 67, 41,253,172, 76, 33,151,203,253,228,114, 57,158, 62,125,154, 82,175, 94, 61,141, 74,165, 18, 45, 90, -180,200, 90, 46,151,251,125, 65, 70,162, 41, 41, 41,224,121, 94, 0,128,228,254,130, 47,251, 90, 57,125, 59,119,238,124,252,192, -129, 3,109, 58,116,232, 0, 87, 87, 87,232,116, 58,120,120,120, 64,163,209,192,221,221, 29,106,181, 26,243,231,207, 71, 90, 90, -218, 36, 67, 22, 17,150, 74,165, 16,139,197,168,234,229,155, 45,149, 74,241,185,226, 10, 0,228, 66,198,245,245,169,109,136, 79, - 74,228, 15, 60,139,139,203,214,114,109,131,227,179, 94, 22,190, 46,155, 67, 86,243, 33,227,163, 0, 64,205, 35,179, 68, 78, 49, - 92, 95,159,218,132,184,248, 68,236,127, 18,147,154,165,229,219,189, 46,130,179, 76,225,252, 31,225,236,181, 46, 8,205,190, 55, -252,218,131, 35,191,172,128,248, 28, 33,149,135,192,247,148, 96,163, 23,197,198,117, 69,250,184,250, 18,238, 92,203,212,241,220, - 74, 37,162, 95,191,126,211, 66, 67, 67, 23,230,250,187,218, 88, 22,174,109,219,182, 5, 3, 24, 90,210, 53,251, 86, 12, 61, 10, -224,104, 89,120, 51, 50, 50, 84,143, 31, 63, 86, 77,153, 50,133, 68, 68, 68,156,117,112,112,104,115,238,220, 57,147,238,221,187, -171, 3, 2, 2, 46, 59, 57, 57, 53,105,213,170,149,226,204,253,251, 81,217,239,222,157, 58, 21, 26,234,162,227,249, 83, 37, 9, -162,175, 37,174,242,248, 10, 90,134,242, 68,150,147,147, 19, 42, 84,168,240, 69,223, 61,165,244, 0, 33,228, 85,163, 70,141,142, - 12, 25, 50,164, 74,189,122,245,224,225,225,129,228,228,100, 68, 70, 70,226,214,173, 91,216,180,105,211,125,165, 82, 57,174,160, -101,181, 40, 36, 37, 37,125,178,140, 16,145, 89, 59,237, 88, 63,239,228,195, 91,117, 61, 26,119, 24, 44,243,117,226,241,255,216, -187,238,248,166,170,247,253,156,123,111,246,106,186, 7, 45, 45,171, 20, 1,129,150,189, 17, 20, 4,148, 33,227,167, 40, 75, 11, -136, 95, 69,144,161,236, 45, 8,130,202, 16, 4, 4, 68, 16,112, 34,160, 50, 4, 89, 2,130, 34,101, 83, 40,208, 61,210,149, 54, -205,186,247,252,254,104, 18, 67,233, 72, 74,193,130,121, 63,159,243,105,146,155, 62, 57,251, 60,231, 61,239,121, 95,147,153,226, -206,173,235,152, 61,125, 93, 97,202,173,171, 23,204, 86,115,191, 71,221, 7, 86, 5,210,132,231,249,111, 45, 22, 75, 77,155, 54, -182,202,124, 90,153, 76, 38,189,213,106, 29,198,113, 28, 47, 18,137, 54,177, 44, 91,207, 22,214,110, 30,165,148,123, 80, 4,235, -177,212, 96,149,148,248,248, 59, 23,234,212, 9,123,239,155,175,119,182,163,148, 97, 41, 33, 5, 90,173,247,174,219,183,111,223, -229, 5,187,174,143,143,122,196,107, 35, 6, 19,129,136, 8, 17,120,129,101,142,197,199,223,185, 80, 65,195,141, 26, 60,120,240, -199, 10,133, 98,154, 78,167,251, 83,171,213,254,213,180,105,211,185,148,210,233, 6,131,225,123,181, 90,125,178,109,219,182,243, -195,195,195,151, 83, 74,255,112,115, 80, 91, 81,108,255,181,169,138, 85,182,115, 0,120,113, 28,151,251,247,223,127,111,141,138, -138,122,145, 82,234, 69, 8,201,173, 44,102, 81, 81,209,255,114,114,114,252, 98, 99, 99, 45,107,215,174,141, 26, 54,108,216,148, -184,184, 56, 81, 81, 81, 81,188,155,101, 54, 18, 66,250, 12, 26, 52,104,157, 72, 36,234,202, 48, 12, 17, 4,129, 58, 61, 7,165, - 20, 60,207,255, 80, 81,189,136, 68, 34,253,179,207, 62,171,170, 80, 43, 37,145,232, 93, 94,100, 76,252,184,213, 7,227, 22, 22, - 89, 40,181, 10,116,212,229,180,130, 82,175,144,157,186, 76, 27,185,140, 89, 36,140,251,248,231, 11, 11,141, 22, 65,176, 10,116, -116, 89,152,110, 45,134,143, 8, 38, 0,140, 97, 86,124,129, 53, 43, 28, 6,239,246, 99,195,146,239,171, 90,236,154, 38,184,227, -101,217,230,142,225,194,168, 7,128, 93, 10,217,114, 87, 6, 12, 24,240,192,236, 73,204,102,243,212,231,159,127,126,174, 86,171, -253, 32, 35, 35,227, 79,173, 86,123,161, 65,131, 6,227, 4, 65, 88, 94, 88, 88,184, 75,173, 86, 63,215,162, 69,139,241, 17, 17, - 17, 27, 19, 40,221, 88, 30, 22,207,243, 73,118, 45, 14, 0,106,215, 62,217, 9,132, 51,145,176, 88, 44,137,174,228,143,231,249, -164,166, 77,155, 18,103,109, 86,201,191,206,226, 42,110,137, 77,111,131,185,115,231,182, 5,240, 20,128,166, 0,242, 0,220, 2, -112,130, 82,250, 83,165, 9,156, 33, 43,153, 16, 18,115,241,236,145,209, 87, 46,156,125,201,126, 91,144,101, 37,231,121,115,225, - 38,139, 33,123,221, 99, 78,174,144,158,158,254, 39,128,240, 7,129,109, 52, 26, 95, 36,132, 92, 98, 89,150,138, 68,162,151, 88, -150,253, 85, 16,132, 15, 76, 38,211, 22,190,186,184,124,127, 4,132, 60,200, 62, 72, 8,233, 86,213,241,138, 60,152, 30, 76, 15, -166, 7,211,131,233,193,244, 96, 62, 56, 76, 95, 95, 95, 5, 0, 19, 33,132,178, 44,171,100, 24,198,155, 82,106,224,121, 62,215, -106,181, 90,178,179,179,133, 7,145,207,255,132, 6,203, 35, 30,241,136, 71, 60,226, 17,143,252, 55,133,231,249,162,156,156, 28, - 1, 0,124,124,124, 10, 8, 33, 38, 74, 41, 79, 41,229,179,179,179, 5, 79, 13,185, 72,108, 1,148,122, 19,192, 29,102, 90,153, -219, 4, 21,225,123, 48, 61,152, 30, 76, 15,166, 7,211,131,233,193,124,252, 48,255, 51, 98,183,209,121, 16, 9, 64, 55, 15,166, - 7,211,131,233,193,244, 96,122, 48, 61,152, 30,204,255, 90, 98, 60, 20,211, 35, 30,241,136, 71, 60,226, 17,143,120,164,106,197, - 99,131,229,166,216, 98,202,189, 14, 96, 0,128,186, 0,174, 3,216, 9, 96,149, 27, 1,143,157,241, 52, 0,166, 0,104, 7,160, - 54,128, 27, 0,142, 0,120,159, 82,170,247,212,120,233,226,239,239,255,158, 72, 36,210, 2,197, 78,241,236,127,157, 95,243, 60, -159,147,155,155,187,224, 1,245, 3,150, 82,202,187,147, 87,231,188, 57,255,181, 88, 44, 15, 44,159, 30,169,182,243, 72,125, 31, - 31,159, 45, 58,157,110, 8,165,244,138,167, 70, 60,242, 56, 73, 64, 64,192,104,179,217, 60, 77, 44, 22,207, 79, 79, 79, 95,253, -159, 39, 88,132,144,195, 0, 64, 41,237, 4, 0,106,181,250, 56,195, 48,181,109,207, 0, 0, 78, 30, 92, 75,253, 43, 8,194,141, -172,172,172,182,101,253,152, 66,161, 56,206,178,108,109, 66,136, 61,248, 44, 24,134,129,197, 98, 81,179, 44,155, 95, 6,102,162, - 78,167,107, 94, 77, 38, 69, 2,224, 71,111,111,239,162,185,115,231,174,234,220,185,115, 88,114,114,178,117,210,164, 73, 29,255, -250,235,175, 94,132,144,103,221, 33, 89,132,144, 54,132,144,141,205,154, 53,251,118,232,208,161,219, 91,181,106, 37,201,202,202, - 82,239,220,185,179,198,166, 77,155,206, 16, 66,134,184,235,170,226, 17, 88, 88,184,178,252,145,149,247,172,164,136, 68, 34,109, - 98, 98,162,218,214,103, 29,158,135, 45, 22, 11, 44, 22, 11, 10, 10, 10,208,180,105,211, 42,207,127,112,112,112, 52, 33,100, 69, -100,100,100,243,144,144,144,211, 0,198, 38, 39, 39,255,229, 78, 94,173, 86, 43, 40,165,142,124, 54,108,216,208, 51, 35,187,215, -135, 94,149, 72, 36, 61, 34, 35, 35, 91, 26,141,198,236, 27, 55,110,156,226,121,126, 6,165, 52,181,138,240,189, 0,204,144, 74, -165,173,234,214,173, 27,118,245,234,213, 59,102,179,249, 36,128, 57,148,210,220,170, 32, 87,157, 58,117, 58,186,114,229, 74,223, - 49, 99,198, 28, 37,132,180,247,144, 44,143,252, 91, 82,179,102, 77,109, 65, 65,193, 58, 0,209, 34,145, 40,200, 22,131, 48, 85, - 42,149,254, 41,151,203, 71, 30, 61,122, 52,199, 93, 76,158,231,103, 36, 36, 36, 4,181,110,221,122,113,227,198,141,103,103,102, -102, 22,153,205,230, 3,217,217,217,227, 41,165,121, 21,140,143,187,184,200, 35, 79,176,108,113,127, 58,223,245,128,227, 66, 19, - 18, 18, 2,212,106, 53,120,158,119,104, 7,236,139,153,179,123, 7,155,159, 37, 52,104,208,192, 92,193, 66, 19,150,152,152, 24, -160, 82,253,227,106,201,108, 54, 35, 40, 40, 72, 72, 74, 74, 10, 40, 25, 72,216,100, 50, 33, 52, 52,180, 58,249, 50,121,221,199, -199, 39,247,246,237, 59, 77,139,140,230, 57,175,253,239,221,247,134, 12,120,218,251,248,241,227,194,179,207, 62,107, 60,124,248, -240,235, 0, 92,114,142, 74, 8,241, 34,132,108,154, 52,105,210,108,153, 66,227,123,240,248, 5,227,166,157,187,147,154,213,175, - 69,198,143, 31,207,190,249,230,155,191, 69, 71, 71,111, 33,132,196,184,163,201, 82,171,213, 63, 73,165,210, 8,150,101, 97, 54, -155,111,235,116,186,103,170,209,194,216, 12,192, 89, 66, 72, 52,165,244, 79, 87,159,149, 39, 89, 89, 89, 48, 24, 12,247,164,134, - 13, 27,162,170, 93,144, 16, 66,184,176,176,176,239, 23, 46, 92, 88, 35, 53, 37, 5, 31, 46, 91,214, 26,192, 42, 0,173, 93,249, -255,244,244,244,123,242,217,160, 65, 3,120,196,173, 54,152, 50,123,246,236,133, 47,189,244, 18,120,158,135,193, 96, 8,185,118, -237, 90,163,105,211,166,245, 35,132,180,164,148,198,223, 39,190,127,100,100,228,165,113,227,198,249,180,108,217, 18,182,168, 18, - 33, 71,142, 28,105,189,126,253,250, 87, 8, 33, 13, 40,165, 25,247,243, 27, 62, 62, 62, 91, 62,251,236, 51, 95,133, 66,129, 31, -126,248,193,183,107,215,174, 71, 8, 33, 29, 42, 75,178, 8, 33,140,175,175,239,155, 0,158, 18, 4, 65, 2,224,100,118,118,246, - 60, 74,169,217,211, 99, 60, 82,158,248,249,249,189,154,159,159,191, 82, 42,149,138,189,189,189,161, 80, 40,236, 49, 8,107, 74, -165,210,154, 82,169,180,231, 83, 79, 61, 53,246,224,193,131,229,122,196,111, 27, 29, 52, 28, 12,153,195, 18,134, 5,128,134,145, -190, 26, 47, 47, 47,204,153, 51, 71,217,167, 79, 31, 37, 0, 28, 61,122,116,232,176, 97,195,186, 18, 66, 26,151, 69,178, 74,227, - 34,143,133, 6,139, 82,122,184, 68, 65, 33,151,203,177,125,251,118,176, 44,123, 87, 20,247,210, 94,215,172, 89,179,194, 31,179, -107,192,118,237,218, 5,141, 70, 3, 47, 47, 47,199, 2, 35,149, 74,113,224,192, 1,136, 68, 34,112, 28, 7,145, 72,132,230,205, -155,163,156, 0,243, 15, 68, 6, 54, 42, 14, 50, 89,154,243,198, 14,117,229, 24,240,230,172,193,133, 69,230, 22, 0, 10,114,178, -179,179, 79,127,243, 77,114,179,250,245,197, 91,182,108,105, 89,163, 70,141, 1,174, 18, 44, 0, 83, 98, 98, 98,190,102,229, 94, -126, 67,135, 13, 31, 58,146, 99,204,175,140,122,103,254,157,148,204,130,216,216,216,111,126,248,225,135,161,139, 22, 45,186, 56, -113,226,196, 41, 0,166,186,154,127,137, 68, 18,113,237,218,181, 72, 65, 16,240,228,147, 79, 86,155,112, 3,118, 2, 69, 41, 5, - 33,228, 46, 34, 85,222,179,138,196,174,177, 42, 45, 85,181,212,168, 81,163,193,203, 47,191,236,167,203,204,196,135,203,150,217, - 63,110, 94,209,113,161,253, 40,208,100, 50,225,133, 23, 94,120,153,231,121,206, 78,254,140, 70,163, 41, 55, 55,183,200,233,166, - 78, 6,165,244,105, 23,234,179,182, 82,169,252, 0, 64,180,193, 96,168, 1, 0, 74,165, 50, 73, 16,132,111, 11, 10, 10,166, 82, - 74, 13,149,108,167, 48, 0,141, 80,118,200, 38,186,112,225,194,171, 83,166, 76,137,127,216,152,132,144,136,192,192,192, 5, 3, - 7, 14,196,238,221,187,177,103,207, 30,139, 92, 46,231,134, 13, 27, 70,198,142, 29,235, 61,110,220,184,158, 0, 62,186,207,102, -238, 57,123,246,108,159, 39,158,120, 2, 59,119,238,196,185,115,231, 12,145,145,145,242,206,157, 59,131,227, 56,159,247,222,123, -239, 89, 0, 27,239,231, 7,116, 58,221,188,119,222,121,103,211,214,173, 91,213, 55,110,220,192,138, 21, 43,252, 6, 15, 30,124, -152, 16,210,201, 85,146, 69, 8,145, 2,120, 19, 64, 23,150,101, 59, 12, 27, 54,204,250,191,255,253, 79,196, 48,140,101,217,178, -101,254,235,215,175, 31,236,231,231, 23,157,153,153,233, 49, 51, 40, 71, 88,150, 53, 11,130, 32, 2, 32,163,148, 26, 43,122,255, - 56,149,221,215,215,119, 76,118,118,246,170,160,160, 32, 4, 6, 6,222,179,214, 26,141, 70,200,100, 50,113, 80, 80,208,103,125, -251,246, 21,125,247,221,119,101, 30,245, 17,150,204,248, 97,219,220, 26, 62,222,106, 0,192,242, 79,127, 46, 4,128,239,190,251, - 14,201,201,201,240,246,246, 70,227,198,141,217,185,115,231, 6,143, 31, 63,254, 67, 0, 35,203,194, 42,201, 69, 30, 11,130, 85, -214,194, 96, 15, 36,106, 39, 82,118,242, 83,242,181,157,148,149,168,168,253, 37, 38, 5,162,215,235, 29,228, 74,163,209,192,182, -168,194, 98,177,220,131,203,243, 60, 74, 70,213,118,229,250, 39, 33,100, 12,128, 3,148,210,235,174, 84,130, 51,230,142, 55, 26, - 96,147,116,210,139,118,151,231, 61,223, 41,254,187, 9,192,241,155, 35, 87,172,236,212,169,198,155,211, 63,158,101,200, 74,206, -124,239,229,231, 34, 34,131,124,229,202,156,244, 92,159,168,168,238,112, 10, 31,224, 66, 62, 59, 14, 29, 58,116,243, 47,191, 39, - 16,153, 76, 44,230, 88, 86,212,254,201,250,190, 97, 94,172,151, 26,240,186, 19,127,245,248,240,225,195,159,156, 56,113, 98, 7, -119,202,206, 48, 12, 52, 26, 13, 54,111,222, 12,198,206,104, 93, 44,123, 85, 73, 41,237,206,217, 9,148, 78,167,195,238,221,187, -209,171, 87,175,179,132,144,104,219, 87,206, 82, 74,145,151,151,135,148,148, 20, 4, 7, 7,159, 37,132,136,156,143, 11, 75, 98, -218,181,168,118, 50, 53,108,216,176,151,173, 86, 43,231, 52, 57,148, 36, 46,247,144, 23, 87,203, 30, 18, 18,242, 11,128,167, 89, -150,133,169,168,200,244,193,210,165,206,143,255,112, 38, 87,101, 97,218,243,202,243, 60,119,246,236, 89,145,125,204, 0, 16, 1, - 80, 2,240,179, 5, 85,253,219,133,250,108,160, 80, 40,142,239,218,181, 75,211,188,121,115, 34,145, 72, 96,181, 90,113,254,252, -249,176, 69,139, 22,141,218,191,127,255,179,132,144,134, 37,131,154,187,216,238,141,142, 28, 57, 82, 80,167, 78,157, 82, 9, 99, - 94, 94, 30, 87,191,126,253, 78, 0,226,255, 5,204,196,180,180,180,190, 79, 63,253,244,232,212,212,212, 75, 86,171,117, 50,128, -198,126,126,126,103,251,247,239, 15,185, 92,222,197, 21,130, 85, 94,187, 7, 4, 4,244,105,219,182, 45, 86,172, 88,129, 69,139, - 22,117,163,148, 30, 32,132,116,205,203,203,219,255,252,243,207, 67,171,213,246, 45,141, 96,185,218,151, 8, 33,245, 59,118,236, -248,217,156, 57,115,212,187,119,239, 70,100,100, 36,242,243,243, 49, 97,194,132,128,153, 51,103, 30, 34,132,116,182,147,172,178, - 48, 9, 33, 13,165, 82,233,198,173, 91,183,170,234,212,169, 83, 71, 44, 22, 51,117,234,212,129, 78,167, 67, 81, 81,145,116,254, -252,249, 79,202,229,242,191, 62,250,232,163,141, 0,250, 63,236,241, 94, 34,175,185, 0, 52, 0,180,238, 28,175,150, 83,246, 92, - 0, 82,199,224, 17,137, 32,147,201, 32,147,201, 32,149, 74,113,245,234,213,233, 18,137,100, 25, 74, 9,229, 82, 26, 38,249,103, -209,106, 74, 8, 57,197,178,108,185,239, 75,154,128, 60,236,250,180,229, 57,148, 16,178, 28, 64,151,226, 41,159, 57,236,231,231, -247, 86,106,106,234, 45, 87, 49, 67, 66, 66,124,245,122,253, 71,193,193,193, 8, 12, 12,116,172, 29, 53,106,212,128,197, 98, 65, - 90, 90, 26, 40,165,200,201,201,129, 66,161, 64, 72, 72,200, 71,163, 70,141,218,185,102,205,154,172, 82, 49, 5, 44,122,126,240, -180, 25, 44,203, 50, 0,192,114, 42,213,184,119,129,136,136, 8,180,111,223, 30, 69, 69, 69,200,205,205, 69,163, 70,141, 56, 66, -200, 80,134, 97, 52,148,210,213,148,210,131,143, 51,129,183, 47, 72,179, 75,158,123, 18, 66, 32, 8, 2, 56,142,187,139, 96,149, - 76,118, 50,100,235,167,164, 34, 85,182,201,100,114,144, 43, 47, 47, 47, 7, 57,179, 90,173,101, 17,172,202, 48,243, 38,130, 32, -212, 38,132,172,113,149,100,149,148,161, 67,135,222, 99,207, 49,126,252,248,196,244,244,116,250, 66,247,166,202, 75,123,147, 83, -234,122,171,228,254,106,117, 45,153,183,143, 54, 43, 43,235, 4, 0,173, 27, 63, 81, 47, 38, 38, 70,190,233,155, 35,137,175,189, -189,112,110,243, 58,190,154, 38,161,126,222, 65, 94,114,137,138, 33, 5, 50,171, 37,209,199,199, 39,178, 18, 59, 50, 0,128, 86, -171, 5,199,113,213, 66,131, 69, 41,181, 18, 66,162, 9, 33,103,119,239,222,141, 86,173, 90, 57, 72,150,157,124,228,230,230,226, -252,249,243,232,216,177, 35, 0, 68,187, 98,139, 37, 8, 2,204,102, 51,204,102,179,131,184,136,197,226,123,136,139,253,187, 44, -203,254, 93,201, 34,204,245,246,246,238,216,165, 75, 23,201,182,237,219, 37,148,210, 2, 20, 7,164,214, 83, 90, 70,224,234, 18, - 98,181, 90, 29, 90, 53,145, 72,132,219,183,111, 59,180,192,118, 77,112,201, 35,242,178, 68, 42,149,190,243,213, 87, 95,105, 90, -182,108, 73,178,178,178, 32, 8,130, 99,114, 92,181,106,149,108,192,128, 1, 53,206,156, 57,243, 30, 42, 17,118, 6, 0, 41,139, - 8, 1,128, 70,163,177, 2,110,223, 62, 46, 21,211,106,181,146,118,237,218, 77,204,204,204,124,210, 96, 48,204,119,165, 31, 1, -248,193,150,236,115,202, 95,151, 46, 93, 50, 12, 26, 52, 72, 94,171, 86,173, 86,247,219, 87,235,215,175,223, 70, 36, 18,225,228, -201,147, 70, 0,246,157,244,225,115,231,206, 25,251,247,239, 47, 13, 11, 11,107,227,134,230,174,126,131, 6, 13,246, 5, 4, 4, -200,237, 26,203,129, 3, 7,138,214,174, 93,171, 78, 74, 74,130,217,108,198,148, 41, 83,208,187,119,111,248,249,249, 97,252,248, -241,129,139, 23, 47,222, 2, 32,166, 28, 76,153, 68, 34,217,124,237,218,181,200,224,224, 96,249,239,191,255,142, 38, 77,154, 32, - 51, 51, 19,169,169,169,208,235,245, 72, 77, 77,197,200,145, 35, 3, 62,252,240,195,144,106,180,214,228,136,197, 98, 40, 20, 10, -109, 78, 78, 78,238,125,224, 72, 1, 72,156,201,149, 84, 42,133, 84, 42,133, 76, 38,131, 32, 8,143, 69,144,224,114,218,191, 6, - 33,228,130, 88, 44,150, 42, 20, 10, 49,195, 48,144, 74,165,221,125,124,124,226,158,121,230,153,198,191,252,242, 75,130, 43, 56, - 69, 69, 69,155,165, 82,169, 40, 32, 32, 0, 0, 16, 25, 25,137, 38, 77,154,160,160,160, 64,200,205,205,133, 86,171,101,110,221, -186, 5,131,193,128,148,148, 20,132,135,135,139, 24,134,217, 12,224,217,210,240,142,157, 73,249, 20,192,167,246,247,254,254,254, -105, 0,228,246,247, 50,153, 12, 53,106,212, 64, 82, 82, 18,212,106, 53, 59,115,230,204,254,219,183,111,239, 71, 8, 25, 74, 41, -253,194, 9,106,246, 99,103,131, 69, 41,157, 69, 8,233, 84,218, 2,102, 59,143, 45, 83,115,101, 79,174, 16, 33,123, 32,202,192, -192, 64, 40, 20, 10, 40, 20, 10, 71,192, 81,158,231,239,193,183,237,232,221, 46,148, 82,169,196, 75, 47,189, 68, 87,175, 94, 61, -218, 70,178,174,185,250,191, 3, 87, 92,114,104,173, 74, 74,195,134, 13,143,191,247,222,123,125,126,253,245,215,164,230,117,106, -113,202,228, 91,122,153, 70,171, 69,104,205, 94,195,250,246, 63,135,226,219,132,174,202,181,252,252,124,121,221, 80,133,137, 97, -138, 72, 77, 41,167, 14, 86,138,165, 65,222,222, 53,196, 38, 99,186,198,219, 91, 98, 52, 26,115, 0,148, 27,156, 89,163,209,252, - 44,149, 74,195, 89,150, 5,203,178,240,243,243,243,162,148, 66,171,213, 34, 52, 52, 84, 21, 21, 21,117,133,227, 56, 48, 12, 3, -189, 94,127,235,230,205,155,221, 43,202,152,183,183,247,207, 82,169, 52,220, 30, 60,148,101, 89,199,133, 4,251,107,150,101, 65, - 8, 65, 97, 97,161, 75,152,148,210, 63, 9, 33,209,189,122,245,114,144,172,189,123,247,162, 71,143, 30,200,201,201, 65, 92, 92, -156, 51,185,114,233,120,208,217,168,157, 82, 10,177, 88,140,203,151, 47,223,117,116,109, 79,106,181,186,210,131,196,199,199,231, -232,192,129, 3,241,217,103,159, 81, 91,148,119, 37, 33,164,137,151,151,215,229, 11, 23, 46,184,100,231, 66, 41,133,217,252,207, - 87,237,125,220,121,124,185, 65,162,187,199,196,196,144,220,220, 92, 59,113,116,108,132, 88,150,197,202,149, 43,229, 45, 91,182, -156, 38,147,201, 38,138,197,226, 60,139,197,178,173,168,168,104, 62,165, 52,167, 58, 77, 62, 29, 58,116,120,251,206,157, 59,189, -195,195,195,119,221, 7,121,167, 45, 90,180, 48, 1,144,179, 44, 43,170,130, 5,140,181,245,173, 34, 59,201,167,148, 90, 99, 98, - 98,138,108,139,187,203, 17,144,253,252,252,182,236,217,179, 39, 52, 60, 60, 28, 22,139, 5, 86,171, 21,122,189, 30,135, 15, 31, -134,209,104,132,213,106, 69,100,100, 36,102,204,152, 81,244,214, 91,111,201,214,172, 89,147,174,215,235,135, 84, 0,251,214,206, -157, 59,149,193,193,193,114,131,193,128,248,248,120,196,196,196, 32, 63, 63, 31, 5, 5, 5, 40, 44, 44,132,217,108, 70, 94, 94, -158,150,231,121, 83,181, 89,104, 56, 14, 82,169, 20, 98,177, 56, 39, 60, 60, 28,132, 16, 89, 66, 66, 66,101,142,220, 52, 0,242, - 68, 34,145,196,153, 88, 73,165, 82,156, 60,121,114,170, 76, 38,251, 16,110, 4, 34, 46, 25,175,176,162,247,213,128, 96, 45, 23, -139,197, 82, 31, 31, 31,177,211, 58, 45, 86,169, 84, 8, 8, 8, 88, 1,160,167,139,229,110,230,227,227,227,152,223,155, 54,109, -138, 59,119,238,124,155,155,155,251, 74,122,122, 58, 24,134,217,204, 48, 76, 63, 59, 15,200,206,206, 70, 88, 88, 88,179,178,240, -218,197, 4,143, 6,161, 14, 13, 86,195,122, 62,170, 18,235, 20, 52, 26, 13,110,222,188,137,130,130, 2,122,245,234, 85, 50,102, -204, 24, 98, 50,153, 62, 39,132,156,160,148,222, 40,143,139, 60,234, 26,172, 82,207, 61,237, 71,132,165, 17,170,146,132,203, 21, - 34,100, 50,153, 84, 49, 49, 49,130,125,225,182, 39, 0,164, 44,130,101,211, 20,184, 45, 34,145, 72, 61,102,204,152,252,213,171, - 87,143, 34,132,172,165,148, 94,173,108, 37,237,250,122,107,224,162, 25, 83,102,248,132,212,170, 59,113,226,116,238,185,231,158, -251,125,211,166, 77,188,207, 19, 61,187, 30,252,249,139,192,143, 38, 76,218,187,103,207, 30,160,216,224,217, 85, 57,250,227,143, - 63, 6,141,127,115, 44,102,188,243,214, 79,154, 72, 63,137,138,248, 40,101,198,130, 12, 21,168, 65, 90,175, 65,239,111,118,237, - 74, 1, 80,110,164,121,185, 92, 30,126,245,234,213, 72,103, 2, 97, 54,155,161,213,106,177,105,211, 38,127,181, 90,237,175, 82, -169,192,113, 28,154, 52,105,226,170,134, 36,252,202,149, 43,145,106,181, 26,133,133,133, 48, 26,141,176, 88, 44, 16, 4, 1,132, - 16,136, 68, 34, 72, 36, 18, 40,149, 74,183,110,234, 57,147,172,189,123,247,162, 81,163, 70,200,206,206,198,165, 75,151,220, 38, - 87,206, 90, 33,103,123, 43,142,227,176,165, 78, 29,188,150,156,236, 32, 46,203,189,188, 48, 67,168, 92,116,135, 39,159,124,146, - 30, 59,118, 12, 63,253,244, 19,158,127,254,121,242,253,247,223,155,121,158, 23, 39, 37, 37,185,172, 13, 19, 4,193,145, 87,251, -124,237, 76,172,220, 37, 88, 86,171, 85, 45,145, 72, 80, 84, 84,228, 56,194,119, 78,181,107,215,134, 78,167,227,242,242,242,184, -228,228,100,197,188,121,243,254,119,232,208,161, 96, 0, 47,254,155,147,205,234,213,171,195, 95,123,237,181,219, 28,199,209, 30, - 61,122,188,124,235,214,173,190,193,193,193, 7,126,253,245,215,165, 0,234,187,139,231,239,239,255, 7,199,113,161, 42,149, 74, -188, 99,199, 14, 75,126,126,190, 56, 32, 32, 32,205, 78,104,237,117,109,177, 88, 18,115,115,115,155,187,130,231,239,239, 47,254, -228,147, 79, 44, 89, 89, 89,226,160,160,160, 52, 59,142, 82,169, 20,239,216,177,195,146,151,151, 39,214,106,181,127,228,228,228, - 84,136,151,153,153, 57,100,232,208,161, 71, 14, 28, 56,224,199,178, 44,110,221,186,133,172,172, 44,104,181, 90,108,222,188, 25, -225,225,225,216,185,115,167, 78,167,211,189,250,193, 7, 31, 76,211,235,245,174,184,108,232,216,170, 85,171,240,156,156, 28,104, -181, 90, 20, 20, 20,224,143, 63,254, 64,195,134, 13,145,156,156, 12,134, 97,160,213,106,177,106,213,170, 66, 66,136,174, 58, 44, - 50, 44,203, 58,180, 76, 78,164,168,168, 77,155, 54, 56,120,240,224,100,119, 72, 17,165,212, 36, 18,137,238, 34, 86,246,215, 98, -177,216,234,110,222,120,158, 23,219,108, 64,137, 43,239,171,129,116,146,203,229,226,146, 31, 22, 22, 22,138,131,131,131, 59,184, - 65,120,125,229,242, 98, 5, 83,120,120, 56,114,115,115,121,147,201, 52,120,243,230,205, 22, 0,136,137,137, 25,204,243,124,145, -213,106,101, 37, 18, 9, 10, 10, 10, 16, 16, 16,224, 91, 38, 32,131,201, 63,108,155, 23, 84,210, 6, 43, 56, 56, 24,209,209,209, - 48, 26,141, 72, 73, 73,193,225,195,135, 45, 60,207,127,185,122,245,106,193,223,223,127,196, 11, 47,188,192,158, 57,115,230, 13, - 0,111,151,199, 69, 30,105,130,101, 99,140,135, 0,116,182, 23,206,249,136,176, 60,205, 85, 9, 13, 22,169, 96,160,229, 36, 38, - 38, 42,149, 74,165,227, 51,139,197,130,144,144, 16, 65, 16, 4, 82,242,119,236,249,168,172,136, 68, 34,245,187,239,190,155,179, -106,213,170, 87,224,162,161,248,142, 55, 26, 96, 83, 9,114,245,233,162, 57, 43, 62, 89, 60,207,231,250,222,207,177,238,227, 37, - 60,207,227,204,147, 79, 62,217, 65,175,215,115, 94, 74, 11, 50,115,176, 23,197,126,176, 92, 34,131, 54, 95, 90, 27, 78,157, 58, -117,166,103,207,158,199, 54,124,245,141, 79,114,124,252, 9,105, 94,102,138,166, 94, 36, 39,174, 17,222, 47,191,168, 72, 60,120, -240, 96,127, 0, 47,148,135,197, 48, 12,226,227,227,145,144,144, 0,149, 74, 5,181, 90, 13,149, 74, 5,141, 70, 3,181, 90, 13, -181, 90,237,118, 29, 50, 12, 3,158,231,241,245,215, 95, 67,161, 80, 64,169, 84,222,149,236,228,234,126,218,166, 71,143, 30,208, -233,116, 80,169, 84,142, 99, 77,119,196,110,131,101, 50,153, 96, 50,153, 96, 54,155,121, 0, 34,142,227, 48, 50, 49,209,161,213, -113,135,184,148,148, 38, 77,154,208, 19, 39, 78,224,216,177, 99, 40, 40, 40,192, 39,159,124,130,224,224,224,167, 0, 76,119, 99, -199, 89, 39, 40, 40,168,199, 51,207, 60, 19, 98,177, 88,160,215,235,153,191,255,254, 27, 50,153, 12, 44,203, 34, 49, 49, 17, 91, -183,110,197,205,155, 55,237,218,195, 80, 66, 72, 45, 74,233,205,242, 22, 5,142,227, 28,187, 79,123,114,214, 98,177, 44,139,192, -192, 64, 4, 5, 5,225,211, 79, 63, 21,215,170, 85,171,247,191, 57,209, 44, 94,188,184,222,242,229,203,215,111,218,180,105,239, -144, 33, 67,182,159, 63,127,126,184,151,151,215,223, 7, 15, 30,156, 39,149, 74,133, 74,142,239,208,228,228,228, 0,231,143, 4, - 65, 80, 88,173, 86, 7,161, 45, 44, 44, 68,227,198,141, 93,198,187,112,225,130, 2, 0,230,205,155, 39, 2,160,176,187,255,176, - 99, 22, 22, 22,138, 26, 54,108, 24,234, 34, 25,184, 66, 8,233,208,173, 91,183,227,251,246,237,243, 14, 15, 15, 71, 82, 82, 18, -146,146,146, 80,175, 94, 61, 44, 88,176,160, 32, 47, 47,175,157,141, 84,125,239, 98,177, 67,188,189,189, 69,183,111,223,134,213, -106, 69,179,102,205,176,106,213, 42, 12, 30, 60, 24,141, 27, 55, 70, 94, 94, 30, 46, 92,184,128,141, 27, 55,122,139,197,226, 23, -254,237, 5,198,118,132, 85,102,170,140, 88,173, 86,141, 76, 38,203,147, 74,165, 18,187,253,213,225,195,135,221,214, 94, 57,111, -252,220,121, 95, 29,200,106, 73,145, 72, 36, 8, 10, 10,114, 25, 71, 42,149, 18,251,220,104,181, 90,145,155,155,203, 7, 7, 7, - 59,142,241,207,158, 61,203, 71, 68, 68,240, 44,203,178, 18,137, 4,132, 16, 40, 20,138, 50, 39,124,202,211, 57,207, 13,158,238, -184, 69,200,136,148,154,113,239, 22,111,246,207,158, 61, 11,179,217,140,195,135, 15, 91, 62,248,224,131,228,156,156,156,113, 0, -184,159,127,254,121,232,164, 73,147,216,128,128,128,110, 78,243,229, 61, 92,228,113,208, 96, 29,162,148, 18,155, 65, 57,177, 19, - 27, 74,233, 61,164,170, 44,194,101,211, 96,145,138, 6, 27,203,178,248,233,167,159, 28, 68,192,126,139,144, 82,138,170, 38, 88, -190,190,190, 5,173, 90,181,210,220,185,115,103,107,101, 53, 87,159, 46,154,179,226,253,121,179,124,178, 46,158, 64, 98,114, 10, -116,233,150, 51, 71,255,190,249, 45,128,111, 1, 0,107,158, 56,132, 81, 23, 87,186,138,249,132,191,162,233,147, 33,234,111,159, -238,217, 59,108, 80,236,219,204,235,175,191,222,126,232,208,161,185, 67,134, 12,121, 83,165, 82,213, 55,155,205,217,223,236,222, -157, 48,104,208,160, 90, 60,207, 15,173,200,103,136,197, 98,185,213,191,127,127, 71,221, 6, 5, 5,105,182,109,219, 22,168, 86, -171,241,242,203, 47,103, 36, 36, 36, 56,142,133,242,243,243,111,185,146, 71,179,217,124,171,105,211,166,101, 30, 11,218, 53,144, -238, 96,218,218,210,113, 91, 48, 43, 43, 11,151, 47, 95, 6,199,113,104,221,186, 53,142, 30, 61,138,246,237,219,187,117,131,176, -168,168, 8,225,225,225, 40, 42, 42, 66, 65, 65, 65, 33, 0,233,230, 90,181, 0, 0,111,100,101,225,143, 15, 62,192,239, 11, 23, - 86,170, 31, 53,109,218,148,158, 60,121, 18,127,255,253, 55,140, 70, 35, 94,125,245, 85,216,142, 7, 1,224, 25, 23,203,219,184, - 65,131, 6,251, 15, 30, 60,232,175, 86,171,161,215,235,161,215,235, 49, 98,196, 8,140, 30, 61, 26, 22,139, 5,171, 87,175,198, -119,223,125, 7,141, 70, 3,189, 94,143,130,130, 2,239, 94,189,122, 29, 39,132,116, 44,235,104,155, 82, 74,110,222,188,137,247, -223,127, 31,130, 32, 96,210,164, 73,136,140,140,116, 16,171, 91,183,110, 97,222,188,121,224,121, 30, 51,103,206, 68,189,122,245, - 96,177, 88,100,238,248, 25,171,106, 25, 63,126,252,245,111,191,253,118,239,157, 59,119,158, 93,180,104, 81, 39, 66,136, 48,113, -226,196,247, 53, 26, 13,127, 63,184,217,185,249,184,124,237,150,131, 0,149, 76,254,126, 62,110,227, 93,141,191,227,248,127,158, -119,198,227,225,235,227,237,110, 22, 11, 45, 22, 75, 65,191,126,253,180, 95,127,253, 53,169, 87,175, 30,110,220,184, 97,223,148, - 22, 86,194, 53, 67,146, 78,167,139,100, 89, 86,124,237,218, 53, 68, 68, 68,160, 85,171, 86,152, 63,127, 62, 50, 51, 51, 97,181, - 90, 17, 16, 16, 32, 88, 44,150,179, 38,147,233,183,127,123,129,113,214, 50, 57,167, 95,127,253,117,178, 76, 38,163, 0, 78, 2, -112,139, 96, 83, 74, 77, 53,107,214,188, 11,187, 50,218,171, 7, 72,130, 30,216,205,196,224,224,224,195,106,181,186,119,118,118, -246, 93, 90,172,118,237,218,153, 3, 3, 3,143,184,138,163, 82,169,178, 89,150,245, 5,128,164,164, 36, 40,149, 74,113,124,124, -252, 66, 66,200, 20, 0,168, 85,171,214, 66,157, 78, 39,174,101,155, 79,131,130,130, 96, 50,153,202, 52, 87, 57,126, 54,245,115, - 0,159, 59,173,189, 41,185,185,185,242, 37, 75,150,232, 23, 46, 92,104,224,121,222, 8,224, 96, 78, 78,142,195, 15, 86, 68, 68, - 68,174, 72, 36,242,209,106,181, 53,156,160,238,225, 34,143, 3,193,186,231,182,158, 51,233,113,133,100,185,162,133, 32,132,192, - 96, 48,220,165, 13,177,223, 34, 44,141, 96,217, 22,242, 74, 29, 17,218,200,149,124,219,182,109, 95,126,252,241,199,199, 92,253, - 63,103, 27,172, 53, 75,231, 46,178,147,171,115, 71,247,225,251, 75,185,153,147, 22, 46, 91, 94,217,202,110,232,175,108, 18, 20, -232,119,232,131,133,115, 53,215,247,126,142,237,107, 62,164,231, 78,159,110,121,250,244,233, 87,198,142, 29, 91,211,214,161,116, - 0,254, 2, 48,200,149, 91, 55, 25, 25, 25,119,217, 63, 69, 70, 70, 94,209,106,181,129, 50,153, 12,241,241,241,250,184,184, 56, -183,143, 94, 74, 98, 86,133,148, 36, 87,113,113,113,232,210,165, 11, 0,224,232,209,163,104,215,174,157, 91, 36,203, 98,177,228, - 60,241,196, 19, 14,109, 86,110,110,174, 0, 0,177, 41, 41, 88, 27, 28, 12,142,227,240,251,194,133,152,106,177, 96,190,200, 61, -211,156,102,205,154,209,211,167, 79, 35, 33, 33, 1, 86,171, 21,125,250,244,113, 38, 87, 46, 75, 80, 80,208, 59, 7, 15, 30,244, - 95,187,118,173,113,203,150, 45, 70, 65, 16,152,102,205,154,169,163,163,163,177,124,121,113, 55, 26, 52,104, 16, 38, 77,154,132, -184,184, 56, 40, 20, 10,116,232,208,129,159, 53,107, 86,192,184,113,227,222, 64,241, 53,252,210, 22, 24,218,189,123,119, 28, 57, -114, 4, 44,203,162,101,203,150,200,202,114, 92,238, 65, 96, 96, 96,105,207, 88,219,120,255, 87, 22, 34,142,227,232,225,195,135, - 23,117,234,212, 9,119,238,220,121, 54, 38, 38,230,147,225,195,135, 39,221, 47,174,183,151, 26, 77, 27,214,129,209,104,132,209, -104, 68, 72, 72, 8,242,243,243,113,253,250,117, 24,141, 70, 4, 6,104,221,198,139,110, 92,207,129, 23, 16, 16,128,130,130, 2, -220,188,121, 19, 38,147, 9,126,126,222,238,244,249,176,238,221,187,255,250,229,151, 95,250,110,220,184,209,212,185,115,103,201, - 39,159,124, 66, 52, 26, 13,210,211,211, 43, 91,228,195, 71,143, 30, 13,239,214,173, 91,212,197,139, 23,113,248,240, 97,152, 76, - 38, 68, 71, 71,227,234,213,171,104,211,166, 13,244,122,253,201,211,167, 79,255, 80, 29, 22, 24,251,241,157, 61, 29, 57,114,100, -170, 70,163,177, 0, 88,118, 63,125,241,246,237,219,210, 38, 77,154, 24,101, 50,153,196, 70,214, 62,252,183,250,118, 41,237,126, - 95, 55, 19, 43,152, 83,198,249,249,249,117,171, 93,187, 54,210,210,210,196, 18,137, 4,237,218,181, 51,183,104,209,194, 28, 20, - 20,244,134, 27,237,114, 81, 44, 22,119, 44,222, 68,240,184,125,251, 54, 40,165,147, 26, 55,110,252, 86,126,126, 62,178,178,178, - 36, 26,141,198,177,153,142,138,138,130,209,104,188,232, 6,201,156, 19, 17, 17, 49, 77, 44, 22,207,207,200,200, 88, 93, 74, 29, - 73,154, 54,109,170, 17,139,197, 48,155,205,198, 18,207,170,149,221, 91,149, 16, 44, 39,214, 88, 82,109, 94,225,241,160,171, 54, - 88,132, 16,152, 76, 38, 40,149, 74,199,209,147,179,231,246,210, 8, 86,101, 36, 44, 44, 12,173, 90,181,146,111,223,190,125,203, -146, 37, 75,142, 87, 6, 99,231,151, 95, 4,123, 9,133, 97,201, 39,247,224,242,185, 63,240,237,133,156,204, 73, 11,151,189,249, -220, 11, 47,166,149, 36,100, 59, 70, 85,140, 87, 63, 64,217,184, 70,160,239,161, 15, 63,120, 95,147,117,241, 4, 82, 82, 83,177, -231,228,233, 51, 38, 74, 47, 0,152, 84, 85, 13,234,124, 27,173,186,116, 84,103, 55, 13,153,153,153,184,112,225,130,157, 92, 69, - 3, 64,251,246,237,207,218, 73,214,153, 51,103, 16, 19, 19,115,143,155,134,123, 52, 13,217,217, 11, 74,252, 70, 55, 0,126,118, -162,207,113, 28,218, 77,155,230, 54,185, 34,132, 80,158,231,161,211,233,236, 59,195, 74,145, 43, 27, 86,187,194,194, 66,108,217, -178, 37,243,218,181,107, 97,181,107,215, 30,247,249,231,159, 47, 83, 40, 20,119,171, 56, 10, 11,209,173, 91, 55,140, 25, 51, 6, - 51,102,204, 16,134, 15, 31,206, 50, 12, 83,102, 4,123,158,231,197,181,106,213, 58, 0,224,169,139, 23, 47, 2,192,113, 74,105, - 59,251,243,242,158,185, 32, 66,126,126,190, 72,173, 86,151,234,226, 65, 92,124, 77,211,221, 35, 61, 7,230,177, 99,199,222, 95, -186,116,233,183, 19, 38, 76,184,118,159,152,165,106,176,122,247,238,141, 34,163, 5,137,105,185,224,121, 43, 12,230,116,183,241, -156, 53, 88,189,123,247,134,161,200,132,219, 41, 58, 88,173, 60,242, 13, 86, 87,219, 94,241,244,211, 79,255,188,109,219,182,160, - 19, 39, 78,128,231,121,225,234,213,171, 55,251,245,235,167,153, 56,113,162,175,147,141,169,187,242,241,139, 47,190, 56,224,216, -177, 99,186,168,168, 40,159,147, 39, 79, 34, 61, 61, 29, 86,171, 21, 79, 61,245, 20, 36, 18,201,237,133, 11, 23,138, 1,124, 92, - 93, 8,150, 84, 42,197, 31,127,252, 81, 37,196,202, 89, 36, 18, 73,165,143, 25, 31, 85, 57,121,242,100,210,216,177, 99, 27,106, - 52,154,229, 29, 58,116,232,226,235,235,203,120,123,123, 31,174, 81,163,198, 91, 77,154, 52,113,249, 52, 65, 36, 18, 13, 87, 42, -149,215,173, 86, 43,107,211,156, 3, 0,172, 86,171,132, 97, 24,212,170, 85,203,161, 52,105,217,178, 37,130,130,130,248, 75,151, - 46, 13,119, 21, 63, 61, 61,253,174, 91,133,165,200,168,118,237,218,113, 70,163, 17, 9, 9, 9, 71, 75,106,232, 31, 23,146, 85, -166,129, 10,195, 48,160,148, 66,214,188, 57, 82,246,237,195,215, 95,127, 93, 46,208,154, 53,107, 80, 82,165, 71, 8,233,230,236, - 43,195,126, 91,240,181,215, 94,115,124,231,204,153, 51, 14, 99,247, 62,125,250,220,133,121,234,212,169,123, 72, 86, 73,204, 50, - 26,247,226,142, 29, 59, 78, 47, 94,188,248,164,139,147,161, 3,211,110,131, 53,224,165,151, 83, 86,188, 63,227,252,198, 31, 14, - 52, 78, 49,208,148, 73, 11,151, 77, 40, 73,174, 92,197,124, 34, 72,245, 68,104,128,239,225,165, 31,188,239,101,215,134,109, 59, -155,154, 11, 43, 29,229, 78, 99,185, 82,118,103, 77, 34, 33, 68,168, 10,204, 74, 16,139,187, 48,157,221, 52,164,164,164, 56,200, -149,147,163,209,232,246,237,219,159,181,145, 43,251, 51,107,101,242,201,113, 28, 38,232,245,224, 56, 14,157,103,207,198, 83,115, -231,186, 93,118,158,231,193,113, 28, 34, 35, 35,221, 38, 87,206,152,148,210, 99,231,207,159,143, 24, 54,108,152, 58, 50, 50, 50, -158, 16, 34, 26, 49, 98,132, 16, 28, 28,204,252,254,251,239,160,148,162,125,251,246, 72, 75, 75,131, 32, 8,216,188,121, 51,134, - 13, 27, 70,254,250,235, 47, 42, 8,194,254,242,242,153,144,144, 48,170,107,215,174,107,138,138,138,184,172,172,172, 81,174, 62, -171,168,236, 59,118,236,184, 22, 25, 25,217, 9,101,187, 98, 16, 0,156,184, 31, 76,155,246, 46,234,126, 48,203,210, 96,125,245, -213, 87, 16, 4, 1, 97, 65, 90, 24,141, 70,148, 36,179, 21, 97,150,212, 96,109,223,190, 29,130, 32,160,102,176, 15, 76, 38, 19, -236,134,193, 21, 97,250,250,250,126,184,105,211,166,208, 75,151, 46, 33, 49, 49, 17,203,150, 45,187,149,147,147,211, 51, 39, 39, - 71, 58,107,214,172, 67, 47,189,244, 82,160, 32, 8, 70,119,199, 38,165,212, 72, 8, 25,222,182,109,219,205,243,230,205,187,209, -160, 65,131,154,237,218,181,211,102,101,101,101,252,249,231,159, 55,215,172, 89,163,178, 90,173,195,203, 58,122,122, 24,227,221, - 89,146,146,146,102,219,214, 25,183,136,149, 43,249, 60,117,234,212,187, 54,236, 83,174, 96, 63,172,178,223,239,205,196,138,242, -185,114,229,202, 68,148,240,111,230,110, 62, 79,157, 58,149,208,173, 91,183,185,129,129,129,179,100, 50, 25, 50, 50,138,131, 19, -216, 53,141,246,245,186,121,243,230,232,222,189, 59,174, 92,185, 50,119,218,180,105, 9,247, 83,159,182,141,118, 29, 0,175,116, -237,218,117,226,128, 1, 3,176,114,229, 74, 80, 74,215, 63,174,132,216,238,166,129, 56,255, 5, 0,139,197,114,231,250,245,235, -193,245,178,179,217, 16, 66,208,178,101, 75, 56,199, 16,180,219,229,216, 13,229,126,251,237, 55,171, 32, 8,229,250,156,226,121, -254,206,177, 99,199, 2,247,237,219, 39,178, 55,164,205, 88, 83, 72, 78, 78,102, 14, 29, 58,228,208,134,113, 28,135,195,135, 15, - 91,205,102,243,109,119, 11,117,229,202,149, 42,217,189,253, 22,151,240,214,207,123,190,243,107,221,170, 67,142,198,199,167,212, - 1,108,247,248, 94,110,199,226,152,249,139, 23,206,213,218,201,213, 87,103, 83,115,138,140,124,151,139, 25,133,231,170,186, 65, -243,243,243, 19,236,183, 5,245,122,253,237,234,210,209,236, 55, 8,131,131,131,207,162,196,109, 65,251,179,152,152,152,123,158, -185,165, 38, 17, 4,120,121,121, 57, 38, 7,119,237,174, 8, 33,212,126,100, 93,114, 60, 84, 70, 82, 83, 83,151, 76,155, 54,237, -153, 5, 11, 22,248,239,221,187, 87, 99,195, 68,255,254,253,211,207,159, 63,223, 1,128,180,160,160, 96,255,130, 5, 11,252,157, -226, 17,114,189,122,245, 74, 75, 75, 75, 91, 81, 65,125,222, 0,208,213,221,103, 21,201,128, 1, 3,226, 81,138,195,207,251,145, - 7,129,105, 23, 93, 78, 30,226, 19,146,108,177, 40, 5,240,183,210, 28,118, 83, 22,139, 21,186,188, 44,183, 53, 88,215,111, 38, -217, 66,131,241,224,249,100, 27, 94,177,161, 59,205, 46,116, 69, 59,208,126,249,242,229, 61, 25,134, 97,126,255,253,119,227,226, -197,139,239,100,100,100,244,161,148,222,182,245,179,206, 27, 55,110,220,226,130, 75,134,178,218,254, 2, 33,164,205,228,201,147, -223, 4,208, 30, 64, 77, 0,183, 1, 28, 5,240,113, 53,243, 56,190,236, 17,197,174,180, 60, 42, 55, 19,247,239,223, 63,187,111, -223,190, 92,120,120,248,123,225,225,225, 76,118,118, 54,244,122, 61, 24,134, 65, 80, 80, 16, 26, 53,106,132,160,160, 32,225,226, -197,139, 11, 38, 79,158, 92,161, 79,189,134, 13, 27,214,177, 88, 44,117, 25,134,169, 3,160, 14,165,180, 14, 33,164, 14, 0, 31, -155, 38, 76, 19, 17, 17,193,181,110,221, 26,173, 90,181,194,161, 67,135,176,115,231,206,207, 41,165, 63, 59,107,175,170, 98,238, -173,246, 26,172,236,236,236,238, 61,123,246,220,199,178,108,173,210, 22,172, 82,130, 50, 39,164,165,165, 61, 91,238,228,149,157, -221,253,173,183,222,218,199,178,108, 45,187,102,202,106,181, 26,117, 58,221,235,157, 59,119, 94, 37, 18,137,164,206,184,130, 32, -220, 74, 75, 75,123,168,177,244, 74,250,193,234,222,179,111,230,253, 98,170,196, 76,221,203, 63,174, 69, 90,122, 38,190, 58,155, -154,157,111,226, 59, 95,201, 40, 56,255, 32,242,159,144,144,208,163,186,118, 54, 27,145, 42,245,232,175,188,103, 46, 74,134, 11, -142, 68, 51, 42,200, 31,177,145, 44, 82, 69,229, 61, 79, 8,105, 59,118,236,216,233, 10,133,162, 37, 0, 20, 22, 22,254,158,156, -156, 60,215,126, 75,176,162,231, 30, 41, 91, 44, 22, 75, 98,163, 39,162,236,117,125,151,107, 6,231,215, 86,171, 53,209, 29,188, -210,112,156,223,243, 60,159, 88,129, 22,121, 66,171, 86,173,216, 9, 19, 38,164,237,221,187,215, 30,224,182,208,169, 95, 92, 65, - 57,206, 68, 93,236, 91, 70, 0,139,109,201, 35,213,112,174,115,231,253,191, 37,223,125,247,221,244,193,131, 7,111,244,241,241, -249,162, 78,157, 58, 81,129,129,129, 26,185, 92, 14,163,209,152,111, 50,153, 46, 95,185,114,101,200,180,105,211,110,184,130,181, -113,227, 70, 22,128, 88, 16, 4, 25,195, 48, 74, 0, 26, 66,136,183,157, 96, 17, 66, 96, 54,155,145,144,144,128,169, 83,167,242, - 7, 14, 28,248, 0,192, 76, 55,178,219, 2,128,191,211, 60,238, 15,192,132, 98,199,179, 25, 0, 78, 63, 50, 4,203,230,173,186, - 77, 21,119,186,242, 48,195,171, 75,165, 12, 53, 46,222,138, 53,139,239,138, 67,104, 39, 95,165,190,175,224,160, 47,215, 96, 29, -251,241,207,113, 75,140, 86, 42,152,173,194,136, 43,233, 5, 23,254,195, 19,143,181, 50,207, 92,192,125,186,138,242, 71,170,184, -188,241, 0,134, 86,246,185, 71,202, 97,203, 25, 25,205,171, 35,158,201,100,122,171,109,219,182, 31,241, 60,191,212, 98,177, 28, -245,180,148, 71,170,179,124,245,213, 87, 55,236,235,242,192,129, 3, 89, 0,216,177, 99,135,219,183,123,135, 13, 27,198,219, 2, -140, 23, 1, 40, 0,144,135, 98, 71,217, 4, 0, 10, 10, 10,178,147,147,147, 47,242, 60,127, 17,192,150, 74,220,160,245, 39,132, -252, 72, 41,237,109, 35,108, 63, 82, 74,123, 59,127,246,200, 16,172,255,170,236,136,251,103,129, 45, 73,156, 42,122, 95,150, 92, - 78,213, 31,190,223, 29,171, 71, 60,226,145, 71,102, 19,113, 27, 64, 31, 79, 77,120,228,145, 91,255, 42, 65,172,236,114,225,194, -133, 7,102, 10,240,168, 10,227,169, 2,143,120,196, 35, 30,241,136, 71, 60,226,145,170, 21, 2,160, 91, 25,187, 48,119,110, 7, -116,171,196, 46,111,191, 7,211,131,233,193,244, 96,122, 48, 61,152, 30,204,255, 22,102, 37,165, 87, 5, 71,132,187,171, 29,195, -114, 54,226,172,234, 4,160,155, 7,211,131,233,193,244, 96,122, 48, 61,152, 30, 76, 15,230,125,166, 46, 83,166, 76,121, 23,197, -241,137,233,148, 41, 83,222,165,148,246, 42,166, 49,180,215, 67,206,139, 75,201, 99,131,229, 17,143,120,196, 35, 30,241,136, 71, -170,187, 28, 95,184,112, 97,225,194,133, 11,237, 6,237, 25, 0,136, 77,123,149, 81, 29, 51,252,175, 17, 44, 66, 72, 8,195,137, - 95, 22,137,165, 93, 64,133, 70, 0, 0,134,141,227, 77, 69,191, 90,173,230, 47, 40,165,201, 46, 96,148,122,227, 43, 10,120, 34, - 82, 43,255,222,200,243,226,219,249,166,129,151,139, 29,209,149,166,189, 43,215,225,219, 64, 66,218,201, 36,146, 95, 36, 90,109, -169,222, 5, 77, 57, 57,134, 34,147,233,153, 29,148, 30,243,244,125,143,120,196, 35, 30,241,200,163, 32,132, 16,165,183,183,247, - 1,134, 97,194,157, 62, 67,105,175, 1,128,231,249, 20,157, 78,247, 12,165, 52,243, 97, 98,150, 92,114, 81,198, 90, 94, 93,133, -179, 21,220, 78, 52, 42,140, 96,221, 32, 88,213, 33,170, 78,248,151,201,169,105,103,243,138, 76, 35, 47, 39,229,235,220,254, 81, -177,236, 53,173, 95,208,252,255, 27,254,150,111,100,253, 40, 18, 22, 86, 3,160,192,237, 59,137,129,215,175, 93,237,186,125,211, -199,227,197, 50,217, 84,115, 81,209,103,238, 98, 71, 2,202, 8,149,244,200,103, 83, 94,210,114,176,226,197,121, 95,238, 21,244, -230,154, 87,139,175,141,186, 44, 3, 9,105,231,237,227,243,243,226,125,251,228,234,102,205, 74, 18, 51, 8,130, 0,253,217,179, -242, 41, 61,122,252, 60,144,144,238, 30,146,245, 88, 78, 66, 65, 26,141,102,156, 72, 36,234,108, 54,155,195, 37, 18,201, 29,158, -231, 15,103,103,103, 47,167,148, 38,121,106,200, 35, 30,169,112, 12,149, 25, 96,252,223, 12, 62, 14, 0,106,181,250, 15,134, 97, - 66,157, 23,127,187,127,198,146,126, 30,157,252, 61,222,200,202,202,106, 91, 78,121,235,248,248,248,172, 2,208,162, 34, 71,199, -182,253,253,105,157, 78,247,186,205, 93, 75,105,120,106,111,111,239,217,132,144,129, 12,195, 84, 24,240, 87, 16, 4,158, 82,186, - 35, 59, 59,123, 38,165, 52,191,172,239,121,123,123,239,191,116,233, 82,139,128,128,128, 10,221,210, 88,173, 86,220,190,125,219, -191,101,203,150,191, 1,104,240, 32, 49,221,225, 34,143, 12,193,178, 53,182, 75, 17,172, 5, 1, 47,111,152,255,122,141,148, 91, -215,106,140, 90,176,181,126, 3, 63, 69,231, 75,153,133,169,174,254,160, 68,174,254,161,253, 83,189,187,140,121,115,130,242,207, -243,151,241,203,161, 19,200, 43, 48,130,101, 24,104,213, 10,212,175, 95,151, 44, 91,251,181,223,231,159, 46, 91, 42, 87,105,123, - 25,244, 57,207,187, 83, 32, 47, 5,247,222,164,126, 45,149,190, 62, 60, 32,240,120,167,103, 83,229,123, 63,158,125, 15,133,214, -247,220, 38, 87,251,247, 43,210,211,210,240,129,175, 47, 56,139, 5, 50, 66, 32, 39, 4, 50, 0, 42,169, 20, 29,190,252, 18,243, -119,239, 86, 76,237,213,203, 67,178, 30, 51, 81,171,213,195,235,215,175,191,120,221,186,117,190,181,107,215,134, 82,169,132, 78, -167,243,187,114,229, 74,179,183,223,126,123,168,151,151,215,180,220,220,220, 53,158,154,242,136, 71,202, 36, 27,205, 0,148, 26, -188,189,188,103, 15, 75, 24,134, 9, 77, 74, 74, 10, 80, 40, 20,224,121,222,230,189, 95,112,108,160,157, 15, 56,108, 14,102,209, -160, 65, 3,115, 5,243,198,202,244,244,244,110,206, 33,203,202, 59, 40, 73, 74, 74,234,214,176, 97,195,149, 0,158, 41,131,180, -204,126,243,205, 55,199, 53,110,220,216,174,245,177, 69, 45, 40,254,155,153,153,137,177, 99,199, 58,126, 67, 16, 4,236,219,183, -239,205,225,195,135, 3,192,219,229,148, 61, 60, 32, 32,128,140, 26, 85,190,175,161, 89,179,102, 97,214,172, 89,248,248,227,143, -137, 72, 36,210, 86, 80,159, 85,130,233, 42, 23,121,164, 8,150,203,157,146, 10,123,230, 45, 95, 55,114,206,176,246,100,195,219, -221, 34, 71,127,188,255, 68,195, 16,121,199, 11,201,134, 59, 46,104,174, 70,180,238,248,108,231,177,227, 38, 41,183,126,119, 16, - 87, 46,158,195,165,163,219,238,250, 78,243,103,134, 35, 53, 51, 31,195,199,188,163, 34, 44,215, 89, 44, 83,140, 48, 23, 21,110, -112, 37,111, 81, 64, 96,184, 84,242,191, 54,173, 26,137, 80, 51, 17,160, 64,251,152,122,162,176,159,255,254, 95, 62,172, 31, 95, - 6, 42,140, 37, 88,146, 92,109,125,225, 5,244, 48, 24, 16,136, 98,159, 22,246, 84, 8,224,114,223,190,104,240,237,183,152,253, -253,247,138,153,125,250,184, 77,178, 20, 10,197,231, 6,131, 97, 81, 37, 28,174,253,155,147,102,125,181, 90, 61, 53, 47, 47,239, -229,106,148,167, 96, 0, 25,165,196, 47, 20, 3,208, 82, 74,221,138,248, 43,147,201, 94,123,241,197, 23,151,173, 88,177, 66,145, -150,150,134,228,228,100,240, 60, 15,153, 76,134,200,200, 72,178,127,255,126,223, 73,147, 38, 45,209,104, 52,210,188,188,188,143, -220,200, 39, 35, 18,137,134,249,248,248,244, 13, 12, 12, 12,200,200,200,200,200,206,206,222,101, 52, 26, 55, 84,118, 39,111,195, - 28, 18, 17, 17,209, 55, 36, 36, 36, 48, 41, 41, 41, 51, 49, 49,241, 7,163,209,248, 57,165, 84,184,207, 58,109, 2,192,215,246, - 81, 74, 68, 68, 68,220,205,155, 55,211,171, 16, 51, 57, 34, 34,226,130,187,152,132, 16, 37,128,237, 0, 66, 42,248,106, 50,128, - 65, 54, 7,199, 30,249, 23,200,149, 45,244,212, 93, 68,170,188,103, 15, 91,228,114, 57,182,109,219, 6,145, 72, 4,145, 72,132, -236,236,108,132,134,134, 58,222,139,197, 98,199,235,154, 53,107, 86,136,199,243,124, 75,150,101,161,215,235,193,243,188, 35,229, -228,228,128, 82, 10,169, 84, 10,158, 47, 14,187,228,244,188,101, 57,245, 56, 48, 36, 36, 4, 91,183,110,133,201,100,186,231,185, - 70,163,193,249,243,255, 4, 5, 97, 89, 22,173, 90,181, 98, 8, 33, 3,203, 35, 88,118, 77, 81,108,108, 44, 88,150,117,132,190, -179,191,182, 39,158,231, 49,107,214, 44, 56,135, 16,123,152,152,143,252, 56,176, 21,146,150, 22, 38,164, 65,144,234,245,238, 93, - 90,127, 32,151,138,229,130,213, 2,222,106, 6,111, 49,129, 35, 60,158,105, 18,140, 54,181, 21,200,208,229, 97,212,154, 83,121, - 73, 73,198, 86,231,179,242,175,148, 83,249, 33,106,109,192, 95,159,110,254,206,239,151, 19,151, 16,119,238, 44,206,238, 93, 85, -234,119,187,189, 56, 5, 13,155,180,192,147,245,130, 48,113,244,128,204,172,244,228,166,165,217,100,149,180,193,106,171, 22,111, - 94, 49,164,203,139, 77,154,105, 25,116,178,173, 87,251,173, 56,115, 34,149,127,235,135, 63,183,158,200, 55, 15, 45,193,148,239, -217, 90, 12,149, 74, 11, 63, 57,113, 66,158,158,158,142,173, 47,188,128, 24,131, 1,153, 34, 17,158,176, 88, 28, 36, 43, 7, 64, - 22,199, 33,200,106, 69,145, 70,131,160,175,191, 6,207, 48,152,210,163,135, 97,179,201,164,112,181,242, 85, 42, 85, 6,203,178, -124, 94, 94, 94,231, 71,129,100,217,200,213, 33, 66,136, 56, 55, 55,215,167, 26,228,135, 1, 48,103,228,200,145, 35,142, 28, 57, -114,253,250,245,235,221,108,158,132, 65, 8,225,234,214,173,123,176, 67,135, 14,117,214,175, 95,255, 25,128, 57,174, 16, 14, 66, - 72,141,218,181,107,255, 25, 23, 23,231,119,245,234, 85,232,245,122,136, 68, 34, 12, 25, 50, 4, 95,127,253, 53,196, 98, 49,164, - 82, 41,196, 98, 49, 58,118,236,152,121,243,230,205, 22,148,210, 91, 46,224,178, 94, 94, 94,159,175, 90,181,170, 94,159, 62,125, - 56,163,209, 8,158,231,177, 99,199, 14,203,204,153, 51, 19,178,178,178, 94,113,151,100, 17, 66,152,224,224,224, 13,159,125,246, - 89,253,167,158,122,138, 51, 24, 12, 16, 4, 1,187,119,239,182,188,247,222,123, 55, 82, 82, 82,134, 82, 74,249, 74,212,107, 51, -133, 66,209,240,245,215, 95,207,232,211,167,143, 25, 0, 78,159, 62,205,156, 59,119, 78, 83,187,118,237, 91,211,167, 79, 63, 91, - 9,204, 24,181, 90, 29, 53,106,212,168,204,222,189,123, 91,196, 98,177,112,236,216, 49,238,202,149, 43,154,136,136,136,248,247, -222,123,239,156, 27, 88,123,142, 31, 63,222, 41, 52, 52, 84,176, 77,234,212, 62,193, 51, 12, 67,109,127,113,249,242,101,174, 83, -167, 78,135, 40,165,207,195, 35, 15,115, 92,114, 0, 44,148, 82,232,116, 58,156, 60,121, 18,189,122,245, 2,128,104,219, 87,206, - 82, 74,145,151,151, 7,131,193,128,224,224, 96, 0, 16, 61,236,227, 66,173, 86,155,150,145,145, 17,240,253,247,223, 67, 36, 18, - 97,223,190,125, 88,189,122, 53,182,109,219, 86, 42,201, 10, 14, 14, 70,100,100,100, 98,114,114,114, 88, 57,115,122,174, 94,175, -215,228,230,230,130,231,121,156, 60,121, 18,235,214,173, 67, 64, 64, 0,252,252,252,224,239,239,143,150, 45, 91, 66,169, 84, 58, - 72, 86,135, 14, 29,242,244,122,189, 87,105,120,190,190,190,201, 19, 38, 76, 8, 62,115,230, 12, 44, 22, 75,169, 4,107,220,184, -113,206, 90, 36, 40, 20, 10,180,105,211, 38, 37, 43, 43,171,204, 13,136,191,191,127, 74, 70, 70, 70,208,185,115,231,238, 34, 63, -165, 17, 34,150,101,161, 86,171, 81,171, 86,173,180,148,148,148,160, 7,137, 89, 22, 23,121,228, 53, 88,182,137,170,243, 93, 26, -161,136,160,169,139,199, 13,148,131, 55,131, 90, 12,128,185, 16, 48,235, 33,152, 10, 65,196,114,192, 98,128,191, 84,135,237, 99, -162, 52,147,183,198, 95,124,194, 95,211,235, 98, 70,222, 79,165,106,190, 56,241,144,129,195,222,244, 77, 76,207, 67, 82, 90, 46, - 88,230, 31, 31,167,209,221,134,129, 99, 25,156,250,185, 88, 81,197,176, 44,114, 11,140,200,209,155, 49, 96,216, 56,159,207,150, -205, 24, 2, 96, 81,121, 5,105, 4, 68, 54, 82,169,250, 53,110, 20,206,160, 94, 10, 72,157, 93,197, 36,234,200,115,104,150, 29, -192, 54,248, 69,210, 79,159,111, 94, 16, 7, 92, 45, 15, 71,162,213,202,213,205,154, 97,177,175, 47,122, 26, 12,184,206,113,120, - 81,167,195,111,227,198,129,219,176, 1, 28, 0,227,136, 17,104,183,124, 57,206,251,248, 32, 36, 47, 15,230, 17, 35, 32, 57,115, - 6, 98, 47, 47,185, 59,149, 47, 22,139,205,235,214,173, 11,121,245,213, 87, 15, 17, 66,170, 53,201, 34,132,212,247,241,241, 57, -244,254,251,239, 7, 78,159, 62, 61,165,138, 48, 3,149, 74,229,142,130,130,130,113,238,238, 96,109,228,106,222,154, 53,107, 70, -199,198,198,106, 95,125,245, 85,122,253,250,117, 45, 0,187, 54,196,191, 67,135, 14,117,215,173, 91, 23,212,162, 69,139, 55, 71, -141, 26, 37, 38,132, 76,171,136,100,169, 84,170, 49,235,214,173,243,203,204,204,116,144, 43,145, 72,132,196,196, 68,200,229,114, - 71,176,115,145, 72,132,247,223,127,223,119,204,152, 49,227, 0,140,171, 40,191, 82,169,116,216,170, 85,171,234,117,239,222,157, - 75, 72, 72, 0,195, 48,144, 74,165,120,233,165,151, 68,133,133,133,225,115,230,204,137, 5,176,202,157, 58, 16,137, 68, 67,214, -174, 93, 91,191, 93,187,118,220,165, 75,151,208,166, 77, 27,156, 58,117, 10, 47,188,240,130, 40, 63, 63,191,214,164, 73,147, 70, - 2, 88,235,174,150, 73,161, 80, 52,254,245,215, 95,239,132,133,133, 57, 54, 32,181,106,213,226,123,245,234,165,187,116,233, 82, -212,137, 19, 39,178,218,180,105,115,219, 13,204, 26, 10,133,162,193,158, 61,123, 82,230,204,153,211,117,205,154, 53,125, 0,160, -101,203,150, 63,204,157, 59,247,160, 78,167,107,116,228,200, 17, 93,135, 14, 29, 18, 93,132, 12, 9, 14, 14,230,199,142, 29,171, - 42,239, 75,235,215,175,207, 1, 80,147, 16, 82,219, 22, 0,219, 35, 15, 65, 40,165, 86, 66, 72, 52, 33,228,236,238,221,187,209, -170, 85, 43,236,222,189, 27,189,122,245, 58,107,123,142,220,220, 92,156, 63,127, 30, 29, 59,118, 4,138, 3,188,255, 43,182, 88, - 60,207,131,227, 56, 36, 38, 38, 98,253,250,245, 88,176, 96, 1, 34, 35, 35, 97,177, 88, 28, 99,159,227, 56,136, 68, 34,187,182, -197,165, 69,223,106,181,226,244,233,211,248, 98,243,102, 76,155, 58, 21,106,181, 26, 0, 96, 54,155,161,203,206,134, 76, 38,115, -104,176, 42,168,203, 29,215,174, 93, 27, 23, 26, 26,122,215,209,160,253,175,109,206,130, 32, 8,176, 90,173, 40, 42, 42,194,178, -101,203,172,148,210, 29, 21,140, 73,135,198,107,220,184,113, 48, 26,255,137, 15,222,164, 73, 19, 0, 64, 68, 68, 4,154, 54,109, -234,120,207, 48, 12,117, 21,243,179,182,141, 97,112,250,118,212,172, 37, 0,128,208,208, 80, 68, 69, 69,217, 73,117,169,152,165, -113,145, 71,154, 96,149,197, 20, 47,222, 76, 93,244,234,164, 37, 75,148, 50, 86,244, 86,223, 39, 81, 83, 43, 6,228, 62, 16,119, -156, 12,162, 13, 47,238, 0,186, 27,192, 47,147,177,180,159,142,137,221, 82,244, 93, 93, 31, 31,255,235, 58,221, 61,198,117, 34, -177,172, 75,157,122,245,201,237, 20, 29, 56,142,131,210,203, 15,109,251,190, 13,150,101,160,210,250,129,240,134,127,212,156, 12, - 11,142,229,160,203, 55, 32,162,118, 61, 70, 42,147,119,169,136, 96,121,121,137, 86, 78, 28,220, 86,198,200, 50,129, 16,137,211, - 84, 44, 1,227,155,143, 9, 61, 34,229,177, 63,252,189, 18,185,150,174, 46, 85,140, 93, 99,101,181,226,183,113,227,208,117,237, - 90,252, 14, 64, 4, 32,102,237, 90, 92,142,141, 69,128,197, 2, 41, 0,214,104,132,181,196,153,189,139, 11, 15,250,246,237,139, -204,204,204,192,169, 83,167, 86,154,100,201,229,242, 47, 8, 33, 61, 69, 34,145,153, 16, 2,134, 97, 28,193,185,237,175,205,102, -179,152,101,217, 61,153,153,153,110, 31,237, 17, 66,234,123,123,123, 31, 58,126,252,120,160, 82,169,196,172, 89,179,170,132, 92, -169,213,234,223, 71,142, 28, 89,243,139, 47,190,248,137, 16,210,195, 85,146, 85,146, 92,173, 93,187, 54,103,253,250,245,159, 57, - 31, 5, 82, 74, 83, 8, 33, 27, 90,180,104,241,122,108,108,172, 22,192,232, 81,163, 70,161, 34,146, 37,149, 74, 59,215,169, 83, - 7, 58,157,206, 49,193, 74,165, 82, 0,128, 82,169,132,151,151, 23,196, 98, 49,140, 70, 35,162,163,163,137, 68, 34,105,239, 74, -158,213,106,117,207,126,253,250,113,199,142, 29, 67,106,106, 42,188,188,188,160, 84, 42,193,243, 60, 94,123,237, 53,241,242,229, -203,159,117,151, 96,133,133,133,245,233,218,181, 43, 23, 23, 23,135,155, 55,111,194,104, 52,226,202,149, 43,208,104, 52,120,229, -149, 87,196,139, 23, 47,126,206, 93,130, 5,160,113,108,108,108,154, 51,185,178,139, 82,169, 36,245,235,215,215,249,250,250,198, - 0,184,237, 14,230, 27,111,188,145,190,112,225,194,142,251,247,239,159,108,255,112,255,254,253,147, 0,224,163,143, 62, 58,226, -239,239, 31, 3,192, 85,130, 5, 74,169,240,127,255,247,127,183, 36, 18, 9, 68, 34, 17, 36, 18,201, 93, 73, 44, 22,131, 97, 24, -181,125, 74,121,140,181, 69, 45, 0,124,136,226, 27, 86, 83, 41,165, 39,171, 9,201,250,147, 16, 18,221,171, 87, 47, 7,201,218, -187,119, 47,122,244,232,129,156,156, 28,196,197,197, 57,147,171,127,203, 6, 11,130, 32, 64, 36, 18, 97,201,146, 37, 48,155,205, -216,178,101, 11,118,238,220,121,215, 28,170,209,104,240,241,199, 31,187,117,156,197,243, 60, 54,110,220,136,201,147, 38, 57,200, -149,109, 83,141,160,192, 64,248,250,249, 33, 62, 62,190, 66,130,149,157,157, 61,115,215,174, 93, 40,207,200,125,215,174, 93,142, -215,206, 70,238,174,228,147,101, 89, 24,141, 70, 60,253,244, 63,161, 92,223,120,227, 13,199,107,157, 78, 7,150,101,237,117, 65, - 92,197, 52, 80,160,175,236,159,207,122, 78,152,224,120,157,153,153, 89, 38,230,227,160,181, 42, 85,131, 85,154, 92, 77, 47, 88, -193,145,148,166, 11,199, 62, 51,172,102,128, 23,168, 62, 13,226,167,102,226,175, 12, 57,150, 44,219, 3, 0,120,231,165,230,104, -210,109, 30, 76,159, 63,131,113,109, 88,201,203,137,198,137, 0,166,223, 59,224,132, 6,161, 53, 66,240,215,245,243,224, 88, 22, - 18, 47, 63,120,249, 4, 66,176,154,144,155,126, 19,135,190, 89, 9, 0, 88,179,113, 7, 24,134, 1,199,177, 48,154,120, 68,214, - 12,129, 32, 8, 13,202,203,231, 19, 64,219,206,129,126,173, 34, 34,124, 8, 26,230,224,158, 8, 64,205,164,136, 76, 86,145, 54, - 42,121,203,236,220,188,182, 23,129,227, 21, 85,140,204,134, 18, 12, 64,188, 97, 3,126, 7,208,122,109,241, 90,117, 37, 54, 22, -170, 13, 27,160,180,125, 71, 74, 8,242,120,190, 82, 3, 28, 0,162,162,162,176,102,205,154,192, 49, 99,198, 84,138,100, 21, 21, - 21,205,215,104, 52, 93, 55,108,216, 16,216,175, 95,191,123,158, 95,191,126, 29, 29, 59,118, 76, 75, 77, 77,157,127, 63,228, 74, -171,213,226,206,157, 59,247,125,110,110, 39, 87,251,246,237, 11, 15, 13, 13, 69,116,116,180,255, 59,239,188,227, 14,201,154,238, - 76,174, 70,141, 26,245, 55,128, 0, 66, 72, 73,130, 66,108,207,158,116, 34, 89,185, 0, 22,151,179,243, 12, 87, 42,149, 72, 79, - 79,199,176, 97,195,112,245,234, 63, 10,207,144,144, 16,199,206, 46, 62, 62, 30,254,254,254, 32,132, 4,184, 82,102,127,127,255, - 64,147,201,132, 17, 35, 70,224,206,157,127,204, 21,107,212,168, 97,175, 83, 63,119,235, 49, 48, 48, 48,208, 96, 48,160, 67,135, - 14, 40, 42, 42, 2, 0, 12, 26, 52, 8, 34,145, 8,233,233,233, 16,137, 68,126,149,104, 30,191, 94,189,122,149,233, 34, 69,163, -209,152,189,189,189,159,112, 19,211,247,185,231,158, 75, 90,187,118,237, 61, 71,117,167, 78,157,122,222,199,199,103,191,143,143, - 79,125, 55, 49, 5,103, 50, 37, 22,139,239, 34, 88, 34,145, 8, 12,195, 8,120,252,229, 3, 0,246, 91,109,171, 1, 52,173, 70, -154, 44, 7,201,218,187,119, 47, 26, 53,106,132,236,236,108, 92,186,116,233, 95, 39, 87, 78,132, 4, 28,199, 57, 54,199, 50,153, - 12,209,209,209, 14,114, 69, 8, 65, 97, 97, 33, 56,142,179,207,215, 46, 77,126, 57, 57, 57, 8, 14, 10,130, 90,173, 70,189,200, - 72, 92,179,205, 35,246,215, 82,169, 20,132, 16, 88,173,214,138,234, 48, 31,197,182, 84,111, 87,117,243,216,201, 80,185,170,226, -144, 16, 8,130, 96,159,243,105, 85, 96,250,249,249, 65,175,215,187,138,249,232, 19, 44, 66, 72, 39, 0,135,224,116, 53,146, 16, -194, 60, 17,168, 90,191,112, 76,215, 97,207, 52,242,131, 33,227, 38,100,106, 63, 16,109, 4,150, 44,219,131,184, 27, 89, 0,128, - 37, 95,254,129,173,115,122, 2,114, 31, 68,121,101, 34, 72,205,245, 43,141, 96, 17, 80, 34, 80, 10,142, 45, 62,143,229, 56, 22, - 44,203, 64,151,145,130,229, 51, 71,219,200,213, 78,236, 62,114, 9,161,117, 26, 57,206,105, 65, 8, 64,203,239,212,254, 94,226, - 53, 99,250,183,150, 19,109, 14,160, 21,221,251, 5,111, 49, 72, 4,131,177,157, 67, 21,167,119, 21,173,185,152,107,110, 88,161, - 86,136, 16,135, 65, 59, 7, 64,236,244, 76,108,211,100, 49,246,173,177,237,214, 73, 37,136,134, 67,197, 27, 24, 24,136, 5, 11, - 22, 4, 78,153, 50,101, 11,220, 12, 12, 77, 41,189, 66, 8,233,252,218,107,175, 29,202,202,202, 10,140,138,138,130, 74,165,130, - 74,165, 66, 90, 90, 26, 6, 12, 24,144,150,154,154, 90, 89,237,216,230,145, 35, 71, 6,138,197, 98, 92,191,126, 29, 62, 62, 62, - 14, 98, 88, 89,114,165,209,104,126,223,191,127,127,120,221,186,117,113,249,242,101, 60,241,196, 19,216,190,125,187,255,139, 47, -190,232, 18,201,146,203,229,125,109,132, 9,177,177,177,218,216,216,216, 78, 0, 58, 85,244,219,177,177,177,218,183,223,126,251, -185,242, 8,150, 72, 36,186,163,211,233,130,228,114, 57,190,249,230, 27,168, 84, 42, 40, 20, 10,132,132,132, 64,167,211, 65,161, - 80,128, 82, 10,139,197, 98,159, 36,178, 92, 41,119, 70, 70, 70, 26,207,243, 97, 63,253,244, 19, 50, 50,254,241,137, 23, 30, 30, - 14,155,189, 70,166,187,117,153,156,156,156, 70, 8, 9,251,235,175,191,144,144,144,128, 30, 61,122,224,187,239,190, 67,243,230, -205, 1, 0, 38,147,169, 50,206,247,120,150,101,105, 57,237, 71, 0,120, 87, 37,166,109,209,114, 11, 83, 16, 4,193, 78,174,156, -255, 58,147,174, 10,126,243,113, 17, 47,231,253, 65,117,205,100,143, 30, 61,160,211,233,160, 82,169, 42, 92,128, 31, 54,193, 18, -137, 68,152, 61,123, 54, 70,143, 30,141,192,192, 64, 76,158, 60, 25, 28,199, 57,146,243, 73,128, 59, 18, 16, 24, 88,238,115,187, - 13, 86, 5,243,165,218,203,203,107, 54,195, 48, 3, 89, 23, 42,142,231,121, 94, 16,132, 29,185,185,185,229,186,105,176, 27,164, -187,210, 22,206,117, 80, 65, 94,239, 27,179, 52, 46,242, 40,139,189,116,135,108,170,185, 67,206,228,234,253,209, 93,134, 61,211, -200, 27, 63, 28, 56, 9,177, 57, 7, 48,229,151,211,178, 22, 16,177, 18,129, 94,162,208, 82, 43,159, 97, 47, 39, 38, 37,195,215, - 91,101, 35, 87,182,196, 48,104,210,168,120,243,186,251,200, 37,132,214,110, 4,142,101,193,177, 44, 84,114, 41,210, 82, 83,192, -113,204,229,178,126,182, 49,139,254,253,235,135, 69, 4, 6, 72,128,198,229, 12,128, 24, 53, 66,131, 37,232,238, 43, 11,111,204, -162,127, 5,132, 5, 82, 27,193,202, 7, 96, 26, 49, 2,209,107,215,226, 74,108, 44,110,198,198,162,214,218,181,192,136, 17, 16, -240,207,173, 66,190, 18, 26, 44,123, 71,180, 19,161,233,211,167,167,101,101,101, 13,169,228,110,241, 74,118,118,118,231,169, 83, -167,166,101,102,102, 66,161, 80, 32, 37, 37,229,190,200, 21, 0, 24, 12,134, 87,214,174, 93,155,118,232,208, 33,168, 84, 42,168, -213,234, 74, 19, 44,187,230,106,230,204,153, 53,195,194,194, 16, 31, 31, 15, 47, 47, 47,248,250,250,162, 73,147, 38, 56,118,236, -152,127, 88, 88,216, 79,182, 91, 70,229,229,233,251,181,107,215,230, 0,192,218,181,107,115, 8, 33,135, 9, 33,159, 18, 66, 86, -151, 72,159, 18, 66, 14, 59,127,215, 96, 48,124, 91, 30,182,201,100, 58,124,233,210, 37,170, 80, 40,192,178, 44,204,102, 51,100, - 50,153,163,189,236,134,185, 0, 96, 51, 60, 61,234, 74,217,243,243,243,247,126,254,249,231,150,176,176, 48, 60,249,228,147,136, -137,137, 65,155, 54,109, 16, 30, 30,142,217,179,103,155, 10, 10, 10,246, 86,130, 96,237,222,190,125,187, 37, 44, 44, 12, 49, 49, - 49,144, 74,165,104,210,164, 9, 66, 66, 66,176, 96,193, 2, 83,110,110,238,222, 74, 52,211,237,243,231,207,179,229,144, 91, 13, - 92,184,141, 91, 66,238,156, 62,125,154,109,221,186,245, 15, 37, 31,180,108,217,242, 7,149, 74,229, 5,192, 93,187, 62,234, 76, -170,164, 82,169, 35,217, 63,231, 56,238,191,160,193, 26, 7,224,111, 0,241, 0, 38, 87,167,140, 57,223, 22,204,202,202,194,165, - 75,151,112,230,204, 25,180,110,221, 26, 71,143, 30, 5,138,221, 52, 52,251, 23,243, 7, 74, 41, 68, 34, 17,162,162,162,240,246, -219,111, 99,207,158, 61,184,114,229, 10, 44, 22,139,131, 0,217,109, 46,221,209, 96,137,197, 98, 4, 6, 6,194, 98,177, 56,180, - 87, 0,112,237,234, 85,112, 28, 7, 65, 16, 96, 50,153, 42,212, 96,121,121,121,205, 94,183,110,221,155,153,153,153,193, 25, 25, - 25, 1,206, 41, 45, 45, 45, 32, 37, 37, 37, 32, 41, 41, 41,224,206,157, 59, 1,183,110,221, 10,184,121,243,102,240,162, 69,139, -222,244,242,242,154,237,234, 26,212,164, 73, 19,188,241,198, 27,142,180, 98,197, 10, 71, 58,116,232,208, 63,202, 14, 55,214,181, -168, 89, 75,208, 51,131, 58,210, 30,127,226, 72,113,239,140, 42, 15,243, 46, 46,242, 88,104,176,156,217, 39, 0, 52, 8, 82,204, -123,255,181,142,195,158,126,194, 11,223, 31,248, 3,115,190,189,113, 57,114,152,127, 84, 93,239, 12, 8, 25,151,240,206, 75,205, -177,228,203, 63, 0, 20, 31, 17, 10,233,113,160,217,241,160,234, 48,220,212,101,150,122,188, 96, 53, 21, 29,188,113,253,106,151, -168,198, 45,152,212, 76,253, 93, 55, 12,162, 59, 15, 0, 33, 4, 53,106, 55, 2,203,113, 96, 89, 6, 28,203, 66,171,145,225,210, - 95,127, 9, 70,131,225, 96,105,152,209, 0,231, 43,151,124,242, 82,247, 38, 50, 4,235, 1,185,244,159,217,247,198,128, 18, 43, - 3, 7, 52, 86, 99,120,146,175,252, 96, 90,209, 39,162, 2,243, 15, 0, 44,101,237,106,212, 82, 41, 10, 1,100,138, 68,104,179, -124, 57,174,198,198, 66,189, 97, 3, 88, 20, 91, 81,251, 47, 95,142,252,205,155,193, 88,173,160, 50,217,125,105,176,210,210,210, - 48,104,208,160,251, 34, 66,206,154,172, 49, 99,198, 28, 90,176, 96, 65,224,244,233,211,171, 12,115,242,228,201,135,190,252,242, -203,192, 90,181,106, 85,186,179,169, 84,170, 73,130, 32,104, 23, 47, 94,156,186,116,233, 82,148,180, 23,179, 17, 28,169, 86,171, - 93, 2,160, 75, 57, 80,115, 70,141, 26, 37, 6, 48,218,166,201,122,114,212,168, 81,199, 41,165,211, 74,212,239,172, 53,107,214, - 12,114, 58, 74,252, 20,192,242,242,242,152,151,151,183,250,237,183,223, 30,241,219,111,191,249,201,100, 50, 16, 66, 32, 22,139, - 81,175, 94, 61,155,230,181,216,224,149, 82,138, 9, 19, 38,100,166,167,167,187,228,166,193,104, 52,110,156, 51,103, 78, 23,131, -193, 16, 62,124,248,112,177,183,183, 55,210,210,210,240,225,135, 31,154, 54,110,220,120,167,160,160,192, 93, 91, 41, 88, 44,150, -141, 51,102,204,232,172,215,235,107,191,250,234,171,226,220,220, 92, 24, 12, 6, 76,156, 56,209,180, 97,195,134, 68,131,193,224, -182,163,222, 54,109,218, 92,191,117,235, 86,251,194,194,194,108,133, 66, 81, 82,187, 71,148, 74,101, 11, 0,155,221,193,140,142, -142,142,191,125,251,118,235,121,243,230, 29,182, 88, 44,162, 83,167, 78,245,177,147,171, 79, 62,249,228,144, 76, 38,235, 10,247, -141,241, 5,169, 84,122,151,198,170,228,107,142,227, 30,123, 13, 22,165,244, 16,138, 93, 95, 84, 43, 41, 73,174,226,226,226,208, -165, 75,241,144, 62,122,244, 40,218,181,107,135,163, 71,143,162,125,251,246,255,170,155, 6, 59,193,226, 56, 14, 47,190,248, 34, -186,117,235,134,154, 53,107, 58,198,185,179,145,187, 59, 36,195,106,181,162,113,227,198, 48,154, 76, 16,139,197,142, 35, 72,142, -227,224, 31, 16,128,235,215,175,187,164,193, 98, 24,102, 96,223,190,125,153, 11, 23, 46, 96,240,224,193,248,226,139, 47,202,252, -238,203, 47,191,140,109,219,182,161,111,223,190,204,187,239,190, 91,174,155, 6,187,113,185, 43,101,178,175,211, 21,105,240,170, - 10,211,153,139, 60, 54, 4,203,201,185, 23,106,251, 43,134,119,171,199,225,251,131,127, 96,206,247,183, 55,242,148,126,243,205, -217,236, 31, 39,183, 3,204, 59, 94, 66,147, 1,155,139,143, 5, 1, 8,233,113, 48,239,120, 25, 68,225,135, 35, 73, 34,228, 26, -204,187, 75,239,112,230, 47,190,219,178,242,237,214,171,218,251, 7, 7,120, 65,151,107,112,144,172,179,135,118, 2, 0,250,143, -154, 15,142, 45, 62, 58,212,168,100,144,139, 89,124,189,233,163, 76,179,185,168,212, 94, 37,136,152,209,175,182,173,231,229,229, - 69,129,134,226,187, 27,169,246,206,123,137, 86, 51,111,248,197,101,227,165,186, 42,205,242, 11, 57,163, 1,124,114,143, 6, 35, - 39,199,144,127,230,140,188,195,150, 45,184,212,175, 31,106,228,231, 35,206,219, 27,254, 86, 43, 84,118,109,213,134, 13,200,255, -226, 11,200,172, 86,192,203, 11, 89, 43, 87,194,122,254, 60,172,121,121, 6,119, 9,214,181,107,215,238, 91,203, 84, 26, 33,154, - 50,101,202,150,172,172,172, 33, 85,137,249,202, 43,175, 28, 58,112,224, 64, 96,101,113,242,243,243,199, 3, 24, 95, 5,249, 17, - 8, 33,211,108, 14,237, 70,199,198,198,106, 79,159, 62, 61,130, 16,178,138, 82,154, 98,171,219,128,145, 35, 71,190, 86,130, 92, - 85,120,139,144, 82,122, 91,165, 82,205, 29, 63,126,252,252,165, 75,151,170,236, 6,237,231,206,157,131,213,106,133, 72, 36, 2, -207,243, 24, 57,114,164, 62, 43, 43,107, 73, 89, 30,152, 75,193,181, 18, 66, 94,158, 63,127,254,200,143, 62,250,168, 55,203,178, -254, 60,207,103, 24, 12,134,159, 12, 6,195,218,202,220,162,178,213,195,208,233,211,167, 15, 93,182,108, 89, 95,134, 97, 2,172, - 86,107,102,126,126,254, 46,131,193, 80, 41,223, 90,199,143, 31,207, 88,181,106,213,141,140,140,140, 6,161,161,161,185, 42,149, -202,100, 50,153, 88,185, 92,174, 81, 42,149,209, 0, 78, 0,184,232, 14,230,153, 51,103, 82, 63,253,244,211, 4,163,209, 24,245, -233,167,159, 30,209,104, 52, 7, 8, 33, 68, 44, 22,123,203,229,242, 46, 0, 14, 3,184,230,150,234,157, 97, 4,103,109, 85, 73, -251, 43,137, 68,242, 95,177,193,170,118, 98,115,211,112,150, 82,138,204,204, 76, 92,184,112,193, 78,174,162, 1,160,125,251,246, -103,237, 36,235,204,153, 51,136,137,137, 57, 75, 8,121,232,110, 26,156, 53, 88,118, 34, 85,179,102, 77,199,123,231,228,100,131, -229,146,240, 60, 15,177, 88, 12,142,227, 16, 28, 18,226,248, 45, 74, 41,174, 95,191, 14,157, 78,231, 18,193, 98, 89,150, 37,132, - 96,240,224,193, 46,253,238,255,253,223,255,225,240,225,195, 96, 93,100,131, 44,203, 34, 34, 34,194,165,147, 22,184,104, 47,197, -178, 44, 66, 67, 67, 43,141,233,204, 69, 30, 27,130,229, 44,241,233,134,121, 47,127,120,236,221,139,169, 69,223, 92, 74, 43,124, - 27, 0,221, 17,167,248,165,137, 63,251,204, 51,245, 19, 97, 92,219, 30, 68, 83,236,116,141,234, 83, 64,148,129, 72, 20,106, 96, -214, 15,151, 83,173, 32,139,203, 88, 12,146,197, 50,197,180, 77,235, 62, 89, 58,114,204, 4, 85, 92,124, 26,114,245, 70,176, 44, -227, 60,105,130,227, 88,104,148, 50,132, 5,121,225,203,207, 62,204,207,207,203,153, 94, 86, 92,194,112,181, 56,182,107,139,186, - 82, 4, 21, 0, 69, 50,160,232,159,206, 74,255,234, 99, 91,213, 75, 40,169, 26,105,241,236,237, 2,217,119,183, 11, 98, 75, 35, - 88, 69, 38,211, 51,239, 62,251,236,207,243,126,252, 81,209,224,155,111,144,246,194, 11, 8,201,203,131, 20,184,203, 38,139,177, - 88, 0, 47, 47,100,126,241, 5, 10,121, 30, 75,135, 15, 47, 44, 50,155,187,187,169,129, 16,119,234,212,169,202,200,149, 51, 33, -130,155,118, 92,174,146,172,110,221,186, 29,162,148, 74,171,193,206,221, 78,178,204,167, 79,159,126,237,200,145, 35,241,184, 59, -224,103,206,145, 35, 71,226, 95,125,245, 85,178,126,253,250, 13, 0,102,184,234,120, 83,175,215,127,162,213,106,209,177, 99,199, - 25, 11, 23, 46,244,109,222,188, 57, 2, 2, 2,144,159,159,143, 51,103,206, 96,220,184,113,186,188,188,188,133,217,217,217, 75, -221,204, 51,111,211,212,172,173,202,122, 0,240,185, 45, 85,137,188,254,250,235,231,226,227,227,179,252,253,253, 91,137,197,226, - 39, 81,108,231,147, 10, 96,131,187, 68,200, 46,163, 71,143,254, 43, 62, 62, 62,179, 70,141, 26,173,109,152, 90, 0, 73, 0,214, - 85, 2, 51,249,143, 63,254, 8,109,209,162, 5, 35, 18,137, 40,203,178, 16,137, 68,148,227, 56,106,179,155,161, 0,176,107,215, - 46, 41, 0, 29, 60,242,176,199,166,195, 77, 67, 74, 74,138,131, 92, 57, 57, 26,141,110,223,190,253, 89, 27,185,178, 63,179,254, - 75,121,197,156, 57,115,176,102,205, 26, 84,228,129,220,118, 91,143, 84,132,103,215, 96,241, 60, 15,179,217,140,184,184, 56, 16, - 66,192,243,188,227, 88,208,238,162,193,106,181,150,123,251,156,231,121,222,100, 50,225,171,175,190,114,137,100,109,221,186, 21, - 69, 69, 69,224, 43, 96,110,206, 46, 21,154, 54,109, 10,157, 78,231,184,196, 19, 29, 29,237,248,158,217,108,118,139,176,218, 49, -163,162,162,144,153,153, 9, 63,191,226,123, 54, 97,175,196,254,163,108, 41,248,239,248,253, 37,174,186, 22,104,170,213,122, 25, - 37,150,111,159,111, 36,237, 60, 48,218, 11,181,131,212, 16,137,101, 72,206,179, 98,255,197, 60,172, 59,148,122,199, 96,225,123, - 95, 73, 47, 56, 95, 30,142, 76,233,245, 83,243,182,221,218,189,242,218, 56,165,222,200, 35, 33,225, 22, 50,210, 83,192, 16, 6, -193, 53, 66, 17, 30, 30, 1,185,132,193, 23,107,151, 22,156, 61,126,224, 88,126,158,174, 71, 89, 88,189,181,146,227,203, 94,104, -215,186, 78, 29, 53,129,213, 2,240, 22,192,106, 1, 4,219, 95,251,103,194,221,125,237,194,133, 28,250,238,159,186,223,127,204, - 49,149, 26, 83,106, 32, 33,237,188,189,189,127,158,243,253,247, 10,193,100,130,105,196, 8,200,141, 70,200, 9, 1,161, 20, 12, - 0, 34,147, 33,107,229,202, 98,114, 53,108, 88, 97, 78,110,174,219,161,114,252,253,253, 63,207,204,204,124,228, 60,185,251,250, -250, 78,173,140,187,135, 7,152,167, 0, 0, 57,118, 39,163, 37,118,210,254,118,173, 86, 37,112, 35,252,253,253,223,101, 24,166, - 13,165,212,151, 97,152,108, 65, 16, 78,164,167,167, 47,162,148, 94,247, 44,165,255, 90,123,219, 61,185, 87,116, 94,157, 14,224, - 45, 0,249,148,210, 4, 79,205, 61,244,118,106, 6,224, 44, 74,185, 45, 88,222,179,135, 37,190,190,190, 39,127,254,249,231,230, -181,107,215,102,156,205, 21,236,190,238,236,199, 88, 28, 87,172,135,248,237,183,223,172,131, 7, 15, 62,145,154,154,218,177, 44, - 76,141, 70,243,203,223,127,255,253,116,110,110,238, 61, 68,202,217,179,187,253,125, 65, 65, 1,198,140, 25,179, 47, 47, 47,175, -212, 80, 57, 90,173,118,217,210,165, 75,223,236,223,191, 63, 99,119, 43,225,156,236, 97,125,236,201,108, 54, 99,243,230,205,194, - 71, 31,125,244,113, 78, 78, 78,153, 71,132, 33, 33, 33,119,146,147,147, 67,237, 46, 19,202, 74,206, 18, 17, 17,145,146,144,144, - 16,242, 48, 49,255, 51, 4,203, 54, 40, 72, 84,128,114, 16, 5, 6, 50, 16, 26, 51,132, 72,172, 20, 87, 64,241,139,130, 43, 92, -117, 38,153,186,116, 68, 38, 86, 40,198,170, 85,222, 51,251, 15,121,195, 55,162, 78, 36, 9, 12,174, 1, 2, 6,105,169, 73,184, -117,227, 42,253,118,203,202,172,130, 60,221,236,194, 66,253,202,242,112, 26, 16, 82,183,142, 70,188, 93,194,163, 62,236,229, 40, - 17, 63,234,158, 29, 6, 0,179,136,185,124, 35,223, 50,248, 82, 57,139,164,157,100,205,216,185, 83,193, 53,108,120,143,131, 55, - 65, 16, 96, 61,127, 30, 75,135, 15,175, 20,185,242,136, 71, 60,114,223, 11,120,109, 84,236,227,202, 2, 32,241,223, 12, 42,252, - 31,111,163,106, 27,236,153, 16,162,244,241,241, 57,192,178,108,184, 93, 3,227,108, 19, 84, 74,160,231,132,180,180,180,174,148, -210,194,114, 48,235,168,213,234,149, 60,207,183,116, 37,216, 51,203,178,167,242,243,243,199,150, 23,236,249, 65,220, 34,244,243, -243,187,126,235,214,173, 58,246, 91,209,206,107,101,201,122, 0,128,107,215,174,161, 83,167, 78,183, 82, 82, 82, 34, 30, 38,230, -127,138, 96, 85,113,231, 14, 17, 75, 85, 67, 37,114,217, 83,130,197, 26, 5, 2,112, 34,209,101, 83,145,225,160,209,160,223, 84, -214,177, 96, 73,194,119, 63,121,160, 21, 20,126, 32, 33,237,164, 98,241, 47, 98, 47, 47,121,105, 95,181,230,229, 25,138,204,230, -103, 60,228,202, 35, 30,241,136, 71, 60,242, 8, 17,223,250, 62, 62, 62, 63,139, 68, 34,169, 51,137, 44,249,218,177,214, 89,173, - 69, 25, 25, 25, 61,202, 59,109,121, 16,152,143,188,216,153,166,171,201,206, 75, 92,252,110, 55, 87, 49,109,169, 83,117,199,124, -128,101,167, 85,136,217,201,134, 57,235, 17,201,103,167,234,138,233,196,195, 93,194,117, 7,211,213, 62,229,102, 62,105, 85,231, -243, 65, 97, 86,213, 56, 42, 37,159,244, 1,180,251,172, 71, 36,159,157,170, 27,102,201,254,227, 10,174,187,152,174,244,169, 74, -228,147, 86,117, 62, 31, 20,230,253,142,163,114,242, 73,239,183, 47,149,209,246,179,220,229, 30,143, 98,226,220,100,189,244, 1, -145, 60,226,132, 79,170, 43,166,115, 61, 84,165, 75,255, 7, 16, 30,224, 80, 85, 99,150,168,207,170,146, 89,182, 27, 35,135,225, -130,163, 80,119,202, 94, 21,237, 94,162,172, 85,130,235,140, 89, 85,117,233,140, 83, 85,253,254, 65, 99, 86,213, 88, 42,137, 89, - 21,253,190,180,118,127,128,109, 84, 85,249,172,146,177,244, 32,250,124, 41,253,231,190,113, 75, 98, 86,197, 88, 42,137, 89, 21, -253,254, 97, 96, 86,197, 88, 42, 13,179, 42,250,125, 89,109,255, 95,209, 20, 50,149,169,172, 7,164,178,172,242, 0,143, 15, 34, - 34,247,131, 32,153,132, 16,106,243, 96, 91,237, 49,171,184,141,102,217, 48,103, 85, 33,102,231,170,106,163, 7,209,223,157, 49, -171, 10,191, 36, 78, 85,180, 83,105,152,247,155,223, 50,242, 89,229,101,191,223,126,255,176, 48,171,184,141,170,100, 44,149,192, -236, 92,197,155,128,206, 78,239,103, 85, 37,102, 85,141,165, 82,242,121,223,237, 84, 26,230,253,230,183,140,124, 86,121,217,171, - 98, 13,121, 80,184,143,130,112,213, 33, 19, 15,130, 8,217, 7, 93, 85, 98, 63, 8, 45,206,131,210,180, 85,149, 22,167, 20,220, -195, 85, 8,119,168,170,243,105,203, 31,121,156,156,213,121,198,146,103, 44, 61,202, 99,169,180,126, 67, 41,157, 69, 8,153, 89, -157,250,121, 73,204,170, 34, 66,165,148,253,190,198, 82,201,255,173,138,177, 84, 1, 38,121, 16,229,175,234,241, 84, 29,133,169, - 46, 25,177,177, 90,250, 0,240, 58, 87,231, 6,120, 64,249,236,252, 40,148,253, 65,228,147, 16, 50,235, 1,149,253, 81,169, 83, -207, 88,242,140,165,106, 55,150, 74,244,201,206, 85,165, 25,170,234,141, 84, 73,204,170,248, 13,103,140,170,234,163, 15,186,236, - 85, 57,150, 30, 68,219, 63, 42,242,255, 3, 0, 76, 61, 50,167, 83, 88, 95, 69, 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, 90, 0, 0, 2,128, 8, 6, 0, 0, 0, 68,254,214,163, 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, 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, 3, 37,246, 73, 68, 65, 84,120,218,236, 93,117,184, + 84, 69, 31,126,231,236,217,222,219, 93,112,131,238, 70,186, 67,105,165,249, 16, 68, 12, 66, 76, 16, 12,148,144, 80, 36, 21,196, + 6, 20, 73, 5, 65, 41,165,187, 59, 37, 47,151,219,189, 29,103,190, 63,238,158,117,239,178,123,119, 47, 92, 16,113,222,231, 57, +207,238,169,247,204,156, 51,241,206,111,126, 51, 67, 40,165, 96, 96, 96, 96, 96, 96, 96, 96, 96, 40,123,112,236, 21, 48, 48, 48, + 48, 48, 48, 48, 48, 60, 34, 66,107,227,198,141, 62,155,192, 8, 33, 29,124,229,180,111,173, 31,117,206, 7, 24,119, 90,134,156, +173,237,156, 31,254, 75,194,217,250, 81,229, 20,227,235, 43,111,105, 56,125, 77, 83,165, 12, 39, 45,235,112, 62, 40,206,178,202, + 71,110,194, 73, 31,192,119,255,240, 95, 18,206,214,143, 26,167,107,250,241,133,183,180,156,190,164,169,123, 8, 39, 45,235,112, + 62, 40,206,251,205, 71, 37,132,147,222,111, 90,242,240,237, 63,196,127, 8,252,131, 18, 89,165, 65,215,174, 93,137, 19, 63,121, + 84, 57,157,223,131,200, 95,150, 97, 45, 67,236, 40,107, 78,151,247, 89, 86,248,176,107,215,174,100,227,198,141, 59, 1,180, 46, +203,184,151,197,119,119,137,107,153,240,150, 86,100,149,150,179,172,210,253,131,230, 44,171,188,228,202, 89, 22,233,222,221,119, +127,128,223,168,172,194, 89, 38,121,233, 65,164,121, 55,233,231,190,121, 93, 57,203, 34, 47,185,114,150, 69,186,127, 24,156,101, +145,151,220,113,150, 69,186,247,244,237,153, 69,235,225, 10, 2,215, 12,222,230, 81, 22, 68, 15, 74,108,250,106,129,121, 20, 56, +203,248, 27,125,104,231, 44,203,214, 77,155,178,250, 70, 15, 34,189, 59,115,150, 21,191, 43, 79, 89,124, 39,119,156,247, 27, 94, + 15,225, 44,243,184,223,111,186,127, 88,156,101,252,141,202, 36, 47,185,112,182, 41,227,198, 64, 27,167,253, 15,203,146,179,172, +242,146,155,112,222,247,119,114,199,121,191,225,245, 16,206, 50,143,123, 89,212, 33, 15,138,247,177,181,104, 61, 72,145,245,160, + 42,181,178,228,126, 16, 86,157, 7,101,121, 43, 43,171,142, 27,222,157,101, 72,183,163,172,195,105, 15, 31,121, 80,214,215, 71, + 29, 44, 47,177,188,244,168,229, 37,119,233,166,107,215,174, 31,110,220,184,241,131, 71,173, 17,237,204, 89, 86,130,200, 77,220, +239, 43, 47,185,222, 91, 22,121,201, 11, 39,121, 16,241, 47,235,252,196,132, 86, 41, 44, 69,101,220, 50, 65, 25, 91, 96, 30, 88, +188,203, 56,156,109, 30,132,133,240, 1,160,204,195,105,111, 41,127,240, 0,226,254,111,121,167, 44, 47,177,188,244,200,229, 37, +151, 52,217,166, 12, 45, 69,101,106,121,118,229, 44,139,103, 56,115,148, 85, 26,125,208,113, 47,203,188,244, 32,190,253,191, 14, +148,210, 7,182, 1,232,192, 56, 25, 39,227,100,156,140,147,113, 50, 78,198,249, 95,221,216,244, 14, 12, 12, 12, 12, 12, 12, 12, + 12, 15, 8,132, 77, 88,202,192,192,192,192,192,192,192,240, 96,224,209, 71, 43, 54, 54,118,131, 90,173,174,232,233,188, 86,171, +189,147,146,146,210,150,189, 66, 6, 6, 6,175, 45, 58, 66, 56,252, 61,202, 89, 0, 64, 41,107,229, 49, 48, 48,252,151,133,150, + 66,161, 72, 58,127,254,124,101, 65, 16, 96,179,217, 96,181, 90, 29,191, 38,147, 9,173, 90,181, 42,181, 35,125, 84, 84,212, 46, +137, 68,146, 80,154,123,108, 54,219,205,212,212,212, 22, 37, 20,224,251, 0, 36, 17, 66,156,143,149,248, 11, 32,197,108, 54,215, + 47,137,147, 16,146,228,202,231,129, 75,252, 95, 34,103, 80, 80,208, 17,158,231,227,220,113,121,250, 47, 8,194,213,244,244,244, +102, 44,153, 62, 28, 68, 69, 69,237,226,121,190,212,233,243,206,157, 59, 30,211,103, 76, 76,204,113,142,227, 98, 74, 65, 41, 17, + 4,225,226,157, 59,119, 90,120, 18, 34, 98,154,247, 34,108,138,253, 39,132, 36, 91,173,214,134,222,242, 81, 73, 92,110,210,104, +137,156,206, 34,139,231,249, 25, 17, 17, 17, 35,116, 58,157, 1, 0,149, 72, 36, 52, 52, 52, 84, 12, 27, 0,192,106,181,102,228, +228,228,212, 98, 41,145,129,129,225, 63, 33,180, 4, 65,224,140, 70, 35, 46, 93,186, 4, 15,229,189,237, 30,158, 87,249,232, 31, + 91, 35,252, 35, 34, 97, 53,155,161, 9, 11,119,112,167,157, 59, 3,171,197, 12,171,201,132,242,141,154,136,149, 24,106,212,168, + 33,241,194, 25, 55,115,230,204, 8,127,127,127, 24, 12, 6, 24, 12, 6, 24,141, 70, 24, 12, 6,152, 76, 38,152, 76, 38,152,205, +102,152,205,102, 88,173, 86, 24,141, 70,108,219,182,205, 91,216,227, 62,250,232,163,136,128,128, 0, 7,159,184,137,156, 34,175, +197, 98,129,193, 96,192,159,127,254, 89, 34, 39,207,243,113, 41, 41, 41, 17, 50,153, 12,148, 82, 8,130,224,206,185,176, 24, 42, + 84,168, 96,102, 73,244,161,162,242, 71,203, 55, 70, 4,170, 20,176, 10, 2,186,213,169,224, 56,113,245,235, 85,160, 86, 27, 4, +171, 21,149, 70, 15, 6,138, 76, 50,168, 94,189,122,137,233,147, 82, 26,255,209,242,141, 65,190,114,102,102,102,234,171, 85,171, +150,130,162,161,207,158, 44, 62,113,122,189, 62, 66, 12,131,171, 32,226, 56,174,216,182,121,243,102,116,235,214,205, 91,220,227, + 94,127,253,245, 8,139,197, 2,147,201, 4,163,209, 8,139,197, 2,171,213,234,216,108, 54,155, 99, 51,153, 76, 56,120,240,160, +175,150,172,153, 29, 59,118, 28,182,113,227, 70,205, 47,191,252,162, 73, 72, 72,128, 76, 38,131, 68, 34,129, 68, 34, 1,199,113, +224,121, 30, 79, 60,241, 4, 97, 73,144,129,129,225, 63, 35,180,140, 70,227,181,122,245,234, 81,251,255, 88,133, 66, 33,115, 41, + 64, 99, 42, 87,174,124,209,245, 62,111, 93,138,254, 17,145,152, 80, 46, 4, 0, 48,241, 70,150,163,130,248,184, 89, 93,199, 53, +147,111,231, 1, 0, 84, 42, 21,136,115, 51,218, 3, 52, 26, 13, 58,118,236, 8,185, 92,142,134, 13, 27, 66, 42,149,186,221,100, + 50, 25,164, 82,169, 47,149, 3,252,252,252, 48,105,210, 36, 81, 36, 65,163, 84,224,149,102, 13,161, 4,197,151,103, 46,195, 36, + 80,240, 60,239,216,124,225,148,201,100, 56,125,250, 52,120,158,135, 68, 34,113,252,138,255,215,175, 95,143, 62,125,250,128,231, +121,168, 84, 42,224, 63, 52,207,200,163,130, 64,149, 2, 67, 22,253, 12, 0,184, 53,103,180,227,219, 29, 28, 57,209,113, 77,252, +139,253, 64, 8,129, 84, 42, 5,199,113,101,198,153,157,157,173, 31, 48, 96,192, 30,127,127,255,205,249,249,249,240, 34,224,112, +235,214, 45,240, 60,239, 49,189,115, 28,135,217,179,103,227,202,149, 43, 62,197,221, 96, 48,224,171,175,190,130,205,102, 43,198, + 43,254,119, 61,230,163,200,154,218,169, 83,167,193, 27, 55,110, 12, 38,132,224,179,207, 62,131, 76, 38, 67,151, 46, 93, 16, 26, + 26,138, 45, 91,182, 64, 38,147, 97,220,184,113, 44,241, 49, 48, 48,148, 4, 41,128,186, 0,194,237,134,158, 2, 0, 65, 78,231, + 51,236,191,225, 78,251,135,221,240, 52,178, 95, 35,158, 23,247, 77, 0,228,110,142,103, 1, 80,217, 55, 35,128,125, 0,106, 58, + 61, 71,188, 15,158,158,203, 3, 69,235, 15, 1,216, 1,160,141, 56,137,222,157, 59,119,158,114,178,172,156,191,120,241, 98, 85, + 81,243,216,187, 16,101, 86,171,181,178,216,157, 40, 90,139, 58,116,232, 80, 98, 11,223,106, 54,223, 37, 64,220,105, 41,119,221, + 21,158, 4,140,217,108, 70,191,126,253,138,190,132,135, 74,199,121,243, 65,187,193,100, 50,129,231,121, 84, 41, 23,142,247, 59, +215, 67, 99,106,129,182,144,192,154,167, 69, 79, 63, 11,206, 87,175,143,197, 55, 51,112, 35,191, 16, 60,207,251,196, 41, 8,130, + 71,145, 37,145, 72,176,104,209, 34, 12, 24, 48, 0, 18,137,196, 39, 62,134,178,135, 85, 16,220,166, 67, 79,105,214,151,239,228, + 11,103,118,118,182,190, 91,183,110, 7, 20, 10,197,146,200,200,200,148,228,228,100,175, 66,203, 85,252,184, 54, 42, 62,253,244, + 83,204,159, 63, 31,109,219,182,245, 41,156, 70,163, 17,132, 16, 44, 94,188,248,174,115, 83,166, 76,185,235,121, 37,113,218, 27, + 72, 92, 76, 76,204,200, 77,155, 54, 5,136,215,134,133,133, 65, 42,149,162, 86,173, 90,240,247,247,199,158, 61,123, 96,179,217, +124,206,151, 12, 12, 12,143, 47,220,105, 17, 39,180,154, 48, 97, 66,195, 25, 51,102, 76,107,218,180,233, 79,251,246,237, 91, 78, + 8,217,224, 84, 38,118,179,151, 61, 27,156,246, 27,185,136, 30, 41,128,112, 66,200, 6,241,122,231,125,167,227, 29, 0,200,197, +253, 9, 19, 38,212,156, 49, 99,198,180,241,227,199,191, 51,125,250,116,217,132, 9, 19,106,207,152, 49, 99,154,248, 28,119,225, +112,103,209, 42,113, 86, 97,177, 27,241,194,133, 11,240,230,191, 74, 41, 45,177,180,212,132,133, 59, 44, 89,147,227, 67, 29,199, + 39, 37,231, 58, 42,176, 5, 13, 42, 66,163,209,160,243,228, 79,124,178, 20,153, 76, 38,164,167,167, 59,172, 12,222, 54, 95, 57, +213, 42, 37,182,189, 94, 11,183,178,228,248,112,127, 54, 54,158,184, 2,169, 84,138, 39,171,215,194, 83, 50,127,188, 23, 47,199, +235,151,175,195,226,163, 79, 47,165,212,173,192, 18,255,139, 93, 40, 76,104,253,115,232, 86,167,130,195,234,116,208,191,189,227, +120, 31,237,105,199, 55,121,115,209,199, 0,128,182,245,159,128, 47,254,220,222, 56,179,178,178,244, 45,218,183,217,105,211,155, +190, 31, 60,120,240,181,237,219,183,171,124,106,222,185, 17, 90,162,213, 86, 20, 89, 60,207,195,100, 50,249, 20,119,147,201,228, + 49,127,200,100,178, 82, 91,180, 0, 64,171,213,154,214,173, 91,135, 5, 11, 22, 32, 52, 52, 20,157, 58,117, 66,116,116, 52, 86, +173, 90, 5, 74, 41, 70,143, 30, 13,149, 74, 37, 90,175, 89, 2,100, 96,248,111,163, 36, 45,162,152, 49, 99,198, 52, 87, 33,227, +188,239, 44,160, 92,196,148,179, 88,171,233,165,254,223,224, 42,158,196,231, 18, 66, 54, 76,159, 62,189,155,151,112,100,120, 18, + 90, 37, 78,223,111, 52, 26,175,213,169, 83,199, 39, 53,161,211,233, 82,189,137, 13,119,173,122,103, 43,129,159,159, 31, 52, 1, +126,224,124, 44,119, 45, 22,139, 67,168,108,221,186, 21, 42,149, 10, 93,186,116,185, 47,139,150,217,108,134, 92, 38, 5, 23, 22, +137, 33,115,182, 35,171, 64,239,168, 96,118, 92,189,134, 99,105,233,120,189,105,123,104, 84,233, 40, 52,153,124,178,188, 9,130, +112,151,200,226,121, 30,253,250,245,115, 88, 19,156,253, 86,192,186, 14,255, 49,184, 75,159,174,199, 5, 23, 75,213,189,112,102, +101,101,233,187,117,235,118,192,166, 55,125,127,251,246,237, 3, 0,148,141, 27, 55, 46,181,208, 18, 5,150, 84, 42,197,236,217, +179, 49,127,254,124,199,121, 95,133,150,213,106, 45, 38,160, 46, 95,190, 92,236, 89,174,194,174,164,110, 83, 74, 41, 37,132, 8, + 0,132,164,164, 36,199, 61, 81, 81, 81, 8, 10, 10,130, 32, 8, 16, 4, 1, 74,165, 18, 42,149, 10, 50,153,140, 37, 58, 6, 6, +134,146,180,136,126,252,248,241,239, 16, 66, 54,216, 45, 75,103, 74, 16, 84,238,208,200, 69,172,101,120, 40,187,186,185, 19, 91, +206,255, 69, 76,152, 48,161,166,155,112, 28,246, 40,180, 92,166,221, 47, 6,231,110,196,178,170,196, 74,170,200,252,130, 2,160, +210,104, 32,145,112, 32,132, 80,111, 92,102,179,217, 81,240,143, 24, 49,162, 68,191, 21, 95,253,169,204,102, 51, 56, 94,130, 59, + 81,137,176,113,187, 29,247,138, 27,199, 75,113, 35,170, 42, 36, 23,142, 67,234, 99,133,235,106,209, 26, 61,122, 52,190,250,234, + 43,112, 28,231,120, 39, 60,207,163, 82,165, 74,184,118,237, 26,203,113,143,136,200,242,116,220,102, 19,124,182,194,184,187, 46, + 43, 43, 75,223,183,111,223,157,121,121,121,223,215,168, 81,227, 50,138,166, 63,224,124,229,227,121,190,152,192, 18, 69,214,188, +121,243,138,137, 34,139,197,226, 83, 67,192, 98,177,220, 37,120,102,205,154, 85,236, 23, 0,154, 53,107,230,147,101, 24, 0,229, + 56,142,202,100, 50,116,236,216, 17,181,107,215,198, 47,191,252, 2, 65, 16, 48,106,212, 40,168, 84, 42,204,157, 59, 23, 86,171, + 21, 51,103,206,100, 22, 45, 6, 6,134,146,180,136,113,250,244,233,103,166, 79,159,238,176, 44,185, 90,180, 60, 81,218, 69, 85, +184, 40,210, 80,228,107,117,184,132,186,186,155, 39, 1,230,124,108,198,140, 25,211,220,132,195,181,187,242,225,175,117,152,122, +246, 52, 62,105, 94, 15, 64,241,238,194, 69, 79, 84,133,198, 79, 3,141,191, 31,250,174,223, 13, 0,246, 66,127,188, 79, 22, 45, + 81,104,101,101,101,149, 40,178, 74, 99,209,226,228, 60, 86,199,229,128,202,165,224, 77,150, 98, 66, 75,194, 75,113, 43, 52, 17, +156, 84, 6,222,102,245,137,147, 82,122, 87, 87,225,208,161, 67, 65, 8,113,140, 16,171, 83,167,142, 51, 23,171,121, 30,118,250, + 60,242, 53,206,175, 25, 9, 0,104,161,213, 58,190,197, 71,117,254, 30,223, 49,231,244, 78,135,245,113, 50,222,186, 39,206,172, +172, 44,125,227,106, 53, 15,200, 66, 2,191,191,121,243,230, 1, 0, 92,255,254,253,131,234,212,169,227, 83,158, 20, 7, 87,184, +138, 44,103, 75,150,248,107,177, 88,124,138,187,232, 43,229, 13, 98, 55,162,183, 52, 79, 41,165, 33, 33, 33,224, 56, 14, 1, 1, + 1,240,243,243,115,140,184, 85, 42,149, 80,171,213, 14,255, 78, 31,133, 27, 3, 3,195,127, 23,193,162,208,177,139,165, 98,150, + 38, 74,105, 55,103, 49,228,169, 11,209,110,129,218,229,205,176,102, 23,104,110, 33, 90,214, 92,202,228, 13,158, 68, 26, 47, 42, + 72,231,223,232,232,232,223,253,252,252, 18,125,141,125,105, 38, 47,181, 89,204,119, 89,182, 8, 33,240,243,247,131,202, 79, 3, +149,191,159, 71,171, 87, 73, 66, 75,180, 20,137,149,206,146, 37, 75,224,231,231,135,231,158,123,174,212, 62, 90, 14,161, 37,227, +176, 69,241, 39, 36,114,190,152,200,226,121, 30, 18,169, 20,169,126,209,224,164, 82,240, 86,223,172,100,121,121,121,224,121, 30, +239,191,255,190,163, 5,239, 44,178, 74, 19,103,134, 7, 3,106,179,220,101,133,242,100,125,189, 87, 78,209,146, 37, 11, 9,252, +190,106,213,170, 14, 75,150, 90,173, 22, 71,155,122, 5,199,113,110, 69,150,235, 8, 65,158,231,139,210,178,151,209,145,206, 22, +173,233,211,167, 59,120,157, 45, 89, 34, 74,147,143,196,176,238,220,185, 19,199,142, 29,195,136, 17, 35,160, 82,169, 48,127,254, +124, 88,173, 86, 76,153, 50, 5, 42,149, 10,114,185,156, 37, 62, 6, 6,102,205, 42,166, 69, 92,144,225,226, 7, 69, 92, 68, 77, +134, 59,129,229,220, 77,232,244,223,226,134,215,228,210,165,232,122, 92,252,205,154, 62,125,250,118,209,146,229,116,188, 88, 56, +188, 90,180, 20, 10, 69,226,165, 75,151, 28,147,149,150,244,107, 50,153,208,182,109, 91,159, 45, 99,226,168, 67,158,151, 20, 19, + 22,106,127, 63,168, 3,252,161,242,243,115, 21, 28,196, 91, 33, 46,182,136,157,133,214, 7, 31,124, 0,158,231,241,213, 87, 95, + 1, 0,222,122,235, 45,159,125,180, 68, 78,216, 8,146,233, 95,168, 55,167, 15, 76, 63, 88,144,182,247, 36,120,158, 71, 68,147, +167, 32, 52,238, 3,157,202, 15,188,205,234,243,168,195,236,236,108, 92,187,118, 13, 18,137, 4,111,188,241, 70,177,185,142, 92, + 71,178,109,221,186,149, 89,180,254, 9,161, 37, 88,125, 18, 85,165,177, 58, 58,115,138, 62, 89,121,121,121,223,223,188,121,243, + 32, 0,110,240,224,193, 65,106,181, 26,223,124,243,141, 14,128,124,213,170, 85, 42,111,162, 72, 76, 55,222, 68,150, 84, 42, 45, + 74,203,190,196,157, 22,159,178,196,155, 99,188, 47,105, 94, 12, 43, 33, 4, 54,155, 13, 42,149,170,152, 37, 75,169, 84, 66,161, + 80,176,132,199,192,192,224, 13,135, 75,113,109, 35, 39,209,116,248, 30,121, 15,151, 85,192,121, 79, 66,195,104, 52,226,220,185, +115,190,242,248, 60,121,105,185,134, 79, 96,242,237, 60, 16, 66,240,101,179, 26,208, 4,248, 65,173,209,160,247, 47, 59, 29, 5, +247,233,105,111, 65,161,241, 67, 76,203, 78, 62, 21,228, 98,215,161,179,208,202,205,205,133, 84, 42,197,212,169, 83,193,113, 28, +102,206,156,137,216,216, 88,220,185,115, 7,171, 86,173,242,201,162, 37,177, 73, 16,253,108, 53,168,135, 6, 34,224,217, 86, 8, +238,248, 1,110,155,120,236, 51,168,209,202,112, 22,242, 45,243, 96, 18,108, 62,143,192,178, 90,173,216,185,115,167,171,195, 59, + 40,165,142, 89,247, 45, 22, 11,204,102, 51,102,206,156, 9,182, 66,201,195, 71,116,147,209, 8,111,248, 50, 0, 96,253,244,231, + 29,199,223, 63,253,119,250,156,253, 67,209, 2, 0, 85, 19, 58,149,138, 51, 43, 43, 75,255,100,219,102,187, 12,130,244,187, 90, +181,106, 21,179,100, 41,149, 74, 98,223,247, 73, 92,115, 28, 7,137, 68,114, 87,119,161, 39,177,229,139,143,150,213,106,117, 76, + 36, 90,146, 63,227,189, 88,180,158,127,254,121, 68, 71, 71, 59, 44, 89,147, 39, 79,134, 74,165,194,132, 9, 19, 96,177, 88, 48, +111,222, 60,150,248, 24, 24, 24,254, 9, 81,246,192,225,182, 36, 53, 24, 12,215,107,215,174, 13, 15,231, 98,149, 74,165,212,165, +144,142,169, 92,185,242, 69,215, 46, 68, 66, 72, 7, 74,233, 54,119,133, 58, 33, 4,254, 1,254, 80,250,105,160,118,177, 98, 41, +253, 3,160,240,243, 3, 39,147,186,171, 16,238,226, 20,125, 75,156,133,150,184,229,229,229, 65, 42,149, 98,193,130, 5, 8, 8, + 8,128,209,104,244,202, 41, 86, 58, 18,137, 4,186, 91, 5, 56, 63,109, 27,228,202,125,168,216,105, 0,162,165, 42,200,246,172, +133,222,102, 41,113,194, 82,119,156,149, 43, 87,198,196,137, 19,239,154,214,193, 19, 98, 99, 99,189,198,253,126,193, 56,221,115, +150, 52, 42, 86,132, 64,109,238,174,115,203, 41, 90,178, 12,130,244,187,107,215,174,137,150,172, 64,181, 90,141, 47,190,248, 66, + 7,128,155, 50,101,138, 58, 62, 62, 94,226, 75, 90,146, 72, 36,152, 51,103,142, 91,159, 44,119,162,171, 52,249,200,249,222,214, +173, 91,187,157,176,212,157,120,115,199, 41,134, 53, 52, 52,212, 97,201,178,217,108,142,209,134,226,236,243,158, 26, 21, 44,125, + 50, 78,198,249,223,225,124, 92,225,182,150, 79, 73, 73,121,210,211, 13, 21, 43, 86,188,116,233,210,165, 74,226, 82, 28,246,130, + 83,102, 48, 24, 42, 55,107,214,204,171,105, 71, 16, 4, 40, 20, 10, 80, 74,209,110,226, 12, 16, 14,224, 80,188, 18,139,104,222, + 30, 18, 9, 15,161,104,169, 15,175,163, 14,245,122,125,177,202,193,221, 86, 88, 88, 8,163,209,232,243,108,222, 6,131,161,216, + 20, 12,132, 10,184,241,199,202,187, 70, 31,138,155,175,126, 59, 74,165,178, 88,215, 79, 73,240, 54, 39, 25, 67,217, 67, 28,176, + 0, 0, 85,154,117,129, 32,216, 64,109,182, 98,203, 36, 85, 75,124, 18, 2,181,193,108,209,193,104, 52,122, 51, 59,146,204,204, + 76,125,223,190,125,119, 2,248,182,103,207,158, 23, 81, 52,226,133,250,249,249, 41,164, 82,169, 0, 32, 27, 0,205,201,201, 9, +188,125,251,182, 96, 48, 24,202,123, 11,231,198,141, 27,113,238,220, 57,180,108,217,178,216,114, 80,162, 85,212,121,118,119, 95, +210,167,216, 93,238,110, 70,120, 79, 66,206, 87, 72, 36, 18, 4, 6, 6, 66, 38,147, 97,234,212,169,144,201,100, 80,171,213, 0, +128,121,243,230, 57, 38, 95,101, 96, 96, 96,248,207, 8, 45,111,229,102, 9,221,138, 37,118, 33, 90,173,214,228,248,248,248, 82, + 61,204,102,179,165,121, 17,110,201,171, 86,173,146, 57, 91, 33,188,253, 82, 74,211,188, 84,182,201,235,215,175,151,185,179,110, +120, 90, 96,218, 27,167,205,102, 75, 78, 72, 72,240,104, 49,113, 7,139,197,114,155, 37,209,135, 7,155,205, 86, 66,250,124,247, + 94,211,231,229, 42, 85,170,220, 14, 10, 10,250, 45, 50, 50, 50,107,239,222,189,161,141, 26, 53, 10,117,190,166, 81,163, 70,209, + 46,183,153,224,121,157, 67, 16, 66,146,123,246,236,233, 54,205,139,162,201, 77,250, 76,246,150,230, 15, 29, 58, 36,115,190,223, + 19,191, 83, 62, 74,246, 65,184,222,168, 87,175, 30,231,204,227, 41,237, 91, 44,150, 12,150, 10, 25, 24, 24,254,243, 66, 75,175, +215,223,170, 93,187,182,213,195,185,155, 37,221,155,153,153,217,176,172, 35, 96, 54,155,155,253, 27, 56, 51, 50, 50, 26,178,228, +246,104,227, 65,124,163,180,180,180,198,101,205,105,181, 90,203, 60,125, 90, 44,150,102, 15,226,157,102,101,101, 53,101, 41,139, +129,129,129, 9,173, 82,192,215,105, 28, 24, 24, 24, 24, 24, 24, 24, 24,254,235,224,216, 43, 96, 96, 96, 96, 96, 96, 96, 96,120, + 48, 32, 40, 90,165,250, 46,148,102, 52, 1, 33,164, 67,105, 31,236,141,159,113, 50, 78,198,201, 56, 25, 39,227,100,156,143, 31, +167, 55,238,199,110, 52,163, 56,154,234, 65,108, 0, 58, 48, 78,198,201, 56, 25, 39,227,100,156,140,147,113,254, 87, 55,214,117, +200,192,192,192,192,192,192,192,240,128,192,179, 87,240,207,128, 16, 34,161,148,218,202,144, 50, 24,128,167, 5,227, 76, 0,114, +238, 37,152, 0,100,246, 77,156,232,200, 2,192,108,223,124,152,186,126, 18,151,146, 18, 92,147,218,164,141, 40, 33, 82, 65,192, +137,242,229,203, 29, 7,158, 52, 1,128, 95, 84,245,234,126, 26, 85, 7,163,217,148,168,144,202,207,229,106, 11,183, 26,210, 46, + 94,103, 41,132,129,225, 31, 41,151,186, 3,152,100,207,251,211, 41,165, 43,217, 91, 97, 96,120, 64, 66,203,223,223,255, 8,199, +113,113,222,230,231,113,202,160,176,217,108,201,217,217,217, 13,125,204,208, 60,128,190,126,126,126,109,165, 82,105,115, 0,176, + 88, 44,123, 11, 11, 11,183, 3, 88, 69, 41,181,222, 99, 65, 17, 0,160, 31,128, 65,246, 67, 63, 2, 88, 73, 41,205,191, 71,190, +218,129,129,129,107,164, 82, 41,205,204,204,108, 2, 0,161,161,161, 7, 44, 22, 11,201,207,207,239, 77, 41, 61, 85, 74, 62, 78, + 42,149,206,110,217,178,101, 43, 66,200,183,148,210, 5,101,244, 45, 21, 28,199,185, 21, 40,130, 32, 36,220, 3,159, 12, 64,224, +130, 5, 11, 66,151, 45, 91, 86, 47, 57, 57,185, 22, 0,196,197,197,157, 30, 60,120,240,241, 87, 94,121, 37, 11, 64,158, 93,112, +121, 68, 74, 74,112,205,244,212,171, 35,210,210,207,245, 3,128,168,232, 90, 43, 37, 18, 78, 22, 27,123,108,191, 58,108, 80, 88, +149,170, 21, 94,254,233,155, 5,178,132,196,114,248,115,223,177,186,175,188,250, 78, 77,101,100,149, 79,153,216,122,120, 8, 8, + 8, 56,194,113, 92, 92, 73,121,220, 93,158,183,217,108,201, 89, 89, 89, 13, 61,113,242, 60, 31, 87, 82,121,225,238,152, 32, 8, + 87, 51, 50, 50,220, 78, 53, 17, 24, 24,184,159,231,249, 68, 95,185,196, 95,171,213,154,236,105,106,153,192,192,192, 35, 18,137, + 36,174,164,120,186, 59, 39, 8,194,213,244,244,116, 79,225,188, 43,238,101, 17,206,123,225, 44, 41,156, 98,121, 4, 96, 94,104, +104,232, 19, 89, 89, 89,255, 3,240, 78,126,126,126, 29,137, 68,130,144,144,144,119, 8, 33, 87, 2, 3, 3,191,206,203,203,219, + 7,224, 85, 74,169,192,114, 12, 3, 67, 25, 9, 45,142,227,226,110,223,190, 29,161,209,104, 0,252,189, 30,159,184,152,180, 32, + 8,160,148, 58,126,173, 86, 43,170, 85,171,230,171,216,168, 21, 16, 16,176,122,194,132, 9,229,251,246,237, 43, 23,151,154, 73, + 73, 73,169,188,102,205,154,255, 77,157, 58,245, 3, 66, 72, 31, 74,233,105, 95,197, 11,128,246, 0,134,214,171, 87,239,153,201, +147, 39,203,218,181,107, 7,155,205,134,223,126,251,173,229,148, 41, 83, 22, 16, 66,214, 2,248, 30,192, 31,190, 22, 22,132,144, + 22, 81, 81, 81,203,247,236,217, 19,125,237,218, 53, 91,223,190,125, 87, 0,192,145, 35, 71,146,108, 54, 27,105,210,164,201, 70, + 66,200, 64, 74,233,158, 82,188,243,103,198,140, 25,211,127,244,232,209, 17,207, 61,247,220, 48, 0, 11,236,207, 34,246,247, 92, +218, 5, 14, 29,150, 44, 74,169,172,132,235,162, 74, 97,217,210, 92,187,118, 45,184, 89,179,102, 35,211,211,211, 95,119,230, 77, + 75, 75,195,209,163, 71,205,211,166, 77,155,179,111,223,190,133,137,137,137, 57, 0,180,158,136,168, 77,218, 40, 45,253, 92,191, + 86, 77, 23, 4, 2,192,170,245, 35, 7, 28, 58,158,225,191, 97,211,226,255,201,149, 50,227,178, 47,231,200, 42, 85, 76,192,142, + 35,151,113,240, 92, 54,169,213,162, 27,159,183, 97,105, 71, 0,139, 89,246,124, 56,144, 72, 36,177,201,201,201, 17,106,181,218, +237,194,241, 46,126, 25,226, 4,168,168, 92,185,178,231,130,133,231,227,110,223,190, 29,161, 84, 42, 29,101,135,107,153, 33,150, + 43,142,180, 66, 41,170, 84,169, 98, 46,161, 76,138,191,121,243,102,132, 90,173,118,240,184, 11,159,171,224,168, 82,165, 74, 73, +113, 47, 22, 78, 95, 56, 41,165,168, 84,169,146,205, 91,220,197, 21, 48,188,197, 91,228, 76, 76, 76,164,165,225,244, 37,156, 21, + 42, 84, 48,123,249,252,243, 46, 94,188, 56,186, 92,185,114,168, 84,169,210,190, 39,158,120, 34, 64,163,209, 96,211,166, 77,168, + 94,189,122,205,128,128,128,131,171, 86,173,146,142, 27, 55,174,238,119,223,125, 7, 0,175,176, 28,195,192, 80, 70, 66,139, 16, + 2,141, 70,131, 21, 43, 86,120, 92,142,195,249,127,249,242,229,125,122, 32, 33,164, 97, 98, 98,226,206, 61,123,246,168,162,163, +255,158, 16,219,100, 50, 33, 56, 56, 24,163, 70,141,146,119,239,222,189, 82,167, 78,157, 14, 16, 66, 90, 83, 74,143,120,225,123, + 38, 60, 60,252,179,247,223,127, 63,178,127,255,254, 8, 13, 45, 54,233, 54,250,246,237,139,222,189,123,203, 46, 94,188, 56, 96, +201,146, 37, 3, 22, 45, 90,148, 74, 8,121,133, 82,186,182, 36, 94,181, 90,221,179, 98,197,138, 95,236,217,179, 39, 34, 34, 34, + 2, 73, 73, 73,220,184,113,227, 42, 85,174, 92, 89, 21, 23, 23,199,221,185,115, 7,191,252,242, 75,236,192,129, 3, 87,203,229, +242,151, 77, 38,211, 58, 31,226, 46, 15, 13, 13,125,231,229,151, 95, 14,203,207,207,183, 30, 61,122,244,146,120, 92, 46,151, 79, +105,218,180,105, 35, 66,200, 15,148,210,175,239,197,146,101,183,218,185,174,101, 98, 17,207,251,104,217,146,159, 56,113, 34,164, +105,211,166,107,141, 70, 99,253, 17, 35, 70,220,156, 54,109,154, 42, 32, 32, 32, 0, 0,201,207,207,207,153, 52,105,146,105,238, +220,185,111, 87,175, 94,189,253,254,253,251,159,169, 91,183,174,197, 46,226,238, 22, 90,132, 56,194,115,235,118, 6,118,238, 19, +228, 19, 39,188, 21,247,241, 71,137, 55, 14,159,189, 37,240,170, 0,252,186,235, 12,210,178, 10,241,251,254,179,136, 10,245, 39, + 50,133,180,102, 80, 92,205,214,121,183,207,238,162,108,101,237, 7, 14, 66, 8,212,106, 53,126,253,245,215,187,150,174,114,183, +172, 21,207,243, 8, 10, 10,242,186,186,129, 82,169,196,214,173, 91,221,174,189,232,110, 73,159,192,192, 64,160,132, 69,181, 9, + 33, 80, 42,149,216,187,119, 47, 56,142,115,187, 52,144,235, 49,141, 70, 3,174,132,181,174, 68,206, 93,187,118,121,229, 18,127, +253,252,252, 0, 64, 82, 98,166, 84, 40,176,103,207, 30,143,113,118,253,239,103, 95,239,213, 27,231,222,189,123,139, 45,253,229, +186, 36,152,243,190, 70,163,113, 52,224, 60,182,210,130,131,155,196,197,197,225,208,161, 67, 88,181,106, 85, 72,205,154, 53,113, +249,242,101, 16, 66, 48,109,218, 52, 82,163, 70, 13,105,106,106, 42, 90,182,108,137,159,127,254,185, 25,203, 45, 12,255, 32,164, + 0,234, 2, 8, 71,209, 42, 52, 5, 0,130,236,117,143, 28, 64, 22, 0,149,125, 51, 2, 40, 4, 16,102,191, 55,211, 94,182, 56, + 11,132, 12, 20, 95,124,186,145,157, 91, 92,161, 34,220,233,156,248, 12,215,125,215, 95,183,220, 60, 0,108,220,184, 81,172,204, +218,116,237,218,117,103,177,152,249, 32,178,196,117,202, 92,243,180,155, 5,102, 21, 26,141,102,205,129, 3, 7, 84,225,225,127, +199,193,104, 52,162,160,160, 0,133,133,133, 40, 40, 40,128,191,191, 63, 86,173, 90,165,106,223,190,253, 26, 66, 72,101, 74,169, +209, 19, 39,128, 57,119,238,220,137,180, 90,173,144,203,229,158, 90,194,168, 86,173, 26,222,121,231, 29,116,238,220, 57,170,109, +219,182,115, 0,172, 45,129, 19,106,181,250,139,163, 71,143, 70,168,213,106, 92,186,116, 9,201,201,201,120,243,205, 55,203, 9, +130,128, 91,183,110,225,242,229,203,184,125,251, 54,150, 44, 89, 18,209,171, 87,175, 47, 0,172, 43, 41,238,118,140,120,253,245, +215,171, 6, 7, 7,115,159,124,242, 73,174, 86,171,253,220,126,124,226,252,249,243,159,109,213,170, 85,196,240,225,195, 41, 33, +100, 25,165,244, 46,225,226,194,233,206,146,101, 3,112,222,229,182,106, 46,150,174, 40,123, 34,204,117,195, 73, 0, 4,118,234, +212,233, 13,163,209, 88,127,207,158, 61, 87,154, 55,111, 30, 15,224,142,152,248, 2, 3, 3, 53,115,230,204,137,236,214,173,219, +197,118,237,218,213,239,212,169,211, 27, 25, 25, 25,211,236,231,169, 43,167, 32,224, 68, 84,116,173,149,187,246,191,210,111,199, + 94,147,236,173, 87, 63,184, 89,190, 92, 66,222,137, 75,217,182,179, 87, 51, 80,160,183,226,233,118, 69, 11,152, 55,169, 85, 30, +159,173,216,131, 81,175,189, 43, 93,187,114,105,239, 43, 20, 26, 0, 27, 75,120,159,247, 5,198,249,183,216, 16, 4, 1, 82,169, + 20, 79, 61,245, 20, 8, 33,119,173,229, 41,149, 74,177,127,255,126,180,107,215, 14, 82,169, 20,207, 63,255,188, 79,156, 60,207, +163, 83,167, 78,142,117, 20,157,249, 92, 69,131, 59, 77,224, 26,119, 74, 41,120,158, 7,199,113, 30, 23,210,118,229,244, 86, 46, +137,225, 44,137,203,249,156,183,112,138,214, 36, 95, 69,150,175,156, 98, 56,121,158, 71,179,102,205,112,252,248,241, 18, 69,151, + 59,125,233, 26,247,156,156,156, 33,149, 43, 87,222,181, 96,193,130, 16, 0,200,202,202,114, 44,120, 47,145, 72,112,225,194, 5, +152, 76, 38,124,248,225,135,230,252,252,252,225, 44, 31, 49,206, 7,201, 89,146, 22, 1,208,106,194,132, 9, 13,103,204,152, 49, +173,105,211,166, 63,237,219,183,111, 57, 33,100, 3,165,180,155,248, 59, 97,194,132,154, 51,102,204,152, 54,126,252,248,119,166, + 79,159,126,134, 16,178, 1, 0, 92,247,237,225,239,230, 34,226,194, 69, 30,123,158, 43,118,173,187,125,215, 95, 15,220,127, 91, +180,186,118,237, 74,236,145, 36,206,133,154,175, 66,203,151,181,251,120,158, 31, 61,109,218,180,200,146, 68, 86, 97, 97, 33, 82, + 82, 82, 16, 31, 31,143,231,159,127, 62,114,193,130, 5,163, 1,204, 42,129, 86, 38,145, 72,112,232,208, 33,164,167,167,163,118, +237,218, 72, 76, 76, 44,118,193, 95,127,253,133,223,126,251, 13,185,185,185,104,208,160, 1, 80,228,127,228, 22,117,235,214,253, +176, 90,181,106,157, 58,117,234,100, 85,169, 84, 56,113,226, 4,234,215,175,143, 21, 43, 86,160,124,249,242, 80,171,213,184,120, +241, 34,106,215,174,141,157, 59,119, 34, 60, 60, 28,245,234,213,179, 54,104,208, 96,119,118,118,246,246,235,215,175,127,232,161, +229, 44,139,141,141,253,224,165,151, 94,146,167,164,164, 8,223,127,255,253, 30, 74,233, 30, 66,200,232,119,223,125,119, 88,231, +206,157, 35,142, 29, 59,150,119,248,240,225,131,238, 68,150,143,150, 44,171,107,165,100,179,217,140,122,189,222,100, 52, 26, 45, + 28,199, 93, 39,132,152,108, 54,155,167, 62, 31,229,208,161, 67, 43,100,102,102,142,122,237,181,215,174,217, 69,214, 5, 20, 57, +192, 3, 0,172, 86,171,177,176,176, 48,191,105,211,166,241, 3, 7, 14,188,178,124,249,242, 81, 67,135, 14, 93,245,253,247,223, + 23, 2,208,187, 18,150, 47, 95,238,184, 68,194,201,180, 5, 33, 87, 87,175,250,250,245,223,214,143, 46,119,235,214,237, 74,161, + 97,225, 90,153, 95,120,202,170, 31,191, 59, 2,192,148,146,145,143, 83,127,165, 66, 42,149,224,220,173, 60,180,122,178,175,244, +202,165,143, 90,136, 66,139,225,129,130,138,139, 80,239,216,177,163, 68,139,214,254,253,251, 33,149, 74,161, 82,169, 48,119,238, +220, 18, 73, 69, 97, 32, 90,139,188,137, 25,142,227, 74, 44, 71, 68,177, 33, 46,244,238,186,125,254,249,231,120,237,181,215,138, + 61,195, 46, 54,136, 55, 78, 79,225,139, 79, 72, 64,122, 90, 90,177, 99,190, 44, 74,111,179,217, 32,149, 74,241,213, 87, 95,161, + 91,183,110,216,176, 97, 67,137,191, 79, 61,245, 20, 56,142,163,190,188,207,102,205,154,193,108, 54, 59,194,124,225,194, 5,183, +188,139, 22, 45,242,102,201,236, 14, 96, 82,253,250,245, 3,218,182,109,139, 93,187,118,161,119,239,222, 70,179,217,124,201, 94, + 39, 84, 89,176, 96,129,252,232,209,163, 8, 13, 13,149,222,188,121,243, 91, 66, 8,115,144,103,120,160,112,167, 69,196, 58,111, +198,140, 25,211, 92, 69,140, 51,196,243,132,144, 13,211,167, 79,239,230, 44,138,156,247,157,172, 78,206, 34,174,166,179, 69,202, + 89, 68,121, 18, 80, 46,245,173,243,245, 25,110,133,150, 61, 98,109,156,173, 64, 98,225,235, 77,100,121,106, 57,186, 34, 48, 48, +176,203,211, 79, 63,237, 16, 57, 6,131,193, 33,176, 68,145, 37,238, 95,188,120, 17, 13, 27, 54,148, 5, 6, 6,118,241, 34,180, + 68, 17,135,152,152, 24,100,102,102,226,244,233,211,136,143,143,135,197, 98,193,230,205,155,145,151,151, 7,169, 84, 10,153, 76, + 6,179,185,100,151,133,106,213,170, 61,181,108,217,178,134, 75,151, 46,205, 17, 91,116, 63,254,248, 35, 40,165, 8, 15, 15,135, + 78,167, 67, 90, 90, 26,182,111,223, 14,171,213, 10, 63, 63, 63, 36, 37, 37,201,123,246,236,217, 98,210,164, 73, 82, 0, 31,122, +160,110,214,187,119,239,192,128,128, 0,188,250,234,171,212,108, 54, 79, 39,132, 52,235,221,187,247, 7,175,188,242, 74,232,245, +235,215, 77, 47,188,240,194, 33,179,217,252,137,189, 16,148, 82, 74, 45, 94, 90, 20, 30, 45, 89, 22,139, 69,124,167,215, 10, 11, + 11, 17, 22, 22, 22,239,197,135, 11, 0,100,123,247,238,109, 6, 64, 50,101,202, 20, 37,128, 52,103,145,101, 50,153, 80, 88, 88, + 8,173, 86,107,201,203,203, 75, 31, 59,118,172,117,249,242,229, 18,251, 61,231,220, 9, 45,224, 73, 83,141, 26, 26, 57,165,146, +119, 23, 47, 94,236,215,185,115,103,206,207,207, 15, 5, 5, 5, 1,191,111,218,228,215,190,109,139,164,105, 51, 62,222, 18, 16, + 87, 59,109,239,137,171,184,157,154, 7,147,197,130,164,232,192, 34,123, 24,195, 3,135,125, 32,139,195,162,229, 44, 42,118,237, +218,133, 39,159,124,210,145,215,101, 50, 89, 49,203,151, 55, 78,158,231,241,228,147, 79,222,101,225,217,177, 99,135, 91,235,147, + 55, 56,139, 34, 87,113,228, 78,128,113, 28, 7,111,189,207,162, 53,207,157,216,114,182,234,187,136, 55,111,173,125,240, 60,143, + 87, 94,121, 5, 82,169, 20,227,198,141, 3,207,243,168, 87,175, 30,120,158, 71,211,166, 77, 33,149, 74,209,174, 93,187, 82,199, +253,192,129, 3,168, 95,191,190, 35, 76,245,234,213, 67,163, 70,141,192,243, 60, 90,182,108, 9,169, 84,138, 78,157, 58,249,194, +249, 78, 65, 65, 65, 29, 63, 63, 63, 92,188,120, 17, 18,137, 4,132,144,203,148,210, 58, 0,240,210, 75, 47, 93,209,233,116, 21, + 12, 6, 3, 94,122,233, 37, 98, 50,153,106,143, 27, 55,238, 93, 0, 76,104, 49, 60, 48,184,106, 17, 39,232,199,143, 31,255, 14, + 33,100,131,104,161,114,181, 60,185,219,119, 83, 54,137, 98, 72,236,218,107,228, 34,226,196,110,191,174, 37,220,107,114, 17, 86, +174, 93,135,135,125,182,104,137,133,175,175, 66,203, 27, 12, 6, 67,221,136,136, 8,143, 34,203,249,215,100, 50, 33, 49, 49, 17, + 6,131,161,110,105, 43,141,232,232,104,152,205,102,124,253,245,215,144,201,100,144,201,254,214, 23, 38, 83,201,198,162,179,103, +207, 94, 59,112,224, 64,253, 6, 13, 26, 4,255,252,243,207, 25,173, 91,183, 14,239,220,185, 51, 84, 42, 21,244,122, 61, 44, 22, + 11,154, 52,105,130,106,213,170, 33, 57, 57, 25,191,255,254,123,102,229,202,149,195, 14, 30, 60, 40,164,166,166,222, 40,129,186, + 99,251,246,237, 65, 8,193,166, 77,155, 50, 41,165,135,149, 74,229,111, 31,125,244, 81,176,201,100, 18, 6, 15, 30,124, 51, 59, + 59,251, 53, 0,102,133, 66, 49,191, 83,167, 78, 77, 37, 18,201, 15, 54,155,109,110,105, 19,170,235,187,213,106,181, 80, 42,149, +190, 76, 37, 33,205,206,206,174, 5, 0, 26,141, 38, 4,192, 21, 71, 10,215,235,139,137, 97,147,201,100, 8, 9, 9,209, 0,128, +253, 30,169,135,239, 17,174, 86,171, 87,223,184,113,213,223,217,127, 46, 40, 40, 8,131, 6, 14,228,154, 55,107, 38,175, 83,183, +110,167,247, 62, 93,186, 34, 38, 52,192,148, 20, 19, 10,139,205,130,109, 91, 54, 11, 84,176,108, 97,197,206,195, 17, 90,162,216, +112,181,104, 73,165, 82,236,220,185,243,174, 99, 50,153, 12, 95,126,249,165, 79,194, 64, 20, 85,158,186,206, 92,186,186,136, 55, + 1, 35,149, 74, 33,145, 72,240,213, 87, 95, 65, 16, 4,188,254,250,235,197,186, 19,157,249,125,236, 2,113,220, 83,237, 3, 1, +128, 9,201,179, 21,142,251, 93,195,107,191,199, 39, 43,217,130, 5, 11,124,178,104,117,237,218,213,171,112,117,238, 97,112, 14, +215,241,227,199,221,242, 46, 94,188,216,235,251,180,217,108,216,184,113,163, 67,164,138,120,255,253,247, 95,138,139,139,139,220, +189,123, 55, 82, 83, 83,161,213,106, 81, 88, 88,136, 38, 77,154, 36,117,232,208,225, 68,106,106,234,245,179,103,207, 62,205,114, + 15,195, 67,180,104, 25,167, 79,159,126,102,250,244,233,110, 45, 86,174,150,165,146, 44, 79, 78, 2,235, 48,236, 93,134,227,199, +143,127, 7, 69,110, 53,135,125,184, 87,238,218,117, 88,162, 33,200, 69, 69, 78,114, 87,248,250,210,125,232,163, 57,157, 39,132, +192, 96, 48,184, 21, 88,206,226,192,108, 54, 35, 59, 59, 27, 54,155,237,158,231,250,114,215,146,245, 38,180, 78,159, 62,253,220, +176, 97,195, 82, 2, 3, 3,235,100,100,100,164, 11,130,208,110,255,254,253,225, 60,207, 35, 32, 32, 0, 1, 1, 1,248,237,183, +223,160, 86,171,241,202, 43,175,164,219,108,182, 93,254,254,254,161,122,189,254,100,106,106,234,123, 30, 21,140, 84,218,169,101, +203,150, 56,122,244, 40,114,114,114,182, 18, 66,234, 13, 31, 62,252,201,114,229,202,145,143, 62,250,200,240,215, 95,127,205, 5, +144,174,209,104,150, 45, 91,182,172,109,131, 6, 13,252, 7, 15, 30, 12, 66,200, 98, 74,169,193,215, 56,107,181,218, 98, 2, 43, + 63, 63, 31, 5, 5, 5,208,104, 52, 86, 31,223,153, 20, 69,190, 86,162,191,149,227,219,216,173, 89,226,247,161, 60,207,211,162, + 75,168,212, 19,159, 70,163,153,178,116,233, 82,149,235, 32, 5,155,205,134,180,180, 52, 4, 4, 4,224,253,247,222,147, 77,126, +115,120,125,137, 95,228,126,142, 35, 48,153,105, 46, 21, 76,155,181,105,253,119,179, 98,231,225, 64, 20, 6, 61,122,244,184,171, +187, 80, 38,147, 97,235,214,173,232,213,171,151,163,225,210,160, 65, 3,175,141, 43, 81, 24,116,239,222,221, 97, 25,218,188,121, +179,219,110, 63,209, 34,229,139, 32, 20,175, 29, 51,102, 12,120,158,199,103,159,125,134, 55,222,120, 3, 28,199, 97,246,236,217, +224, 56, 14, 19, 39, 78,244, 89,100, 58, 11,152,235, 31, 23,253,198,189,145,143,172, 69,145, 0, 0,255,128, 0, 49, 66,165, 42, +123,120,158,119, 88,178,234,214,173, 11,169, 84,138,166, 77,155,130,231,121,135, 37,171, 75,151, 46,206,239,145,250,194,201,243, + 60, 46, 93,186,228, 8,115,211,166, 77,139, 89,178,120,158, 71,215,174, 93,125, 9,230,180,160,160,160, 73,213,170, 85,171, 62, +103,206, 28,169, 68, 34, 65,251,246,237,171,188,240,194, 11, 55, 66, 67, 67, 67,167, 76,153,162,118,115,143, 10, 64,157,234,213, +171,107, 88,174, 97,120,128, 22,173, 73,110, 78, 5, 59,251, 92,149,162, 33,185,193,249,122,145,195, 85, 28,217, 45,100,187,188, +113,185,187,215, 27,120, 81, 65,150,100, 82,247, 69,104,217,205,206, 37, 62, 76,173, 86,159, 74, 79, 79,111,170, 82,169,138,137, + 44,119,130, 75, 34,145, 32, 53, 53, 21,106,181,250, 84, 89,126, 68,111, 93,135,118, 81,243,166,211,139,237,208,165, 75,151,239, +183,110,221, 26,189,109,219, 54, 28, 60,120, 16,225,225,225, 88,176, 96,193,157,180,180,180,231, 40,165, 91,125,121,110,133, 10, + 21,106,249,249,249, 97,239,222,189, 0,176, 19,192,240, 81,163, 70, 17,139,197,130, 69,139, 22,105, 1,108, 10, 10, 10,218,184, +106,213,170,250,117,234,212,145,111,219,182, 45,255,224,193,131,127,248, 40,178,108,130, 32,220, 37,176,156,223,169,191,191,191, + 47, 22, 45, 75, 96, 96,224,233,252,252,252,190,122,189, 62, 95,161, 80,248,231,231,231, 27,157, 5,150,200,207,243,188,244,210, +165, 75, 41, 0,146, 2, 3, 3, 79,195,169,139,177, 88, 2,227,249,246,237,219,183,231, 93,191, 65, 90, 90, 26, 82, 83, 83, 97, + 54,155,209,160, 65, 3, 34, 33, 22, 73,246,205,147, 47,177, 98,230, 31,177,104, 81, 49,175,139,163, 4,221,141, 52,220,188,121, +179, 99,159,227, 56,216,135,251,123, 21, 69, 91,183,110, 45,209, 97,221,165,235,208,171,105, 92,188,126,225,194,133, 69,203, 91, +216, 45, 89, 28,199, 97,252,248,241, 80, 40, 20,248,232,163,143, 48,126,252,120,240, 60,239,181,235,208, 89,192, 36,140,211, 57, + 55,142,138, 50,133,221, 31,138, 16,226, 44,182,136,175,226,173, 36,107,158, 47, 61, 1,206,156,226,125, 74,165,210,163, 35,188, + 11, 39, 41, 33,222,191, 18, 66,174, 70, 71, 71,239,109,218,180,105,224,145, 35, 71, 48,123,246,108,153,209,104, 44,191,109,219, + 54,199,115,221,189, 47,173, 86,171, 98, 57,135,225, 65, 88,179, 74, 56,157,225,226, 95, 69,156,187,241, 74,248,117,189, 30, 78, +199,156,121, 51, 92,234, 49,231,227,174,226,202,245, 25,206,215,100,120,180,104,121, 43, 44,188, 9, 46, 95, 44, 90, 58,157,238, +143, 77,155, 54, 53, 26, 56,112, 32, 95, 82,183,161, 86,171, 69,100,100, 36,206,156, 57, 99,213,233,116,127,248, 96, 41, 43, 51, +161,229,166, 80,217, 22, 21, 21, 37,177, 88, 44,168, 84,169, 18, 98, 99, 99, 97, 48, 24,144,155,155, 43,241, 85,100, 17, 66,100, + 13, 27, 54,148, 0, 64,110,110, 46, 80, 52,212,180, 74,229,202,149,113,244,232, 81,100,103,103,175, 5,208,121,210,164, 73, 13, +154, 52,105, 34, 91,177, 98,133,110,196,136, 17,107, 45, 22,203,135, 62, 90, 35, 76, 86,171, 53,145,227, 56,115,110,110,238,109, +231,247, 25, 25, 25, 25,162,209,104, 72, 90, 90,154,197, 23,161, 85,167, 78,157, 67, 55,111,222,196,148, 41, 83, 50,166, 77,155, + 86,185,160,160, 32, 39, 47, 47,207,234, 44,182, 12, 6, 3, 23, 22, 22,166, 88,180,104,145, 10, 0,234,212,169,115,200,147,208, +210,106,181,229,212,234,191, 27,198, 70,163, 17,169,169,169, 72, 77, 77, 69, 90, 90, 26, 10, 10, 10,144,148,148, 4,157, 78, 23, +207,138,153,127, 76,104, 21,235, 62,115,206,223,206, 21,121,105,242,186,179,128,233,209,163,135,195,183, 75,180,144,137,219,234, +213,171, 93, 29,204,125, 18, 90, 11, 23, 46,196,152, 49, 99,160, 84, 42, 49,103,206,156, 98, 93,135,174,226, 64, 16, 4,226, 75, +220, 19,223,214, 35,117,126, 8,164, 82, 41, 66, 71,164, 21,235,162,115, 35, 56,124, 10,231,180,105,211,202,164,235,208,153, 51, + 62,190, 40,171,124,245,213, 87,232,219,183, 47,118,239,222,125,207, 93,135, 53,107,214,252,113,195,134, 13,129,103,207,158, 69, +126,126, 62, 50, 50, 50, 96, 52, 26,145,156,156,236,177, 87,192, 94,150, 43, 89,206, 97,120,200, 56,252,144,121,203,236,121,188, +151, 10,220,103,161,229,139, 69,203,104, 52,206,121,245,213, 87, 71,117,232,208, 33,196,223,223, 31, 41, 41, 41,119,137,172,194, +194, 66,248,249,249, 65,175,215, 99,253,250,245,249, 70,163,113,142, 55,113, 96,177, 88, 16, 17, 17,129,204,204, 76, 8, 30,252, +167, 57,142,131, 74,165, 66, 97, 97, 33, 60,137,130,146, 42, 12,179,217, 12,139,197, 2,139,197, 2,179,217,140, 82, 78,239,164, + 22, 39,126,213,106,181, 0,160,141,137,137,169,164, 84, 42,113,237,218, 53,160,104,100, 95,135, 39,159,124, 82,154,149,149, 69, + 95,120,225,133, 61,148,210,151,188,204,142,111,218,181,107, 87, 34, 0,168, 84,170,139, 0,144,156,156,108,201,205,205, 45,102, + 41, 84,171,213,180, 87,175, 94,209,148, 82,236,218,181, 43, 81, 38,147, 81,120,152,243, 10,128, 97,221,186,117,103, 3, 3, 3, +151,207,152, 49, 99, 96,183,110,221,206,212,170, 85, 43, 81,171,213,166,235,245,122,189,193, 96,160, 18,137, 68, 22, 28, 28,172, +220,178,101,203,149,253,251,247,119, 8, 8, 8, 88,190,110,221,186,179, 0,220, 90,222, 52, 26, 77,178, 78,167, 75, 16,191,169, +179,200, 74, 77, 77, 5,165, 20, 87,175, 94,133, 90,173,190,201,202,145,127, 14, 98,163,202,213,242,226,122,204, 87,145,229, 44, + 12,182,108,217, 82,226, 28, 90,190,114, 58,139,162, 55,222,120, 3,243,231,207,191,203,162,245,209, 71, 31, 1, 0,222,123,239, + 61,159,125,180, 68,235, 85,234,252, 16, 68,141,201, 46, 22,118, 0, 32, 98,248, 74, 57,165, 27,207,243,152, 50,101,202, 93, 78, +234,206, 93,123, 62,118,241, 21, 11,103,122,122, 58,120,158, 71, 72, 72, 8, 6, 13, 26,132, 78,157, 58, 57,186, 32, 75,203,123, +254,252,249,189,111,191,253,118,237,154, 53,107, 98,234,212,169,217, 65, 65, 65,254, 47,190,248, 34,159,155,155, 75, 74,178,104, + 49,161,197,192, 80, 6, 66, 75,204, 96,190,142, 58,116, 87, 88, 18, 66, 58, 56,207,181, 65, 41,205, 35,132, 12,234,216,177,227, +207, 43, 87,174, 84, 85,168, 80, 1,231,207,159, 71,118,118, 54, 76, 38, 19,100, 50, 25,162,163,163,145,155,155,139,239,190,251, + 78,175,211,233, 6, 81, 74,243, 74,226, 4,240,110,195,134, 13,191,152, 53,107,150,178, 94,189,122,200,206,206, 70, 97, 97, 97, +177, 89,172, 3, 2, 2,160, 82,169,112,232,208, 33,108,222,188, 89, 15,224, 93, 47,156,238,212, 28,204,102,179, 67,112,121, 19, + 90, 46,156, 26,209,170,163,211,233, 0,192, 82,174, 92,185, 40, 0,184,122,245, 42, 0, 92, 79, 74, 74,154, 84,161, 66, 5,178, +108,217, 50, 74, 41,221,236, 78,100,185,112,102,183,108,217, 50, 7, 64,148,201,100,146, 1, 64, 94, 94,158, 57, 44, 44, 44, 66, +161, 80, 8, 42,149, 74, 80, 42,149, 66, 74, 74,138,213,106,181,202, 0,160,101,203,150, 38, 0,169,112,242, 5,113,225, 20, 0, +228, 47, 94,188,120,210,224,193,131,155, 54,107,214,172,230,200,145, 35, 79,191,240,194, 11, 92,108,108,108,112, 65, 65,129,225, +242,229,203, 57,159,126,250,105,193,129, 3, 7, 58, 72,165,210, 27,139, 23, 47,158, 4, 32,223,126,239, 93,156, 86,171,245,143, +109,219,182, 61,215,173, 91, 55,254,246,237,219, 72, 75, 75,115,136,172,180,180, 52, 84,171, 86, 13,251,247,239,183,153,205,230, +109,165,120,159,101,101,201, 97,156, 69,141, 16, 42,230,117, 79, 2, 75,108, 76,249,202,233, 44,138,250,246,237, 91,204,138, 37, +147,201,176,102,205, 26,183,229,134,155, 25,206, 59,184,206, 39, 37,134,233,237,183,223, 46, 38,218,222,127,255,125,143, 65,243, +246, 62, 69,158,188,175, 98,139,143, 58,244,144,207, 75, 10,167, 88,118, 74,165, 82,188,255,254,251, 62, 91,180,224,226,163,229, +142, 83,140,123,235,214,173,161,211,233, 28, 66,214,147, 69,203,219,251,180,217,108, 99,230,207,159, 79, 3, 2, 2,158,200,207, +207,255,223,205,155, 55,151,232,116,186,198,121,121,121, 37, 90,180,140, 70,163,130,229, 35,198,249, 32,230,210,250, 79, 9, 45, +123, 37,137,114,229,202, 21, 91, 59,139,227,184, 98, 91,105,252, 12,236, 25,119, 11, 33,228,153,230,205,155,255, 48,102,204, 24, +255,122,245,234, 73, 19, 18, 18,160,213,106,113,237,218, 53,156, 57,115,198,186,110,221,186,124,157, 78,247, 63, 74,233, 22, 31, +248,150, 18, 66, 54,119,238,220,121, 98,147, 38, 77, 94,254,224,131, 15, 36, 85,170, 84, 65, 94, 94, 30,130,131,131, 17, 17, 17, +129, 11, 23, 46, 96,253,250,245,182,204,204,204, 47, 0, 76,166,148,102,148,182,193,111, 54,155, 49, 96,192, 0, 8,130,128,185, +115,231,130, 16, 82,154,230,173,217,108, 54, 83, 0, 36, 51, 51, 19, 0,116,246,217,165,113,249,242,101, 0,184,145,152,152,232, + 15, 0,219,182,109, 35, 0,124, 93,210,135, 58, 91,182,170, 85,171,118,205,181,112, 20, 45, 89,162, 21, 12,222, 23,130, 54,244, +235,215, 47, 93,167,211,117,126,227,141, 55, 38, 46, 92,184,112,224,194,133, 11,239,186, 40, 32, 32, 96,249,236,217,179, 39,247, +235,215, 47,221,147, 53,203,110,193,123,111,200,144, 33,253, 78,157, 58,229,175, 84, 42,161,213,106,145,149,149, 5,179,217,140, +164,164, 36,164,167,167, 99,233,210,165, 5,122,189,254, 67,150, 29,255, 25, 56, 11, 3, 79, 86, 45,111, 34,171, 36,171,206,175, +191,254,234,118,142,170,210,114,186,138, 13, 95,231,182, 42,169, 81, 36, 78, 75,227,110,202,136,210,148,107,238,120,121,158,199, + 39,159,124,226,152,180,213,157, 37,171, 52, 22, 45,145, 51, 36, 36,164,200, 76,110, 95, 50,169,107,215,174,247,204,107, 95,142, +236, 21,167,103, 76, 27, 59,118,236,164,106,213,170, 85, 1,160,112,126, 7,108,145, 6, 6,134, 50, 22, 90, 54,155, 45,185,106, +213,170,197, 10, 56,111,139,153, 90, 44,150,100, 31, 51,247,102, 66, 72,210,236,217,179, 95,213,104, 52, 29,116, 58, 93,109,123, +193,113, 74,171,213,110, 51, 26,141,243, 74,179, 8,180, 93, 56,141, 38,132,204,237,220,185,243, 71,237,218,181,235,243,230,155, +111, 18, 74, 41, 22, 45, 90, 68,255,250,235,175,213, 0,222,165,148,254,117, 47, 47, 41, 36, 36,228,236,119,223,125, 23,249,243, +207, 63,195, 98,177, 96,222,188,121,240,247,247, 63, 91,138,240,165,243, 60,255,125,179,102,205,158,221,191,127,255, 82, 74,233, + 73,185, 92,190,164, 69,139, 22, 67,246,239,223,255, 35,165,244, 12,207,243, 75,154, 52,105, 50,228,240,225,195,171, 40,165,199, + 75, 17, 60,135,101,203,106,117,223,211,232,206,146,229, 5,249,195,134, 13, 51, 15, 27, 54,236,205,126,253,250,125,125,248,240, +225,198,185,185,185,181, 1, 32, 40, 40,232, 84,163, 70,141, 14,173, 92,185,242,130,221,146,101,240,246,109, 8, 33,189,106,215, +174,189,118,234,212,169,154,154, 53,107,242,149, 42, 85,194,245,235,215,113,250,244,105,235,183,223,126, 91,168,215,235,123, 80, + 74,115, 88,118,252,231,132, 22,165, 20, 65, 65, 65,197, 26, 81,226,144,255,210,118, 23, 58, 87,204,226, 82, 61,174,188,158, 56, + 75,154, 54, 65,132,159,159,159, 99,114, 83, 95, 92, 22, 4,161,228,249,216, 40,165, 14, 78,113,243, 65,100,121, 29, 33,104, 95, + 2,199,103, 78, 95,166,119,208,104, 52,176, 88, 44, 14, 94, 31, 70,126,146, 82,126,179, 95, 1,252, 90,169, 82,165,203, 0, 42, + 50,113,197,192,240, 0,133, 86,118,118,118,195, 7,249, 96,187,144,154,108,223,202,138,243, 47, 0,253, 8, 33,179,254,252,243, + 79,177, 31, 97,138,183,245, 18,189,225,252,249,243,221,164, 82,233,151,203,151, 47,111, 66, 41, 69, 96, 96,224,129,235,215,175, +191, 88, 26, 14,171,213, 58,140, 16, 50, 74, 28, 69,104, 50,153,134, 17, 66, 94,165,148, 22, 58,157,119,236,151, 54,234, 0,140, +148,210, 24, 15,231,141,165, 16, 89, 14,203, 22, 0,211,202,149, 43, 11, 1,156,192,223,243,100, 89,236,155, 1, 78,221,133, 94, +190,203,118, 66, 72,165,247,223,127,127,154, 68, 34,105,175,213,106, 99, 53, 26,205, 45,171,213,250,135, 78,167,123,151, 82,154, +197,178,226, 63, 7,147,201,116,187,106,213,170,188,187, 6, 84, 73, 21,121, 73, 13, 43,155,205,150, 92,185,114,101,175,141, 51, + 55,156,183, 75, 72, 71, 55,146,146,146, 56, 95,185, 68,152,205,230,244,146,194,153,148,148,132,210,114,122,139,123, 98, 98,162, +219,184,123, 17,132,183, 75, 40, 63,238,137,179,164,247, 89, 18,244,122,125, 78,120,120,120,161,193, 96,144, 26,141, 70,169,213, +106, 45,102,126, 84,169, 84, 25, 44,231, 48, 48,220,167,208,250, 55,195, 46,172,186,151, 33,159, 17,192,179,101,192, 99,112,217, + 47, 44,105,191,148,120, 16, 22, 33, 1,128,174,140,222, 97, 38,128, 23, 88,150,123,244,144,153,153,249, 68, 89,115,102,101,101, +149,121, 67, 45, 35, 35,163,233, 3,136,123,195,255, 42,103, 73,184,125,251,246, 19, 44,103, 48, 48,148, 13, 56,246, 10, 24, 24, + 24, 24, 24, 24, 24, 24, 30, 12, 8,128, 14,238, 78,148,102, 52, 1, 33,164, 67,105, 31,236,141,159,113, 50, 78,198,201, 56, 25, + 39,227,100,156,143, 31,167, 55,238,199,110, 52, 35,165,244,129,109, 0, 58, 48, 78,198,201, 56, 25, 39,227,100,156,140,147,113, +254, 87, 55,214,117,200,192,192,192,192,192,192,192,240,128,192,132, 22, 3, 3, 3, 3, 3, 3, 3, 3, 19, 90, 12, 12, 12,255, + 70, 16, 66,170,148, 47, 95,254, 92,213,170, 85,111, 19, 66,134, 62,224,103, 13,106,218,180,105,150, 82,169,220, 66, 8,169,194, +222, 62, 3, 3, 3, 19, 90, 12, 12, 12,143,181,200,170, 93,187,246,158,243,231,207, 87,219,182,109, 91, 76,108,108,236,199, 15, +242,121, 13, 27, 54,156,185,123,247,238,144, 77,155, 54,117,140,138,138,218,117, 47, 98,139, 16, 82, 37, 62, 62,254, 92,213,170, + 85,147, 9, 33,131,202,248,125, 12,109,214,172, 89,182, 66,161,216,204,132, 32,195,127, 32,255,215, 34,132,212,102, 66,139,129, +129,129,225, 1,138,172,125,251,246,133, 26, 12, 6,156, 63,127, 30, 25, 25, 25,199, 31,228, 51, 47, 94,188,152,179,111,223, 62, +196,197,197,225,199, 31,127, 12, 79, 76, 76,220, 93, 26, 65, 35,134,249,220,185,115,213,182,109,219, 22, 27, 17, 17,241,105, 89, +134,175,113,227,198, 31,237,222,189, 59,120,203,150, 45,157,194,195,195,119, 49,177,197,240, 24,230,123, 5, 33,228, 89,142,227, + 14,213,170, 85,235, 84,205,154, 53, 79,114, 28,183,159, 16,210,151, 16,194,255, 39,223,137,184,196,194,198,141, 27,119, 2, 64, +215,174, 93, 91,179,164,194,192,192,112,159,133,109,205,154, 53,107, 30, 56,112,224,128, 90,175,215, 99,213,170, 85,248,224,131, + 15, 44,217,217,217,187, 1,104,221,220,114, 24,192,231,190, 44,189, 69, 8, 9, 0, 48, 10, 64, 35, 55,167, 53, 33, 33, 33, 45, + 39, 77,154, 36,125,242,201, 39, 97, 48, 24,208,187,119,111,195,197,139, 23,235, 81, 74, 47,250, 42, 12,245,122, 61,142, 28, 57, +130, 30, 61,122,108,177, 88, 44,157,203,234,189, 4, 6, 6,158,249,245,215, 95,107,196,196,196,224,234,213,171, 24, 50,100, 72, + 70, 90, 90, 90, 43,111, 97, 99, 96,248, 23,228,249, 4, 0, 47,251,249,249, 13,111,211,166, 77,112,143, 30, 61, 16, 26, 26, 10, +171,213,138, 91,183,110, 97,195,134, 13,216,183,111, 95,138,201,100,154, 15,224, 43, 74,105,174, 59,158,199, 81,139, 16, 74, 41, + 54,110,220, 72, 1,180,177, 71,110, 39, 75, 50, 12, 12, 12,247, 89,232,238,211,233,116, 77,117, 58, 29, 10, 10, 10, 80,174, 92, + 57, 72,165, 82,183,215,166,167,167, 99,239,222,189,120,229,149, 87,206,166,166,166,182, 42,105,221, 75, 66, 72,112,253,250,245, +247,109,223,190,189,138,191,191,191,227,184, 32, 8, 48,155,205,176, 88, 44, 48,155,205, 48, 26,141, 48, 26,141,144,203,229, 80, +169, 84, 8, 9, 9, 57, 77, 41,173,237,171,200, 58,118,236, 24, 6, 15, 30,156,145,149,149, 85,166, 34,136, 16, 82, 37, 34, 34, + 98,215,210,165, 75,195,147,146,146,112,243,230, 77, 60,255,252,243,153, 55,110,220,104,201,196, 22,195,191, 56,191,143,127,230, +153,103, 62,138,140,140,228,106,213,170,133,232,232,104, 24,141, 70,232,245,122, 80, 74,193,243, 60, 40,165,200,203,203,195,174, + 93,187,176,125,251,118, 99, 78, 78,206,119, 0,230, 81, 74, 47, 57,137,172,199, 82,139, 56,132, 86,215,174, 93, 9, 75, 46, 12, + 12, 12,101, 84,240,158,202,203,203,171,101, 52, 26,161,213,106,125,186,231,234,213,171, 24, 58,116,232,217,212,212,212,230,238, + 44, 91,132,144,128,250,245,235, 31,220,181,107, 87, 21,131,193,128,252,124,239,235,206,203,229,114, 40,149, 74,132,134,134,238, +167,148, 54,243,212, 18,175, 85,171,214,145,253,251,247,135,232,245,122, 28, 63,126, 28,131, 6, 13, 50,103,103,103,239,129,123, +235, 27, 0,100,163,104, 29,213, 27,110,248,226, 1,188, 10, 32,193,195,189,154,240,240,240, 22,203,150, 45,147, 85,168, 80, 1, + 58,157, 14,125,251,246,205,190,120,241, 98, 35, 74,233, 53,150,122, 24,254,133,249,253,226,249,243,231, 43,219,108, 54,100,102, +102,194,104, 52, 66,167,211, 57,132,150, 68, 34, 1,165, 20, 86,171,213,209, 48, 58,122,244, 40,182,109,219, 70,175, 94,189,250, + 1,165,116,138, 40,180, 30, 71, 45,194,179, 36,194,192,192,240, 0,208,175,113,227,198,199,127,255,253,119,165, 92, 46,199,250, +245,235, 61,118, 29, 70, 70, 70,214, 92,178,100, 73, 98, 82, 82, 18, 22, 44, 88, 80,163,119,239,222,163, 0, 76,115,195, 57,106, +251,246,237, 85, 12, 6, 3,142, 31, 63,142, 33, 67,134, 92, 75, 75, 75, 59,227, 42, 98, 18, 19, 19, 91,126,250,233,167,210, 6, + 13, 26, 32, 63, 63, 31, 29, 59,118,212, 1,120,185,132,176,142,222,177, 99, 71,136, 94,175, 71, 65, 65, 1,218,180,105,131,172, +172, 44, 25,128,118,158,110,208,235,245, 72, 72, 72,168, 2,224, 46,241, 22, 26, 26,250,205,205,155, 55,219,170, 84,170, 18, 95, +144,217,108, 70,114,114, 50,130,130,130,176, 97,195,134,144,138, 21, 43,190, 7, 96, 24, 75, 58, 12,255, 70,152, 76, 38,252,244, +211, 79,168, 95,191, 62,170, 87,175,142,194,194, 66,135,232, 50,153, 76, 14,145, 5, 0, 28,199,161, 81,163, 70,168, 92,185, 50, +121,253,245,215, 7, 1,152,242, 56,191, 27, 81,104, 77, 98, 62, 90, 12, 12, 12,101, 5, 74,233, 69, 66, 72,189, 14, 29, 58,236, + 94,189,122,117, 88,151, 46, 93, 80,177, 98, 69,233,211, 79, 63, 29,174,213,106,219,187,180,134,131,135, 12, 25,114,228,214,173, + 91,137,246, 67,141, 60,208, 54,242,247,247, 23,125,155,174,165,165,165, 53,116,237,102, 84, 40, 20,155, 79,156, 56, 33,149,203, +229, 56,124,248, 48,134, 14, 29,154,121,237,218, 53,111,221,114, 65, 38,147, 9, 18,137, 4, 0,144,156,156,236, 53,126, 55,111, +222,132, 32, 8, 70,119,231, 56,142, 83, 28, 61,122, 20, 49, 49, 49, 37,114,112, 28, 7,153, 76,230,124, 40,151,165, 28,134,127, + 41, 44, 38,147, 9, 13, 27, 54,196,181,107,215,112,244,232, 81,135,224,202,204,204, 68, 74, 74, 74,177,139, 15, 29, 58,132, 99, +199,142,161, 85,171, 86,174, 60,143,165, 22,225,237, 17,250,112,227,198,141, 76, 96, 49, 48, 48,148,181,216,106,217,189,123,247, + 93, 75,151, 46, 13, 47, 87,174, 28,252,253,253, 3,220, 92,151, 67, 8, 57, 35,149, 74, 19,125,229, 78, 75, 75, 59,227,206,151, + 43, 42, 42,170,158,201,100,194,177, 99,199, 48,104,208,160, 12,187,207,151, 55,223,167,169,237,219,183,239,190,101,203,150, 16, +165, 82,137, 51,103,206,248,210,117,120, 29,192, 60,119, 39, 50, 50, 50, 6,181,106,213,234,125, 0, 33, 30,238,213, 84,174, 92, +185,197,145, 35, 71,100,132, 16, 92,191,126, 29,125,251,246,205, 6,240, 25, 75, 53, 12,255, 82, 76,124,230,153,103,190, 29, 53, +106, 84, 96,147, 38, 77,144,156,156,236, 16, 92,245,234,213, 67,157, 58,117,240,215, 95,127, 97,243,230,205, 56,118,236, 24, 20, + 10, 5, 42, 86,172,136,194, 89,159, 2,159,194, 34,146, 60,174, 90,196, 49,234,144,129,129,129,225,129, 20, 50,132, 84,145,201, +100,115,195,195,195,235,222,190,125,251, 13, 74,233,143, 46,231,131,251,244,233,115,102,197,138, 21,209,215,175, 95, 71,133, 10, + 21,214, 83, 74,123,186,225, 89, 71, 41,237,113,245,234, 85, 52,111,222,220,173, 69,139, 16, 50, 52, 42, 42,106,114, 65, 65, 65, +158, 78,167,235,235,171,131, 57, 33,164, 74,165, 74,149,118,175, 95,191, 62, 76,173, 86,227,220,185,115, 15,204, 25,190,106,213, +170,123, 14, 29, 58, 20, 42,149, 74,113,248,240, 97, 12, 25, 50,132, 57,195, 51, 60, 14,249,220, 31,192,216,164,164,164,183, 70, +140, 24,161,168, 81,163, 6,146,147,147,145,145,145,129,156,156, 28, 28, 56,112, 0, 0, 16, 27, 27,139,216,216, 88, 92,184,112, + 1,123,247,238,205, 47, 44, 44, 28, 70, 41,253,249,177,126, 55, 76,104, 49, 48, 48, 60,228, 2, 57, 30, 78,206,226,125,250,244, +105,184,108,217,178,232,172,172, 44, 28, 60,120, 16,189,123,247,126,151, 82, 58,205,205,125,239,164,166,166,126, 4, 0,167, 79, +159,118,245,209,242,232,156, 94, 26, 17,148,144,144,176,123,213,170, 85, 97,161,161,161, 56,127,254, 60,250,246,237,123, 70,171, +213,214, 42,171,184,171,213,234, 45,169,169,169, 29,101, 50, 25,246,239,223,143, 65,131, 6,177,233, 29, 24, 30,183,252, 29, 1, +224,189, 26, 53,106,188, 60,124,248,112, 62, 62, 62, 30,183,111,223,198,159,127,254,137,138, 21, 43,226,214,173, 91,216,190,125, +187, 41, 35, 35, 99, 46,128, 25,148,210,188,199,254,165, 60,200, 21,171,193, 86, 54,103,156,140,147,113,222,125,221,230,179,103, +207, 82, 17, 54,155,141,222,190,125,155,110,217,178,133, 70, 69, 69,157, 1, 16,224,142, 19, 64, 64,245,234,213,207, 95,184,112, +129,222,188,121,147,154,205,102, 7,199,249,243,231, 41,128,157,247, 27, 78, 0, 85, 98, 99, 99,211,119,236,216, 65, 47, 92,184, + 64,163,162,162,110,149,101,220, 19, 18, 18,210, 51, 50, 50,232,159,127,254, 73,195,195,195,211, 1, 84, 97,105,137,113, 62,142, +156,246,134,212,178, 6, 13, 26,216,230,207,159, 79, 95,126,249,101, 26, 31, 31,111, 3,240, 13,128,216, 7,169, 61, 30,181,141, +141, 58,100, 96, 96,120,216, 80, 28, 56,112, 0, 10,133,194,113,224,228,201,147,206,243,104,229,123,104, 20,230, 19, 66,154,119, +233,210,101,247,252,249,243,171, 91, 44, 14,215, 14,236,216,177, 3, 0,140,101,208,240,188, 72, 8,105,213,185,115,231,121,161, +161,161,117, 83, 83, 83, 39,150,101,196,175, 95,191,254, 70,237,218,181,167, 21, 20, 20,228,151,166,107,147,129,225, 95,104,196, +185, 14, 96, 48, 33,228,227,163, 71,143,190, 11,128, 2,152, 74, 41, 61,247, 95,123, 23, 76,104, 49, 48, 48, 60,108, 12,125,225, +133, 23, 92,157,197,125,154, 25,222,238, 56,223,172,107,215,174,174, 51,195,123,116, 78,191, 23,177, 5,160,211, 3,170,124,126, + 4,240, 35, 75, 2, 12,255, 33,193,117, 6, 64,255,255,242, 59, 96, 66,139,129,129,225, 97, 23,188, 55, 0, 60,127, 31,247,231, +195,253, 60, 91, 12, 12, 12, 12,143, 28,216,162,210, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, 48, 48, 48, 48, 48,252, +187, 64, 0,116,112,119,130, 82,186,205,103, 18, 66, 58,148,246,193,222,248, 25, 39,227,100,156,140,147,113, 50, 78,198,249,248, +113,122,227, 46,141,254,248, 87,192,199, 97,156,132, 13,125,101,156,140,147,113, 50, 78,198,233, 11,167,189, 17, 79, 80,212,107, +194,137,251,143,248,116, 4,228, 81,141,251,127,133,243, 63, 57,189, 3, 33,196,241,178, 8, 33, 2, 0,129,150,193, 12,167,132, + 16,241, 67,148, 9, 31,195, 3, 48,117, 22,125, 35,242,183, 30,103,223,137,129,129,161, 84,101,135,196,169,178,181, 1,176, 17, + 66,240,168,149, 37,101, 89,207, 61,136,184,255,151, 57, 31, 23,240, 37,189, 48,137, 68,178, 37, 44, 44,172,109,102,102,166, 96, + 63, 14,185, 92, 14,142,227, 32,149, 74,245, 5, 5, 5, 1,247,240, 49,190,137,140,140, 28,154,149,149, 37,112, 28, 7,165, 82, + 9, 66,136,131, 51, 55, 55, 55,224,159,126, 41, 9, 9, 9, 57,122,189,222,207,245,184, 82,169, 52,220,184,113,195,255,191, 80, + 80,202,100,178,103, 66, 66, 66,130, 50, 50, 50,168,184,248,173, 68, 34, 17, 23,194,181,230,230,230,126,239, 43, 95, 72, 72,200, +161,144,144,144, 32,241,126, 66, 8,178,178,178,114,211,210,210, 26, 3,128, 74,165,218,171,209,104, 66,121,158,135, 68, 34,129, + 68, 34,129, 78,167,203,202,204,204,108,206,170,173,127, 39, 86,175, 94, 45,233, 28,251,124, 69,158,234,235,112, 28, 13, 20, 4, +146,103, 37,170,147,155,111,127,115,197,151,251,251,244,233, 99, 99,111,241,225, 65,161, 80,204,141,140,140, 28, 94, 88, 88,168, + 35,132, 80, 66, 8,138,170, 1,220,245,107,179,217,146, 51, 51, 51, 27,122,169,108,165,114,185,124,118, 84, 84,212, 16,157, 78, +167,179,243, 81, 66, 8,162,163,163,139,241, 1,128,197, 98, 73,206,200,200,104,232, 75, 88, 35, 34, 34, 22,171, 84,170,255,233, +116, 58,173, 93, 24, 57,247,208, 56, 87,230,127,101,100,100,180,244, 38, 12,228,114,249,188,200,200,200,231,236,113, 7, 33,132, +134,135,135,223,119,220, 35, 35, 35,135,104,181,218, 98,113,143,136,136,112,203,233, 41,238,238, 56,157,195, 73, 8, 65,120,120, +248,125,135,243, 81,228,124,236,133, 22, 0,142, 16,178,174,121,243,230,109,118,238,220,201,157, 63,127,158,171, 86,173, 26,108, + 54, 27, 4,161, 40, 93,199,197,197,169,239,161, 2, 95,210,178,101,203, 1,187,118,237,226,214,173, 91,199, 53,106,212, 8,132, + 16,216,108, 54,216,108, 54,212,170, 85, 75,117,159, 2,193,143,231,249,215,229,114,121,107,171,213, 90, 29, 0,164, 82,233, 57, +163,209,184,211,106,181,206,161,148, 22,250,194, 99, 54,155,213,233,233,233,119,189,155,164,164, 36,249,189,134, 45, 32, 32, 96, + 31,199,113, 73,142, 23,108, 23, 28,238, 50,179,248, 75, 41,189,154,145,145,209,204, 19,103,112,112,176,131,211, 19,135,235, 49, + 65, 16,174,166,167,167, 55,243, 34,178,122,183,108,217, 50,112,219,182,109,228,214,173, 91, 68,165, 82, 65, 16, 4,216,108, 54, + 88, 44, 22,212,168, 81,163, 84,211,130, 4, 5, 5, 5,140, 31, 63,190,226, 83, 79, 61,133, 53,107,214,224,217,103,159, 69,139, + 22, 45, 46,137,231, 53, 26, 77,232,217,179,103, 43,135,132,132, 64,167,211, 33, 47, 47, 15, 29, 59,118,252,215,103,174, 38,245, +203, 77, 37, 28,113,204, 21, 69,173,182,236, 3, 39,110,191,119,191,188, 65, 65, 65,199,228,114,121,164,248, 93, 57,142,115,251, +173,157,143, 25, 12,134,180,204,204,204,250, 94,242, 79, 2,128,238, 18,137,164, 18,207,243, 85, 1, 36, 88,173,214, 72, 0,144, +201,100,105, 18,137,228,186,197, 98,185, 96, 50,153, 46, 3,248,213, 62, 33,161, 91,116,142,125,190, 34,177,234,250, 20, 24,133, + 46,234, 10, 51,170,232,254, 26,127, 81,173,208,253,214, 57,246,249,213,190,138,173,127,176,161, 81, 5,192, 74, 20, 45, 40,253, +178,125, 30,160,251,225,139, 5,208, 3, 64, 21,153, 76,150,104, 54,155, 51, 1, 28, 5,176,141, 82,122,137, 16, 18, 31, 30, 30, +254,163, 32, 8,198,172,172,172,231,221, 45, 35,212,180, 97,249, 35, 28,199,197,193, 46, 35, 4,106, 75,222,127,228, 86,153, 84, + 80, 18,137,100,222,211, 79, 63,253,220,234,213,171,213, 71,143, 30, 85, 87,175, 94,221, 81, 62, 9,130, 0, 87, 67, 68, 98, 98, +137,107,127, 19, 0, 60,199,113,115,251,244,233, 51,112,217,178,101,234, 27, 55,110,168, 99, 98, 98, 28,156,206, 34, 78, 68, 76, + 76,140, 79, 97, 13, 13, 13,253,230,169,167,158, 26,188,116,233, 82,233,250,245,235, 85, 97, 97, 97, 8, 13, 13,133, 76, 38,187, +235,218,230,205,155, 11, 94,232, 56,142,227,230,245,236,217,115,240,138, 21, 43,212, 7, 15, 30, 84,215,170, 85, 11, 18,137,228, +190,227,222,171, 87,175,129, 63,253,244,147,250,212,169, 83,234, 74,149, 42,129,227, 56,112, 28,119, 23, 31,199,113, 40, 87,174, +156, 79,156, 61,122,244, 24,184,114,229, 74,245,177, 99,199,212, 85,171, 86,117,188, 79,167,110,187, 82,135,243, 17,231,124,124, +133,150,221,140,186,172,121,243,230,157,119,238,220, 41, 1,128, 99,199,142, 33, 59, 59, 27,177,177,177,240,243,243,131, 66,161, +128,193, 96,160,165, 44,108,190,177,139, 44, 41, 0,172,253, 95, 47, 92,149, 2,175,164,155, 32,147,201,240,215, 95,127, 65, 34, +145,208,251, 40,204, 90, 5, 4, 4, 44,253,249,231,159,131,235,215,175,207,101,102,102, 34, 49, 49, 17,217,217,217,141,119,237, +218,213,224,249,231,159,127,158, 16,242, 44,165,116,151,175,156,191,253,246, 27, 52, 26, 13,212,106, 53, 52, 26, 13, 76, 38, 19, +185,231, 23,205,243,113,215,175, 95,143,240,243,243,131, 32, 8,142,205,165,127,219, 1, 65, 16, 80,185,114,101,179,151, 2, 50, +238,198,141, 27, 17, 42,149, 10,148,210, 98,124, 54,155, 13, 10,133,194,185,229, 0,155,205,134,164,164, 36,179, 55, 75,150, 40, +178, 0, 96,249,242,229,136,138,138, 66, 68, 68, 4, 52, 26, 13, 84, 42, 85,177,138,221,199,130, 28,157, 59,119,198,135, 31,126, +136, 25, 51,102, 96,236,216,177,197, 10, 90,169, 84,138,144,144, 16,108,218,180, 9, 1, 1, 1,136,143,143,135, 84, 42,253,247, + 91, 6, 57, 18,178,255,200, 77,135,133,246,201,118,213,248, 38, 13,226, 23,218,191, 48, 56, 14, 16,132,162,170,147, 16, 80,171, + 69,200, 57,124,242,246, 68, 31,222,103,204,141, 27, 55, 34,156,103, 86, 47, 9, 54,155, 13,177,177,177, 18, 47,249,167, 75,205, +154, 53,215,142, 28, 57, 82, 86,169, 82, 37, 34,147,201,192,243, 60,120,158, 23,211, 99, 60,165, 52, 94, 16,132, 54,105,105,105, +116,193,130, 5, 31, 19, 66,158,166,148,254,230, 54,189, 83,125,157, 2,163,208,101,247,113, 52,238,211,225,109,108, 90, 53,190, +113,203,122, 2,252,213,250, 43, 0, 30, 89,161, 69, 8,169, 82,179,102,205,227, 7, 15, 30, 84,154,205,102, 52,105,210,228, 0, + 33,164,193,189,204,224, 78, 8, 9, 6,240,233,132, 9, 19, 6,143, 28, 57, 82, 18, 20, 20, 4,185, 92,142,130,130, 2, 92,185, +114,101,200,247,223,127, 79, 9, 33,159, 3,240,191,126,253,122,211, 67,135, 14,161,109,219,182,175, 2,120,253,110, 69, 32,137, +219,123,232, 90,132,184,223,163,115,109, 89,179, 70,241,105, 69, 13, 50,215,171, 41, 4,155,144,124,240,120,114, 67, 31,194,248, +241, 51,207, 60, 51,104,245,234,213,126, 0,176,104,209, 34, 60,243,204, 51, 8, 9, 9,129, 90,173,134, 76, 38,131, 84, 42, 45, +246,235,197, 66, 36, 1,240,113,255,254,253,251, 44, 91,182,204, 31, 0,150, 45, 91,134, 94,189,122, 33, 52, 52, 20,254,254,254, +144,203,229,144, 72, 36,165,254, 54,161,161,161,223,180,104,220,120,216,210,165, 75, 1, 0,239,190,246, 26,158,122,226, 9,248, +169, 85, 80,171,228, 16,223,133, 92, 34,197,147,175,140,241, 22,111, 14,192,172,103,158,121,166,223,138, 21, 43,252, 1,224,232, +209,163, 72, 79, 79, 71,100,100, 36, 84, 42, 21,228,114,185, 35,206,132, 16,168, 84, 42,159,226,254,204, 51,207,244,249,233,167, +159,252, 1, 96,201,146, 37,232,220,185,179, 35,238, 10,133, 2, 50,153,172,216,230, 42, 58,221,113, 62,253,244,211,125, 86,174, + 92,233, 15, 0,223,127,255, 61, 58,116,232,128,224,224, 96,199,251, 20,185, 74,243,141, 30,101,206,199, 90,104,137,190, 83,145, +145,145,253,118,239,222,205, 57,137, 4, 40, 20, 10, 40, 20, 10,200,229,114, 71,247, 97, 41, 10, 28, 18, 25, 25, 57,116,215,174, + 93,142,155, 76,244, 46,211,117,169, 43,112, 39,254, 14,109,219,182,253,105,195,134, 13, 74,153, 76, 6,189, 94,143, 51,103,206, + 32, 48, 48, 16,114,185, 28, 61,123,246,148, 52,111,222, 60,180, 77,155, 54,107, 8, 33, 3,125, 25,209, 64, 41,133,159,159, 95, + 49,161,117,191, 93,204, 42,149, 10,235,215,175,135, 68, 34,113, 91,128, 57,255,143,136,136,240, 37,222, 80, 40, 20,216,183,111, + 31, 36, 18, 9,164, 82, 41,120,158,135, 84, 42,197,198,141, 27,241,230,155,111, 34, 51, 51, 19,132, 16, 72,165, 82,248,251,123, +237,245, 36, 33, 33, 33, 65,162,200, 18, 69,144, 74,165,130, 84, 42, 37, 60,207, 19,177,107,143, 16, 66,124,237,115,231, 56, 14, + 63,252,240, 3,102,206,156,137,113,227,198, 97,241,226,197,168, 83,167,142,179, 8, 69,126,126, 62,130,131,131, 17, 28, 28, 12, +165, 82,121,207,105,225, 81,130,235,219,153, 61,103,190, 26, 2, 69,145, 19,136, 0, 8, 0, 5,133, 64, 5,164,221,190,130, 15, + 62,252,196,231,218, 71,161, 80, 96,239,222,189, 14, 49,196,243, 60, 8, 33,112, 22, 72,226, 22, 21, 21,229,149, 79, 38,147, 77, +250,229,151, 95,228, 63,252,240, 3, 86,172, 88,225, 72, 91, 26,141, 6, 65, 65, 65, 8, 13, 13,117,108,113,113,113,228,219,111, +191,149,213,169, 83,103, 18,128,223,220,127,115, 26,168,174, 48,163, 74,159, 14,111, 3, 0,250,188, 77,145,115,233,163,186, 92, +238,196,192, 71, 89,100,213,174, 93,123,207,190,125,251,148, 58,157, 14,130, 32,224,183,223,126, 83,119,232,208, 97, 55, 33,164, +101,105,197, 86, 66, 66,194,250,125,251,246, 53, 15, 15, 15, 71, 94, 94, 30,242,243,243, 97,177, 88, 32,145, 72, 16, 31, 31,143, +143, 63,254,152,244,236,217,115,244,144, 33, 67, 12, 42,149, 74,180,108, 36,120, 42,143,156,177,224,179,133, 65,148, 22,165, 31, + 42,208, 98,191,217,233,215,241,218, 27, 31,248, 20,198,114,229,202,189,188,102,205, 26, 63,103,203,146,179, 8,112, 46,163,196, +205,147, 48,176, 91, 53,184,242,229,203, 15,251,241,199, 31, 29,156, 97, 97, 97,142,114,137,231,121,112, 28,135,221,187,119, 99, +250,164, 9, 8, 14,143,193,252,207, 22,121, 13,103, 68, 68,196,226, 46, 93,186,252,111,201,146, 37,142, 99,181, 43, 84, 64,215, +230, 79, 32, 34, 44, 0, 97,193, 69,101, 27, 21, 8, 78, 94,184,230,181, 62, 2,192,149, 43, 87,238,249, 85,171, 86,249, 57, 55, + 8,197,184, 2,128, 78,167,115, 88,241, 77, 38, 19, 26, 54,108,232, 83,220,157, 57, 69,107,155, 40,218, 92,203,122,177, 33, 83, + 18,103,185,114,229,134,137, 66, 24, 0, 66, 66, 66,138,113, 72,165, 82,172,218,180,244,174,186,225,126, 57, 75,251,221, 93, 57, +175, 95,191,142,105,211,166, 57,202, 36,209,170, 71, 8, 65,108,108, 44,230,207,159, 95, 18,167, 59, 52, 2, 16,238,180,111, 2, + 32,119,250,205, 64,209, 10, 19,174,215,137,199,165, 0,234,218,207,217, 0, 20, 0, 8,114,195,231,137, 39, 19, 69,203, 8,133, +187, 92,239,250, 28,247, 66,107,227,198,141, 20, 0,214,175, 95,223,182, 71,143, 30,123, 51, 51, 51,133,243,231,207,115, 71,143, + 30,133, 84, 42, 69, 68, 68, 4, 26, 53,106, 36,118,171, 65, 42,149, 66,163,209,144,160,160,160, 52,177,226, 21, 95,162,115, 95, +187,147,160,225,178,179,179,133,173, 91,183,114,203,158,238, 4, 19, 5,234,189, 63, 29,157,187,117,195,230, 88, 57, 36, 0, 26, +159,207,132, 90,173,230,165, 82,169, 69,252, 24, 34,167,179,239,150,171, 72, 34,132,248,107, 52,154,111,127,253,245, 87, 37,199, +113, 40, 40, 40,128, 32, 8,104,222,188, 57, 56,142,195,233,211,167,241,238,187,239, 98,237,218,181,248,229,151, 95, 84,245,235, +215,255,150, 16, 82,157, 82, 90,224, 84,136,109,115,151, 72,253,253,253,161, 86,171, 29, 66, 75,140,179,179, 9, 92,188,158, 82, +122, 59, 51, 51,179, 65, 73,156, 54,155, 13,189,122,245, 2, 33, 4, 18,137,164, 88,225,227,252, 43,147,201,112,250,244,233,187, + 18,161, 59,129, 40, 8, 2, 90,180,104, 1, 0, 80,171,213,240,243,243, 19,215,125, 3, 0,212,171, 87, 15, 38,147, 9, 97, 97, + 97, 56,119,238,156,187, 2,188, 24,103, 70, 70, 6, 77, 73, 73, 33,203,150, 45,131, 84, 42, 69,104,104, 40,212,106, 53, 89,186, +116,233, 4,153, 76, 22,103, 48, 24, 4,147,201, 4,185, 92, 62, 95,180,110,241, 60,175,205,203,203, 11,245,196, 41,145, 72, 48, +114,228, 72,188,245,214, 91, 88,188,120, 49, 94,122,233,165,187, 44, 94, 6,131, 1, 97, 97, 97, 14,177,229, 75,220,239, 95, 8, + 61, 96, 78,129,226,204,177,205, 56,123,106, 27, 4,155, 0,155, 64, 65,169, 13,130, 21, 56,186,245, 64,229, 59, 87, 83, 98, 41, + 40, 96,239,224, 80,228, 21, 90,219,132, 41,170, 2, 88,183, 35,211, 56,215, 91,250,228,121, 30, 22,139, 5,191,254,250, 43,174, + 92,185,130, 45, 91,182, 64,175,215, 59,222, 99,211,166, 77, 49,108,216, 48,183, 66,203,149,147, 82,186,228,214,173, 91,245, 90, +180,104, 65,114,115,115,145,155,155, 11,189, 94, 15,155,205, 6,171,213, 10,158,231,161, 84, 42,161, 82,169, 16, 25, 25, 9,131, +193, 64,141, 70,227, 18, 79,156,130, 64,242,116,127,141,191,184,105,213,248,198,125,222,166, 88, 61,147,160, 98,121,133,238,143, + 35,254,195,214,237, 25,219, 17, 0, 21,236,218,129, 3,168,197, 38,100,190, 53,225,211,209, 15,253, 27,221, 45,178, 66,245,122, + 61, 10, 10,138,138, 7,185, 92,142,213,171, 87,135,117,239,222,125, 23, 33,164,149, 39,177,229,142,211,223,223, 63, 94, 34,145, +224,244,233,211,248,226,139, 47,240,199, 31,127, 32, 45, 45, 45, 39, 38, 38, 38,176, 77,155, 54,220,107,175,189,134,122,245,234, +225,187,239,190, 83,122,227,164,148,226,250,165,221,184,126,121, 15, 4,129, 58, 89,197,221,255,167, 62,198, 93,171,213, 26,142, + 31, 63,238,247,245,215, 95, 35, 34, 34, 2,137,137,137, 80,171,213, 80, 42,149,197, 42, 89,231,138,215, 91,222,212,235,245,134, +235,215,175,251,253,244,211, 79, 8, 13, 13, 69, 66, 66, 2,212,106, 53,228,114,185,163, 65,176,108,217, 50, 44,255,112, 16,174, + 95, 56,133, 94, 93, 59,122, 13,167, 90,173,254,223,146, 37, 75,138,153, 64, 34,131,131,193, 75, 57, 72,164, 4,193,237,159, 6, + 0,228,252,249,179,199,217, 33, 93, 56, 73, 65, 65,129,225,224,193,131,126, 71,142, 28,129, 32, 8, 72, 72, 72,128, 78,167, 67, + 64, 64,128, 35,254, 91,183,110, 69,207,158, 61,241,195, 15, 63,160,105,211,166, 94,227, 94, 88, 88,104, 56,117,234,148,223,143, + 63,254,136,144,144, 16,148, 43, 87,206, 17,119,113,147, 74,165,144, 72, 36, 72, 74, 74, 66, 94, 94, 30,252,252,252,188,126,163, +163, 71,143,250,253,248,227,143, 8, 14, 14, 70, 92, 92,156,195,226, 38,138,163,153, 11, 63, 44,198,161, 36,209,247,205, 89,218, +239,238,202,217,171, 87, 47, 84,172, 88, 17, 1, 1, 1,208,104, 52, 14,238,146, 56, 69, 45, 2,160, 77,215,174, 93,119,186,124, +194,112, 66,200, 6,167,231,119, 35,132,108,112,254,245,116,157,253,111,171, 9, 19, 38, 52,156, 49, 99,198,180,166, 77,155,254, +180,111,223,190,229,158,248, 60,241, 76,152, 48,161,230,140, 25, 51,166, 57, 95,239,230, 57,158, 45, 90, 93,187,118, 37,246, 72, +242, 0, 80,173, 90, 53,100,103,103, 67,161, 80,160, 81,163, 70,200,204,204,132,159,159, 31,100, 50, 25, 40,165, 24, 61,122,180, +100,236,216,177, 17, 28,199,193,106,181, 58, 10,126, 15,125,237, 2,199,113,104,214,172, 25,206,216,123,132, 58,119,235,134,184, +184, 56,136, 78, 30, 74,165, 18,163, 71,143, 38,111,190,249, 38, 47, 90, 51, 40,165,208,235,245,136,142,142, 86,149,208, 37,247, +218,154, 53,107, 2, 69,147,188,216,117, 38,145, 72,112,254,252,121,204,154, 53, 11, 67,134, 12,193,205,155, 55, 17, 19, 19,131, +183,222,122,203,111,198,140, 25,175, 1,152,236,173, 64,246,243,243,115,136, 44,181, 90,141,215, 94,123,141,111,222,188,121,132, +159,159, 31,252,253,253, 33,118, 3,218,108, 54, 84,168, 80,193,171, 52, 23, 4, 1,155, 55,111, 6,207,243, 94, 45, 90,246, 4, +232, 19,231,193,131, 7, 29, 34,205,185,149, 68, 8,193,153, 51,103, 28,162,206, 7, 78,202,113, 28, 52, 26, 13,162,162,162,160, + 82,169,160, 86,171,201, 79, 63,253,244, 94, 98, 98, 98,244,155,111,190,201,229,231,231,115,205,154, 53,195, 51,207, 60,195, 11, +130, 0,179,217,140,154, 53,107,122,181,188,237,220,185, 19, 95,124,241, 5, 94,122,233, 37,183, 22, 45,209, 89, 50, 32,224, 31, + 31, 11, 81,102, 16, 0,152,173, 22,232, 10,245,142,174, 93,155,205,134, 83, 59, 78, 84,190,122,226, 82,205, 13, 63,253, 32, 5, + 0,195,142,159,157,111,139,126,102,225,202, 42,109, 66,100, 7,119,100,155, 15,122,179, 20,142, 25, 51, 6, 19, 39, 78, 68,255, +254,253,177,117,235, 86,188,251,238,187,120,254,249,231,139, 89,180,124,129,197, 98,249,242,217,103,159,125,105,245,234,213, 85, +223,126,251,109, 78,180,104,169,213,106,209,199, 11, 70,163, 17,122,189, 30, 23, 46, 92, 16, 94,120,225,133,139, 38,147,233, 75, + 79,124, 86,162, 58,169, 86,232,126,171, 16,199, 85,212, 94,251,196,191,197, 19, 9,122,162,106,144,247,116,149, 14,180,203,208, +132, 96, 80, 10, 42, 0, 2, 5,140, 70, 45, 70,143,126, 85,242, 79,125, 39,103,145,101, 48, 24,112,252,248,113,180,109,219, 22, +183,110,221,194,185,115,231, 80,185,114,101, 44, 93,186, 52,124,224,192,129, 37,138, 45, 87,156, 58,117,106, 66,221,186,117,231, + 21, 22, 22,102, 23, 22, 22,206, 3,176,156, 82,154, 75, 8,169,126,229,202,149, 5,155, 55,111,110,249,193, 7, 31, 72, 92,124, +116, 36,158,204,163, 22,139, 21,122,189,177, 68,129, 37,238, 83, 42,248, 26,119, 90,181,106, 85,116,239,222, 29, 82,169,212,209, + 88,115,238, 54,115, 21, 92, 37,149, 31, 0, 4, 66, 8, 98, 98, 98,208,165, 75, 23,200,100,178, 98,156, 98,197,218,165, 75, 23, +140,153,252, 62,190, 28,211, 14, 95, 60, 91, 25, 29,166,166,149, 24, 78,157, 78, 87,184,125,251,118,213, 91, 47,189,132,186,149, + 42, 33, 44, 32, 0,229, 35,195,161, 82,200, 33,115, 14, 19,241,110,100,167,148, 82, 66,136, 32,145, 72, 80,171, 86, 45,164,165, +165,225,218,181,107,184,118,237, 26, 56,142, 67,139, 22, 45, 28, 86,152,203,151, 47, 99,242,228,201, 48, 26,141, 62,199,189, 82, +165, 74,104,215,174, 29,228,114, 57,212,106,117,177, 46, 67,241,157, 22, 20, 20,160, 98,197,138, 88,183,110, 29,170, 84,169,226, +149,179, 90,181,106,104,221,186,117,177,247,169, 82,169, 28,245, 6, 0,220, 58, 88,232,120, 70,108,108,108,169, 56,183, 28,186, +137,175,183,110,135,209, 36, 32, 95,103, 41,118, 67,116, 88, 0,246,252,248,182, 79,113, 23, 57,191,250,234, 43,228,230,230, 58, +202, 32,209,104, 34, 26, 41,202,149, 43,135, 69,139,220, 91, 50,157,180, 8,241,240,253,186,249,216,160, 18,175, 19, 19,151, 98, +198,140, 25,211, 92,239,247,198,231,124,222,229,126,147,139, 56, 75,243,169,235, 80,172, 31,196,204, 16, 27, 27, 11,209, 15, 68, +204, 40,142,130,212,106,197,218,181,107, 17, 17, 17,225,216, 2, 3, 3, 61, 38,108,209,143,104, 76, 70,145,139,208,166, 24, 25, +174, 3,232,154, 65, 29,126, 36, 54,155, 13,107,214,172,129,179,144,241,247,247, 47,177, 27, 73, 46,151,183,105,212,168, 17,103, + 52, 26,239, 18, 89, 51,102,204,192,192,129, 3, 81,165, 74, 21, 8,130,128,194,194, 66,180,109,219, 86, 58,127,254,252, 54,165, + 17, 90,106,117,145,223,191,201,100,194,142, 29, 59, 16, 28, 28,140,208,208, 80,132,132,132,192,223,223, 95, 28, 57, 73,189,137, + 13, 74, 41,122,245,234,229, 72,124,206, 86, 44, 87,209,181,111,223, 62,159,186,228, 40,165,120,226,137, 39,160,209,104,224,231, +231, 7, 63, 63, 63,108,222,188,217,113, 77,227,198,141, 33, 8, 2, 34, 34, 34,176,127,255,254, 18,187, 63, 41,165, 84, 38,147, + 57,174,151, 74,165,100,233,210,165, 19,146,146,146,162,223,120,227, 13, 78, 34,145,224,216,177, 99, 56,123,246, 44, 18, 18, 18, +124,246,217,202,205,205,189, 51, 97,194, 4,219,132, 9, 19, 0, 0, 53,107,214, 68,110,110,110,186,120, 62, 63, 63, 63,171, 83, +167, 78,197,252, 54, 50, 51, 51,179,254,245, 66, 75, 16, 96, 53, 91,161, 51, 24, 80, 88,160,115, 88,135,210, 83,210,130,222,126, +243,117,233,172,209,207, 1, 0,222,156,251, 25, 10, 22,255, 93,144,253,252,230,128,136,167, 63, 93, 49, 30, 64, 79, 47,149, 15, +140, 70, 35,226,227,227,113,232,208, 33, 20, 20, 20,160, 67,135, 14,197, 44,166,226, 59,245,102,162,167,148,154, 8, 33,205,187, +117,235,118,120,206,156, 57, 21,170, 87,175, 78,180, 90, 45,116, 58, 29,156,127, 79,157, 58, 69,151, 47, 95,126, 85,167,211, 53, +163,148,154, 60,241,109,190,253,205,149,206,177,207,175,254,227,152,164, 91, 68,197,139, 1,183,115, 42, 88,179,110, 43,180,249, +250, 11, 6, 27, 61, 11,106, 3,108, 16, 64,173, 2,108,246,110,175,127, 10, 42,149,106,193,158, 61,123, 66, 13, 6, 3,142, 30, + 61,138,193,131, 7,155, 50, 51, 51,229, 0,240,191,255,253,207,180,108,217, 50,121,197,138, 21,177,116,233,210,240,103,158,121, +102, 21,128, 90, 62, 22,244, 63, 0,248,193,245,120,104,104,232,252,155, 55,111,182,113,246,249, 17, 27,171, 0,220, 54, 42,169, + 0, 88, 44, 22,232,245, 70,228,229, 21,192,100,182,216,203, 76, 1, 54,155,213,254, 43,192,106, 47, 71,229, 50,222,191, 65,237, +232, 66, 74, 41, 56, 66,114,143,156,186, 83,206, 83,185,228,169,139,203, 23,107,150, 27,216,196, 81,102,161,161,161,144, 74,165, +248,225,135, 31,112,114,239,102,200, 37, 20, 54,171, 5, 86,139, 25, 54,139, 9, 82,137, 4,127, 28,187,134,142,213,188, 15,228, + 38,132,208,176,176, 48,116,109,218, 20,221,154, 54, 45, 26,222,198,243,240, 83, 40,160,150, 41,139, 44, 89, 0,168,141, 3,124, + 75, 74,130, 24,206,200,200, 72, 28, 57,114, 4, 99,198,140,193,204,153, 51,161, 82,169, 28,163,159,207,159, 63,143,149, 43, 87, +162, 99,199,142,165,142,187,104,193, 27, 63,126, 60, 82, 82, 82, 48,119,238, 92, 52,104,208, 0, 82,169, 20,185,185,185,104,214, +172, 25,210,210,210,124,226,116,238,222,147,203,229,197,172, 79,162, 0, 44,237, 55,114,230,124,174, 87, 52,214,239, 93, 14, 2, +130, 3, 63,190, 94,172, 46, 90,180, 98,119,169, 57, 39, 78,156, 88, 44,156,190, 88,179, 74,209, 48,218,224,139,216,114,186,238, +168,104,108, 29, 63,126,252, 59,132,144, 13,227,199,143,127,103,250,244,233,103,124,225,243,112,126,163,168, 11,157,142, 29,245, + 89,104, 81, 74,169, 92, 46,135, 32, 8,197,196,149,171,227,173,104, 10,116, 54, 53,122, 19, 5,130, 32, 56, 18,133,107,179, 77, + 34,145, 96,255,254,253,216,191,127,127,177,227, 95,127,253,117,137, 21,185,213,106,173,238,239,239, 95,204,154, 37,147,201, 48, +126,252,120, 12, 30, 60,216, 33,178,100, 50, 25,190,255,254,123, 52,108,216, 16, 38,147,169,186, 23,127, 21, 93, 84, 84, 20, 39, + 22, 68, 26,141,134,140, 25, 51, 70, 98,181, 90, 29,239, 68,220, 68,223, 53,111,137, 70, 28,197,178,101,203, 22,159, 44, 90,190, +250, 40, 81, 74,113,226,196,137, 98,226, 77, 28, 53, 3, 0, 39, 78,156,112,248,111,249,194, 41,145, 72, 96,179,217,160, 82,169, +136, 76, 38, 35, 50,153, 44, 78, 20, 89, 18,137,196,241,189,157,125,246,188,197,253,246,237,219,109, 75, 58,159,158,158,254,216, + 78,227, 96,182, 88,160,215,153, 80, 80,168,199,164,233,223, 21, 29,156,132,131, 0, 14, 54,127,121, 12, 70,118,238,216,206,197, + 15,192,151,130,198, 81, 57,174, 89,179, 6, 82,169, 20,235,214,173, 67, 64, 64, 0,122,244,232,129,128,128, 0,188,253,246,219, +232,223,191,191,207, 22, 45,123, 90,202, 35,132, 52,127,237,181,215, 14,127,242,201, 39,229,203,149, 43, 7,147,201, 4,179,217, + 12,147,201,132, 43, 87,174, 96,249,242,229,183,116, 58, 93,115, 74,105,158, 55,190,205,183,191,185,178,118,215,155, 41, 29,250, + 63,163, 63,159,182, 9,169,169, 89,176, 90,111, 67,176, 89, 97,182, 22,141, 96,182, 89,173,176, 90,109,144,201, 36, 1,159,124, +244,250, 86, 1, 20, 28, 71, 76,125,250,244,121,234, 97,125,163,160,160,160,154, 25, 25, 25,184,116,233, 18,134, 12, 25,146,154, +149,149,117, 14, 64,123, 0,200,202,202,218, 51,120,240,224,234, 75,150, 44,137, 74, 76, 76,132,159,159, 95,128, 15,223,199, 15, +192, 72, 0,157,236,126, 32, 34,178, 1, 76, 9, 15, 15, 87, 28, 61,122,244, 46,235,255,174, 93,187, 0,224,160,123,147,129,221, +162,101, 48, 32, 35, 43, 7,195, 95,126,207, 97, 74, 0,104, 49,113, 65, 65, 49,226, 21, 40, 1, 32, 51,237, 10,158, 27, 62, 70, +225,173, 65,224,174, 34, 44,133,143,142,179,165,200,145, 70,253,252,252,138,186,223,214, 45,199,198, 79, 95, 6,108,102, 80,139, + 30, 48,235, 0,115, 33, 4,147, 14, 68,166, 2, 44,122,159,132,150,159,159, 31,252, 84, 42, 68, 4, 5, 21, 77, 2, 41,145, 64, + 42,229, 33, 88, 0, 98, 35, 14, 65, 42,216,124, 74,235, 52, 44, 44, 12,130, 32, 64,165, 82,225,250,245,235, 24, 57,114, 36,204, +102, 51,122,245,234, 5,147,201, 4,131,193, 0,189, 94,143,164,164, 36,232,116, 58,159,226, 46,150,243, 98,239,207,235,175,191, +142,134, 13, 27, 98,242,228,201, 24, 55,110, 28,146,146,146, 48, 98,196, 8, 44, 95,190, 28, 53,107,214, 44,145,215,249,125,138, +156,226,119,113,237,226, 3, 80,234,111,228,202, 89, 52, 62, 0,119,125,247, 87,159,109, 95,106,206, 25, 51,102, 32, 35, 35,227, + 46, 75,150,248, 63, 54, 54, 22, 11, 23, 46,188,215,174,127,209,122, 20,233,206, 32,230,198, 18,213, 8, 69,190, 83,198,233,211, +167,159,153, 62,125,122, 55, 66,200,134,233,211,167,119, 43,193,162,213,213,139,197,171, 43,138,124,178,124, 2,239,210, 55,218, +198,217, 82, 34, 86,164, 98,133,238, 92,200,171,213,106,172, 93,187, 22,226, 8, 16,231,107, 74, 18, 90,191,133,219, 77,199,118, + 75,150,243,126,247,238,221,145,152,152, 88,204,154,165, 82,169, 74, 76, 60,130, 32,224,198,141, 27, 56,115,230, 12,154, 52,105, +130,188,188, 60, 72, 57, 14,111,158, 58,133, 26,207, 62, 11,147,221, 66, 35,151,203,241,210, 75, 47,249,228,208,126,237,218,181, + 96,231,253,176,176,176,228,150, 45, 91,198, 30, 58,116,200,225, 32,111,239, 86,115, 8, 14, 95, 68, 12,165, 20,189,123,247, 46, +102,197,114, 22, 89,206,219,166, 77,155,124,234, 58,164,148,162,101,203,150, 14,107,150,191,191, 63,126,249,229, 23,199,183,106, +213,170, 85,145, 63, 67,100,164, 79,156, 98, 60,236, 14,240, 48, 24, 12, 66, 65, 65, 1,119,244,232, 81,200,229,114,135, 5, 79, +165, 82, 65,169, 84, 66,161, 80,220,211, 8,162,255, 2, 40, 21, 96,178, 88,160,215,235, 81, 88, 88, 52,179,200,149,211,107,138, + 11, 49, 99,254, 61,243,139, 86,171,130,130, 2,252,241,199, 31,248,249,231,159,209,160, 65,131,187,156,225,125,177,104, 57,165, +167, 12, 66, 72,139,177, 99,199, 30,152, 58,117,106, 76, 72, 72, 8,204,102, 51,110,222,188,137,111,191,253, 54, 69,167,211,181, +160,148,102,248,254, 18, 0,139,197, 10,131,206,136,188,252, 2,124,248,209,247, 30,147, 30, 0,100,167, 95, 64,247, 30,125,229, + 15,243, 59,165,164,164,188,209,162, 69,139,143, 10, 10, 10,114,117, 58, 93, 95, 0,179,156, 13,135, 89, 89, 89, 45,123,244,232, + 49, 39, 36, 36,164, 65,122,122,250, 59, 62, 80,142,191,126,253,250, 59,241,241,241,197, 14,218,173,143, 85,210,211,211, 7,181, +106,213,234,125, 0, 33, 78,167,253, 1,108, 1,176,208, 83, 90, 18,187, 14, 11, 11,245, 8, 8,138,198,237,107, 59,189, 6, 68, + 38, 49,128, 10,130,215, 6,160, 59, 43,150,115,249, 84,138,244, 67, 69,159, 64,177,194,126,170,247,179,120,106,228, 12,168,165, +192,180,231,154, 35, 41, 8,128, 42, 4,178, 86,111,131, 4,217,223,209,200, 95,125,226, 31,247,197, 23, 56,118,169,104,102,152, +184,240,112,140,237,223, 31,212, 2,236, 59,123, 22, 43,182,111, 71,255,182,109,161, 86, 42,125,110,176,136,141,240, 43, 87,174, + 96,223,190,125,168, 86,173, 26, 46, 95,190, 92,108, 26, 10, 74,169, 79,241,167,148, 82,113, 16,147, 66,161,128, 84, 42, 69,106, +106, 42,186,117,235,230,104,232,239,220,185, 19, 99,199,142,197,176, 97,195,208,166, 77, 27,183,126,179,174,156,225,225,225, 14, + 3,130,235, 64, 5,231,238,220,210,124, 35,119,156, 34,238,245,187, 59,115, 78,157, 58,213,237,128, 10, 95, 56,157,181, 72, 9, + 56,234, 98, 77,130,232, 47, 37, 10, 35,215,125, 0,193,226,177,241,227,199,191,227,235,125,206,251,162, 69,172, 52, 93,152, 14, +161,213,181,107, 87,226,174,178, 21,205,200,238,160,209,104, 48,106,212, 40, 76,156, 56, 17, 97, 97, 97, 94,125,107, 68, 37, 91, + 18,126,253,245,238,204,182,110,221, 58,111, 93,135,231, 3, 3, 3, 27,182,109,219, 22,121,121,121,184,117,235, 22, 52, 26, 13, +106,124,250, 41, 78,141, 28,137,186, 95,124, 1,174, 93, 59,199,100,171,167, 78,157,130, 74,165, 58, 95, 90, 11,130,191,191, 63, +130,131,131, 29,125,238,162,224,114,178,104, 81, 31, 18, 35,126,251,237, 55,183,173,198,123,241,209, 18, 11,129, 3, 7, 14, 20, +243,207,114, 22, 62, 7, 14, 28,112, 88,180,196,219,124,233,242, 82,169, 84, 84,228, 83,171,213, 8, 9, 9,129, 66,161,128, 74, +165, 42, 38,178,124,177,230,121,155,144, 84,165, 82, 29,210,104, 52, 65,226,121,169, 84,138,130,130,130,220,172,172,172,198,255, +234,174, 67, 80, 88,205, 86,232,245, 6, 20, 22,232,203,156, 95, 28,152,178,118,237, 90, 60,241,196, 19,119,137, 44,241, 93,223, + 67,139, 49,153, 16,210,102,222,188,121, 7,103,207,158, 29, 92, 88, 88,136,239,190,251, 46,175,176,176,176, 13,165, 52,185, 84, + 92, 2,133,197,108,134,206, 96,132,182,176,232, 29,252,117,102,205, 35, 38,136,233,114, 0,203, 93, 45,134, 78,231,255, 2,208, +173, 20,148, 79,196,199,199, 35, 53, 53,181,216,193, 27, 55,110,192,102,179, 25,237,243,100, 61,239,244, 60, 9,165,212,230,173, +236, 48,219,187, 14, 11, 11,139,172, 32, 6,109,102,217,164, 83,187,216,240,228,147,117, 47, 93, 60,226, 72,103,137, 68,130,209, +163, 71,227,212,201,147,104, 31,147,143,164, 40,127,208,252,219,144,181,251, 0, 39, 50, 84,152, 53,231,183, 82,115,175,116, 26, +236, 51,107,229, 74,183,231,254,234,217,179, 84,113,191,120,241, 34, 84, 42, 21,108, 54,219, 93,245, 77,105,227,239, 44, 96,230, +204,153,131,177, 99,199,226,251,239,191,199,169, 83,167, 80,183,110, 93,116,232,208, 1,233,233,233, 56,121,242, 36,140, 70,163, +207,225,116,246,155,187,120,245, 44,182,237,251, 29, 55,146,175, 33, 37,245,214, 61,127,119,103, 78, 87,161,181,118,219,113,244, +238, 88,255,158, 56, 63,252,240, 67,164,167,167, 23,179,100, 57, 15, 32,243,100,209,114,213, 34, 46,200,116,241,133, 18,247, 77, + 46,162,199,117,223,245,122, 0, 72, 7, 32,241,114,159,235,126,230,244,233,211,119,136,150, 48, 59,175,196,155,127,150,219,174, + 67, 81, 20,137, 25,197,213, 82, 37,254,215,104, 52,240,247,247,135,191,191, 63, 2, 2, 2,188, 90,138, 68,161,213,242,106, 65, + 49, 95, 47,209,178, 5, 0,195,134, 13,187,203,162,229, 60,177,167, 59, 24,141,198,157, 59,119,238,172,215,189,123,119,201,249, +243,231, 33,145, 72, 32, 8, 2, 76, 77,155,162,238, 23, 95,224,244,235,175,163,245,245,235, 48,152,205, 80, 42,149,216,188,121, +179, 89,167,211,237, 44,109,185,225, 44,180, 52, 26, 13, 2, 3, 3, 29, 66,195, 23,149, 46,102,222,146,252, 31,196,205,121, 48, +128, 47,153, 90,172, 80,157,253,114, 8, 33,208,235,245, 14,167, 78, 95,172,142,206, 93,135,206, 25,144,227, 56, 4, 5, 5, 57, + 10, 15,209,162,229,171, 53,207,219,132,164,106,181, 58,224,194,133, 11, 21,197,233, 39, 50, 51, 51,209,174, 93,187, 75,255,122, +147,150, 0,152,173, 54, 20,234, 13, 40,212,235,202,140, 86, 76,107, 63,252,240, 3,174, 92,185, 2,179,217,140,233,211,167,223, + 37,176, 74,227, 12,239, 38, 93, 93,169, 95,191,190,240,228,147, 79,226,192,129, 3, 80, 40, 20, 22, 74,105,169,231,191, 18,168, + 0,179,213, 10,131, 94,143, 66,173,246,191, 98,204,116,168,234,115,231,206,193,100, 50, 97,242,228,201,182,195,135, 15,239, 0, +240,178,253, 27,114, 0, 6,181,110,221,122, 74,215,174, 93,131, 8, 33,175, 82, 74,191, 47, 41,159, 91,172,118,209, 94,134,239, + 81, 76, 75,158,202,164,123,153,102,197,185, 98, 21, 4, 1, 47,190,240, 2, 58,196,228,227,233, 6,225,208,222,185, 4,117, 96, + 56, 72, 80, 2,102,205,249, 13,103,174,250,236,138, 73, 1,224,201,214, 61, 81,167,218,221,211,131,181,104, 95,212, 38,219,243, +199, 33,164,101,166,148, 58,238, 90,173,214,163,229,202, 87,139,150,200, 41, 78,179, 34,149, 74, 81,175, 94, 61, 84,174, 92, 25, + 59,118,236, 64,253,250,245,113,249,242,101, 92,190,124, 25,215,175, 95,199,169, 83,167,144,147,147, 83,234,111,244,203,150, 21, +200, 41,200,134, 92, 38, 71,118,110, 38,110,220,190,134,200,208,168,251,254,238, 34,170,118,253, 16, 0, 16, 19, 30, 88, 42,161, +229,204,249,241,199, 31,223, 37,222,203, 96,202,158, 67, 94,246, 75,123,255, 67, 3,239,193, 74,164, 15, 9, 9, 81, 57,247,175, +114, 28,135,192,192, 64, 50,115,230, 76, 9,199,113,240,247,247, 71, 96, 96, 32, 68,115,161, 55,200,229,114,125, 66, 66,130, 74, + 76,136, 98, 70, 12, 8, 8,144,204,156, 57,147,124,253,245,215, 30,173, 92, 94,124,180,102, 15, 30, 60,248,249,228,228,228,224, +136,136, 8,220,185,115, 7,114,185,188, 40,115,180,109,139,150, 87,175,194, 92,228,115,132,139, 23, 47,226,203, 47,191,212, 26, +141,198,217,165,125, 81,126,126,126, 8, 13, 13,117,116, 25,138, 22, 29, 39,209,232,147, 11,102, 73, 38,122,177, 5,120, 47, 93, + 72,174, 98,235,229,151, 95, 46, 38,186,124,133, 76, 38,179,138, 51,191,115, 28, 7,179,217,140,250,245,235, 35, 61, 61,221,145, +105,156, 45,121,190, 8, 45,111, 19,146,242, 60, 15,147,201,132, 86,173, 90,129, 16,130,207, 62,251,236,241,232,142, 20, 4,226, +231, 23,138,152,152, 42, 8,143, 48, 64, 16,202,110, 85, 25,171,213,138, 17, 35, 70, 20,179, 96,137, 35, 27,197,174,127, 74, 41, + 44, 22,203, 61, 79,254, 42,230,235,251,153, 63,142, 2,142, 46, 47,173,214,240,175,251,132, 17, 17, 17, 77, 8, 33,235, 92, 14, +103, 3,152,226,110, 6,119, 59, 28, 31,250,214,173, 91,232,220,185, 51,126,255,253,119,201,207, 63,255,220,126,253,250,245,103, + 43, 86,172,120,171, 95,191,126,229, 94,122,233, 37, 69,171, 86,173,144,153,153,137, 6, 13, 26, 76, 2, 80,130,208,178,191, 71, +131, 17, 90,109,217, 91, 71, 75,106,240,221,143,128,155, 56,241,125,116,136,206, 69,175,186,129, 88,178, 97, 47, 6,213, 83, 1, + 38, 69,169,249,196,176,132,196, 36, 34,161,102,147,187,206, 43, 2,138,186,236, 18,106, 54, 1,119,235,114,169,227,238, 28,102, +215,242,242, 94, 44,122,206,239,115,248,240,225,120,251,237,183,209,169, 83, 39, 92,190,124, 25,187,118,237,194,229,203,151, 49, +102,204, 24,212,172, 89, 19,117,235,214, 45, 21,231,250,109,171,145, 95,152, 7,142,112,200,206,203,130,193,168,199,184, 17, 19, +239,251,187,139,184,182,109, 58, 0, 96,205,214, 99,247,204,249,238,187,239, 34, 53, 53,181,152, 37,235,126,252,178,254,237,112, + 43,180,178,178,178,220,246, 3,134,135,135,167,117,236,216, 49,226,206,157, 59,240,243,243,243, 42,178, 8, 33, 29,196,185, 54, + 82, 83, 83,221,114,250,251,251,155, 59,118,236, 40,141,142,142, 46, 54,218, 80,163,209,220,149,201, 92, 57,237,149, 64, 1, 33, +228,197,230,205,155, 47,217,180,105,147,186,114,229,202,200,207,207, 7,165, 20,223,127,255, 61, 70,143, 30, 13,165, 82,137,139, + 23, 47,162, 71,143, 30, 58,157, 78,247,162,243, 28, 90,238, 56, 61,181,208,196, 89,241,221,136,172, 18,227,238,156, 89,231,205, +155,135,105,211,166,225,157,119, 74,118,245, 88,188,120, 49,224,210,205,231,142,147, 82,138, 89,179,102,149, 25,103, 86, 86,214, +247, 46,214,168,207,158,126,250,105,254,214,173, 91,197,196,149,243,230,166, 96, 42,198,233,109, 66, 82,137, 68,130,200,200, 72, + 76,157, 58, 21,161,161,161,136,138,138,186,203, 18,227,237, 27,221, 99,101,240, 64, 57,109, 84, 56,250,201,140,247, 91,124,183, +108,189, 84, 33, 7,246,239, 90,131,252,156,226,221, 73, 70,243,223, 67,169,229,245,219,195,116,236, 15,159,194,105, 52, 26,241, +241,199, 31,227,195, 15, 63,196,135, 31,126,232,203,119,191,175,184,251, 34,182,220,114, 10,148,168, 53,193, 80,106, 98, 80,163, +102, 48, 4,106,125,164,190,145, 7, 28, 62,116,232, 80,143,208,208, 80, 36, 39, 39,135, 75,165,210, 30,197,204, 85,122, 61, 18, + 18, 18,170, 0,104,230,141,115,204,152, 49,198,247,222,123, 79, 49, 96,192, 0, 60,253,244,211, 24, 48, 96,128, 66, 38,147, 85, +162,148,194,108, 54, 35, 57, 57, 25,127,252,241, 7, 50, 50, 50,206,151, 20, 78,129, 82,162, 82, 7, 65,169,137, 70,141, 90, 65, + 16, 4,107,153,196, 93,172, 4, 93,173, 89,165,156,144,218,109, 89, 7, 0,135,255, 88,135,137,175,215,194,247, 27, 15, 98,254, + 33,160, 78, 80, 58,106,132,103, 64,200, 56,143,183, 6, 53,196,172, 31,143, 0, 0,118,237,244,250,141, 74,156, 31,217,160, 55, +223, 87,220,157, 45, 87,206,207,241,230,163,229,142, 83,108, 36, 22, 20, 20, 32, 55, 55, 23, 75,150, 44,193,115,207, 61,135,244, +244,116, 92,191,126, 29,151, 46, 93,194, 79, 63,253,228, 24,205, 94,218,111,244,230, 11,239,226,189, 89,111,128,130,162,106,197, + 26, 24, 63,242, 67, 52,170,211,244,190,191,187, 43,188, 89,179, 74,226,156, 59,119,238, 61,165,165,255,148,208, 42,169, 85,193, +113, 28,194,194,194, 28,137,196, 57, 1,222, 75,203, 87, 34,145,192,106,181, 58,124,127,196, 13, 0,186,119,239,142, 95,127,253, +213,151,145, 20,155, 8, 33,255,171, 94,189,250,183,147, 38, 77,242,107,221,186, 53, 31, 19, 19,131, 70,141, 26,225,226,197,139, +216,184,113,163,101,225,194,133, 90,157, 78, 55,140, 82,186,245, 94,202, 39,113, 73, 27,231,173, 52,173, 30,179,217,124,235,242, +229,203,209,179,102,205,146,112, 28,135,185,115,231, 58, 50,165, 56,225,171, 51,118,237,218,101, 21, 4,161,196,174, 26,139,197, +114,235,242,229,203,209,159,126,250,169,132, 16,226,224,228, 56, 14,206, 11, 56,151,134,211,157,200, 20, 7, 70,184,219,220,133, +221,221, 55, 46,105, 66, 82,158,231,113,241,226, 69, 76,156, 56, 17,132, 16,172, 89,179,230,177,200, 92,167,206,103,126, 93,183, + 70, 68,112,247,167, 90,212, 6, 33, 48,155,238,158, 13,193, 47,167,208, 33,178,158,254,116, 5,126,126,179,191, 47,162,231,202, +158, 61,123, 66, 62,254,248, 99, 94, 34,145, 96,206,156, 57,197, 38, 13,118,253,238,187,119,239,182,222, 75,183,159,152,159,205, +102, 51,244,250,123,179,162, 80, 74,247, 77,255,232,189,142, 75,127,248, 77, 74,136, 9,251,119,174, 65, 94,174,123,119, 6,185, +148,199,215, 75,214, 90,101, 82,201,173,127,248,211,125,222,171, 87,175, 1, 11, 22, 44,168,225,238,228,173, 91,183, 32, 8, 66, + 73,206, 53,215, 13, 6, 3,110,223,190, 13,157, 78,183,122,194,132, 9,230,223,126,251,237,249,103,158,121, 6,117,235,214, 69, +116,116, 52,238,220,185,131, 43, 87,174, 96,201,146, 37,116,239,222,189,171, 1,140,242,242, 30,215,205,248,232,189, 33, 75,126, +252, 77,206, 17, 51,246,239, 90,131, 60, 23,209,126,183,117, 90,138,111,190, 95,107,150,201,164, 23,188,149,235,206,214,172,178, +172, 24,123, 12, 30,137,167,231,205, 71,133, 70,157, 49, 99,102, 7,124,243, 81, 95,204,126, 82, 6,243,170, 65,168,211,103, 41, +150, 79,238, 2, 0,136,249,198, 71,107, 9, 47,195, 77, 55, 22,171,220, 60,165, 93,220,148,206,106, 42,198,189,164, 50,188,180, + 22, 45,142,227,144,152,152,136, 10, 21, 42,160,121,243,230,168, 95,191, 62,218,182,109,139,147, 39, 79,226,228,201,147, 24, 51, +102,140, 71,145,229,203, 55,106,211,172, 35, 14,182,188,112,223,223,198,245,187,151, 5,124, 73, 75, 35, 71,142, 4,128,255,148, +117,139,191,151,151, 40, 38,204,251, 93,146, 70,228, 52,153, 76,142, 46, 57,231,121,153, 68,231,120, 31, 71,244,109, 37,132,212, +124,255,253,247, 95, 87, 42,149,109,117, 58, 93, 21,187, 69,230,162,209,104,220,174,215,235,231, 80, 74,115,239, 39,172,206,211, + 57,184, 11, 66, 73,247,230,228,228,116,238,220,185,243, 86,158,231, 19, 93, 23,252,117,151,145, 5, 65,184,158,150,150, 86,226, + 16,247,172,172,172,206,157, 58,117,114,203,233,174,128,240,133,211,221,247, 17, 4,193,163,200,242,165, 32,242, 54, 33, 41,207, +243,208,104, 52,248,229,151, 95, 16, 22, 22,246, 88,101,176, 19,103,211, 63, 46,233,124,155, 48,197, 78, 0,225, 79,127,186,226, +230,142, 76, 83,124,155, 48,249,141,159,223,236, 95,190,164,123, 50, 51, 51, 59, 61,247,220,115,191,243, 60,159,232,250,254,221, +125, 11,171,213,122, 45, 53, 53,181,212,211, 37, 80, 74,113,225,194, 5, 97,248,240,225,153, 25, 25, 25,125,239, 37,254,227, 39, +206,159, 61,109,210,232,208, 39, 59, 54,105, 4, 14, 48,121,118,254,165, 4,160,188, 84,114,107,236, 59,115, 95,248, 39,191, 25, +165, 52,159, 16,210,188,119,239,222,163, 80, 52, 52,252, 46, 33, 5, 96, 94, 9, 20,243,202,149, 43, 87, 75, 34,145, 40, 0, 76, +164,148,222, 32,132,124,190,119,239,222, 78, 0,158,144, 72, 36,209, 54,155,237, 54,138,214,124, 92, 65, 41, 61,225, 61, 29,165, +189, 84,183,122,120,220,147, 29,158,232, 12, 66,168,201,100,244,210, 64, 2, 5,165, 84, 38,147, 94, 56,116, 34,165,142, 55,107, +189,125, 5,142, 50,239,178, 31, 53,106, 20, 70,141, 26,229, 72, 79,159,125,214, 18,171, 79,239, 65,159, 58,201, 48,126,217, 2, + 36,160,188,207, 13, 62, 0,120,247,253,225,101,105,217, 44, 54, 72,171,172,124,180, 36, 18, 9, 50, 51, 51,113,241,226, 69,164, +165,165, 65,167,211,225,220,185,115, 48,155,205,200,201,201, 65,173, 90,181,238, 57,156,101,245,141,254, 73,206,255, 98,247, 97, +169,132,150,213,106, 77,246,182,202,186,197, 98, 41,213,168, 36,169, 84,106,168, 92,185, 50,113, 55, 58, 65,252,175,209,104,244, + 62, 22,144,185, 0, 38, 2,152,104, 95,207, 10,217,217,217,247,173, 6,109, 54, 91, 74,124,124,188,196,147,128,177,191,155, 52, + 47, 97,211, 2,104, 90,198, 21, 66,153,115,186,249, 62,218,106,213,170, 57,124,189, 92,231, 68,177, 47,182, 90,162,119,174,183, + 9, 73,181, 90,237,157,206,157, 59,219,156,207, 59, 79,104,250, 88,131,208, 27, 93, 6, 60, 31,191, 35,211, 20, 15, 0,162,216, +130,103,255, 31, 80, 74,245, 0, 90, 63,232,160, 93,189,122,213,244,196, 19, 79,252, 80, 80, 80, 48,146, 82,122,207,222,252,239, +124,240,217, 59,255,182,207, 66, 41,205, 7, 48,237, 30,239,189, 1,160,157,203,177, 19, 0, 78,220, 79,152, 78,156,203, 40,243, +185,197,172, 86,107,114,133, 10, 21, 74,101,185,241, 86,198, 91, 44,150, 18,235,137, 51, 8,196, 59, 7,128,162,101,226,178,124, +226, 52, 24, 12,217, 77,155, 54,149,150, 50,110,233,190,198, 61, 58, 58, 26, 49, 49, 49,142, 95, 17,174,199,189,133,211,106,181, + 38,199,197,197, 33, 44, 44,204,227,140,239,174, 62, 89,190,112,150,245, 55, 42,137, 51, 38,102,105,153,115,150,149, 94,248, 79, + 8, 45,113, 13,195,178, 68, 90, 90,218, 3, 89,115,133,150,133,185,237,111,203, 81, 35,252, 71,145,149,149, 21,122,191, 28,222, + 38, 36, 77, 75, 75,107,251, 95,125,191, 59, 50, 76, 67,239, 58,102, 23, 93,255, 52,180, 90,109,121,111,211, 14,120, 66,159, 62, +125,108, 96,120,228,145,153,153, 89,230,101,250,131,168, 39,178,179,179,107,255, 87,227,254, 32,194,249,111,225,124, 92,192,188, +212, 24, 24, 24, 60, 53, 86,152, 88, 98, 96, 96, 96,184, 79, 16, 0, 29, 60, 20,178, 62,143,244, 33,132,116,184,135, 66,124, 27, +227,100,156,140,147,113, 50, 78,198,201, 56,255, 91,156,222,184,203,122,164,241,163,208,106,125, 96, 27,128, 14,140,147,113, 50, + 78,198,201, 56, 25, 39,227,100,156,255,213,141,117, 29, 50, 48, 48, 48, 48, 48, 48, 48, 60, 32, 48,161,197,192,192,192,192,192, +192,192,192,132, 22, 3, 3, 3, 3, 3, 3, 3, 3, 19, 90, 12, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, 48, 48, 48, + 48, 48, 60, 56,144, 50,156,215,147,129,129,129,129,129,129,129,129,193, 9, 60, 0,108,220,184,209,161,182,186,118,237, 74,216, +107, 97, 96, 96, 96, 96, 96, 96,120,152,120, 92,181, 8,207, 4, 22, 3, 3, 3, 3, 3, 3,195,163,128,199, 81,139,112,238,148, + 36, 3, 3, 3, 3, 3, 3, 3,195,195,198,227,168, 69,184,199, 89, 69, 50, 48, 48, 48, 48, 48, 48,252,123,240,216, 91,180,152, + 85,139,129,129,129,129,129,129,225,159,194,191, 85,139, 16, 66, 40, 33,132, 58,239, 59,254,179, 81,135, 12, 12, 12, 12, 12, 12, + 12, 12,247, 38,176, 40,165,196,211, 47,192,230,209, 98, 96, 96, 96, 96, 96, 96, 96,184, 39,136, 98,202,121,223,217,154,245,192, +133, 22, 33,164, 3,227,100,156,140,147,113, 50, 78,198,201, 56, 25,231,127, 69,112, 81, 74,137,243, 62,207, 94, 15, 3, 3, 3, + 3, 3, 3, 3,195,125,139, 79,234, 78,120, 49,161,197,192,192,192,192,192,192,192,112,159, 34,203, 89, 92, 49, 31, 45, 6, 6, + 6, 6, 6, 6, 6,134,135, 0,102,209, 98, 96, 96, 96, 96, 96, 96, 96,184, 15,184, 58,193,179,174, 67, 6, 6, 6, 6, 6, 6, + 6,134, 50, 22, 91,238,142, 19, 0, 29, 60,220,176,205, 87,242,123, 25,125,224,141,159,113, 50, 78,198,201, 56, 25, 39,227,100, +156,143, 31,167, 55,238,210,232,143, 71, 5,132,144,214, 0,118, 0,104, 99,255,253, 91,120, 81, 74, 31,216, 6,160, 3,227,100, +156,140,147,113, 50, 78,198,201, 56, 25,231,227,188, 21,201,169,191,127,157, 55,230, 12,207,224, 77,165,243,132, 16,254, 94,207, + 63, 44, 78, 6, 6, 6, 6, 6,134,127,184,190,164,226,175,179,191, 22,239,225,226, 74, 0,222, 1, 16,232,116,248, 16,165,116, +186,203,117, 63, 2, 80, 59, 29,210, 2,152, 76, 41,189,236, 67,152,100,118,126,133,125, 19, 0, 24, 0, 24, 1, 20, 0,176,176, +207,246,143, 39,154,166, 0,186,217,255,111,160,148,238, 47,205,249,135,197,249,176, 16, 19, 19,163, 10, 14, 14,238,116,236,216, + 49,249,185,115,231,176,123,247,110,250,245,215, 95,155,115,114,114,182,164,164,164,232, 89,138,121, 44,210,124,103, 0,227,237, +187, 51, 40,165,155,239,147,143,168,213,234, 49, 26,141,166,139, 66,161,136,177, 90,173, 68,167,211,165,104,181,218,173, 86,171, +245, 83, 74,169,112, 15,156, 61, 67, 66, 66,158,175, 90,181,106,165,235,215,175,223, 78, 73, 73,249, 17,192, 42, 0,125, 99, 98, + 98, 6, 37, 36, 36,196, 94,184,112,225,114,118,118,246, 55,148,210,117,255, 84, 56, 25, 24,254, 75,240,228,159,229, 81,104, 1, +152, 72, 41, 29,228,146, 17,239,186,168, 93,187,118, 61,182,108,217,162, 22, 4, 1,226,166, 82,169,172, 0,134,122, 9, 83,232, +190,125,251,226, 71,142, 28,249,116, 74, 74, 74,195,130,130,130,198, 0,160, 86,171, 15, 70, 68, 68, 28,158, 55,111,222, 79,157, + 58,117, 74,182, 11,174, 82, 89, 74,164, 82,233,115,193,193,193, 93,172, 86,107,125, 74, 41,164, 82,233,177,156,156,156,205, 22, +139,229, 27, 74,105,169,197, 27, 33, 68,206,243,252, 40,133, 66,209,217,106,181,214, 6, 0,158,231, 79, 25,141,198,205, 86,171, +245,115, 74,169,233, 30, 56,149,114,185,124, 84, 64, 64, 64, 71,147,201, 84, 27, 0,228,114,249,169,252,252,252,173, 38,147,233, +115, 74,169,225, 17,168,112,120, 0,221, 40,165, 82, 0,144, 72, 36, 61,155, 54,109, 26, 79, 8, 17,196,249, 65, 56,142,171,103, +179,217, 56,251,245,221, 8, 33,135, 41,165,214,210,112, 62,241,196, 19,229,120,158,167,246,153,116, 57,142,227,234,148,134,179, +172, 16, 30, 30, 62, 77, 16,132,152,146,174, 9, 12, 12,108,120,236,216,177,170, 43, 87,174,180,125,249,229,151,185,195,134, 13, +243, 27, 57,114, 36,255,217,103,159,125, 14,224, 85,215,235,195,194,194,102,115, 28, 23,230,203,243, 5, 65,200,204,204,204,124, +131, 21, 87,255, 56,198, 47,220, 86,208,138, 82, 96, 84, 71,127, 14,192,125, 9,173,216,216,216, 37, 67,134, 12, 25, 80,187,118, +109,158, 82, 10,139,197, 2,163,209, 88,117,255,254,253,109,214,172, 89,211, 16, 64,223, 82,230,203, 23,222,126,251,237,169, 83, +166, 76, 9,147, 74,165,196, 98,177, 84, 92,185,114,101,253,151, 94,122,233,181,197,139, 23,151,235,215,175,159,191,120,124,226, +196,137,141, 8, 33, 73,148,210, 79, 31,118, 56, 25, 24,254,131,141,180,214, 40,238,163, 53,137, 82,250, 97, 73, 66, 75, 99,191, + 49, 13,192, 33,209,162,229,122,209,159,127,254,185,158,231,121,209,162,213, 88,171,213, 70,186, 88,193,220, 33, 97,240,224,193, + 77, 87,175, 94, 61,173, 95,191,126,169,106,181,186,242, 51,207, 60, 83, 64, 8,145,172, 92,185,178, 94,133, 10, 21, 84,221,187, +119, 31,220,174, 93,187, 55,127,255,253,247,221, 0, 50,124,140,100,141,144,144,144,181, 31,127,252,113,124,231,206,157,101, 97, + 97, 97,160,148, 34, 37, 37, 37,118,227,198,141, 79, 78,154, 52,233, 77, 66, 72, 47, 74,233,217, 82,188,184, 70, 42,149,106,245, +164, 73,147,162,159,124,242, 73, 62, 42, 42, 10, 6,131, 1,231,206,157,235,176,121,243,230, 86,139, 23, 47,126,149, 16,210,135, + 82,122,184, 20,156,141, 3, 3, 3,215,124,247,246,219,145, 77,158,123,142, 15, 9, 9, 1,165, 20, 25, 25, 25, 29,246, 44, 93, +218,102,196,199, 31,191, 74, 8,233, 77, 41, 61,244, 40, 37, 34,185, 92,206, 45, 91,182,172,174, 92, 46, 7, 0,152, 76, 38,212, +172, 89,147,220, 15,167, 84, 42,229, 62,253,244,211,250, 60,207,195,108, 54, 11, 5, 5, 5,244,153,103,158,225,254,161, 76, 18, +151,146,146, 18, 40,147,201,220,158,183,217,108,104,213,170, 85,162, 76, 38,195,167,159,126,106,201,204,204,172,183, 96,193,130, + 99,203,151, 47, 15,251,252,243,207,251,184, 19, 90, 28,199,133, 37, 39, 39,187,229,180,217,108, 48,155,205,176, 90,173, 48,153, + 76,168, 94,189, 58, 43,169, 30, 13,196, 3,192,111, 39, 13, 0, 16,114,191,100, 26,141,166,218,192,129, 3,249,140,140, 12, 72, +165, 82,152,205,102,164,166,166,162,102,205,154,146, 31,126,248,161, 74,105,249, 42, 86,172, 56,108,198,140, 25,225,191,253,246, +155,121,217,178,101,166,142, 29, 59, 74,135, 13, 27, 22,208,170, 85,171,234,113,113,113,220,183,223,126,107,220,186,117,171,101, +240,224,193,242,233,211,167,135,111,220,184,177, 59,128, 79, 31,118, 56, 25, 24,254,131,216,225,186,168, 52,128, 18,133,150,136, + 67,148,210,158, 0, 32,147,201,234,149, 43, 87,110,137,213,106,141,178, 91,117, 82,165, 82,233,167,102,179,249,184,189,162, 90, + 39, 8, 66, 15,111,150,172,193,131, 7, 55,253,253,247,223,103,237,223,191, 63, 47, 43, 43, 43,106,253,250,245,134, 55,223,124, +243, 58, 0, 92,189,122, 53,169,123,247,238,177,163, 71,143, 78,238,212,169,211,188,182,109,219,190,178,125,251,246,173, 40,234, +146, 44, 81,100,213,172, 89,115,223,174, 93,187,252,131,130,130,138,171,186,132, 4,188,242,202, 43,178, 30, 61,122, 84,104,223, +190,253, 94, 66, 72, 75, 74,233,105, 95, 4, 81,165, 74,149,182,253,249,231,159,126,193,193,193,200,205,205, 69,106,106, 42,116, + 58, 29, 2, 2, 2,208,175, 95, 63, 89,235, 22,205,203,141, 30,243,234, 54, 66, 72, 7, 95,196, 22, 33,164,113,243, 26, 53,182, + 45,159, 62,221,207,114,243, 38, 84, 42, 21, 10, 11, 11, 1, 0,254,254,254,104,152,152,200, 31, 89,186, 52,118,208,184,113, 34, +231, 67, 23, 91,132, 16,133,221, 12,106, 36,132,108,144, 72, 36, 61,229,114, 57,215,179,103, 79,108,219,182,141, 24, 12, 6, 30, + 0,148, 74,165,181,103,207,158, 80,169, 84, 48,153, 76, 2,128, 13,158, 44, 79,238, 56,165, 82, 41,215,182,109, 91,221,161, 67, +135,178, 69, 78,181, 90,109,105,219,182,109,168, 92, 46, 87, 89,173, 86, 90, 18,231, 3, 18,147,184,114,229, 74,177, 99, 5, 5, + 5,200,200,200, 64, 86, 86, 22,140, 70, 35,114,115,115, 33, 8, 2, 81,169, 84, 25,130, 32,128,227,138,140,111,158, 56,101, 50, + 25, 46, 94,188, 88,236,152,213,106,133, 86,171,133,209,104,132,217,108, 70, 65, 65,129,202,223,223,191, 82,141, 26, 53,146, 1, +172,203,206,206,254, 52, 53, 53,245, 6, 43,183,254, 17,220,220,112,220, 80, 30,128, 9,192,181, 50,224, 19, 0, 96,247,238,221, + 72, 75, 75, 67,102,102, 38, 50, 50, 50, 16, 23, 23,135,123,233,142,187,114,229,202,194, 90,181,106,145, 51,103,206,108, 6,240, +217,202,149, 43,135,102,103,103,143, 31, 59,118,108,200, 39,159,124,146, 61,110,220,184, 25, 0,190, 95,185,114,229,203,213,170, + 85,235,114,254,252,249,197,255, 68, 56, 25, 24, 30, 0, 26, 1, 8,183,255,207,180,151,187,161, 78,251, 39,237,249, 86,188,206, + 4, 64,238,230, 87,132,184,159, 1,224,176,211,125,226,254,189,212,159,212,249,215,209,232, 6,128,141, 27, 55, 82,113,115,119, +115,100,100,228,152,118,237,218,205, 58,122,244,104,245, 59,119,238, 4,223,185,115, 39,248,232,209,163,213,219,181,107, 55, 43, + 50, 50,114,140,120,157,221,227, 30, 78,251,206, 67, 52,101,251,246,237,139, 95,187,118,237,140,109,219,182,229,213,171, 87,207, +244,231,159,127, 90, 59,117,234,148, 14,192, 10,192,218,169, 83,167,244,237,219,183,219,154, 52,105,162,250,253,247,223,111,237, +221,187,119,246,234,213,171, 35, 1, 72, 60,112,130, 16, 34, 13, 10, 10,250,101,231,206,157,119,137, 44,103,148, 43, 87, 14, 27, + 54,108, 8, 8, 10, 10, 90, 71, 8,145,149, 16, 78, 16, 66,148, 74,165,114,205,246,237,219,253,252,253,253,145,158,158, 14,169, + 84,138,136,136, 8,228,229,229, 33,245,206, 29,220,184,116, 9,156,201,132, 57, 31, 77,241, 87,169, 84,171, 9, 33,114,111,156, +129,129,129,107,150, 79,155,230,151,181,109, 27, 78, 76,157, 10,179,217,236,232,114, 53,155,205,216, 59,114, 36, 50,254,248, 3, +223, 78,156,232, 23, 24, 24,184,134, 16,162, 44,137,179, 44,224,204, 73, 8, 25, 9, 32, 27, 64, 54, 33,100, 36,165,116,127,205, +154, 53,143,158, 59,119, 14, 45, 91,182,196,170, 85,171,234,140, 29, 59,118,228,216,177, 99, 71,174, 90,181,170, 78,203,150, 45, +113,238,220, 57,212,172, 89,243,168,179, 47,149, 47,156, 59,119,238, 68,187,118,237,114, 86,173, 90,149, 52,113,226,196,105, 19, + 39, 78,156,182, 98,197,138, 10,237,218,181,203,153, 59,119,174,177, 36,206, 7, 17,119,103, 75,147,243, 38, 8,127,215, 49, 49, + 49, 49,233,107,215,174, 69,191,126,253, 56,185, 92,126,167,127,255,254,138, 61,123,246, 80, 0, 27, 74, 19, 78,131,193, 0,189, + 94, 15,173, 86,139,171, 87,175,170, 62,254,248,227, 22, 31,126,248, 97,197,109,219,182,197,190,243,206, 59, 35,194,195,195,143, + 69, 69, 69,197, 63,236,184, 51, 78, 0, 64, 42, 0,179,189,113,119,227,126, 56,219,183,111, 95,171, 98,197,138,145, 43,207, 4, + 35, 71, 86, 21,130, 44, 8,130, 44, 8,182,208, 70,184, 34,127, 10,229,203,151,143,244,247,247,111, 90, 26, 78, 74,233,178,211, +167, 79, 63, 65, 41,253,144, 82,154, 69, 41,157, 53,110,220,184, 73,132,144,221,227,198,141,155, 66, 41,157,101, 63, 62,245,220, +185,115, 77, 40,165,203,255,137,112,178,180,196, 56,239, 5, 94,180, 72, 56, 33,100, 3, 33,100,195,132, 9, 19,218, 2, 8,117, +217,111,230,124, 29, 0,185,187, 95,113,115, 58, 30, 14,160,171,211,125,225,247,248, 62,136,235, 86, 76,104, 1, 64,215,174, 93, + 73,215,174, 93,197, 19,135, 8, 33,235, 1, 28,146,201,100,245,234,214,173,219,115,211,166, 77,254,225,225,127, 63, 63, 60, 60, + 28,171, 87,175,246,175, 81,163, 70, 79,153, 76, 86, 15,192,161,128,128,128,245,112,211,197,104, 71,208,200,145, 35,159,126,246, +217,103,243,235,213,171, 7, 0,185,103,207,158, 85, 55,105,210, 68,107,181, 90,137,213,106, 37, 77,154, 52,209,158, 61,123, 86, +109,177, 88, 10, 26, 53,106,164,105,223,190,253,245, 55,222,120, 99, 48, 0,101, 9,241, 27, 56,115,230,204,184,224,224,224,146, + 94, 0, 10, 10, 10, 16, 25, 25,137,145, 35, 71, 70, 73,165,210,231, 75,122, 97, 60,207,143,154, 57,115,102, 68, 80, 80, 16,114, +114,114, 16, 23, 23, 7,147,201,132,139, 23, 47,194,160, 45,132,165, 32, 31,150,252, 92,100,252,117, 25, 65, 82, 30,131,123,116, +139,228,121,126,148, 23,107,201,168,111,198,141,139, 52, 93,191,142,171,171, 86,193,102,189,219, 80, 99, 53,155,113,234,171,175, + 96, 72, 78,198,140,225,195, 35,229,114,249,168,135,108,201,250,132, 82,170,162,148,170, 8, 33,243,154, 53,107,246,131, 74,165, + 26, 57,125,250,244,206, 91,182,108,121,114,215,174, 93,109,172, 86,171,212,106,181, 74,119,239,222,221,210, 96, 48,240, 10,133, + 2, 60,207, 83, 95, 57,155, 54,109,186, 68,165, 82,141, 88,180,104, 81,231,237,219,183, 15, 62,114,228,200, 40,155,205, 38,183, +217,108,242, 35, 71,142,188,164,215,235,165,148, 82,155, 39,206,135, 13,169, 84, 10,153, 76, 6,149, 74,133, 22, 45, 90,252,245, +245,215, 95, 91,226,226,226,164,107,214,172, 9,142,137,137,209,124,246,217,103,185, 5, 5, 5, 51,125,229, 51,155,205, 48, 26, +141,208,235,245, 48, 24, 12,248,243,207, 63, 19, 71,143, 30,205, 27, 12, 6, 91,247,238,221,179, 45, 22,139,113,220,184,113, 1, + 33, 33, 33,111,178, 6,236, 63, 2, 43,128, 66,187,208, 50, 58,167,101, 66, 72,109,209, 58,235, 11,114,115,115, 23,127,243,205, + 55,113,156, 34, 8,123, 76, 93,240,147, 48, 9, 91, 2, 63, 67,122,252, 91,136,136,171,136, 1, 3, 6, 68, 80, 74, 63, 43,131, + 10,111, 1,165,180, 21,165,116,222,189,220,255,160,195, 73, 8,137,247,243,243, 91, 21, 16, 16,176,199,207,207,111, 21, 33, 36, +254,126,227,220,169, 18,233,208,179,186, 36,185, 83, 69, 66,123, 86,151, 36,119,170, 84,250,185,158, 24, 30, 77,184,104, 17,103, +100, 80, 74,187, 81, 74,187,205,152, 49, 99,154, 83,250, 23,247, 85, 62,230,151,110,148,210,110, 46,105,116, 67, 25,212,161,212, +117,115,104, 10,103, 37, 41, 70,206,121,116, 97,185,114,229,150, 44, 89,178,196,223,149,244,206,157, 59,200,207,207,199,123,239, +189,231,255,236,179,207,190,122,235,214,173, 33, 94,194, 33, 79, 77, 77,173, 63,104,208, 32,165,217,108,206, 17, 4,129,203,207, +207,231, 3, 3, 3,109,226, 5,129,129,129,182,188,188, 60,169, 86,171,149,216,108, 54,227,179,207, 62, 43, 31, 62,124,120, 67, +103,139,214, 93, 18, 55, 60,188, 99,151, 46, 93,228,158,206, 91, 44, 22,104,181, 90,104,181, 90,152,205,102,180,104,209, 66,241, +245,215, 95,119, 2,176,200,211, 61, 10,133,162, 99,199,142, 29,165,217,217,217, 8, 12, 12,196,141, 27, 55,112,237,218, 53, 24, + 11, 11, 97, 46,204,135,185,176, 0,214,130,124,208,252, 60,100, 93,190,128, 38,213,170,202,126, 84, 40, 58, 3,152,237,137, 51, + 32, 32,160, 99,147,161, 67,121,141, 70,131, 54,131,138,198, 25,252, 94,173, 26,168,205, 6,193,102,131,205,106, 69,231,139, 23, + 97,177, 88,192,113, 28, 26,101,103,243, 1, 75,151,118, 4, 48,235,159, 72,236, 10,133,130, 95,182,108,217, 64,185, 92, 14, 74, + 41, 49,153, 76,216,178,101,203,125,115, 46, 93,186,116,176,200,105, 54,155,105,173, 90,181,238,202, 80, 70,163,145, 62, 42,153, + 94, 46,151, 67,169, 84,194,108, 54, 35, 33, 33, 65, 63,104,208,160,125, 31,125,244, 81,121,142,227, 52, 50,153,108, 83, 86, 86, +214,180,148,148,148,171,190,242, 89, 44, 22,152, 76, 38,152, 76, 38,232,245,122,252,245,215, 95, 81,137,137,137,100,228,200,145, + 54,157, 78,151, 52,127,254,252, 43, 91,182,108, 81,207,156, 57,243, 25, 0,175,176, 98,247,225,193,110,149, 14, 44, 31,202,107, +165, 18, 20, 2,240,183,139,130,103, 8, 33, 77,170, 87,175, 30,124,238,220,185, 28, 66,200, 1, 0, 63, 81, 74,239,148,196, 39, + 8, 2, 17, 4, 1, 47, 53,206,197,200,166, 18, 88, 44,121,200,203,203,195,141, 27, 55,112,246,236, 89, 28, 60,120,246,158,194, +169, 84, 42,159,247,243,243,235,164, 84, 42, 19,172, 86, 43, 87, 88, 88,120, 67,167,211,109, 19, 4, 97, 49,117,237, 86,240, 1, + 15, 42,156, 34, 52, 26,205,199,239,188,243, 78,243,192,192, 64, 28, 63,126, 60,105,197,138, 21, 31,227, 62,157,235,149, 82,238, +219,217,115, 63,139,141,141, 8,194,201, 93,191,198, 78,251, 98,229,183, 0,226, 88, 42,254,247,195, 89,139,184,224, 48,128,174, +246,209,232,221,238, 35,159,223,215,253, 37, 89,180, 92, 23,150,190, 75,104,121,136, 24,172, 86,107,148,179, 37,139, 82,138, 59, +119,238,224,246,237,219,200,200,200, 64,112,112, 48,204,102,115,148, 47,245,108, 65, 65, 65,227,208,208, 80,157, 84, 42, 53,234, +245,122,168,213,106, 65, 42,149, 82,251,115,136,125,212,162,205,104, 52, 18,158,231, 45,254,254,254,126, 70,163,177, 42, 74,240, + 37,163,148, 54, 14, 13, 13,117,123,206,104, 52,162,176,176, 16, 90,173, 22,133,133,133, 48, 26,141,136,140,140,132,213,106,173, + 95, 98,147,214,106,173, 29, 30, 30,142,148,148, 20,168, 84, 42, 36, 39, 39,195, 84, 88, 0,115, 65, 1,172,218,124,216,242,242, + 32,228,231, 67,208,230,195, 98,210, 33,182,114, 53,136, 35, 18, 61,193,100, 50,213, 14, 13, 13,133, 86,251,183,187, 25,181, 11, + 44,171,213, 10,171,221, 57, 90,236, 78, 12, 11, 11,131, 56, 34,241, 97,192,238, 63, 53,150,227,184,121, 10,133,130, 31, 49, 98, + 4,238,220,185, 83, 44, 77,140, 24, 49,194,225,147,213,170, 85,171,221, 74,165,210,154,145,145, 1,163,209, 40,245,133, 51, 33, + 33,225,198,123,239,189,119,200,100, 50,197,197,196,196, 4, 25,141, 70,125,149, 42, 85, 98, 84, 42, 85,164,201,100,178, 53,108, +216,112,177, 74,165,178, 20, 22, 22, 82,171,213, 74, 30,133, 76, 79, 8, 1, 33,164,232, 27, 89,173, 8, 11, 11,211,102,102,102, + 30,204,201,201, 25,120, 47,124, 22,139, 69, 28,209, 5,189, 94, 15, 74, 41,142, 31, 63, 14,165, 82, 41,181,217,108,103,172, 86, +171, 90, 42,149,130,179, 59,127, 49, 60,180,239,220,166,106,144,124,246,244, 38, 17, 65,117,187,107,180,106,185, 68, 43,220,168, +155,240,221, 39,103, 87, 60, 59,248,121,255,201,147, 39,199,135,133,133, 41,175, 92,185, 98,152, 50,101, 74,226,178,101,203,136, +183, 70,208,205,155, 55,127,126,231,157,119, 66,186,116,233,146,164, 80, 40, 72, 94, 94, 30, 50, 50, 50,144,150,150,134,107,215, +174,209,147, 39, 79,254,101, 52, 26, 87,149, 38,156, 49, 49, 49, 95,143, 30, 61,250,217, 6, 13, 26, 72, 69, 11,169, 86,171,173, +183,115,231,206, 30,191,255,254,123, 75, 0,165, 78,151,183,110,221, 90,245,238,187,239,106,158,122,234,169,170, 10,133,130, 43, +139,112, 58,131,227,184, 72, 63, 63, 63,108,219,182, 13, 65, 65, 65,224, 56, 46,242,126,191,151,193, 44,196,198, 68,133,194,176, +119, 54,170,134,199,195, 96, 22, 98, 89, 42,126,124, 44, 90, 30, 78, 53, 18, 45, 82, 94,196,146,126,252,248,241,239, 16, 66, 54, +140, 31, 63,254, 29,119, 22, 45,251, 95,155,243,117, 78,215, 27,203, 90,108,149,106, 82, 72, 65, 16,112,251,246,109,164,164,164, +224,246,237,219,200,202,202, 2,199,113, 37,206, 31,225, 28, 6, 66,136,176,117,235,214,224,125,251,246,105, 27, 53,106,148, 43, +250,191, 88,173, 86, 98,177, 88,136,221, 47,134,220,184,113, 67,182,103,207,158,160,243,231,207, 71,162,200, 97, 77,240, 18,185, +187,142,137, 2,203,121, 51, 24, 12, 80, 42,149, 62,197, 85,172, 8,143, 31, 61, 90, 36,178, 10, 11,236, 93,134,121,176,229,231, +129,106, 11, 32,183, 89, 32, 7, 5, 49,232,124,126,127,206, 16, 69,150,217, 46,180, 76, 38, 19, 44, 22, 11, 4, 65,128,213,106, +125,232, 9,156, 82,186,176, 94,189,122,245,127,254,249,231, 97,183,111,223,190,235,124,175, 94,189,240,202, 43,175, 96,244,232, +209,231,187,118,237,122,242,215, 95,127,197,168, 81,163, 32, 8, 66, 93, 66, 72, 30,165,244,247,146, 56,199,143, 31,127,228,214, +173, 91, 59, 46, 93,186, 52, 34, 34, 34, 66, 81,187,118,237,203,181,107,215,150,252,252,243,207,145, 47,188,240,194,209, 39,159, +124,242,250, 31,127,252, 17,178,109,219, 54,165, 32, 8, 13, 8, 33,183,255,233,121,180,140, 70,163,195, 2,101, 48, 24, 96, 54, +155,129, 18,156,223,189,165, 77,241,219, 90,173, 86,145,155,252,252,243, 90,236,222,189,155, 59,123,246, 76,220,136, 17, 35, 69, +135,123, 86,226, 62, 28,129,245,148,156, 35, 95,142,173, 27,170,124,179, 78,168, 86,206,147,194,139, 95,190, 83,120,173,124,128, + 54,178,156,218, 20,151, 24, 20, 51,109,218, 71,209,231,207, 95, 48,190,247,222,123,231,250,247,239, 31,241,230,155,111, 86, 95, +179,102, 77, 75, 66,200, 55,148,210, 92, 15,188,202,161, 67,135, 30,136,136,136, 72,252,226,139, 47,210,111,221,186, 21,108,177, + 88, 52,102,179, 89,208,106,181,215,244,122,253, 54,179,217,188,141, 82,122,180, 52,225,245,247,247,175, 51,116,232, 80,105,110, +110, 46,236,163,117,145,158,158,142,230,205,155, 75,214,175, 95, 95,227, 94,222, 65,118,118,246,108, 66,200,142,229,203,151,119, + 10, 8, 8,104,160, 80, 40,162, 0,216, 10, 10, 10,210,180, 90,237,137,123, 9,103,177,114,206,102, 75, 59,122,244,104,133,128, +128, 0,220,188,121, 19, 54,155, 45,237,126,191,155, 82,198,221, 58,181,107,125,185,106, 97,137,216,179,239, 0,148, 50,238, 22, + 75,205,143, 61, 68, 31, 42, 56, 11, 40, 55, 2,105,223,244,233,211, 85, 51,102,204,192,244,233,211,207,184,179,104,137,130,107, +250,244,233,103,196,235,156,174,223,117, 31,229,137,103,139, 86, 9, 10, 18, 60,207,167,102,100,100, 4, 7, 5, 5, 57, 4, 86, + 74, 74, 10, 82, 82, 82, 32,151,203,113,227,198, 13,200,229,242, 59,190, 52, 66, 84, 42,213,145,122,245,234, 85,185,122,245,170, +108,202,148, 41,229,142, 30, 61, 26,208,188,121,243, 90, 42,149,202, 70, 41,133,193, 96,224,206,157, 59,231, 55,107,214,172,216, +198,141, 27,155, 26, 55,110,124,108,229,202,149,122,148, 48,121, 41, 33,228,208,157, 59,119,146, 18, 18, 18, 68,209, 86, 76, 92, + 57, 11, 46,160,168,203,147,231,249, 99, 37, 5,148,231,249, 83, 23, 47, 94,236,160, 86, 42, 96, 42,200,135,185, 48, 31,214,130, + 2,216, 10,242, 96,203,203, 3,180,249,144, 91,173,144,218, 44, 80, 41,149,184,157,156, 12,158,231, 79,149,196, 41,151,203, 79, +165,165,165,117, 8, 10, 10,114, 84,162, 22,171,181,104,179,217, 96,178, 90, 29, 22, 45,169, 84,138, 91,183,110, 65, 46,151,159, +122,216, 41,153,227, 56,155, 56,133,131,135,120, 32, 50, 50, 82,104,210,164, 9, 70,141, 26, 5,155,205,102,255, 12,164, 13, 33, +100, 15,165,180,208, 19,167, 32, 8,220,185,115,231,158,190,114,229,138, 68, 42,149,114, 79, 60,241, 68,205, 22, 45, 90,152,228, +114, 57,100, 50, 25, 95, 88, 88,232,191,109,219, 54,165,197, 98, 33,118,206,135, 54,143,150,152,118,238,106, 26,217,157,214,245, +122, 61, 10, 11, 11,145,147,147,195,171, 84,170, 42,181,106,213, 58, 96, 50,153, 86, 89,173,214,111,175, 94,189,154,239,137,211, + 46,204, 28,162, 75, 16, 4, 80, 74, 97,179,217, 96,177, 88, 32,147,201,132,157, 59,119, 97,214,156,143,177,228,219,101,180, 71, +143, 30,100,253,250,245, 16, 4, 33,153,149,171, 15, 5,159,230,254,244,145, 18, 86,155,214,184,115,121,225, 15,151,242,181,147, +127,152,123,196, 36,151,228, 55,108, 29, 89, 59, 41,177,138, 36, 40, 40,152, 91,180,120, 94,214,143,203, 86, 95,185,121,243,102, +254,231,159,127,222,180, 74,149, 42,129, 39, 78,156,136, 5,224, 86,104,169,213,234, 74,207, 63,255,252,208,156,156, 28,217,146, + 37, 75, 86,222,185,115,231, 8,128,179,148, 82,173, 83,217,213,149, 16,242, 61,138, 70, 62, 69,218,203,185, 61,148,210, 41, 37, +181,215, 8, 33,216,190,125,251, 93,163, 3,133,251, 83,231, 65, 21, 43, 86,236,119,245,234,213,221,169,169,169,189,221,228,251, +201,149, 43, 87,238,124,230,204,153, 73,148,210,223, 74, 67,172,211,233,198,173, 94,189,250, 19,137, 68, 18, 99,179,217, 82,244, +122,253,184,251,182,104, 89,132,225,211, 23,173,248, 74,111,178,149, 87,201, 37, 55, 13, 22,225, 5,150,148, 31,107,107, 22, 96, +247,209, 18,255, 3, 32, 46,251, 39,236,255, 77, 78,215,102, 56, 89,177, 76, 46, 86, 48,119,231, 50,112,143,147,165,187, 27,113, + 40,138, 46, 79, 51,195, 79, 0,208, 24,192, 33,169, 84, 58,239,217,103,159,157,245,227,143, 63,250,231,231,231, 35, 45, 45, 13, +233,233,233,224,121, 30, 1, 1, 1, 88,184,112,161, 62, 45, 45,109,158,243, 61,174, 51,200,139,121, 35, 44, 44,236,200,178,101, +203,162,190,252,242, 75,126,200,144, 33, 55,186,118,237, 90,117,225,194,133, 87,101, 50, 25,181,217,108,196,104, 52,146,151, 94, +122,169,194,156, 57,115,174, 75, 36, 18,117,191,126,253,136, 70,163, 57,132, 34, 7, 85,247,111, 62, 35, 99,235, 47,191,252,242, +244, 27,111,188,161, 48,153, 76,110, 45, 89,226,177,160,160, 32,236,221,187,215,148,147,147,179,197,139, 21, 99,235,166,223, 54, +182,250, 95,255,254, 50, 75, 65, 62, 44, 5,249,176,230,231,195, 86,144, 11, 82,152, 15,169,205, 10,149, 76, 64, 84,156, 18, 86, +189, 31, 54, 30, 62, 97, 49, 26,141, 37, 78,108,152,159,159,191,117,207,146, 37,109, 26,199,199,243,123,199,140,129,217, 98,193, + 83, 23, 47, 58,196,149,217,108,198,186,218,181, 97, 35, 4,117, 95,124, 17,151,173, 86,107,126,126,254,214, 71, 49, 51,156, 60, +121, 50,125,208,160, 65, 71, 5, 65,168, 95, 26,235,142, 8, 63, 63,191,130,194,194, 66,100,102,102,218,178,178,178, 12, 0,144, +158,158,158,179,126,253,250,115,130, 32, 52,190, 23,206,178,128,197, 98,185,203, 26,101,179,217,138,172,142, 69,150, 3,249,198, +141, 27, 91,157, 59,119, 78,118,250,244,105,236,222,189,187,238,143, 63,254, 56, 33, 62, 62,190,246,141, 27, 55, 82,189,137, 55, +119,147,254,194,238,127,184,114,249, 42,188,252,242,203, 36, 53, 53, 21, 63,253,244, 19,188, 77,158,202, 80,102,208,194,106, 83, +153,118, 46, 47,236,250,219,205,130,253,119,244, 83, 0,108,166,122, 43, 45, 87,174,220,201, 6, 13,130,195, 0,192,104,176, 69, + 85,170, 84,169, 53,207,243,114,123, 26,110, 16, 26, 26,186, 16, 64, 11, 55,229,167,164,127,255,254, 77, 34, 34, 34,234,253,254, +251,239, 39,238,220,185,115,134, 82,122,208,245,186, 10, 21, 42,188,119,254,252,249, 70, 82,169,148,120, 73, 35, 0,128, 54,109, +218, 84,137,143,143, 15,253,237, 82, 32,242,101, 21, 65, 37,121, 0,175,132, 45,168, 14,110,200,170, 35, 46,238, 64,104, 80, 80, + 80,221,220,220,220, 19,165,172, 32,218, 62,253,244,211,223, 46, 89,178, 36,174,117,235,214,148, 16,194,185, 78,233, 80,161, 66, +133, 78,251,247,239,175,255,194, 11, 47,124, 97, 31, 61,236,179,243, 48,165,244, 6,128, 62,101,249,209,182, 92,166,219, 96,159, +243,140,225, 63,131,195, 15,232,218, 50,193,189,204, 12,223, 88, 16,132, 30, 28,199,193,108, 54, 79,143,140,140, 92,215,175, 95, +191, 94, 19, 38, 76,240, 11, 13, 13,117, 88,178, 22, 46, 92,168,191,118,237,218, 26,179,217,124,156, 16, 50, 49, 37, 37,165, 71, + 76,140,199,250,161, 96,254,252,249, 43,186,119,239, 62,228,197, 23, 95,212,215,174, 93, 59,160,106,213,170,186,125,251,246,249, +117,236,216, 49, 95, 34,145,208,189,123,247,250, 87,168, 80,193, 64, 8, 81,252,241,199, 31, 89, 7, 14, 28,168, 48,125,250,244, +111, 80, 52,220,218, 19,150, 79,157, 58,245,189, 30, 61,122, 84, 8, 13, 13, 69,126,126,126, 49,177, 37,254, 87, 42,149, 72, 77, + 77,197,218,181,107,239, 88, 44,150,111,188, 88, 54, 62,255,108,225,162, 87,219, 54,121, 34, 54, 64,173, 66,106,242, 13,216,242, +114, 0,109, 33,228, 86, 11, 84,114,138,216,138,106,240, 18, 13,174,164, 22, 98,201,190,195,169, 86,171,245,243,146, 56, 77, 38, +211,231,175,204,153,243,234,254, 69,139, 98,227,251,246,197,217,165, 75, 29, 93,133,162,208,178, 17,130,242,237,219,131, 11, 12, +196,180, 47,190, 72, 51,153, 76,159, 63,236,196, 34, 8,130,196,100, 50,149, 20, 15, 8,130,144,124,246,236,217, 21,132,144, 2, + 66, 72, 27,251,169, 29,238,172, 89,206,156, 28,199, 9,213,171, 87,255, 57, 50, 50,242,105, 0,218,234,213,171,255,172, 80, 40, +218,153, 76,166, 39, 4, 65, 72, 62,126,252,248, 90, 66, 72, 42, 33, 68,108,117, 60,212,121,180, 44, 22, 11, 38, 78,156,136, 25, + 51,102, 96,252,248,241,142,248,138,221,135,185,185,185,137,123,246,236,145,237,220,185,147,126,241,197, 23, 89, 67,134, 12, 9, +122,241,197, 23,131,190,252,242,203,215, 1,140,243,196, 57,110,220, 56,124,241,197, 23,120,249,229,151,239, 86, 89, 18,137,144, +156,124, 11, 6,131,129,206,159, 63, 63, 69, 42,149, 6,127,243,205, 55,170, 23, 94,120,129,176,114,245,161,224, 93,213,160,247, + 95,179,151, 49,243, 40,165, 59,196, 19, 1, 1, 1,170,159,127,254,133, 7,128, 53,171,215, 74, 41,165,129,226, 4,179, 63,252, +240,131,178,121,243,230, 17, 30, 10, 92,155, 82,169, 52,206,156, 57, 51,116,248,240,225, 79,254,249,231,159,193,132,144, 38, 0, +142, 0, 72,179,139,235, 8, 0,103,195,194,194, 2, 86,174, 92, 25,219,169, 83, 39,141,183,128, 22, 20, 20,124,179, 98,197,138, +132, 57,123, 2,241,155,246,105,220, 18,250,130, 6, 81,132, 68, 20,160,186,223, 77, 12, 28, 56, 48,102,222,188,121, 95, 1,104, + 80, 10,145, 53,176, 87,175, 94, 51,150, 44, 89, 18, 51,124,248,240,212, 99,199,142,165, 1, 88,226, 70,240,101, 62,251,236,179, +119,150, 46, 93, 26, 77, 41, 93, 68, 8,145, 83, 74,215,176,228,195,192,224,200, 75,173, 81, 52, 35,252, 93,226,139,184,243,111, + 34,132,172,179, 90,173, 61,120,158, 95,239, 60, 97,105,100,100,228,171, 38,147, 41,154, 16, 66,101, 50, 89,106, 90, 90,218, 60, +231, 9, 75,147,147,147,123,196,197,197, 57,238,177, 79,186,233, 60,215, 70,192, 83, 79, 61,213, 97,255,254,253, 11, 54,108,216, +144, 94, 80, 80,224,183,122,245,106,213,140, 25, 51,110, 8,130, 64,223,126,251,237,248,206,157, 59,235,108, 54,219,157, 23, 95, +124,177, 66, 98, 98,226,139,231,207,159,223,230, 44,180,220,112,130, 16, 82,163, 98,197,138,123,215,172, 89, 19, 16, 20, 20,132, +244,244,116,100,103,103, 67,171,213,194,102,179, 65, 42,149, 34, 35, 35, 3, 83,166, 76,201, 79, 73, 73,185,107,194, 82, 15,156, +141, 19, 98, 99,183,206,155, 52,209, 63,136,231,144,117,225, 28,172, 57, 89,144, 90, 45, 40, 87, 35, 16, 50,185, 10,151, 47, 22, +224,245,229,107, 11,110,102,231,222, 53, 97,169, 39,206,134,149, 42,109,251, 98,236, 88, 63,195,173, 91,136,126,238, 57,232,116, + 58,152,205,102,112, 28,135,191,230,205,131, 44, 60, 28,239,173, 92,169, 61,115,243,102,123,215, 9, 75,221,113,150, 65,226,112, +112, 18, 66, 70, 18, 66, 28,206,240,189,122,245, 42,118,237, 47,191,252,130, 69,139, 22,193,104, 52, 90, 41,165,175, 82, 74, 23, + 18, 66,252,236, 9,170,208, 27,103, 66, 66,194,205,154, 53,107, 30,182,217,108,188, 93,100,208,179,103,207, 54,184,118,237, 90, + 57, 23, 78,222,206,105,125, 88,113, 15, 13, 13,157,247,251,239,191, 39, 68, 68, 68, 16,231, 25,219,237, 66, 17, 0, 48,106,212, +168,246, 7, 14, 28, 80,212,171, 87,207,152,153,153,217, 40, 60, 60,252,207,101,203,150,133,245,235,215, 47,229,204,153, 51,177, +174,156, 97, 97, 97,179,214,172, 89, 83,177, 98,197,138,156,104, 21,115,237,158, 28, 54,108, 88,135,101,203,150,201,159,126,250, +105,163, 86,171,141,244,247,247,191,178,102,205,154,176,158, 61,123,166,158, 57,115, 38,250, 97,196,157,113,186, 71,205,154, 53, + 47,159, 57,115,166,162,184,175,215,235,145,145,145,129,204,204, 76, 4, 5, 5,161, 99,199,142,127, 93,187,118,173,162, 59, 78, + 66, 72,189, 62,125,250, 76,250,234,171,175, 58,104, 52, 26,217,174, 93,187,180,219,182,109, 51,220,184,113,195,106,177, 88,104, +116,116, 52,223,162, 69, 11,101,151, 46, 93, 52, 10,133,130,123,255,253,247, 51, 63,250,232,163, 48, 66,200,114,113,249, 51, 87, +206,250,245,235, 31,220,180,105, 83, 99, 66, 8, 36, 18, 9, 76, 38, 51,114,115,115,113,251,118, 50,206,158, 61,139,253,251,247, + 99,203,150, 45, 39, 10, 11, 11,235,249,152,223, 67, 1,236, 50, 26,141, 85,229,114,185,207,194,222,102,179,129,231,249, 11, 0, + 58, 81, 74,147, 89, 90, 98,156, 12,127,251,103,149,202, 25,222, 46,192, 26, 19, 66,214,217, 15, 29,114,157,194,129, 16, 50,129, + 16, 50,209,201, 10,230, 45, 44,249,191,255,254,251,238, 14, 29, 58,140,106,223,190,253,156, 78,157, 58,221,185,115,231, 78,210, +236,217,179,227,172, 86,171,249,236,217,179,220,149, 43, 87,110, 28, 57,114,164, 98,229,202,149, 95, 60,127,254,252, 78, 47,214, + 44, 49,172,103, 9, 33,205,219,182,109,187,246,197, 23, 95, 44,223,164, 73, 19,121, 80, 80, 16,120,158,199,213,171, 87,113,226, +196, 9,211,202,149, 43,147,115,115,115,125, 94,130,135, 82,122,136, 16,210,177,223,232, 87,215,188,216,171,123,216, 19, 85,171, +200,163,163,163, 1,189, 30, 23,110,166,226,192,133, 19,230,175,119, 31,200, 48, 26,141,189,125, 93,130,199,206,217,161,221,216, +177,107, 38,255,239,127,145,184,115,135,143,142,142,134, 92, 46,199,181,107,215,112, 69, 16,172, 51, 23, 47, 78,203,207,207,127, +232, 75,240,136,115, 94, 9,130,192, 3,128, 74,165,194, 43,175,188, 2,231, 37,119, 22, 45, 90, 4,189, 94, 15, 0, 60, 33,228, + 19, 66,200,183,158,172, 88, 30, 56,203,255,246,219,111,229,157, 57,171, 85,171,230,142,211,248,176, 51, 73,118,118,246,123, 79, + 61,245,212,116,158,231, 61,206,122, 27, 28, 28,140,130,130, 2, 88,173, 86,219,237,219,183, 47, 4, 7, 7, 67, 42,149,130, 82, +234, 54, 31,101,101,101,189,215,187,119,239,169, 28,199, 69,120,226, 12, 8, 8,184,241,231,159,127, 86,122,225,133, 23,184,239, +190,251,238,234,240,225,195, 21,127,254,249,167,141, 82,186,150, 21, 93,143, 22,156, 27,165,246, 70, 28, 45,225,218,227,132,144, + 57, 71,142, 28, 9, 31, 53,106, 84,210,255,254,247,191,128,182,109,219,250, 57, 95,163,215,235,133, 95,127,253, 85,187,104,209, +162,188,221,187,119, 95, 31, 54,108, 88, 19, 20,249,151,184,197,205,155, 55, 55, 78,155, 54, 45,176, 75,151, 46,149, 1, 56,252, +179, 50, 50, 50,112,227,198, 13,156, 62,125,250,134,217,108, 94, 95,138,248,100, 17, 66, 38, 15, 24, 48,224,147,165, 75,151,198, + 12, 31, 62, 60,117,229,202,149,167, 81, 52,193,176, 43,130,122,245,234, 85,123,233,210,165,209,195,135, 15, 79, 5, 48,133, 82, +202,252, 8, 25, 24,254, 70, 27, 87, 63,173, 18,125,180, 0,228, 9,130, 0,131,193, 16, 41, 8, 66, 15, 65, 16,224,231,231,231, +238,186,198, 41, 41, 41, 61,156, 23,149,134,151,229,114, 0,100,108,219,182,109,235,242,229,203,219,191,253,246,219,255,203,205, +205,109,124,242,228,201, 38, 0, 32,149, 74,247,107, 52,154,131,211,167, 79,127,110,220,184,113, 25,190,136, 44, 23,177, 85,125, +214,172, 89,101,182,168,180, 93, 24, 85,250,124,213,218, 81,223, 40, 20, 29, 93, 22,149,222,106, 95, 84,218,112, 47,156, 99,191, +250,106, 84,192,170, 85,143,236,162,210, 70,163,209,250,244,211, 79,127,195,113,156, 96,111,197,242, 70,163,241, 57,148,114,164, +170, 43,103,175, 94,189,190,147, 72, 36, 86,187,165,136, 51, 26,141,207,223, 15,103, 25, 86,162,133, 0, 70,151,116, 77,173, 90, +181,150,173, 95,191,126, 80,143, 30, 61,108,102,179, 57,189,123,247,238,252,193,131, 7, 41,199,113,219, 60,112, 26, 1,188, 85, + 18,103, 84, 84, 84,252,103,159,125,118,108,204,152, 49, 1,203,151, 47, 15,217,179,103,143,109,254,252,249,249,217,217,217,159, +178,114,235,209,130, 84, 42,133, 90,173,134,201,100, 66, 70, 70, 6,188, 77, 89, 69, 41,221, 78, 8,233, 50,118,236,216,103,198, +142, 29,219, 37, 42, 42,170, 66, 66, 66,130,154,227, 56,220,190,125,219,154,146,146,146,110,177, 88,182, 2, 88, 11, 0, 21, 42, + 84,120, 22,192,215,158,248,178,178,178,166, 18, 66,182, 47, 93,186,180,171, 70,163,169,174, 84, 42, 67, 44, 22, 11, 87, 80, 80, +144,173,215,235,207, 25, 12,134, 13,148,210,125,165, 76,247, 43, 9, 33,153, 67,134, 12,249,118,201,146, 37,113, 87,175, 94, 45, + 56,114,228,200, 83,174,215, 85,175, 94,125,207,210,165, 75,163, 95,120,225,133, 59, 43, 87,174, 44,149,143, 22, 3,195,127,164, + 33,182, 19, 30,252,139, 61, 85,112,211,228,114, 57, 15,251,226,210,162, 69,203,205,117,135, 92,124,178,242, 0, 76,243, 33, 76, +218,129, 3, 7, 94, 27, 56,112,224, 39,246, 48, 72, 80, 52,133,131, 21, 69, 30,255,102,120,153,210,193, 67, 68,173, 0,190,178, +111,101,245,242, 12, 40,154, 47,103,214,163,204, 89, 6, 97, 50, 18, 66,198, 18, 66, 62,177, 31, 26,123,252,248,241,133, 46, 22, +170,147,206,231,189, 89,158,220,113,158, 56,113,194,149,243,116,105, 56,255, 73,228,230,230,190,250,217,103,159, 29, 26, 63,126, +188, 98,232,208,161, 56,125,250, 52,102,204,152, 97,204,205,205, 93,126,175,156,169,169,169, 55,162,162,162,234,207,157, 59,247, +205, 57,115,230,244, 36,132,176,181, 14, 31, 17,232,245,250,191,234,212,169, 3, 82,228,176, 68,173, 86,171, 99,180,168,125,134, +255,191,124,177, 26, 1, 88,108,223, 64, 8, 9, 65,209, 40,195, 44, 74,169,107, 67,114,172, 15,124,251, 1,236, 47,227,188,191, +157, 16,242,220,149, 43, 87,166,253,245,215, 95,110,133,218,229,203,151,119,180,104,209,194,255,228,201,147,239, 82, 74, 55,178, +212,193,192,224, 59,120, 15, 25,239, 50,128,255,249,144, 65,167,223,199,179,109, 62, 88,191, 24, 30,174,216, 90, 72, 8,249,214, +201, 26, 83,170,243, 15,139,243,159, 66,114,114,114, 14, 0,199, 82, 36, 73, 73, 73,119,249,177,221,171,216, 66,209, 44,240,108, + 38,248, 71, 8, 87,175, 94,125,234, 1,228,177,236, 71, 52,239,239, 0,208,196,211,121,139,197, 50, 17,192, 68,150, 42, 24, 24, + 74, 15, 54,251, 52,131,107,129,107, 44, 73,240,120, 59,255,176, 56, 25, 24, 24, 24, 24, 24, 30, 21,184, 89,235,176,181,227, 28, +128, 14, 30, 42,191,109,165,120, 64,169, 23,244,244,198,207, 56, 25, 39,227,100,156,140,147,113, 50,206,199,143,211,137,123,142, +135, 83, 23, 92,248,190,252, 55, 10, 47,199,232, 67, 74,233, 3,219, 0,116, 96,156,140,147,113, 50, 78,198,201, 56, 25, 39,227, +188,199,231,188,248, 48,158, 83,198, 97,166, 0, 90,139,251, 60, 24, 24, 24, 24, 24, 24, 24, 24, 24,202, 4, 62,205,163,181,122, +245,106,137,248,127,192,128, 1,195,108, 54,155, 99,216,187, 68, 34,249,236,167,159,126,250,182,164,135,244,233,211,199, 86, 18, +167, 59,120,123,142, 59,206,154, 85, 2, 71,132, 6,170, 95,205,205,211,205,189,154, 98,219,109, 48, 24,170,139,231,148, 74,229, +185,111,191,253,246, 82, 89,135,115,216,176, 97,149, 93,159,147, 16, 39,109, 19,226,175,124, 37, 59,183,112,246,233, 75, 5, 95, +178,100,246, 96,209,183,111, 95, 73,105,174,191,118, 45,136, 59,134,232, 79, 3, 52,178,238,133, 90,203,167,182,163, 19, 23, 60, + 14,239, 33, 58, 58,186,106, 64, 64,192, 96, 0, 53,116, 58, 93,132, 90,173, 78, 7,112, 54, 63, 63,127,217,157, 59,119, 46,248, +202,211, 38,145,220, 0, 80,222,190,123,115,199, 53, 26,239,203, 57,111,232, 92,145, 24, 40,160, 32, 4,230,205,151,169, 99, 1, +205, 39, 43, 17,131, 64,239, 62,222,185, 18, 49, 81, 10, 25, 1,140,155,175, 80,229,227,146, 94, 9, 33, 1, 0, 58, 2,168, 9, +224, 36,128, 45,148, 82, 29,203,201, 12, 12,143, 15, 92, 39, 42,117,222,231, 61,136,137, 86, 50,158, 44,160,160, 65, 0, 13, 53, + 26,141, 82,185, 92, 14,147,201, 4,181, 90,245,249, 75,195,135, 77, 2,135, 92,139, 21,175,124,251,237,183,247,188,210,117,105, +158,211,167, 79,159,237,174,247, 7, 7,168,166,238,248,245,237,224, 86, 93,103,206, 48, 93,203, 28, 87, 80, 80,192, 41, 20, 10, + 24,141, 70, 4, 6, 6, 54, 31,241,226,139, 13, 56, 41, 53,201,100,154,125,115,230,204, 73,189,215,112,190,254,250,235, 81,102, +179,161,153, 32, 8,114,147,201,164,112,125, 78,160, 90, 51,115,199,175,111,171, 91,119,155, 49, 9, 0, 19, 90,143, 16,138, 68, + 86,212,151,175, 13,124, 98,232,199, 99, 58, 32,168,205,204,113, 0, 22,252,203, 51,180, 36, 41, 41,105, 84,124,124,124,255,197, +139, 23,203,146,146,146,160, 84, 42,161,215,235,163,255,250,235,175,232, 17, 35, 70,180,174, 80,161,194,138,171, 87,175,126, 78, + 41,181,249, 64, 89,126,199,247,239, 3, 0,154, 15,158, 82,158, 16,242, 22, 0, 29, 0,180, 78,248,251, 92,155,161, 83,202, 19, + 66,198,162,248,104,225, 59,148, 82,183,147,100, 82, 64,190, 97,233, 44,244,120,246, 45,158, 16, 50, 66, 60,222,165, 50,176,233, +135,121,120,114,192,171,197,142,119,174, 0,254,215,165,179,208,237,217,183, 60,174,106,254,100,101,206, 34, 8,212,163, 37,158, +227,136,117,243,101,234,110,129,225, 52, 74,233,102, 55,239,178, 51,138, 22,116,118,123,125,183,106,124,154,217, 98,115, 59,225, +172, 76, 42, 73,223,112,222,122,215,189, 67,235, 19,139,197, 86, 84,182,202,120,216, 2, 3, 3,119,188,251,238,187,124,183,110, +221,240,245,215, 95,183,248,242,203, 47, 95, 36,132,252, 1, 96, 61,165,244, 10,203,165, 12, 12,143,175,224,242, 40,180,120, 9, +190, 88,191,230,219,138,105,233,153, 24,242,194,155, 88,190,124, 57,114,114,114, 16, 28, 28, 12,185, 76, 38,157,251,201,251, 81, + 1, 1,154,168, 33, 47,142,251, 2, 64,213,123, 13, 80, 41,159, 83,233,174, 8,217, 39, 52,229, 37,156, 84, 46,151,115, 43, 86, +172, 64,110,110, 46,130,130,130, 32,151, 75,185, 57, 51, 38,168, 2, 2,252, 84,207,143, 28,223, 2,192,170,123, 13,167,201, 84, +216,226,231,229,223, 6,100,100,100, 96,232,203,227,224,250, 28,153, 76,102, 19, 43, 22,150,204,254, 57,100,102,102, 18, 0, 8, + 11, 11,163,197, 69, 86,147,161,115,222,232,132,215,103,111,129,206, 96,250,225,223, 30,207,164,164,164, 81,125,251,246,237, 63, +117,234, 84, 25,199, 21, 13, 28,214,106,181,208,235,245,136,141,141,197,142, 29, 59,100,239,189,247, 94,255, 95,126,249, 5, 0, +230,151,150,255,204,153, 51, 9,229,203,151, 55, 0, 64,247,218,254,174,231,226,197,115, 0,224,239,239,239,149, 47, 52, 72, 99, + 60,115,230, 64, 13,241,190, 81,237, 99,109, 30,142, 27, 0,168, 75,226, 18, 4,202,111, 89, 48,194,227,249, 23,166,254,104, 61, +185,106,119,213,164,164, 36,189,243,113, 15, 19, 46, 3, 64,100, 97, 97, 97,121,215,131,226,245,102,139, 45,194,211,243, 58,189, +178,200,173, 0,179,216,192,255,248,227,143, 0,128, 79,223, 26, 36,249,234, 96, 38,207,243, 69, 69,237, 39,159,124,130,201,147, + 39,203, 55,111,222,220,101,233,210,165, 93, 8, 33,115, 61, 9, 85, 6, 6,134,127,159,200,114,254, 45, 81,104,113,132,248, 7, +248,251,161,207,192,151,240,251,239,155,208,170, 85, 43,199,185,196,196, 68,244,237,221, 19, 63,125, 63, 7, 0,252,239, 39, 80, +247,251,156,156, 60,237, 7, 79,246, 95, 48,229,102,106,225,254, 13, 27, 54,160,101,203,150,197,238, 31,216,175, 15,126,248,230, + 19, 80, 74,101,247,245,242, 40, 39,243, 15,208, 96,192,144,151,225,238, 57, 47, 14,237,181,161,115,223,121, 29,210,178,180,115, + 88, 82,123,184, 56,127,254,188,196,104, 52, 14, 8, 8, 8,104, 34,149, 74, 35, 21, 65,229,133, 20,190,113, 86, 6, 73,186,154, + 30,161,107,245, 70,135,200, 39, 63,125,173, 45, 94,159,189, 5,115,151, 31,248,190, 62, 82,255,213,115, 1, 69, 71, 71, 87,141, +143,143, 47, 38,178, 10, 10, 10, 80, 88, 88,136,252,252,124, 20, 20, 20,128,227, 56,140, 27, 55, 78,182,115,231,206,254,209,209, +209,219,124,232, 70,188,217,124,240,148, 34,177, 33,145, 22, 78,156, 56,209, 24, 17, 17, 97, 84,171,213,148,151, 41, 10,218, 12, +157,226, 15, 0, 28, 47, 43,152, 59,119,174, 41, 54, 54,214,192,243,188,252,213, 87, 95,245,105,122, 24,163,209, 72,157, 57, 77, + 38,163,227,248,204,153, 51, 77,145,145,145, 70,181, 90, 77,205,102,147,207,239,225,212,181,108, 40,100, 18, 40,100, 18, 40,229, + 82,248, 39, 52,130, 34,231, 52,172, 86, 43, 62,254,248, 99,115, 84, 84,148, 73,173, 86, 83,185, 92, 46, 27, 51,102,140,215,112, + 14, 27, 54,140, 6, 5, 5,153,213,106,181,108,242,228,201,119,205,238,252,231,201,219, 80,201,165, 80, 43,120, 84, 74,140,131, +130,234,125, 14,171, 68, 82,188,167, 91,161, 80,160, 69,139, 22,168, 81,163, 6,214,173, 91,215, 6, 0, 19, 90, 12, 12,255,114, +184, 90,177,238, 18, 90, 27, 55,110,108, 13,251,170,211, 93,187,118, 45, 90,109, 26, 20, 99, 71,245,198,243, 67, 7,192,102, 19, + 28,203, 77, 16,142, 96,228,115, 93, 32, 8, 54, 95, 30,236,117,136,103,105,159,227,204, 73, 9, 39, 1,128,138,241,209,244,197, +231,255, 7,155, 32, 20, 77,131, 10, 0, 18,224,165,161, 79, 22, 29, 43,131,112, 74, 96,195,155, 35,158,129,187,231, 84,173, 24, +195, 89,205, 6, 16,167,197, 30, 31,196, 98,155,140,179, 56,246,237,219, 23,173, 86,171,103, 15, 26, 52, 40,102,204,152, 49,114, + 27, 31,196,175,222,159, 21,248,246,194,253, 49, 58,163, 89, 50,176,109, 2,222,248, 95,109,188, 49,247, 79, 81,100,189,152,152, +152,251,175,254, 70, 1, 1, 1,131, 23, 47, 94,124,151,200, 74, 75, 75,227, 10, 11, 11, 97, 54,155,133,130,130, 2,216,108, 54, +140, 31, 63, 94,250,222,123,239, 13, 38,132, 76,182,243, 24,221,113,238,184, 70,227, 9, 33, 99,207,156, 57, 19,255,238,187,239, +154,219,181,107,119, 51, 49, 49, 81, 43,145, 72, 16, 29, 29, 61,175, 99,199,142, 33, 83,167, 78, 53,119,233,210,229,186, 68, 34, + 65,165, 74,149,180,167, 79,159,142, 7,160,242, 53,238,206,156,223,254,249,153,216,234, 67,199,142, 29,111, 84,170, 84, 73, 43, +145, 72,112,233,215,153,212,215,247, 41,229, 57, 84,142, 13, 20,155,145,128,202, 15,200, 41,218,237,216,177, 99,114,213,170, 85, + 11, 57,142,195,169, 83,167,226, 0, 40,189,113,170, 84, 42,203,192,129, 3,111, 94,184,112,225,174,235, 1,128,151,112,104, 82, +213,110,192,138,173, 15, 36,239,241, 24, 78,169, 4,214,247, 70, 13,226,131,148,128,194, 63,204,152,159,159,143,128,128,128, 34, + 11,153,217,140,227,199,143,163,105,211,166,173, 87,173, 90,181,147,229,119,198,201, 56,255,134, 59, 45,242,111,179,102,137,130, +203,157,143,214, 14,215, 72,217,108, 86, 36,150,143,196,204,247,135,193,102, 19, 96,179,217, 96,181,255,218,108, 54, 88,204,230, + 50, 9,220,253, 60, 39, 56, 64, 53,117,211,138, 87,130,219,245,250,164,253,244,119,135,110,181,217, 0, 65,176,192, 98, 1,108, +130, 5,130,205, 6,139,197, 84, 38,225,180, 8, 2,226,227,162, 48,253,221,161,112,125,206,178,159, 86,117,255,115,253, 56,117, +171,110, 51,222, 4,240, 49,211,246, 15,199,146,165, 86,171,103, 47, 91,182, 44,190, 81,163, 70, 28, 0,236,190,104, 85,188,189, +112,127,204,230,233,205, 73,243, 26,161, 72,207, 53,226,213,207, 79,224,247,253,233,155, 92, 69,214,191, 24, 53,146,146,146,138, +137,172, 89,179,102,133, 45, 92,184, 48, 22, 0,122,247,238,125,187,125,251,246,153, 23, 47, 94, 68,116,116, 52,201,204,204,236, + 10,224, 85,123,198, 31, 75, 41, 93,232,129, 87, 91,190,124,121, 67,120,120,184, 81, 20, 68, 28,199,129,231,121,148, 47, 95,222, + 16, 17, 17, 97,172, 84,169,146, 86, 38,147,129,227, 56,136, 66,207,199, 2, 8, 18,137, 4, 34,167,171,181, 71,228, 44, 13,164, +188,211,245,244,110, 11, 18,199,113,110,159,231, 9, 74,165,146, 2,240,120,189,132,115, 42, 30,249,146, 61, 4,190, 63, 70,165, +132,144, 29,148, 82, 28, 59,118, 12, 87,175, 94,133, 76, 38, 67, 84, 84, 20, 38, 79,158, 12,163,177, 72,239,246,237,219,183, 53, +128, 83, 44, 55, 51, 48, 56,176,227,223, 38,176, 92,173, 90,238,124,180, 56, 55,106,210, 33,128,138,196,142, 27,241, 99,177,194, + 98, 49, 3, 94, 22, 85,245, 85,104,121,122,142,205, 38,148,248, 28,209, 71, 75, 16, 40,239, 86,100, 9, 2,172, 22, 75,153,188, + 64,193,102,129, 32, 88,224,238, 57,132,112, 54,123,129, 47, 99,249,228,225,192,104, 52, 14, 28, 48, 96, 64,140, 40,178, 0, 32, +179,192,194,235,140, 22, 73,243, 26,161, 92,131,182,125, 17, 17,164,192,202, 93,183, 17, 17,164,222,245,152,136, 44,232,116,186, + 8,165, 82, 9,173, 86,235,176,100, 45, 92,184, 48,214,100, 50,113, 38,147,137, 91,185,114, 85,220,242,173, 23,203, 45,219,124, +177,220,226,181, 71,203,229,228,228,213,160,148,170, 40,165, 42, 0,159, 16, 66, 20, 37,241,203,100, 50,135, 64,113, 22, 64, 10, +133,226,158, 4,140,163,160,177,139, 51,153, 76,230,246,184,107,247,154, 55,200,156,133, 22,104,145, 85,203, 69,108, 73, 36, 18, +136,190, 81,222, 32,151,203, 29,113,119, 7, 94,226,244, 60, 73,233, 93, 49,205,102, 51, 10, 11, 11,145,155,155,235, 92, 40, 67, + 20,193, 12, 12, 12,238,181,200,191, 85,108, 21, 43, 63, 92,213, 36,236,171, 79, 91, 45,102,183,226,103,213,175,123,113, 51, 85, +139,168,176, 67,160, 30, 86,170,246,132,254,253,251,127, 31, 29, 29,237, 88, 79, 75,161,242, 11,125,241,149, 15, 97,181,154,225, +175,226,240,194,224, 39,139,137,172, 34,139,150, 9,158,228, 92, 78,158,246,131, 39,251,206,159, 18, 24, 16,186,223, 85,252, 76, + 95,114,180, 79, 78,190, 49,142,227, 14, 35,135, 68,219,250,190,244,225, 48,167,194,253,228,138, 69, 19,223,240,249,197, 17, 78, +218,103,196,188, 23, 41,239, 87, 93,205, 21,236,122,123,232, 19, 63, 59,139,185,144,144,144, 13,157,250,204,237,144,150,205,124, +180, 30, 22,228,114,121,135, 49, 99,198, 20,171,241,194,252,165, 86,181, 66,106,219,123, 54,147, 28,221,190,138,219,125, 38, 83, + 80,202, 36, 52,156, 94, 77,122, 92,226,173, 86,171,211,117, 58, 93,180, 94,175, 71,126,126, 62,242,243,243,139, 11, 2,169,148, +188,248,242,232, 48,169, 76, 14,139,217,132,223,151,125,228,149,179, 77, 34,185,209, 58, 1,229,187,215,246,135, 68, 42, 47, 56, +155,148, 52,143,231,121,112, 28,135, 95, 63,127,251,213,181,179, 95,241, 7,128,147, 27, 62,207, 31, 48,238,179,249, 28,199,193, +104, 52, 42, 74, 19,238, 91,183,110,197, 25,141, 70,131, 93,160,137,166,117, 92,187,118,173,156,209,104,212, 59, 31,247, 5, 42, +181, 63, 16,148, 8,168, 35,238,178,158, 93,191,126, 61,198, 98,177,232,120,158,135,201,100,242, 73, 21,113, 28, 39, 59,117,234, + 84,156, 32, 8,110,175,175, 81, 33, 6,136,170, 13,200, 3, 75, 83,224,250,116,141,187, 22, 48, 3,195,127,221,178,133, 82,234, +139, 71, 65, 96,185,251,239, 44,180,218,108,220,184,145, 58,183, 16,173, 22,139, 93,100,253, 45,122,108, 54, 1, 41, 25, 6, 92, +188,120, 9,115,231,206,197,222, 3,111, 5, 78,157, 58, 85,241,222,123,239, 25,251,247,239, 63, 91, 16,132, 58, 28,199,157,236, +211,167,143,219, 86,154, 32, 8,229,142, 30, 61,234,168,244, 44, 22, 11,252,253,253,225,239,239,143,170,149,226,238, 18, 89, 54, +155, 13,230, 18,186, 14, 69, 31, 45, 66, 5,106,177,216, 96, 19, 4,135,248,201,201, 55,198,173,223,118,172,162,211,229, 85,196, + 63, 45, 26, 85,247, 44, 6, 71, 76,118,196, 99,197,162,137,111, 76,253,250,107, 69,142, 45,124,204,128, 62,207,215,236, 59, 96, + 48, 6, 62,243, 84,107,163,201,180, 78,194, 81,193,226,120, 30, 56, 80, 20,243,209, 98,120,112,200,204,204, 36,122,189, 62, 33, + 40, 40,168, 88,133, 21,173,209, 26,199,245,171,156,210,241,237, 61, 49, 6,179, 13, 10, 41, 71, 95,237, 25,159,114,240,151,149, +161,153,198, 76, 34,142, 70,252,151,227,236,149, 43, 87,162,203,149, 43,135,252,252,124, 88,173, 86,161,119,239,222,183,121, 94, + 26,199, 75,165,164,219,128,209, 66,106,106,138,133,227, 36,160,212,134,167,250,142, 32, 10,165, 74,102, 54,153,172, 0,198,122, + 88, 83,210,121, 10, 7,255,142, 29, 59,134,136, 35, 1,215,206,126,197,223,233, 92, 64,131, 6, 13, 66,156, 71, 29,250, 40,138, + 73,255,254,253, 85,229,203,151, 39, 0,112,120,217,187,162,245,140,116,239,222, 93, 89,190,124,145, 31,254, 31,159,251,190,166, +118,152,154, 2,121,215,128,188,235,119, 89,178,186,119,239,174, 72, 74, 74, 42, 85, 94,180, 59,192,123,156,187, 75,195, 91,129, +212, 99, 62,113, 13,173, 79, 44,239,182, 2, 63,251, 41, 14,114,191, 80, 99,147,183, 55, 31,100, 98,139,129,193, 39,184,104,145, +127, 15,236,107, 27,238, 0,208,198,254,139, 98, 62, 90, 93,187,118,221, 89, 76, 61, 82,192, 98, 53,223, 37,178,108, 54, 27,164, +196,136,185,115,231,226,181,215, 94, 3, 0,217, 27,111,188,241,243,212,169, 83,159, 22, 4,161, 14,165,180, 37, 33,164,164, 86, +227,142,232,232,232, 52, 74,169,148,227,184,150,159,127,254,121, 72,151, 46, 93,224,239,239, 15, 42,208,187, 68,150,205, 38,192, +108, 54,193,147, 73, 43, 56, 64, 53,117,211,170, 49,193,237,122,126,210,222, 38, 8, 91, 69,145, 37,216,108,128, 80,116, 83, 86, +250,109,108,249,125, 29,190, 88,244, 69, 14, 8, 61, 15, 10,129,227,184,147,158,194, 40, 8, 66,157, 61,135,207,181,108,209,168, + 58,166,126,253,181,226,204,209, 59, 63,143,126,253,157,154,125, 7, 12,198,170,159,150,129,179,230, 30,115, 22, 89, 54,139,128, +188,156,204,238,219,153,143,214, 63, 6,139,197,130,156,156, 28, 88, 10,115,172, 13,163,181,121, 31,246,141, 48,166,229, 24,120, +169,160,179, 86, 11, 72, 55,110,207,190, 46, 81,171,213,143, 69, 92,243,243,243,151,141, 24, 49,162,245,174, 93,187,100, 28,199, + 33, 63, 63, 31,109,219,182,205,204, 16, 98,149, 47,190, 60, 58, 44, 37,229,182, 53, 64,197, 27,101, 50, 41,210,211,211,133,214, + 93, 6,233, 7, 12,123, 45,230,181,119,167, 47, 78,217,187,112,161, 47,207,112, 30, 9,232,122,238,171,175,190, 50,197,198,198, + 26, 20, 10,133,124,232,208,161, 62,245, 31,154, 76, 38, 58,115,230, 76,163,235,232, 66,147,201, 68,231,206,157,107,138,139,139, + 51,170, 84, 42,106,177,120,247,251,228, 56, 98,125, 97,234,143, 86,171,213, 90,204,138, 37,138, 44,139, 64, 10, 23, 44, 88, 96, +142,139,139, 51,169,213,106,170, 80, 40,100,190,132,115,244,232,209, 52, 56, 56,216,172,209,104,100,227,198,141,187,175, 81,135, + 22, 27,248,169,159, 59,166,119, 80,248,251,251,163,160,160,192, 17,214,232,232,104, 38,182, 24, 24,220,224, 46, 45,242, 47,179, +194,121,242,209,114,235,192, 32, 0,133,105,233,153, 17, 97,145, 9,176, 90,173,246,205, 2,171,197,130, 49, 47, 13,192,236, 69, + 69,243, 61,218,197, 86,199, 55,222,120,227,103,184,248,123,185,195,138, 21, 43,166,188,241,198, 27, 1,105,105,105,155,191,255, +254,251,144, 65,131, 6, 97,236,216,177,248,228,147, 79, 32,149, 43, 17, 18, 94,206,241, 28,241,185,153, 25,217,160,160,133,110, + 21,164,221, 71,139, 82,240,161,225,241,176,216, 44, 16, 44, 22, 88, 44, 22, 16, 73, 81,212,182,252,190, 14,131,158, 27, 13,169, + 34, 32,248,179,185, 31,235,107, 54,140,126,250,189,225,195,141,222,229, 41,184, 51, 71,239,252, 60,250,181,113, 29, 69,145,181, +102,217,162,243,159,142,239,185, 92, 33,231, 29,207,177, 8, 2, 56, 78,194,124,180, 30, 34,194,194,194,104, 70, 70,198,245,220, +220,220, 42, 26,141, 6, 89, 89, 89,200,206,206, 70,110,110, 46,140,249, 57,214, 80, 91,174,150, 88,179,193,243, 60,210,111, 89, + 97,179,217, 82, 31, 19,107, 22,238,220,185,115,161, 66,133, 10, 43,222,121,231,157, 1,227,199,143,151, 10,130,128,139, 23, 47, + 2,132, 80,169, 76, 14,238,255,236, 93,117,120, 20,199, 27,126,103,207, 37, 23,247,132,132, 96, 73, 72,240,226,222, 98,197,139, +187, 91,177, 66,113, 40, 86, 40, 20, 43,197,138,148, 2,197,225, 7,197,139, 20,119, 8, 30,130, 4,226,238,114,185,156,238,252, +254, 32,151, 30,105,228, 46,161,165,208,125,159,103,159,189,155,221,125,119,102,118,119,246,221,111,190,249,134, 97, 32, 16,240, +145,145,145,201,202,172,108,227,180,148, 39, 19, 8, 69, 96,120,194,226,134, 9, 71,182, 24,252, 38,188, 3,195, 23,102, 25, 71, + 2, 10,133, 66,220, 60,176, 34,179,197,224,111,173, 1, 64, 40,150,166,181,105,211, 38,162,106,213,170,202,187,119,239,122,163, +192,168,195, 66,158, 79,125,215,193,211,120, 50,169, 68,217,186,117,235, 72, 35,103,248,217,117,153, 3,190,156, 77, 8, 79,164, +236,216,177, 99, 68, 96, 96,160,146,199,227,225,233,145,101,153, 93, 7, 79,147,144, 63,199,244,254, 5,167, 95,210, 17, 15, 15, + 92,241, 91,188,120,177,174,125,251,246, 81, 70,127,177,240,240,112,247, 14, 29, 58,136,127,248,225, 7, 93,135, 14, 29,162,171, + 85,171,150,205, 48, 12,130,130,130, 60,139,179, 84, 25, 33,149, 74,117,195,134, 13,139,124,252,248,113,169, 70, 29,150,132,114, +229,202,129,101, 89,180,108,217, 18,185,185,185,156,101,139, 3,135,143, 16, 5,227,104, 21, 27, 25, 94,167,215,141, 27, 53,113, +193, 58,128, 88,153,180, 2,127, 26,150, 40,200,148, 41, 95,203, 1, 72,141, 98,107,210,164, 73,105, 37,101,194, 68,100,125,210, +175, 95, 63,204,156, 57, 19, 43, 87,174, 52, 44, 95,190,156,247,236, 69,152,118,240,151,243,210, 11,156, 7, 20, 52,155,213,177, +227, 10,227, 75,203, 80,206,107,218, 97,233,130,152,132,156,171,131,199,204,201,111,189, 12, 0, 50,137,155, 1, 0, 54,254,244, +147, 82, 32,182,150,247,236, 51, 0, 0, 90,175, 91,189,236,240, 34,252, 92,178,216,162,196,127,220,164,105,118, 70,145,181,254, +135,197,143,109, 72,194,218,241, 95, 7,235, 76,207, 3, 0,246, 10, 28,110,218, 97,105,219,196, 84,229,143,220,173,246,207, 64, +163,209,156, 91,179,102, 77,249, 57,115,230,136, 82, 83, 83,145,156,156,140,180,180,180,252, 37, 59, 59, 27,174,174,174,248,253, +247,223,181,153,153,153, 55, 63,166,178,191,126,253,122,253,209,163, 71,113,233,210,165,222, 51,102,204, 16,184,186,186, 18, 27, +155, 4,162,211,106, 0, 80,154,148,148,196,202,172,108,227, 28, 93, 60, 35, 99,227, 19,253,117, 90, 13, 88,131,182, 72,111,243, +188,240, 14, 83,158, 60,121, 82,126,197,138, 21, 26,211,145,128,125,166,173, 91, 83,167, 78, 29,251,181,107,215,106, 58,118,236, + 24, 97,116, 94, 55,199, 25,254,204, 43, 76,124,242,228, 81, 64, 65,206, 22, 35, 87,108, 53,114,154,142, 70,236,244,245,166,173, +149, 43, 87,182, 15, 12, 12,140, 40,142,183, 66,133, 10, 42, 55, 55, 55,141,159,159, 95,182, 64, 32,120, 99,201,210,233,114, 42, + 84,168,192,186,184,184,104,170, 86,173,154,109,169,211,190, 84, 42,165, 70,171, 88, 97,176,100,212,161,128, 7,125,191,126,253, +242, 35,195, 79,169, 92, 57,110,192,128, 1,110,147, 39, 79,198,214,173, 91,113,237,218,181,212,130,199, 52,111,222, 28,151, 47, + 95, 94, 0, 96, 30,247,116,115,224,240,225,161,196, 56, 90, 5,177,109,219,206, 63, 96,226,211, 84, 24, 22, 45, 90, 36,206,179, +100,181,254,234,171,175,160, 82,169,236, 10, 81,119,173,140,177, 54, 10, 19, 89,203,150, 45,219, 67, 41,245, 4,208,196, 96, 96, +111,109,249,121, 91, 75, 51, 20, 99, 62, 39, 37, 12,143, 97, 72,182, 72, 64,239,255,180,121,235, 91, 17,191,243,156,223,125, 65, +240,112,221,234,101, 42, 0,173, 11,138,173, 30, 61,122,228, 20,228, 52, 98,244,152,209,249, 34,107,221,234,101,103, 3, 63,241, +250, 98,206,240,111, 11, 21,103,223,206, 27, 37,103, 24,210,200,212, 71,171, 48,206,119,160,150, 57,206, 60,136,197,226, 61,123, +247,238,109,223,180,105, 83,239, 26, 53,106, 48,169,169,169,200,206,206, 70,118,118,182,209,234,133,167, 79,159,178, 17, 17, 17, + 49, 98,177,120,239,199, 84,246,188,105,117,214,184,185,185,157,155, 59,119,238,128,228,228,228, 14,105,105,233, 14,199,183,125, +139,118, 61,199,144,230,237,251, 42, 53,148, 47,137,142, 75,240,187,120,114,183,253,169,125,235,161,213,104, 70, 17,242, 83,136, + 49,188, 67, 33,249,204, 49,134,113,240,243,243, 83,154, 10, 21, 47, 47,175, 92,119,119,119,117, 96, 96, 96,126,122, 97,163,249, + 10, 43,187,165,156,121,254, 95,202,146,234,211, 40,218, 10,134,141,144,201,100, 48,138, 47, 75,242,105, 58,218,178,208,134,178, +132, 81,135,166,156,219,239, 81,129,233,182,237,132,240,118,238,220,217,106,231,206,157,159, 0,184, 15,224, 12, 0, 93,222,113, +249, 78,243,148,210,249, 0,230,115,207, 59,199,249, 95,229,252,192,173, 89,205,145,231,155,149,135, 22,148,210, 75, 69, 10,173, +146, 96,116,124, 7,192, 76,154, 52, 41, 77,165, 82,217, 13, 24, 48,160,216, 99,226,227,227,183,238,216,177,227, 45,145,213,173, + 91,183, 33, 7, 15, 30, 60,151,152,152, 88,170,130,217, 89, 75, 23, 93, 58, 54,221,174,121,199,165, 95, 1, 88, 94,184,204, 4, + 27,248,137,219, 23,235, 86, 47, 59, 92, 64,108,253, 10,160, 91, 97,245, 5, 0,109, 62,239,130,221,219,214, 25,125,187,164,143, +239,198,156,234,125,111, 97,161,163, 21,109,173,196, 11,243,242, 49, 25,156,143,214, 63, 2,127,127,127,195,245,235,215, 39,143, + 25, 51,102,213,103,159,125,230,209,165, 75, 23, 97,185,114,229, 32, 22,139,241,234,213, 43, 92,185,114, 69,251,250,245,235,152, +156,156,156,201, 53,106,212, 48,124,140,117, 16, 23, 23,247, 44, 47, 24,233, 68,227,215,148, 88, 34, 21,246, 29,250,149,103,254, +168,195,125,235,161,206, 85, 1, 0,159, 16,178,156, 16,242, 75, 17, 14,241,111, 4, 5,159, 47,124,240,224,129,183,209,106,165, +213,106,197,198,244,187,119,239,122, 27, 99,107,229,230,230,154, 61,234,240,239,226,124,244,232,145,167,113,116,164,113,116, 33, +159,207, 23, 6, 5, 5,121, 26, 57,213,106,181, 89,163, 14, 69, 34,145,240,193,131, 7,158, 6,131,225,157,141, 58, 44, 32,140, + 79,231, 45,198, 70,217, 40,178,140, 62, 29, 92,183, 33, 7, 14, 31, 54, 46, 22,156, 84,218,168, 39, 74, 37,180,140,142,239, 22, + 40, 61,126,249,242,229,219,244,233,211,231, 45,145,213,163, 71, 15,195,161, 67,135, 46,186,185,185, 37, 48, 12,243,204,210,124, +228,251,104, 1,130,130,219, 24,134,121,216,164,110, 85, 48, 12,243,112,206,240,225,234, 69,248,249, 45,177,117,228,240,254,182, + 69,181,139, 0,224,224,236,129,126, 67,198,161,223,144,113,118, 0, 26, 3, 69,143, 86, 44, 46, 31, 28,254, 62, 52,106,212, 40, + 46, 36, 36,164,223,217,179,103,251, 94,190,124,185, 85, 78, 78, 78,121, 66, 8,164, 82,105,184, 70,163, 57, 39, 22,139,247,124, +172, 34,171, 40,104,181, 90,253,140, 5, 43,118,240,248, 66, 61,203,106,137, 86,171, 29,106,201,115, 62, 99,198, 12, 6,133,248, + 94,141, 31, 63,190,208,244,247,197, 57,107,214,172, 66, 71, 9,142, 31, 63,190,216,209,131, 69,225,235,175,191,126,103,163, 14, +205, 20, 95,156,160,226,192,225,227,179,106, 21,234, 11, 92, 42,161,197, 48,204,195, 66, 70, 23, 18, 0,180,176, 17,125,148, 82, + 61,143,199, 91, 96,107,107, 59, 74,169, 84,254,222,173, 91,183, 73, 61,122,244, 48, 0,111, 28,228, 75, 91,168,180, 12,229,188, + 22,157,190,159,156,158,173, 94, 91,112, 91, 65,203,147, 81,108,173,255,113,217,134,195, 7,247,246,136,143,141,222, 80, 84,217, +138, 18, 84, 69,141, 86,204,200, 84, 45,104,209,233,251,175,210, 50, 85,156,143,214,123,176,108, 1,216, 9, 96,103,193, 73,165, +255, 11,160,148,170, 9, 33, 83, 9, 33, 70,139,238,212,215, 23,126,220,240,231,131,191,230,145,233,182, 98,172, 89,113,230, 76, + 16, 93,216,113,197,109,251, 27, 56, 19,138,153, 32,186, 56, 36, 88,200,151, 0, 0, 66, 1, 47,177,168,201,163,133, 2, 94,226, + 59,186,134,198, 0,135, 11,184, 39,154, 3,135, 15,182, 45,182,204, 71,203, 40,130,138, 66, 81,113,178,138,131,193, 96,248, 30, +192,247,239,178, 96,143, 95,100,109, 6,176,217,220,253,243,124,178, 6,229, 45,133,231, 51,229,137,197,101,235,209,163,199, 70, + 0, 27,185, 91,237,159,193,129, 3, 7, 12, 92, 45,188,245,128,111, 32,132,252, 98, 20, 94,230,110, 43,176,223,209,191, 33, 95, +127, 7,231,233,127,146,239,120,136,222,229,125, 55,210, 28, 56,112,248,247,163, 48,107, 86,177,163, 14, 57,112,224,240,193,137, + 45,117,105,182,113,224,192,129, 3,135,119,247,177, 84,152,175, 37, 1,208,170,136,131,204, 30, 77, 64, 8,105, 85,138, 76,157, +227, 56, 57, 78,142,147,227,228, 56, 57, 78,142,243,191,197, 89, 18,183,233,241,132,144,145,148,210,205,248, 0, 80,228,128, 22, + 74,233,223,182, 0,104,197,113,114,156, 28, 39,199,201,113,114,156, 28, 39,199, 89,202,243,140,252, 39,206,243, 14,242, 73, 11, + 46,198,109, 92,215, 33,135,191, 29,158,158,158, 96, 89, 22, 12,195, 32, 58, 58,154,171, 16, 14, 28, 56,112,224,240, 81,193, 98, +103,120, 14,133,152, 4,189,187,206, 1,139, 89,111,254, 96, 25,141,252,109,254,127,162,220,132, 56, 2,232,168,144, 8, 59, 7, +216, 10, 27, 62, 78,201,189,174,212, 26,142, 1, 56, 66, 41, 77, 51,135,131,101, 89, 28, 59,118, 12,157, 58,117, 50,114, 2, 0, +220,220,220,112,236,216,177,252,253,234,212,169,147, 31,188,145, 3, 7, 14,127,243,179,109, 23, 80, 14,132, 12, 5,232,159,195, + 46, 89, 26, 76,211,159,110,123,107, 63,219,170, 67,192,144, 0,147, 36, 21, 40,182,208,180,224,168, 34,218, 12,227, 11,199, 54, + 52, 52,212,187, 82,165, 74, 17, 0,210, 11,236,246,151,109,180,152,135,159, 16, 66, 28, 43,212, 30, 40,147,200,190,212,104, 52, + 62, 86, 10, 69, 98,106, 74,210,198,212,200, 71,235, 77,118,179,190,117,235,150, 91,253,250,245, 99, 1,100,149,196,201,129,195, + 59,126, 87, 54,199,219, 1, 75,223,157, 51, 60,169,210,221, 7,122,102, 16, 40,250,131,224, 1,125,125,160,123,169,120, 42,117, +243, 0,203,175, 7,160, 54, 64,107,203,165,146, 90, 42,141, 54,145,165,116, 32, 13,221,119,223, 98,190, 10, 61, 79, 0,104, 95, +196,214, 5,244,245,126,203,132, 18, 75,103,223,185,124, 72,108, 43, 35,168, 84,167,219, 52,152, 68,112, 46,195,133,145, 2, 24, + 76, 8,249, 76, 38,147, 85,201,201,201, 9,167,148, 62, 2,176,129, 82, 26, 91, 74, 78, 6,192, 48, 43,185,188,157,183, 66, 84, + 59, 50, 57, 35, 38, 75,103,184, 2, 96,185,185,194,200,132, 75,228,109, 39,191,180,186, 79, 11,255,134, 1,149,193, 6, 95, 70, +174, 70,219,249, 98,116,118,231,121, 55, 98, 39, 19, 66,106, 83, 74, 53,230,242, 49, 12, 51,194,221,221,221,199,195,195, 35,108, + 93,231,154, 91,198, 29,125,128, 46, 93,186, 0,192, 8,150,101,125, 60, 60, 60,194, 8, 33, 91,204,109, 27, 9, 33,110, 0,248, +148,210,168,188,255,114, 0,129, 0, 42, 0,120, 13,224, 9,165, 84, 89,198,107,244, 65,112,122,122,122,186,179, 44, 59,220,197, +197,165, 67, 66, 66,194, 9,134, 97,126,142,142,142,142,125,207,109,207, 38,163,127,133,185,107, 0,163, 44, 57,129, 84, 42, 77, +200,205,205,117, 6, 0,137, 68,146,168, 82,169,254,182, 81,130,255,228,185,254,153, 55, 3, 70,156,185,250,164,157,105, 82,155, + 38, 1,133, 60,184, 36,224,204,213,224,102,111,239, 23,104, 40,172, 13,204,139,190,138, 5, 11, 22,144,133, 11, 23, 14,169, 88, +177, 98,101,134, 97,158,207,157, 59,247,173,208, 55, 5,183,205,155, 55,239,207,200,173,133,112,122,250, 54, 58,210,187, 79,207, + 22, 99, 71, 14,182,242,112,178, 66, 92,178,210,225,167,173, 59, 87,236,220,185,187,227,240,222,173,219, 1,192,183,223,126,219, +181, 92,185,114,229,121, 60, 94,216, 55,223,124,243,107,113,156, 28, 56,252, 13,176,108, 82,233, 18,159,207,128,158,114,228,210, + 30, 0, 25,220,188, 97,157, 38,163, 6,118, 34,148, 39, 65,223, 17,211,245, 22,115,149, 31, 34, 6, 79,181,168,122, 96,192,164, +158,157, 90, 49,159, 4,150,135,155,147, 13,192, 8,176,233,100,184,195,218,101,223,108, 0, 80,191, 20,217,108,255,234,198, 30, +196,165, 27, 64, 8, 64, 8,192, 16, 32, 59,151, 69,155,174,131,230, 89, 46,148, 8, 99, 43, 35,152,180, 39, 23, 0,120,239, 64, +100,213,118,114,114, 90, 63, 97,194, 4,187,234,213,171,187, 73, 36, 18,153, 74,165,170, 28, 26, 26,234, 51,103,206,156,214,132, +144,165,148,210, 67, 22,114,122, 85,242,116,223,191,118,210,176,122, 53, 42,120, 67,160,201, 6,171, 86,150,123, 17,250,178,225, +232, 13, 7, 70, 16, 66,250, 88, 56,101,194,236, 77,227, 7,250, 87, 83, 0,218, 39,215, 32,224,241, 32,179,177, 67,107, 62, 15, + 60,130,170,131, 78,135,207, 34,132,204, 43,169, 29,139,141,141, 53, 90,182,124,142, 29, 59, 22,208,169, 83, 39,212,243,241,196, +173, 78, 73,168,123, 36, 26, 0,242,211, 45, 40,235, 66, 0,179,242,218,225,221, 60, 30,239,108,171, 86,173,124,134, 15, 31, 78, +234,212,169,131,160,160,160, 10,123,246,236,105,197,231,243,195, 12, 6,195, 35, 0,207, 41,165, 58, 51,185, 5, 0,124,121, 60, + 94,245,127, 51,167,187,187,187, 84,163,209, 12,242,244,244, 28,217,185,115,231,234,157, 58,117, 34,190,190,190,120,246,236, 89, +157, 83,167, 78,205,171, 89,179,230,163,232,232,232,205, 34,145,104, 71,108,108,172,234, 61,124,225,141, 4,224,158,103,224, 88, + 96,198, 58, 22,192, 2, 74,105,156,185,231,200,205,205,117, 54,222,127,132, 16,231,191,179, 60,150,156,139, 16,242,148, 16, 98, +159,247, 27,197,173, 25,134,129, 94,175, 87,234,245,250,138, 37,112,250, 2, 96, 44,200, 50,165,148, 22, 23, 8, 90, 10, 0,109, + 26, 7,164,130, 32,216,104,209, 42,228, 35, 51, 56, 95,128, 81, 4,156,185, 22,108,255,150, 21,172, 0, 22, 44, 88, 64,230,205, +155,135,249,243,231,119, 2,208,148,101,217, 43,254,254,254,107,222,162,100,217,252,109,243,230,205,251,113,193,130, 5, 4, 64, +161, 13,137,125,249,154, 3,190,248,162, 75,139,197,179,199, 91,197,164,104,241, 32, 76, 5,123, 43, 33,230, 77, 29, 35, 82,171, +117, 13, 55,252,186,115,228,186,165,211,183, 24, 12,134, 79, 1,124, 98, 48, 24,238, 2,248,181, 56, 78, 14, 28,254, 6,180,176, +104, 82,233,162, 76,183,168,216,189, 25, 12, 24,236, 93,206,165,199,132,225,189,164,129,254,149,144, 11, 43,132, 39, 27,112,242, +248, 41, 0,216,103,153,213,169,247, 39,124, 33,118, 44,155, 63,213,175,105,189, 64, 60,142,209,225,110,140, 1, 57, 97, 58,240, + 24, 29, 12, 44, 5, 40,114, 75, 91,234,232, 52, 61,174, 62,215,128, 33, 0,143, 1, 24,134,128,199,148,146,140,213,188,248,118, +219,189,192,228, 4, 22, 96, 53, 47,202,248, 2,250,180, 74,149, 42,171, 23, 46, 92,232,154,144,144, 96,127,247,238, 93,136,197, + 98,216,217,217,241,221,221,221,253, 86,175, 94,157, 49,126,252,248,169,132,144,251,148,210,112, 51, 57,253,219,127, 82,253,250, +230,101,223,218,232,110,157, 66,250,222,255,129,199, 80, 8,229, 86,240,145, 74,113,234,139, 74,246, 61,142,135, 29, 34,132,248, + 83, 74, 99,204,225,172,228,234,208,166,186,191, 63,210, 14,175,195,131,180, 92,156,138, 85, 97,104,235, 6,168,102, 47, 69, 83, +189, 1,174,114,193,167,229,228,162,121,166,243,181,153,139,244, 59, 23,240, 32,237,175,151,214, 85, 46, 48,167,172,118, 0,166, +107, 52, 26, 70, 40, 20, 18,137, 68, 50, 96,241,226,197,218,190,125,251,230, 59,128, 53,109,218, 20, 77,155, 54, 37, 89, 89, 89, + 21, 46, 92,184, 80, 97,231,206,157,122, 66,200, 83, 74,233,145,162, 45, 22,178,200,220, 92, 85, 57,137, 84,154,243,211,134, 13, + 43,155, 53,107,198,138,197,127,206, 10, 83, 26, 78, 0,176,181,181,221, 82,165, 74, 21, 50,115,230,204,216,119,197,233,227,227, +115,166,105,211,166, 45,219,180,105,195,111,220,184, 49,220,221,221,243,183, 57, 58, 58,162,105,211,166, 36, 42, 42,170,198,149, + 43, 87, 54,156, 57,115,102,141,143,143,207,133,176,176,176, 54,255,100,171,147,103,169,130, 5,194,105,115, 33,129,144, 63, 76, + 99, 17, 33, 86,155, 54,109,114, 54,206,201,168,211,233, 96, 48, 24,242,215,198,133,101, 89, 24, 12, 6, 44, 94,188,216, 96,102, +157, 42,145, 23, 28,218,100, 97, 11, 91,139, 68, 34, 71, 51, 45, 91,193,110,226,244,170,114,185,220, 27, 64,251, 42, 85,170, 76, + 55,221, 92,217,233,205, 90,169, 84, 70,196,169,109,131, 1, 52, 43,238,118, 95,184,112,225,160,249,243,231,119,193,159,115, 86, + 86,239,217,179,231,133, 2,251, 85,207, 91, 43, 9, 33, 23, 25,134, 57, 6, 96, 27,128,191, 88,221,101, 50,171, 81, 19,190, 28, +110, 21,157,172,197,162, 67,201,216,118, 57, 19,131,154, 42, 48,233,115, 27,244,235,219, 91,126,224,127, 7, 71, 1,216, 98,114, +200, 51,127,127,127, 18, 18, 18,194,137,172,143, 11,117, 1, 56,153,252,215, 0, 48, 78,153,149,156,247, 92, 56, 20, 72, 55,221, +207,184, 78,202, 75,119,202, 59,142,154,240, 38, 1,184, 83,202,246,238, 82, 94, 30,254, 2, 62, 0,156, 56,113,130,118,232,208, +129, 24,215,133,183,236, 61, 78, 14,235,219,185, 93,135,207, 26,129,145,216,225, 69, 34,112, 35,146,130,207,232,192,128,226,214, +181, 11, 20,124,118, 71,129, 19, 23,105, 61, 33, 62, 61,190,174, 94, 45,240,251,159,151, 77,228, 61, 77,228, 99,219,149, 28,104, +115,179,145, 20, 31,137,196,216, 8,196, 69,191, 70, 76,228,235, 71, 0,153,103, 46,231, 95, 11, 14, 24,216,188,111, 64, 22,121, +245, 89,232,200,203,146, 57,181,202,144, 10,190,129,129,105, 34, 3,160, 85,134,152, 81,233,231,138,104,128, 91, 87,170, 84,105, +249,236,217,179, 61,159, 60,121, 98,173, 84, 42,149,167, 78,157,186, 20, 17, 17,225,226,234,234, 26, 53,102,204,152, 70, 30, 30, + 30,206, 93,187,118,149,237,223,191,127, 54,128,225,102,112, 6,118,110, 80,235,198,214, 53, 63,200, 83, 14,172,133, 38,244, 33, + 78,198, 41,113, 45, 33,135, 86,176, 17,147,113, 53,156, 96, 37,230,227,219,198,238, 86,237, 15,135,126, 15,160,159, 25,156,232, + 90,175, 90, 69,157, 42, 7,185, 42, 29,118, 60, 75, 85,157,141, 81, 58, 19,219,240,164, 53, 61, 26, 72,120, 73,177,240, 86,136, + 42, 47,104,232,142,246,135, 67,139, 44,187,167,167,231, 8,150,101,125,242,254,150, 55,174, 63,187,154,181,196,228,144,252,116, +162,112, 92,226,238,238, 14,134, 97,194,162,163,163,183,152,123,141, 36,146,194,103, 79,177,179,179, 67,243,230,205,225,239,239, +207,111,214,172, 89,117, 0, 71,138,226,212,106, 53,110, 44, 75,161, 80, 40,164, 14, 14, 14,118, 10,133, 34, 69,171,213,150,137, + 19, 0,236,237,237,187, 55,111,222,156,191,103,207,158,228,176,176,176, 91,125,251,246,125,109,109,109,253,150,245, 87, 46,151, +163,114,229,202,248,230,155,111,248,237,218,181, 43,145,211,197,197,165,245,206,157, 59, 65, 8,201,127,105, 23,132,183,183, 55, + 92, 93, 93,209,190,125,123,126,247,238,221, 91,151,246, 57,178,160,161, 57, 87,136, 69,107,193,219, 98,182,232,238,183,194,246, + 55,227,186, 39, 26,173, 75, 18,137, 36,177, 52,249, 44,128, 34,187, 59,197, 98,113,190, 21,170,224,185, 10,227,100, 24, 6,115, +230,204, 1, 33, 4, 2,129, 0, 66,161,176,208,117,139, 22, 45, 44,205,103, 20, 33,132, 17, 10,133,211,249,124,254,112,181, 90, +237, 41,145, 72, 98, 13, 6,195,118,181, 90,189, 56,207, 34,106, 91,216,189, 91, 20,167, 92, 46,247,126,241,226, 69,149,162, 42, + 69,173, 86,163,122,245,234,128, 26, 79,139,227, 12, 13, 13,245,174, 88,177,162, 47, 0,227, 20,109,151, 41,165,205, 76,254,155, +226, 50,165,244,243,188,223,207, 95,189,122,229,109, 20, 90,166,156, 58,173,214,199,211,217, 26, 15,194, 85,216,118, 57, 19,127, +204,118,199,103,139, 99,209,173, 54, 31,254, 94, 86,208,107,117,190, 61,123,246,220, 1,192, 55,239, 37,217,181,103,207,158,126, + 60, 30,239, 60,128,223, 0,100,252, 83,247, 60,199, 89, 54,148,160, 69,156, 8, 33,199, 77,206,223,209,248,127,198,140, 25,179, +150, 44, 89,242,132, 16,114,220, 52,221,116, 63,211,117, 94,123,115,156, 82,218,113,230,204,153,129, 75,151, 46,253,206,184,239, +223,161, 16, 45,233, 58,180, 78,202,149,227, 74,164, 53,248, 60, 3,248, 12, 1,159, 7,128, 18, 68,132,135, 34, 43, 51,253, 42, +125,253,191, 48,243, 44, 89, 61, 27,215,172, 85,125,217,238,213,211,152, 95,174,228, 32, 93,153,139,144,251, 23,113,231,226,111, +241, 6,189,225, 55, 16,122, 23, 96,130,240,154,125, 70,105,233,163,128,191, 17, 90,121,226,234, 45,177,245,222,190,114, 63,247, +243,243, 91, 50,103,206, 28,239,251,247,239, 43, 50, 51, 51,147,118,237,218,245, 76,173, 86,223, 7,240, 99,100,100,100,243, 31, +127,252, 81,182, 98,197,138, 54,213,171, 87,247, 61,112,224, 64,142, 25,156, 53,166, 14,238,119, 99,248,132,175, 36, 79,247,175, +135,232,105, 16,230, 60, 76, 54,252, 17,151, 51, 27,192,106, 68,101, 55, 78,202,213,159,253,161,121, 57,166,188, 66,136, 74,182, +162, 22,102,112, 98,234,224,126,136, 13, 11,229, 83,190, 4, 26,141, 30, 89, 26, 86, 3, 64,169,214,233,181, 84,238, 40, 1, 0, + 62, 67,248,121,156, 69, 27, 2,243,186, 11, 77,211,142, 29, 59, 38, 3,240, 23,103, 16,211,244,226,186, 17, 41,165,105,132,144, +239, 69, 34,209, 28, 66, 8,173, 91,183,238,131,106,213,170,101,219,217,217, 65,165, 82, 65,173, 86, 67, 40, 20, 66,165, 82, 33, + 34, 34, 2,183,110,221,130,157,157,157, 69,215, 42, 59, 59, 27, 10,133, 2, 44,203,150,153,211, 96, 48,144,141, 27, 55,202,159, + 60,121, 34, 63,120,240,160,203,164, 73,147, 82,170, 86,173,122,183,119,239,222, 47,157,157,157,213, 15, 31, 62,196,245,235,215, +145,150,150,134, 6, 13, 26,152,197,169,209,104,192,231,243,161, 82,169, 32, 22,139,193,231,243,161,215,235,193,178,108,190,248, +202,206,206, 70,106,106, 42,132, 66, 33, 52, 26,205, 63,126,191, 27, 45, 90,166, 40,174,251,173,176,253, 75,194,187,246,147, 42, +174,187, 51, 61, 61, 93,106,107,107, 59,221, 28, 11, 29, 33, 4, 60, 30, 15, 66,161, 16,132, 16, 52,107,214, 12,195,134, 13, 67, +237,218,181, 17, 26, 26,138,189,123,247,226,206,157, 59, 16, 8, 4,249,251,155,221, 63,209,162, 5, 79, 34,145, 92,239,220,185, +115,224,236,217,179, 37,229,203,151,199,211,167, 79,189,150, 46, 93, 58,253,220,185,115, 93, 8, 33,159, 80, 74,217,146,173,244, +121, 93,130,111,186, 11,219,171,213,106, 60,125,250,212,146, 99,254,106, 5,175, 84, 41,130, 97,152,151, 44,203, 94, 1, 80,157, + 82,218,140, 16,114, 10,128,188,192,174, 74, 74,233,231,132,144, 76, 0,143, 24,134,121,206,178,108, 68, 97,150,113,133, 66,145, + 20,157,152,233,226, 96, 37,193,192, 38, 86,248,108,113, 44,122,124, 34,134, 88, 72,240, 44, 44, 30,149, 42,150, 39, 15,174, 30, +249, 36, 79,100,213,141,139,139, 3,128, 79, 0,132, 69, 69, 69,185, 25,133, 22,135,143, 3, 5,197,144, 81, 64, 45, 89,178,164, + 99, 97,226,170,144,103,243,173,244,165, 75,151,126,103,242, 63,173, 12,109, 71,115,188,237, 12,223, 34,207,202,245,167,208, 58, +113,226, 68,241, 10,132, 69,183,227,135,246,220,252, 76, 75,188, 3,235, 52, 49,177, 14, 81, 4,221,186, 14,128,110, 55, 43, 51, +238,157,164,140, 76,190,125,227,119,227,153, 77, 23,115, 16, 21,155,136,235, 39,183, 35, 41, 46,124, 27, 64, 39,209,215, 7, 50, +203,220, 88, 86,232, 25,232,236,232,128, 92, 45, 5, 75, 1,252, 69,108,189, 23,145,213,201,215,215,119,225,141, 27, 55,188,115, +115,115, 21,215,174, 93, 75,223,185,115,231, 75,141, 70,243, 51,165,116, 87,222, 62, 71,147,147,147,191,165,148, 66,161, 80,240, + 5, 2,129,180, 56,103, 78, 66, 72,237,169,195, 7, 93,253,126,227, 86,201,203,199, 15,240,227,193,147, 72,207,201, 49, 92, 76, + 84,117,165,148, 30,207,219,231,252,189,100, 85, 12, 5, 45, 39, 96, 8,220,228, 2, 87, 66,136,132, 82,154, 91,164,200, 26, 62, + 8,223,111,220,138,105,131,251, 50, 58, 47, 31, 92,209,231,194,195, 65, 44,162, 73, 57,152, 49,168, 39,239,190, 74,135,107, 15, +159,194,209,202, 90,152,199,137,162,186, 15, 25,134, 9, 51, 17, 77,229,143, 29, 59, 38,235,212,169, 83, 14, 0,211, 46,209,191, +164, 51, 12, 19, 86,194,195, 54,151, 16,226,178, 99,199, 14, 70,167,211,101,135,134,134,194,213,213, 21, 46, 46, 46,176,177,177, + 65, 72, 72, 8,254,248,227, 15, 60,123,246, 12, 44,203,162,102,205,154, 22, 93,175,148,148, 20, 60,124,248, 16,237,219,119,152, +148,148,148,104,109,103,239,160,188,122,229,242,138,210,112,178, 44, 75, 0, 32, 48, 48, 16,129,129,129,146,152,152, 24,207,227, +199,143, 59, 47, 90,180, 40,210,219,219,123,183, 74,165,122,203,114, 96,174,208,202, 19, 46,249, 34, 80, 34,145, 64, 40, 20, 34, + 51, 51, 19, 9, 9, 9,200,202,202,122,211,151, 99,107,251, 94,132, 86, 97, 22,170,119,185,255,223, 41, 14, 11, 19, 83,132,144, +254, 0,166,155, 89, 22,232,245,122, 8,133, 66,212,175, 95, 31,107,215,174,197,157, 59,119,240,219,111,191,193,203,203, 11,131, + 7, 15, 6,195, 48,120,242,228,137,165, 89,100,111,220,184, 49,189,107,215,174,129, 59,118,236,144, 68, 68, 68,224,217,179,103, +176,181,181,197,218,181,107,197, 35, 71,142,172,116,225,194,133,185, 0,150,151, 88, 86,147,209,133,238,238,238,189,170, 87,175, +254,151,125, 92, 93, 93,109, 78,159, 62,237,108, 20, 96, 5, 71, 36, 22,130,244,185,115,231,254,224,239,239,191, 58,175,187,176, + 41, 0, 57,165,180,197,193,131, 7, 9, 0,244,232,209,131, 18, 66,140, 47,164, 71, 7, 14, 28,104, 25, 18, 18, 66,231,207,159, + 95,104, 59,151,148, 24,183,241,135,181,155,126,248,126,193, 84,209,228,246, 54,232,241,137, 0, 18, 33,129,181, 76,128,197,107, +182,232,238,221,186,252,208,205,205,237, 56,128,174,113,113,113,112,115,115,203, 6,240,156,199,227,133, 25, 12,134, 88,206, 23, +254,195, 66, 97, 90, 36,207,170, 28, 87,152, 80, 42,141, 80, 51,181,120, 25, 49,115,230,204,192, 37, 75,150,220, 46,139,200, 50, +117,130, 39,132, 80, 66, 72, 11, 74,233,165,124,143,165, 34,187, 12,243,109, 95,140,155,171,139,163,253,140,193,141,193,178,128, +222, 0,232, 13, 20,202, 28, 21,158, 62,190,147, 3, 9, 57,104, 86,142,196,162,101,139,102,127, 85,225, 65, 52,131,216, 52, 45, + 46, 29,217, 68,147,226,194,187,211,215,251,135,190, 43,145,229,234,236,120,113,207,166,111,113,231,181, 6, 6,246,141,206, 98, + 89,154,255,251, 61,188,112, 42, 59, 58, 58,174,184,121,243,102,121,177, 88,172,120,241,226,133,225,192,129, 3,177, 26,141,102, +131, 81,100,229,161,127,157, 58,117,116,114,185, 28,217,217,217,106,173, 86,155, 93,140,200,242,108, 81,187,198,229,239, 55,110, +149,228,106, 52,200, 80,169,193,115,112,126, 75,100,229,161, 81,203, 42, 30, 30, 68,162, 0, 5, 16,158,169,141, 45, 78,100,181, +168, 93, 3,223,111,220,138, 92,141, 6, 86, 54,182,140,231, 39, 45,240,201,196,181,200, 36, 10, 10, 0, 14,110, 30, 76,203, 47, + 23,163,221,143,151,160,100, 20,108, 30,103,145, 62, 90,209,209,209, 91, 98, 99, 99,103,198,198,198,206, 52, 17, 87,225, 0,102, + 86,181, 17,254, 37, 61,192, 86, 52, 51, 54, 54,118, 38,203,178, 91,204,168,218,216,126,253,250, 69, 7, 4, 4,100,248,251,251, +103,164,164,164, 32, 56, 56, 24,105,105,105,248,241,199, 31,241,244,233, 83,176,236, 27,101, 93, 88, 55,138, 25, 2, 9,105,105, +169, 86,148, 82,164,165,166,200,103,207,158,109, 83, 26, 78,131,193,240,214,179,229,225,225,129, 49, 99,198, 8,115,114,114,108, + 35, 35, 35,173, 77,183,153,203,169,209,104,242,235,156, 82, 10,141, 70,131,140,140, 12,104, 52, 26,188,124,249, 50, 95,100,229, +157,255,189, 89,180,140,191,165, 82,105,130,209, 65, 84, 34,145,128, 16, 82, 88,247,219, 59,137,254,108, 60, 23, 33,132, 74,165, +210,132, 82,136,195, 18,203, 99,230,117,135, 80, 40,196,176, 97,195,112,251,246,109,132,134,134,130,199,227, 65,169, 84, 34, 39, + 39, 7,173, 91,183,134, 72, 36,178,212,162, 69,133, 66, 97,255, 89,179,102, 73,194,194,194,144,156,156,108,116,166,135,193, 96, +192,164, 73,147,164, 98,177,184,191,165,166,251,216,216,216,182, 47, 94,188,240, 45,184,196,199,199,103,152,250, 20,150, 22, 7, + 15, 30, 36, 61,122,244,160, 61,122,244,160, 70,193,101, 46,210,163,131, 55,254,118,244,248,217,175,191, 89,150,157,163,204, 66, + 69,119, 41,178,179, 50,176,120,201,247,186, 27, 55,174, 92,156, 62,105,116,195, 3, 7, 14, 44, 5,240, 60,239,144,231, 7, 14, + 28, 24,244,205, 55,223,252,138,188, 48, 15, 28, 62, 28, 20,166, 69, 76,159,189,119,209,189, 87, 24, 71, 94,247,161,180,148,148, +198, 17,135,205,141,194, 43, 79,116, 93,124,203,162, 85,108,227, 83,169,119, 45, 23, 71,135, 11, 59,214, 45,176, 58,254, 24,136, +142, 10, 71, 82, 92, 4, 62,105,216, 2, 79, 31, 63, 0,171, 51, 28,162, 47, 14,148, 56, 60,157,248,244,172,226, 95, 53,224,203, +230, 13,171, 97,217,241,108,188, 8, 58,141,244,164,184,117, 52,108,255,161,119,113,129, 72,133,158,129, 46, 78,142, 23,127, 93, +191,208,254, 84, 48,131,168,168,112, 28,249,117, 53,116,218,191,232,138,147, 22, 55,222,172, 70,148,157,158, 0, 77,150, 1, 18, + 38, 71, 98,225, 69,125,233,228,228,180,227,135, 31,126, 24,221,176, 97, 67, 89,223,190,125, 95,164,165,165, 45,162,148,238, 55, +105,224, 63,245,245,245,157,178,110,221,186, 74, 81, 81, 81,248,227,143, 63, 94, 0,184, 91, 12,103, 52,143,199,219,240,199,175, + 91,166, 74, 43,248,225,199, 89, 95,235, 15,222, 9,238, 76, 41, 61,101,194,233,223,170,122,149,227,139,166,140,101,216,123,191, +227, 97, 68, 2, 94,103,168,255, 40,134, 19, 60, 30, 15,127,252,186, 5,210, 10,126, 8, 77, 87,234, 4, 98, 41,172, 92,203,227, + 69,182, 65,200,231,243,111, 15, 31, 62, 76,200,240,248, 96,248, 66, 4,167,229,234, 30, 38,241,240, 58,163,116, 83,233,189,200, + 54,128,207,231,195,217,249,207, 30,164,224, 52,139,198, 62, 88,221,190,125,155,225,241,120,111, 9,116, 83, 11,145,165,150, 34, + 75, 96, 46,103, 65,161,101,132, 94,175, 39,165,229, 84,171,213,133,138,219,194,124,181, 88,150,253, 91,202,111,137,133,202,180, +203,208,232, 79,151,155,155,235, 44,149, 74, 19,140,221,127,239,202,162, 85,150,145,136,197,117, 95, 90,146, 63,134, 97,192,178, + 44,132, 66, 33,106,214,172,137,227,199,143,195,222,222, 30,214,214,214,176,182,182,134, 84, 42,133,131,131, 67,190,208, 98, 24, +179, 71,233, 80,181, 90,237,229,229,229,133,151, 47, 95, 66, 34,145,228, 47, 98,177, 24,129,129,129, 80, 42,149, 30,239,207,118, +255,247, 96, 68,239, 86, 93,214,239, 60, 60,240,248,241, 19, 95,106,213,185,213,252,252,124,233,221, 27, 23, 30, 78,159, 52,186, + 29, 39, 77,254, 91, 48, 90,163, 76,125,173,102,204,152, 49,171,180,124, 51,102,204,152, 85,152,133,171,180,130, 11,111,186,250, +140,107,228, 11, 45,163,130, 44, 76, 73, 26, 69,214,182,181,243,173, 15,223, 7,162,163,195,112,118,255,154, 44,157, 86,147,198, +178, 58,239,215,207, 30, 0, 12,182,155,149, 5,134,214,235,210,190, 37, 57,251, 68,131,204,244, 36, 60,191,123, 58, 28, 42,209, +204,119, 41,178,118,172, 95, 96,127,236, 49, 65, 84, 84, 56, 78,237, 93,157,161,211,107, 63,165,175, 15,220, 47, 11,247, 0,145, +168, 75,239,170,182, 29,135, 55,141,133,129, 24,208,255,105,200,231,238, 77, 73,151,216, 43,197,143, 12, 51, 69, 82, 82,210, 98, + 43, 43, 43,102,249,242,229, 67,115,115,115,231, 83, 74, 15,154,220, 56,173, 43, 86,172,184,108,227,198,141,158,145,145,145,162, +171, 87,175,166, 94,188,120,145, 2, 88, 82,194, 11,124, 26, 33,132, 87,187,188,199,248,123,225, 49,157, 41,165,191,155,112, 6, +118,172, 19,112,109,235,146,185, 10,221,181,131,200,142,139,194,204,107,209,153, 0,102,150,244, 21,158,247,162,177,119,116,116, + 36, 3, 6, 12, 96,179,178,178, 32, 20,137, 88,157, 78,199,107,212,168,145,225,171,175,190, 98,226,227,227,145,153,149,205,239, +122, 44,193, 30, 64,106,105,234, 85, 40, 18, 65,167,211,193,195,195, 35, 63, 45, 51, 43, 27,132, 16,184,185,185,149,244,176, 45, + 4, 48,169, 81,163, 70,164,126,253,250,183, 86,175, 94,125,166, 56,177, 82, 26,139, 86, 73, 48,151,147,101,217, 66,223,162, 58, +157,142,148,150,211,212,162, 85,146,208,122,159, 22,173,194, 68,139,169, 72, 52, 21, 66,165,241,209,250, 59,197,161, 37, 34,172, + 48,235,176,209,162,245,224,193, 3,148, 43, 87, 14, 90,173, 22, 10,133, 2, 10,133, 2, 86, 86, 86,200,202,202,130, 64, 32,128, +133,101,102, 37, 18, 73,100,112,112,176,175,147,147, 19, 12, 6,195, 91, 98,235,197,139, 23,144,203,229, 49,150, 90,180,220,221, +221, 79,231,141, 58,124, 11,174,174,174, 54,239,162, 94, 77, 45, 89, 61,122,244, 40, 85,191,194,250, 37, 83,119, 2,216,217,179, +103,207, 29,143,110,156,248,196,205,205,237,132,191,191, 63, 1, 0,110,132,225,199,101,205, 42,162,135, 45,169,128, 37, 74, 99, +242, 63, 9, 0,201,251,159,100, 34,196, 76,127,107, 10, 73, 75, 89,178,100,201, 5, 19,255,174,164, 50, 22,193, 24,226,225, 45, + 95,104,126, 73,150, 44,103, 7,251, 11, 63,255, 56,223,122,127, 16, 16, 19, 21,134, 75,135,214,102,232, 13,218, 79,193,210,184, + 27,231, 14, 29, 4, 65, 14, 94, 31,188, 4,236, 55,163,137, 64,237,218, 85,189,241,219, 19, 29,146,162, 95,128, 82,118, 27, 77, +248, 53,167,204,141, 99,158,200,218,182,118,190,253,225, 7, 4,209, 81, 97, 56,187,127, 77,134,222,160,253,180, 52,193, 78,141, + 24, 78,136, 29, 79, 46,217, 48,176, 77,221, 94,222, 21, 61,193, 82, 29, 88, 33, 69,183,105,142,252,231,247,114,126,243,106,195, +219,207,102,179, 95, 70,223, 48, 47, 16,104,118,118,246,183,132,144,195,148,210,167, 38, 13,242,231,149, 42, 85,250,238,167,159, +126, 42, 31, 19, 19,163,184,119,239, 94,230,230,205,155,195, 88,150, 93, 72, 41, 45,113, 20, 21,165,244,107, 66,200,207,166,241, +114, 8, 33, 53,166, 14,237,119,163,223,144,225,146,176,115, 59, 97, 23,246, 20, 83,174,197, 26,158,167,105,250, 82, 74,227,205, +200,170,189, 88, 44, 62,120,242,228,201,151,181,107,215, 38, 74,165, 18, 58,157, 14,201,201,201, 56,124,248,112, 48,165, 20,118, +118,118, 56,121,242, 36,219,175, 95,191,131,106,181,186, 71, 81, 98,171,168, 81,135, 0,150,168, 84, 42,163,200,202, 79,183,182, +182, 94, 98,109,109,109,244,209,218, 82,196, 75,204, 24,222,129,228,133,119,104,240,251,239,191,135,180,107,215, 46,186, 48,177, + 34, 22,139,145,155,107, 89,148,144,162, 70, 49,150,134,179, 40,139, 86,193,116, 75, 56,141,221,151, 70, 39,248,130,233, 70,240, +120, 60,176, 44,251,151,244,127, 90,180,152,142, 14, 44,141,200,121,203,186, 92, 66,224,208,210,140, 68,124,215, 22, 45,227,181, + 16, 10,133, 56,122,244, 40,134, 12, 25, 2,131,193, 0,153, 76, 6, 43, 43, 43,200,229,114, 28, 58,116, 8,198,240, 15,150,100, + 81,167,211,237, 90,178,100,201,172,141, 27, 55, 74, 41,165, 16,137, 68,249, 66,107,254,252,249, 42,173, 86,187,203, 28,161,149, + 31,241,157,165,193,149,157,138, 31,117, 88,216, 49, 69,248,107,217, 46, 92,184,112, 16,203,178, 93, 80, 32,132, 67,129,253,222, + 10,253, 80, 92,120, 7, 0,118, 11, 23, 46, 28,193,178,172,113, 0,205, 91,163, 11, 77,246, 51,190, 75,124,123,246,236,185,163, +224,168, 67, 14, 31, 60,238,252,139,243,214,194, 36, 80, 41,201,107, 47,242, 5, 23,191,104,145,213,211,223,217,193,241,194,150, +213,243,173,119,223, 6, 98,163, 94,227,250,209,117, 25, 6, 86,103, 42, 94,154, 88,216,242,214,118,119,182, 69,234, 77, 21, 50, +147, 35, 1,138,123,101, 23, 89,189, 43, 59, 59, 58, 92,220,186,102,190,253,129,251, 12, 98, 34,195,112, 49, 79, 12,150, 69,100, + 13, 16,137,186, 4, 86,241,220,218,231,243,198,118, 54, 68, 15,125, 68, 8,126, 30,220, 11, 65,157,180,104,220,219, 6,245,218, + 43, 80,169,150,164,215,201, 45,169,159,185, 55, 37,195,205,181,110, 21, 16, 89,157,202,151, 47,191,224,214,173, 91,222, 44,203, + 42, 46, 93,186,148,181,113,227,198,215,185,185,185,107, 40,165, 39, 44,120, 57,152,138,172,218, 51, 70, 14,190,250,221, 79, 63, + 75,130,131,238, 96,217,174, 99, 80,233, 52,134,211,209,217, 61, 77,187, 21,139,131, 72, 36,250,246,252,249,243,242,234,213,171, +147,148,148,148,124, 43,137, 86,171, 69, 70, 70, 6,178,178,178,160, 86,171, 81,167, 78, 29,102,205,154, 53,242,241,227,199,127, + 11,224,203, 34, 94, 54,239,124,212, 97, 97, 80, 40, 20, 16, 10,133,208,106,181,249, 22, 45,177, 88, 12, 27, 27, 27,164,164,164, + 96,223,190,125, 40,201,242, 38, 20,138,226, 24,134,148,147,202,100,106,137, 68,194, 22,102, 85,179,148, 51, 15,209,159,127,254, +185,231,194,133, 11, 37,117,234,212,249,139, 69,171, 52,156,148,210,156, 54,109,218,200,214,172, 89, 3,111,111,111,104, 52,154, +183, 4, 21,195, 48, 16, 10,133,136,138,138,194,162, 69,139, 64, 41,205,249,167, 91, 30, 83,209, 98, 42,134,242,124,168,254, 34, +132,204,181, 24,149,212, 53,104,233, 72, 68, 83,225, 38, 22,139,145,158,158, 46, 37,132,244, 47, 34,130,189,217, 22, 45,163,208, +122,250,244, 41,118,236,216,129,246,237,219,195,206,206, 14,105,105,105,216,191,127, 63, 66, 66, 66, 32, 18,137, 64, 8,177,196, +170,197,214,175, 95,255,251, 43, 87,174,116,234,219,183,111,192,148, 41, 83,164,213,170, 85,195,243,231,207,177,112,225,194,220, +160,160,160, 80,149, 74,181, 16,230, 4, 54,205,139,248,110, 12, 70,106,214,168,195, 2,199, 20, 68, 17,225, 29, 62, 47,130,205, + 52,244,195, 91,225, 29, 76,113,253,250,117,159,242,229,203,251,227,205, 72, 66,227, 11,215,116,116,225, 91, 47,227,184,184,184, +186,224, 70, 29,114,248,103,219,186, 75,132,144,252,128,165, 70,241,245,151, 81,135,127, 61,146, 76,234, 59,120,164,245,174,219, + 4, 81, 17,161,184,123,114, 67, 65,145,101, 78, 99,211,202, 52,214,134, 68, 42,175,198,146, 55,195,153, 51,147,163, 0,202,179, + 88,104, 21,228, 4,101,191,238, 59,104,164,253,158,187, 4,177, 81,175,112,237,200,122,139, 69,150, 41,231, 0,145,232, 27, 1, +143,204,233,208,172,182,176, 73,173, 42,144, 39,134, 35, 62, 58, 22,251,158, 38,165,134,166,169,135, 95, 35, 90, 68,188, 82,255, +220,126,132,189,189,157,171, 0, 29, 71, 59,216,223, 60,150,249,155,199,167,140,150,106,233,146,216,171,116,126,161,249,252,235, + 57, 43, 91, 91, 91, 47, 15, 10, 10,114,146, 72, 36,214,119,239,222, 53,108,218,180, 41, 42, 55, 55,119, 5,165,116,175, 89,101, +255,235,118,207,186, 85, 42, 94,250,110,253, 22, 73,182, 50, 7, 74,141, 22, 98, 23, 55,195,225, 27,143,187, 23, 21, 0,179, 32, + 39, 33,164,229,208,161, 67,107,212,175, 95,159, 49, 21, 89, 26,141, 6,153,153,153,200,202,202, 66,102,102, 38, 50, 51, 51, 17, + 19, 19,131,230,205,155, 51, 53,106,212,168, 70, 8,105, 73, 41,189, 80,144,243, 93,141, 58, 52,229, 52, 9,239, 48, 11, 0, 67, + 8,185,243,224,193,131,236,118,237,218, 65, 42,149, 66,169, 84,194,203,203, 11,122,189, 30, 39, 79,158, 68, 80, 80,144,146,101, +217, 75, 0, 30, 20, 87,118,149, 42,199,139, 16,194,168,114,114,106, 14, 26, 52,168,249,228,201,147,223, 26,146,238,236,236, 12, +123,123,123,139, 56, 1, 32, 53, 53,181,234,239,191,255,254,213,131, 7, 15,190,110,223,190,189,205,172, 89,179,196, 62, 62, 62, + 48, 24, 12, 76,105, 57,211,210,210,108,238,221,187,183,162, 73,147, 38, 99,219,181,107,199,255,238,187,239, 96, 99, 99, 3,131, +193, 0,169, 84,138,204,204, 76, 44, 92,184, 16, 87,175, 94,213, 83, 74,215,103,100,100, 76,177,228, 94, 42,165, 5,171,224,189, + 84,168, 5,168, 40, 33, 84,216,254,255, 68, 62, 11, 8, 55,216,218,218, 78, 7, 48,189,136, 8,246, 48,247,217, 52, 10, 45, 30, +143,135,240,240,112,108,218,180,233, 47,113,180,140,225, 31, 10,227, 46,162,236,244,226,197,139, 6, 66, 72,195,187,119,239, 78, + 31, 56,112,224,112,165, 82,233, 41,151,203, 99,117, 58,221,118,149, 74,101,140,163, 37,180,164, 13, 81, 42,149, 17,133,141, 58, + 44,184, 15, 96, 91, 44,103,129,240, 14,111,133,112, 40,112,216, 91,161, 31, 10,134,119, 48,229,108,212,168, 81, 24,195, 48,207, +242,186,224,159,161,192,232, 66, 19, 78,223,184,184,184,186,110,110,110,151, 0,200, 10,142, 58,252, 39,238, 37,142,243,191, 45, +182, 80, 92,192,210,194,143,130,228,220,173,112,136,164,169,120,248,199, 54,139, 69, 86, 97, 80,231,230,132,206,221, 19, 89, 75, +163,206,133, 50, 35,225, 57, 13,219,155, 88,246,171, 13,249,185, 59, 17,144,200,211,113,255,220, 47,233, 6, 67,238,167, 52,244, +127, 15, 74, 79,135,153, 63,157, 58, 40, 36, 54,246,120,248,213, 16,196,166, 43,113,234,117,218,126,154,163,254,114,103,222, 92, +129,158, 13,201,149,173,179,227, 55, 52,237,102,211,203,209, 67,128, 85, 83,183, 67, 50,195, 65, 88,239,179,102,102,207,129,104, +116,144,255,241,199, 31,199, 52,109,218,212,170, 87,175, 94, 47, 82, 83, 83,223,114,144, 47,197,133,142, 38,132,252,116, 98,227, +202,169, 14,213, 27, 96,221, 55,211, 12,123,110, 60, 46, 56, 10, 17,197, 91,117,132, 45,102,204,152, 33, 84, 42,149,127, 17, 89, + 5,133, 86,102,102, 38, 30, 62,124,136,193,131, 7,139, 31, 60,120,208, 2,192,133,191,152,114,162,163,183,136, 68, 34, 4, 7, + 7,163,121,243,230, 75,242, 44, 86,225,215,175, 95,159,105,228,232,211,167, 79,126,250,184,113,227,102, 86,172, 88, 17,169,169, +169, 37,149,117, 46, 33,100, 35,222,204,117, 24,191,115,231,206,134, 71,142, 28,105, 56,105,210, 36, 97,251,246,237,113,243,230, + 77,156, 61,123, 86,171,213,106,111, 0,184, 97,238,180, 54,121,241,135,238, 17, 66, 30, 47, 91,182,172, 33,143,199,155,107,220, + 22, 28, 28,140,109,219,182,149,134, 83, 15, 96, 5, 33,228,167,157, 59,119,206, 61,119,238,220,208, 65,131, 6, 89,235,116, 58, + 60,125,250, 20,191,252,242, 75,105, 57,191,114,114,114,154,115,242,228,201,237,103,206,156,233, 58, 96,192, 0,102,194,132, 9, + 88,187,118, 45,254,247,191,255,177, 6,131,225,136, 64, 32, 24,148,148,148,164,124, 79, 13,207,230,188,105,117, 54, 91, 48,231, + 97,137,188,101,233, 26, 52, 51,223,113,101,110,150,242,202,209,162, 69,139,124, 43, 35,165,244, 45,191, 58,163,192,178,180,235, + 16,128,109,222,125,186, 30,192, 90,188, 29, 21,158,135, 63, 35,199,155,203, 24, 16,167,182, 13,134, 26, 79,139,159, 84,218, 22, +160, 8, 40,129, 45,125,238,220,185, 63,204,155, 55,239,135,130, 33, 28, 76,119, 42, 24,250, 97,193,130, 5, 40, 42,188, 3,128, +180,185,115,231,126, 15, 0,254,254,254, 36,175,187,240, 19,228,141, 46, 52,225,220,145,151, 46,155, 63,127,254, 64, 0,197,113, +114,224,240,143,161, 24, 31, 45, 58, 43,248,202, 30, 29, 0, 7, 16,102, 38,125,181, 47,184,204, 13, 24, 75,103,156,223, 61,127, + 45, 40,210,168, 65, 63,253,157,148,128,229,205, 14,190,178,155, 5,136, 45, 8, 51,131,190,250, 95,153,243, 73,108,236,145,181, +112, 12,254,247, 36,150,198, 43,117, 95,236,212,104,222,178, 6,229,249,100,245,118,111, 74,246,217,185, 11, 14,127,245,169, 3, + 57,145, 58,208,226,243, 36, 37, 37,125,103,101,101,197, 91,177, 98,197, 80,149, 74,245,150,131,124, 25, 94, 18,211, 8, 33,188, +122,149,189,199,223,126, 25,209,197,220,238, 66,147,198, 95,228,238,238,254, 56, 55, 55, 23,132, 16,168,213,234,124,129,149,149, +149,133,140,140,140,252,255, 90,173, 22, 73, 73, 73,240,242,242, 2, 33, 68, 88,220, 75,199,116,138, 24, 0,111,113,154,194,148, +211,194, 23,226,101, 66, 72,208,194,133, 11,155, 45, 92,184,176,102,158, 85,232,114,105,187,204,242, 4,207,101,169, 84, 22, 75, + 8,241, 20,138,196,202,235,215,175,159, 43, 35,103, 78,158,165,100,213,170, 85,171, 22,203,229,242,186,193,193,193,127,148,133, + 51, 79, 68,117,119,112,112,112,223,177, 99,199,129,173, 91,183, 54,224,243,249, 55, 9, 33, 61,211,211,211,223,247,164,210,163, + 96,222, 28,135, 37, 90,140,204,177,136,149, 22,127,135,112, 51, 24, 12,217,115,230,204, 73, 44, 40,188, 10, 90,175,140,255,181, + 90,109,174,153,207,167, 37,163, 40, 75, 16, 25, 36, 27, 0,222,204, 93,248,102, 90, 29,115, 39,149, 6, 80,228,220,153,243,230, +205,163, 11, 22, 44, 32, 12,195, 28, 1,240,156, 97,152,151, 5,157,213, 77,183, 45, 88,176, 0,243,230,205,163,243,231, 23,253, +141,106,228, 12, 9, 9,161, 60, 30,239, 15, 0, 97, 60, 30, 47,220,148,215, 52,221,120, 76,113,156, 28, 56,188,119,161, 69, 95, + 31,136, 2, 48,228,157,126, 41,134, 29, 56,135, 55,142,140,239,142, 51,124,111, 4,128, 1,239,138,143, 5,150, 15,175,215, 98, + 42, 0, 66,129, 85, 5, 69,150, 41, 98,175,208, 35,110,141,201,146,122,159, 53,155,148,103, 13,251,206,210,243, 21,230, 32,255, + 14,196,214, 95, 28,228, 45,120, 65,156,145, 74,165, 68,169, 84, 66,165, 82,189,101,189,202,204,204, 68, 78, 78, 14,178,179,179, +243, 29,206,179,179,179,141, 93, 86,180, 24, 78, 72,165,210,252,110, 68,134, 97,194,210,211,211,243, 57, 77,211, 77, 57, 75, 41, +100, 78, 17, 66,206, 80, 74, 13,239,162, 46, 85,170,156,114,121, 47, 56,222,187,226,204, 27,228, 48,252, 93,114,166,164,164,196, + 2,104, 84,169, 82, 37, 81,104,104,168,230,223,210,192,188, 11,235,208,223,141,119, 45,220,242, 62, 24,170,254, 13,117,249,252, + 29, 19,254,210,166, 73, 0, 15,166,177,131, 74,154, 84,218, 40,208, 40,126, 41, 34,143,148,188, 81,146, 20,192,142, 87,175, 94, +121,179, 44, 27, 81,136,101,233,173,109,243,231,207, 71, 81, 49, 3, 11,112, 2,192,111, 81, 81, 81,238, 6,131, 33,174, 0,239, + 91,233,197,113,114,224,240, 47,177,104,253, 55,177, 75,163,153, 7, 96,158,185,251,199, 93,163,179, 1,204, 46, 99, 3,250,244, + 93,151,163, 52, 34, 11, 0,116, 58,221,121, 0,112,114,114,130,147,147,147, 37,199,149,184,205,116,238, 66, 83, 12, 28, 56,112, +203, 59, 46,187,225,111,168,207, 15,130,243,223, 36,178, 56,252,187, 65,211,130,163, 0,124, 83,226,126, 37, 71,131,255,139, 48, +202,251,153, 6, 32,173, 8,173, 83,220,182,226, 56, 1, 32, 19, 64,102, 33,199, 22,149,206,129,195,123, 5,195, 85, 1, 7, 14, + 28, 56,112,224,192,129,195,223, 3, 2,160, 85, 17, 95, 16,102,143, 38, 32,132,180, 42,197,215,252, 57,142,147,227,228, 56, 57, + 78,142,147,227,228, 56,255, 91,156, 37,113, 23, 28,189,252,174,166,231,250, 71,197,149,105,190,141, 35, 97,254,142, 5, 64, 43, +142,147,227,228, 56, 57, 78,142,147,227,228, 56, 57,206, 82,158,103,228, 63,113,158,191,115,225,124,180, 56,112,224,192,129, 3, +135, 15, 8,173,125,137, 27,223, 0,230, 84, 40,141,121, 23,124,159, 87, 34, 30, 0,240,174,248,254,139, 32,132,184, 1,232, 96, +146,116,194, 56, 24,136, 19, 90, 31,238, 69,173, 12, 96, 22, 0, 27,147,228,219,148,210, 37, 5,246,219, 13, 64,102,146,164, 4, +176,144, 82,250,210,146,243,241,120,188, 37,205,154, 53,251,242,234,213,171, 43,117, 58,221,194, 82,228,215,219,205,205,237,123, + 66, 72, 29, 0, 2, 66,200,171,132,132,132, 37, 58,157,238, 92, 25,234,160,130,171,171,235, 82, 0,181, 24,134, 17, 16, 66, 66, + 19, 18, 18, 22,233,116,186,139,101,224, 84,184,184,184, 52,166,148,186, 2,224, 9, 4,130,148,152,152,152, 91,165, 29, 61,215, +115, 65,136, 48, 83,169, 23, 0,128,181,156,175, 59, 48,207, 95,107,110, 26,119,151,115,224,240,159,111,232,121, 5,147,218, 86, +196, 98, 66, 49,197, 0,144,182, 21,200,154,211, 97,152, 82,228,241,133, 13,184, 41,192,217,182, 34, 22, 83,250,134,163,109, 37, +178,226,244,171, 18, 6,119,153,193,105,196,102,128, 25,105,206, 4,231,127,195,192,160,247,128, 14,166, 93,156,121, 1,152, 55, +151, 40,180,250,248, 18, 55, 3, 31,252, 3,193, 52,202,248, 18, 2, 80, 19, 64,101, 0, 47, 1, 60,160,148,102,149, 81, 48,124, + 16,156,255, 66,204,165,148,246, 43, 80,238,191,236,244,233,167,159,118, 62,115,230,140,204, 56, 61, 11,203,178,144, 74,165,122, + 0,131, 45,168, 79,231,190,125,251,206,248,249,231,159,209,171, 87,175, 57,132,144, 31, 40,165,217,230, 30,111,111,111,223,163, + 66,133, 10,107,183,108,217,226,212,160, 65, 67, 34, 18,137,240,234, 85,168,231,168, 81,163,170,185,184,184, 28, 73, 72, 72, 24, +110,105,225, 29, 28, 28,250, 87,172, 88,113,213,166, 77,155, 28,155, 52,105, 2, 66, 8,130,130,130, 60,191,250,234,171,154,174, +174,174,123,227,227,227,199, 90,202,233,232,232, 88,165, 98,197,138, 45,215,173, 91, 39,109,220,184, 49, 36, 18, 9, 30, 60,120, + 96, 53,122,244,104, 87, 87, 87,215,167,241,241,241,151, 44, 21, 89,143,130,142,117,213,107,213,203, 0,128, 47, 20, 79,107,248, + 67,230,177,212,160,203,157, 74, 74,235,185, 0,191,113, 98,139, 3, 7, 14,166,232,239, 14, 87, 74, 49,245,204, 47,223, 48, 0, +208,102,232,183, 19,250,187, 99,229,174, 88,196,191, 35,190, 41,131, 60,176,118, 71, 12, 18,202,146,207,205, 0,243, 21,159, 63, +161, 94,253,250,142,227,174, 93, 11,213, 2,219,255, 35, 6,144,145,133,165, 23, 41,180,122, 4,144,133,224, 99, 22, 0,242,121, +101,178,247,108, 24,239, 74,235,214,173, 43, 13, 27, 54,140,212,174, 93, 27, 65, 65, 65, 85,246,238,221,219,129,207,231,135, 26, + 12,134, 32, 0, 79,204,141,106, 77, 8, 17, 0, 8,228,241,120,117,254,205,156,255,114,200,243,202,157, 0,224,182,209,162, 85, +112,167,243,231,207, 31,229,243,249, 70,139, 86, 61,165, 82,233, 82,192, 10,102, 14,202,235,116, 58, 60,123,246, 12, 12,195, 8, + 0,248,224,175, 83,106, 20,117, 93, 60, 61, 61, 61, 55,220,184, 29,228, 64,248, 82,164,229, 2,200,213, 66,100,229,130,159,183, +237,180,159, 60,113,108,119,107,107,235, 43,153,153,153,191, 90,112, 51,251,120,121,121,253,240,240,225, 67, 7,153, 76, 6,150, +101,145,149,149, 5, 87, 87, 87,108,217,178,197,118,242,228,201,253,164, 82,233, 69,149, 74,245, 63, 75,196,121,197,138, 21, 91, + 62,126,252, 88,106,156, 80, 90,163,209,192,211,211, 19,187,119,239, 22, 79,152, 48,161,170, 88, 44,142, 86,171,213,175,205,229, +204, 84,234, 5,122,173,122,217,142,245,243,203, 1,192,160,177,243,151,137,178,172, 79,154,147,150,169,212,159, 0,192, 9, 45, + 14,255,244,139,162,142,163,163,227,193,228,228,228, 75, 0,134,191,139, 16, 36,132, 16,119, 62,159,239, 67, 41,181,205,251,159, +174,215,235,195, 40,165,165, 14,168,235, 88,169,101, 39,136,101, 67, 64,217,154, 12, 0,194, 48, 15, 12,218,156,109,201,207, 47, + 28, 43, 19,167, 72, 58, 20,160, 53, 25,128, 37, 12,243,144,213,231,108, 73, 10,185,112,234,223,114,125,110,102,192,183,162,171, +249, 19, 99,190, 11,190, 62, 21,224,198,176, 96,118,135,195,236,110,197,241, 64,251,137, 19, 39,186,142,253,242, 75, 50,100,240, +224,202,151,174, 94, 37,205, 45,153,173,224, 3, 68,113, 14,251,133, 10,173,158, 1,196, 14,192,244,189,107,103, 49,124, 30,143, +244,157,184,164,223,214,245, 43,152,214,157,122,230,119,159, 52,109,218, 20, 77,155, 54, 37,203,150, 45,171,252,199, 31,127, 84, +222,189,123,183,158, 16,242,144, 82,186,175,168,147,181,171, 68, 84, 44, 32,233,224,199, 87,246,253,230,215, 77,245,235,215,135, + 88, 44, 70, 89, 56, 1,160, 77,101,222,235,246,245, 43, 61,236, 59,126,110, 68,131, 6,141,232,187,224,252,128,112,155, 82,218, + 37,175, 1,179,243,242,242,106,172,215,235, 37, 0,192,231,243,115, 1,140,167,121, 83, 7, 17, 66,142,176, 44,219,217,130, 6, +146, 1, 48,175,115,231,206,115,198,141, 27, 7, 47, 47, 47, 76,152, 48, 1, 58,157, 46,136, 16, 50, 23,192,210,146, 2, 2, 58, + 59, 59,207,221,176, 97,131, 61, 95, 36, 71,237,233, 97,136, 75,215, 3, 0,172,196,192,209, 49, 20, 19, 38, 76,176,190,123,247, +238, 34, 0,102, 11, 45,103,103,231,133, 91,182,108,177,151,201,100,160,148, 34, 59, 59, 27, 89, 89, 89,200,206,206, 70,118,118, + 54,198,142, 29,107,253,244,233,211,239, 1,152, 45,180, 92, 92, 92, 26,175, 91,183, 78, 42,145, 72,144,157,157, 45,212,106,181, + 36, 43, 43, 11, 57, 57, 57, 84,163,209,104,199,143, 31, 47,126,242,228, 73, 11, 0,175,193,225,223, 34, 10,120, 0,190, 16, 8, + 4,221, 42, 85,170,244,201,203,151, 47,239,235,245,250, 67, 0, 14,149,245, 99,138, 16,242,153,187,187,251,226,216,216,216,117, +148,210,157,255,149, 58,117,113,113, 57,116,253,250,245,114, 27, 54,108, 24,188,114,229,202,147,150, 60, 67, 69,124,252, 54,172, + 87,175,158, 99,183,110,221, 4,174,174,174,200,201,201, 65,104,104,168,236,220,185,115, 78, 18,137, 36, 69,173, 86,223,176,228, + 90, 57,250, 54,182, 2,223,122,111,195,150,173,154,244,234,254,133,194,197,193, 6, 42,141, 1, 47, 35,226,188,126, 63,121,180, +185,123,181, 14,215,181,218,140, 62,201,207,175,101, 91,202,217,178, 93,199, 38,173, 62,251, 76, 97, 99,107,131, 12,165, 22,175, +194, 99,188, 47,156, 61,214,212,173, 90,135,203, 44,209, 13, 72,120,116, 38,231,125, 94,155, 9, 0, 95, 41,113,168, 81,179, 81, +237,187,109,134, 45,250,132, 82, 10,134, 98, 77, 65,107,214, 4,128,191, 6,208, 91,202, 7, 74, 41, 33, 88, 97,106,205,202,239, + 86,100, 64,218,250,160,248,110, 74,227,251, 24, 16,219,218,219,215, 31, 61,114, 36,201,202,204,196,131, 7, 15,114, 10,138,172, + 31, 60, 32,188,204,160,252,145, 40,188,248,152,172, 89, 5,187, 14,141,255,205,142,163, 37,147,201, 10, 77,183,177,177, 65,203, +150, 45,177,100,201, 18, 62,128, 58, 5, 20,222,219,147,172, 2,226,227, 27,103,194, 70, 46,102,188,188,188, 20,214,214,214,101, +230,124,147,200,250, 52,242,162,159,223,249,117,214,224,115,187, 87, 5, 42,179,210, 5, 5,119,177,178,178,130,175,175, 47,230, +204,153, 99, 30,103,217,213,237, 63,202,233,230,230,230,215,180,105,211, 58,231, 47, 93,178,141,141,141, 21,199,198,198,138,207, +156, 63,111,219,176, 97,195, 58,110,110,110,126, 38, 28,150,228,243,219,245,235,215,207, 61,114,228, 8,211,180,105, 83,216,217, +217,161,101,203,150, 56,121,242, 36,127,229,202,149,223, 1,152, 83, 82, 62, 25,134,105,210,180,105, 83, 2, 74, 17,159,161,199, +173, 37,126,120,176,194, 31, 89,185, 20,169, 25,153, 80,169,114, 33,147,201, 36,121,221,189,230,150,189, 81,195,134, 13, 9,128, +124,113,149,149,245,102,201,206, 86, 66,163,209, 66, 44, 22, 43, 8, 33, 18,115, 57, 41,165,174,141, 27, 55, 6, 0,104,181,218, +252, 47,188,244,244,116,146,145,145, 1,141, 70, 3,129, 64, 32, 36,132,240,205,229,180,150,243,117,124,161,120,218,160,177,243, +163, 6,141,157, 31,197, 23,138,167,105, 20,153, 6,115,210,172,229,124,221,251,188, 63, 9, 33, 78, 60, 30,239,151, 74,149, 42, + 61,229,241,120, 59, 8, 33,174,101,225, 36,132,212, 37,132,124, 39,147,201,206, 85,173, 90, 53, 74, 46,151,159, 39,132, 44, 37, +132, 52, 44, 13, 39, 33, 68, 36,147,201,206,127,247,221,119, 7,238,223,191,223,235,143, 63,254,240,121,244,232, 81,247,101,203, +150,237,181,178,178,186, 66, 8,145,149,229,217,244,241,241,217,122,235,214,173,186,141, 26, 53,250,153, 16, 34,126, 23,207, 59, + 33,132, 71, 8,169, 69,204,156,107,232,159,190,238,132, 16,247,218,181,107,151,147, 72, 36,104,213,170, 21, 0,180, 40, 35,103, +195,209,163, 71,187, 78,158, 60, 89,240,224,193, 3,252,252,243,207, 56,114,228, 8, 18, 19, 19,209,177, 99, 71,225,167,159,126, +234, 42, 22,139, 27, 90,196,201,183,222, 59,241,171, 73,237,166, 78, 24,161,120, 24,169,197,182,115,145,248,237, 70, 28, 18,115, + 68,232,212,125,144, 77,219, 46,189,219,138,196, 54,123, 45,229,156, 49,125,122,187,145, 67,251, 41,130,227, 88, 28,189, 25,143, +155,207, 50,160, 23,216,162,125,247,225,118, 53, 27,183,235,192,135, 96,251,251,190, 70, 91,128, 6, 19, 39, 78,116,154,182, 98, +215, 53,247,186, 95,172, 73, 74, 67, 83, 83,225, 83, 5,176,181,151,203,191,120,214,188,249, 8,233,155, 57, 31,139,229,124,139, +175, 78,151,181,137,105,104,102,234,159,213,204, 30,149,243,186, 21,121,103,126,249,134,161, 4, 19,250,187,195,181,164,124, 94, + 4,122, 77,156, 52, 73, 96, 99,103,135,245,235,215, 67,173, 84,190,229, 51,251, 89, 57,180, 59, 39,227, 71, 87,240,247,124,218, +210,155, 92,249, 8, 63, 0, 71, 22,105,209, 58,113,226, 4,237,208,161, 3, 1,128, 3,193, 52,173, 71, 0,249,190,247,184,239, +230, 16,134,208,242,129,141,130, 61, 42, 6, 40, 29, 28, 28,144,147,147, 3,181, 90, 13,161, 80,136,220,220, 92, 68, 70, 70,226, +230,205,155,176,179,179,179, 40, 51,153,153,153,176,178,178,130,149,149,213, 59,225,156, 57,184,149,248, 85, 84,146,248,244,205, +139,205,127,252,242,127, 13, 42,214,106,241,232,179,222, 19, 30, 91, 59,185,231, 62,122,244, 8,215,175, 95, 71, 90, 90, 26,234, +215,175,255,177, 92,207,219,121,237,245,109, 66,136, 93,211,166, 77, 61, 79,159,187,108,151,157,203, 90,135, 39,232, 4, 44,203, + 66, 38,115,211,239, 59,120, 52,163, 87,247, 78,132, 16,146, 8,224,118,158,184,189, 93,194,141, 34, 1,224,215,163, 71,143, 25, + 95,126,249, 37, 66, 67, 67, 49, 98,196, 8,213,237,219,183, 83, 26, 53,106,228,176,101,203, 22,233,228,201,147,113,233,210,165, +121,132,144,195, 0,194, 40,165,185, 69, 52, 26, 66,161, 80, 8,125,158,108,208, 26,216,124,125,159,153,153, 9,170, 74,131, 80, + 40,228, 1,112, 2, 96,150, 31, 29,203,178, 66,129, 64,144, 47,178, 34, 19, 50, 17,153,152,131,204,108, 13, 84, 42, 61, 52, 42, + 10,158,204,129, 15,132,187, 0, 8, 55,179, 62,121, 18,137, 4,122,189, 62,127,254, 69,163,165, 76,163,209, 32, 35, 35, 3, 60, + 30,207, 10,128, 53,128, 84,115, 8,223, 56,185,227,183,188,110, 64,220,217,213,217,241,229,137,153,218, 30,243,159,230,167, 89, +203,249,186,131,147,171,242, 28, 60,107, 94,173,213,107,187,191, 49,237,125,250,103, 17, 66,196, 78, 78, 78, 23, 14, 28, 56, 80, +181,114,229,202, 8, 11, 11,243,239,217,179,103,125, 66, 72, 45, 75,231,100, 36,132,200, 24,134,249,126,200,144, 33, 95,246,237, +219,151, 84,169, 82, 5,124, 62, 31,122,189,222, 51, 52, 52,180,229,254,253,251,167,243,249,252, 45, 6,131,225,107,115,253,254, + 8, 33,140, 72, 36,218,183,105,211,166,102,245,235,215,199,142, 29, 59,112,251,246,109,182,110,221,186,204,192,129, 3,225,237, +237, 93,127,224,192,129,191, 17, 66,218,151,198,178, 69, 8,241,238,223,191,127, 57, 30,143,135, 70,141, 26, 9,175, 95,191, 94, + 27,192,245, 50,214,169,149,167,167,231,165, 22, 45, 90,212, 58,119,238,220, 61, 66, 72, 11, 75,252, 28, 9, 33, 93,220,221,221, +151,217,216,216,216, 89,208,198,230,196,196,196, 76,177, 96, 14,213, 6,117,234,212, 65, 68, 68, 4,252,252,252, 32, 20, 10, 27, + 18, 66, 70, 1,104, 7, 96,182, 37, 51, 88, 16, 66,220, 27, 54,108,232,216,162, 69, 11,178,116,233, 82, 0,128, 64, 32,128,193, + 96, 0,195, 48, 16, 8, 4,240,247,247, 39,175, 95,191,182, 39,132,184,155,211,141,232, 88,169,101,167, 70,159,181,107,210,172, +126, 13,102,229,193,151, 48,176, 6,240,136, 30,124,194,130,213,137, 33, 22,242, 80, 37,240, 19,222,179, 39, 15,235, 59,250,182, +238,148,252,252,236, 49,115, 56,219,117,234,220,180,170, 95, 21,230,199,223, 94, 33, 61,230,169, 33, 38,228,114, 50,195, 99, 80, +181,206,167,142, 85, 2,106,241,106,213,111, 33,136, 13,123,210,210,190,114,243, 86,169, 47, 47,157,123, 31,207,228, 2,128,231, +233,225,248, 69,199,214, 45,132,113,177,177,202,253, 7,143, 61,206,209,225, 38, 0, 92, 2, 72,123,160, 70,245,122,245,154,111, + 89,186,212,193,205,205, 77, 48,160,111, 95,253,230,123,247,238,141, 4, 12, 69,241, 57,186,186,182, 26, 61,122, 52, 47, 46, 54, +150,238, 63,116,226,145,145, 15, 0,100, 64,245, 26,158,254, 29,161,124,102, 81, 55,101, 39, 64,228,226,234, 90,117,212,168, 81, +136,143,141,197,142,157, 59,179,115,129, 27, 70, 43,214, 81, 30,214, 5, 84,116, 29, 50,109,120,103, 82,206,205, 17,163,231,109, +110,216, 82,155, 88,241, 2,254,180,108,153,106,145, 15, 85,100, 21, 20, 91, 69,126,157, 31, 12,166,115,173, 69,196,103,255,254, + 61, 76, 82,150, 86, 25, 26, 26, 10, 71, 71, 71,184,185,185,193,198,198, 6,193,193,193, 56,127,254, 60,158, 63,127, 14,150,101, + 81,179,102, 77,139, 50,148,156,156,140,135, 15, 31,194,206,206,238,157,113, 86, 44,231,132,113,229,156,132, 9, 41,153,194,115, +183,159,215,223, 60,179,123, 0,227,223,125,107,110,238,159, 26, 64,163,249, 56,102, 40, 49, 29, 93,232,229,229,213,120,219,182, +109, 66,181, 30,138, 42,163,110, 44, 87,230, 26,228, 0, 32,151,240,148, 65,203,124,191,254,246,219,111,149, 67,135, 14,245,143, +140,140, 92, 82, 18,175, 72, 36, 90,252,249,231,159, 79,165,148, 10, 38, 78,156, 8, 0, 24, 52,104, 80,230,205,155, 55,171, 80, + 74, 19, 9, 33,238,195,134, 13,123,113,225,194, 5,217,164, 73,147,120,122,189, 62,152,207,231, 83, 66,200, 66, 74,233,252,130, +124, 12,195,220,189,119,239, 94,121,119,111, 95,120, 59, 48,104, 58,231,205,116,109, 14, 50, 22,209,225,175, 16,242,232, 54, 92, + 93, 93,109,220,220,220,158,250,249,249,105, 99, 98, 98,166,103,103,103,111, 40, 46,143, 66,161,240, 65, 80, 80,144,155,183,183, + 55,178,179,179, 17,157,148,131, 9,135,100,200, 84,189, 49, 98, 8,160, 66,173,114,190, 10, 41,163,185,237,226,226,162,213,104, + 52,223,164,167,167, 23, 59,141,136, 64, 32, 72,121,244,232,145,149,151,151, 23,114,115,115,105,106,106, 42, 81, 42,149,200,202, +202, 34, 39, 78,156,232, 26, 23, 23, 87,215,199,199,135,120,122,122, 46,172, 92,185,178, 42, 38, 38,102,132, 57, 62, 96, 7,230, +249,107, 9, 33, 6, 62,159,191,114,228,200,145,189, 14, 31, 62,124,247,224,252,170, 93, 40,165,218,188, 7,210, 38, 48, 48,240, +116,141, 26, 1,238, 59, 87, 84, 95, 67, 41, 93,254, 47,184,189,134,204,154, 53,171,170,189,189, 61, 70,143, 30,141, 5, 11, 22, + 96,238,220,185,149, 71,143, 30, 61, 18,192, 15, 22, 52, 58, 82, 87, 87,215, 59, 63,254,248,163,127,227,198,141,113,242,228, 73, +236,217,179, 7,175, 95,191,214,251,248,248,240,235,215,175,143,121,243,230,161,109,219,182, 35,198,143, 31,223,156, 16, 82,219, + 76,241, 49,116,222,188,121, 93,154, 52,105,130,193,131, 7,171, 47, 94,188,216, 11,192,153,179,103,207,126,122,233,210,165,131, +187,118,237,146,126,247,221,119,173, 38, 79,158, 60, 26,192,218, 82,148,191,107,179,102,111,230, 80,110,210,164, 9,150, 45, 91, +214,182, 44, 66,139, 16, 34,114,112,112, 56,177, 99,199,142, 90,190,190,190, 24, 48, 96, 64,237, 94,189,122,157, 32,132,180,166, +148,154,213, 32,121,120,120,124,127,228,200,145, 74, 69,245, 44, 20, 6,181, 90,109,255,197, 23, 95, 44, 5, 96,145,208,218,189, +123, 55,166, 76,153,130,154, 53,107,214,104,208,160,193,198, 81,163, 70,161, 71,143, 30,159, 17, 66, 92, 40,165, 74,115,136,248, +124,190, 79,199,142, 29, 5,135, 14, 29,122, 99, 29,105,214, 12,173, 90,181,194,227,199,143,113,245,234, 85,240,120, 60,200,229, +114, 52,110,220, 88, 20, 27, 27,235, 3,160, 68,161,197,136,101, 67,186,116,108,175, 56,122, 51, 14, 6, 86,143, 79, 42, 89,163, +190,191, 51,158, 69,103, 34,232,105, 52, 12, 26, 33,172,237, 29,208,176,121, 27,251,248,152,215, 67, 0,148,236,175, 37,150, 13, +233,214,165,131,213,209, 27,177, 72,143, 13,161, 47,111, 31, 62,175,203, 85,142, 0,128,187,127,236,221,232,234, 32,109, 93,165, +206, 39,188, 22,173, 59,219, 29,218, 19, 63, 4,192,123, 17, 90,151,202, 97,147,183, 32,121,208,180,126, 77,169,192,206,243,182, + 66,167, 91,103,220,214, 22,104, 51,125,214,172, 6,195, 71,142,148,176, 44,139, 93,191,254,154,249,240,222,189,103,197,141,246, + 91, 7,120,247,234,210, 69,172,176,182,198, 87, 19, 38, 64,161,211, 93,200,175, 18,224,179,175,166, 78,109, 60,118,236, 88,233, +198,133, 95,222,109, 59,108, 81, 29,150, 82, 82, 88, 55,101, 65,156, 3,234, 14,235,210, 5, 10,107,107, 76,156, 56, 17, 68,171, + 61,109,220,118,156,143, 11, 67,187, 54,173,223,175, 83, 19, 16, 16,236, 57,126, 21, 47, 35,146, 30, 93,136,195,171,143,228,157, +108,153,143,150, 17, 89, 90, 36,124,214,161, 59,238,221,187, 7, 0, 72, 73, 73, 65, 74, 74, 10, 42, 85,170,132,181,107,223,110, +191, 74, 35, 96, 88,150,125,231,156, 0,224,226, 96,141, 1,237,235,241,175, 62,220, 35, 81, 38, 37, 73,172,172,172,114, 63, 54, +161,101, 10,189, 94, 47,241,241,241, 65,166, 10, 36, 35, 71,103,149,188,247,141,197,223,177,207, 69, 43,141, 70,195, 88, 89, 89, + 65,173, 86, 75,204,120, 33, 8,186,116,233, 50,117,223,190,125,130,144,144, 16, 84,172, 88, 17, 90,173, 22, 55,111,222,140,206, +155, 8, 25,148,210, 88, 30,143, 23,203,178,108,229,154, 53,107, 98,201,146, 37,240,247,247, 39,237,219,183,159,158, 39,182,222, +122,184,227,226,226,190, 31, 53,106,212,167,251, 15, 30,182,223,212, 91,133,204,140, 76,100,103,103,227,193,253,187, 72, 77,200, +197,230,205,155, 33,145, 72, 9, 0, 97, 98, 98,130,112,210,164, 73,107, 60, 61, 61,219, 69, 71, 71,119, 44, 42,159,177,177,177, +139,199,142, 29,219,112,239,222,189,182, 89, 89, 89, 80,169,114,145,170,148,225,233,234, 55,243,248, 86,253,234, 41,214,175,219, +192, 84, 47, 47,119,204,201,201,193,151, 95,126,185,202,221,221,189,113,108,108,236,176,162, 56, 99, 98, 98,110,141, 27, 55,206, +101,215,174, 93, 18,141, 70,163, 53, 24, 12, 80,169, 84,204,222,189,123,167,151, 47, 95,222,110,203,150, 45, 68, 34,145,230,237, + 27, 45, 28, 51,102,204, 62, 87, 87,215, 93,241,241,241,131, 75,234, 46,226,241,120,171,119,238,220, 57,176,119,239,222,138,184, +184,184,128, 35, 71,142,136, 1,168,242,118,113,107,221,186,117,249, 21, 43, 86, 56, 5, 6, 6, 78, 39,132, 8, 40,165,223,189, +207,251,201,209,209,113,124,151, 46, 93,176,116,233, 82, 28, 59,118,108,178,189,189,253,170, 5, 11, 22,192,221,221,125, 28, 33, +100,181, 5, 19,245, 46,255,225,135, 31,252,253,253,253, 49,104,208, 32,205,185,115,231,102, 1,248, 13, 64,196,149, 43, 87,188, +182,111,223,222,105,223,190,125, 75,127,252,241, 71,201,218,181,107, 43,117,239,222,125, 53,128, 97, 37, 62,223, 46, 46,147,250, +246,237,139, 21, 43, 86,224,226,197,139,221, 41,165, 39,243, 54,157, 34,132,116,250,238,187,239,254,152, 51,103, 14,126,248,225, +135,137,150, 10, 45, 66,136, 85,213,170, 85,191,105,215,174, 29,174, 92,185,130,166, 77,155,162, 97,195,134,147, 9, 33,107, 40, +165,201,165, 16, 89,140,149,149,213,190,109,219,182, 53, 45, 95,190, 60, 22, 45, 90,132,169, 83,167, 98,235,214,173, 77, 7, 12, + 24,176,143, 16,210,173,224, 51, 83, 24,108,108,108,172,100, 50, 25,166, 79,159, 78, 95,191,126,157, 86,210,254,229,202,149,179, + 91,181,106, 21,177,179,179,179, 49, 87, 20, 75, 36,146, 70,213,170, 85,195,188,121,243,112,246,236, 89,204,153, 51, 7,213,170, + 85, 67, 68, 68, 4,250,244,233, 35,155, 61,123,118, 15, 0,219,204,124,233,216, 56, 56, 56, 32, 49, 49, 17, 2,129, 0,141, 27, + 55,198,111,191,253, 6,181, 90, 13,103,103,103,164,167,167,163, 94,189,122, 70, 81,102, 99,230,171,172,154,163,189, 13, 18,159, +196,128, 15, 61,234, 84,113,196,133,199, 41,208,234, 88, 56, 59,216, 34, 62, 49, 1, 13,170,121, 66,163,241, 2,165,108, 53,115, + 24, 69, 60,166,142, 88, 34, 69,106, 86, 50, 98,158, 94, 76,209, 26,212,163,210, 95, 95,141, 2, 0,251,138,205, 70,221,189,122, +246,110,207, 14,205,156,179,149,229, 64, 40, 91,239,125, 60,143, 61,189, 80, 78, 46,225, 15, 58,190,105, 38,209,179, 44, 62, 31, +182,184,110, 59, 23,228, 32, 1,112, 2,124,122,246,233,211,232,235,175,191, 22,189, 8, 13,101, 39, 77,152,144,126,255,206,157, +139,191, 3,119,139,227,204, 6, 42,183,110,221, 26, 12,128,223,207,156, 81, 38, 3,209, 0,224, 2,148,235,252,197, 23,205,102, +205,152, 33,122, 21, 30,206,222, 12,205, 62,250, 42,145, 46,105,100,143,135,123, 35,222,236, 83, 28, 12, 64,117, 35,239,233,211, +167,169, 42, 47, 31, 45,202, 97, 92,219,198,129,245, 7,118,105,134,232,248, 20, 44,251,249, 40, 30,189,136, 59,237,192,162,255, +199,242, 30, 46, 46,130, 61, 99,198, 3,243,151,180,156,156,191,246, 30,148, 85,192,252, 29,156,133,225, 99, 20, 90, 70, 24, 39, +111,214,232, 88,104,116,172,241,171, 22, 42,149,202, 92, 69,174, 59,125,250,244,142, 9, 19, 38, 96,213,170, 85,120,241,226, 5, +132, 66, 33,170, 85,171,230, 70, 8,177, 50, 90, 96,234,212,169,227,204, 48, 12,158, 61,123,134,149, 43, 87, 98,232,208,161,244, +250,245,235, 91, 11,123, 97, 80, 74,239,167,166,166,174, 27, 53, 98,104,122, 90, 66, 36,116,170, 52, 36,198,188,130, 90,153,142, + 69, 75,190, 71,142,142,143,248, 12, 45,226, 51,180, 96,196,246,216,184,101, 27,175,106,213,170,237,248,124,126,199, 98,242,121, + 51, 33, 33, 97,203,152, 49, 99,210,227,227,227,243,203,167,209, 81,104,116,111,223,175, 50,153, 12,171, 87,175,182,169, 82,165, + 74, 23,129, 64,208,178, 24,206,184,168,168,168,144, 49, 99,198,104, 18, 18, 18,144,145,145,129,163, 71,143,118, 42, 95,190,188, +221,210,229,171,136, 82,203, 71,124,186, 22,241,233, 90,136,172,156,177,239,224, 97,158,175,175,111, 63,129, 64,208,176, 36,145, +181,107,215,174,129,189,123,247, 86, 44, 95,190, 60,245,200,145, 35,235, 41,165,166, 23,228,217,234,213,171,247,239,219,183, 47, +107,234,212,169,246,203,150, 45,155, 76, 8,153,245, 30, 27,139,150,189,123,247,246, 99, 89, 22, 7, 14, 28,120, 68, 41,253,225, +240,225,195,119,212,106, 53,250,244,233,227,147,215,141,100, 14, 79,221,126,253,250,125,217,180,105, 83,124,245,213, 87,218,115, +231,206,213,161,148,174,162,148,134,211, 55,136,160,148,174,185,116,233, 82,205,241,227,199,171,235,213,171,135,193,131, 7, 15, + 37,132, 52, 45,129,183, 81,223,190,125,253, 89,150,197,222,189,123, 31,154,136, 44,227,117, 60,127,240,224,193,155, 26,141, 6, +253,251,247,175, 64, 8,249,212,130,178, 11,197, 98,241,129,111,191,253,214, 54, 38, 38, 6, 3, 7, 14, 84, 63,123,246, 12,243, +231,207,151,218,216,216,156, 52, 62, 3,150, 64, 44, 22,111,254,233,167,159,186, 84,175, 94, 29, 99,198,140,209,108,216,176, 97, +194,151, 95,126,169,169, 83,167, 14,214,175, 95,223, 69, 36, 18, 89, 52,181, 72,108,108,108,122,112,112,176, 67, 73, 75,116,116, +116,130,153,101,150, 41, 20,138, 27,129,129,129,153,213,170, 85,251, 68,175,215, 35, 56, 56,248,213,142, 29, 59,216,106,213,170, + 97,221,186,117, 88,182,108, 25, 58,118,236, 8, 30,143,215,195,146,188, 42,149, 74, 72, 36, 18, 8,133, 66, 4, 5, 5, 65,173, + 86, 67, 38,147, 65, 34,145,128,199,227,193,214,214, 22, 10,133, 2, 48,115, 52, 26, 33,160,153, 57, 58, 8, 4, 12,248, 12,139, +144,136, 12,104,117, 44, 36, 66, 30, 4,124, 2, 80, 22,182,114, 1, 36, 34, 30, 24, 66, 88, 51, 57,145,161,212, 66, 36,100, 32, + 16,138, 8,163, 55, 72,243, 95,142,124,131, 84, 42, 21, 17, 71,107, 49, 36,194,127,209,180,192,228, 77,125, 13, 1, 4,114, 47, +175, 94, 43, 86,174, 20,101,102,103,163,123,247,238,169,225,119,238,236, 84, 1,119,154,151, 80,167, 12,159, 95,165, 69,243,230, + 8,186,119, 15, 89,105,105, 47,129, 55,206,241, 34,119,247,222,171, 87,175, 22,169,114,115,209,189, 91,183,244, 23, 87,175,238, +138,202,198,113,115, 68, 22, 0,240,132, 66, 87, 35,111, 70, 90, 90, 26,240, 38,132,132,139,147,213,210,177,253,218, 34, 43, 39, + 23,211,190,223,201,222, 11,137, 27,119, 37, 26, 29, 14,199, 34,227, 99,122, 7, 19, 66, 70,154, 46,102, 89,180,140, 86, 39,115, +196,138, 90,173,126,231, 2,168,172,156,133,137,196,178,114,254, 27,193,231,243,115,159, 63,127, 46,178,118,112,103, 29, 20,130, +180,242, 67,175,218, 0,128,189, 21, 63, 67,107,208,177,177,177,177, 16,139,197,185,230,112,229,230,230,142, 32,132, 44, 2, 16, +192,231,243,143,111,219,182,141,236,220,185,211,174,111,223,190,161,132,144,152,192,192, 64,239,109,219,182, 89, 3,192,154, 53, +107,232,190,125,251,218,226, 77,200,140, 34, 77,202,241,241,241,243, 5, 2,193,245,177, 99,199,174, 21,137, 68,118,114,185,220, +225,202,149, 43, 36, 87, 75, 81,119, 86, 68,254, 72, 68,107, 41,131,203, 51,173, 49,114,228, 72,222,211,167, 79,151, 0, 56, 94, + 12,231,116,177, 88,124,229,197,139, 23,171,108, 60,107, 57,201,189,103,217,212,159,249, 12, 0,224,237, 40, 0,147,215, 46,166, +167,167, 35, 41, 41, 9, 95,126,249,165, 93,104,104,232,116, 0, 23,138,226,140,142,142,190, 36, 22,139,163,159, 60,121,210, 66, + 32, 16,136,228,114,121,221, 27, 55,110,144, 92, 13,139, 26,211, 35,144,154,253, 38,159,246, 86,124,220,253,214, 5,227,198,141, +227,191,124,249,242,123, 0, 77, 10,109,204, 24,102,153,169,200,154, 54,109,218, 3, 0, 21, 8, 33,111,117,141, 26, 12, 6,210, +191,127,255,199, 0,170, 77,157, 58,213,158, 82, 58,153, 16,146, 74, 41,221,244, 79,223, 75,214,214,214, 75, 71,141, 26,133,125, +251,246, 33, 45, 45,109, 53, 0,100,102,102,254,176,123,247,238,189, 35, 70,140,192,175,191,254,186,148, 16,242,187, 25, 86,173, +207,251,244,233,131, 83,167, 78,225,143, 63,254,248,134, 82, 26, 92,196, 51,250,130, 16, 50,253,200,145, 35, 63,246,237,219, 23, +191,252,242, 75, 59, 0,197, 57,200,182,110,219,182, 45, 78,158, 60,137,148,148,148,245,133,237,144,158,158,190,225,232,209,163, + 13,218,182,109,139, 37, 75,150,180, 6,112,222,140, 6,210,223,198,198,102,219,143, 63,254, 88,183,122,245,234,232,215,175, 95, +174, 86,171,109, 55,117,234,212, 99,123,246,236, 81,236,216,177,227,147,145, 35, 71,222, 34,132, 12,167,148,222, 52,235,165,195, +227,125,183,118,237,218, 97, 45, 90,180,192,228,201,147,245,167, 79,159,238, 76, 41, 61, 67, 8, 9,157, 54,109,218,137,149, 43, + 87,242, 86,172, 88, 49,140,199,227, 37, 25, 12,134,247, 37,174,191, 93,179,102, 77,131, 54,109,218,224,213,171, 87,184,121,243, + 38,180, 90,237,175, 55,110,220,184, 92,185,114,229,111, 53, 26,205, 49,185, 92, 62, 72,161, 80, 4,214,170, 85,235, 83, 66,136, +204, 28, 63, 61, 66, 72,122,104,104,168,220,217,217, 25, 2,129, 0, 15, 31, 62,132,179,179, 51, 0, 32, 49, 49, 17,213,170, 85, + 3,143,199, 67,122,122, 58, 0,243, 94,182,132, 48,143, 66,195, 99, 43,216, 43,228,128, 65,130,251,207,162,225,228,104, 7, 3, + 97, 16, 31, 31,135, 90,126,158, 32,132, 32, 61, 37, 30,132,144,199,230,112, 26, 40, 27, 20, 25,155,232,225,160, 16,163,122,131, + 54, 14, 55,126, 79,218,105, 83,177,201, 72, 62,143,240,196, 18,235, 77,195, 6, 15,118,100, 89,138,244,148, 4,240, 25,230,246, +251,184, 64, 7, 34, 17,213,188,162,228,126,155, 97,139,106, 17, 10,170,210, 98,199, 47, 9, 72,147, 1,181,214,204,158,109,235, +224,232,136,126,253,250,177, 41, 49, 49,231,114, 0,179, 2, 43, 87,168, 92,217,197, 74,161,192,181,107,215,192, 3,194, 0, 96, + 43,224,191,108,218, 52, 7,103, 87, 87, 12, 29, 54,140, 77,136,140, 60,175, 50,163, 75,247, 45,222,138, 21, 5, 70, 94, 38,143, + 55,142,135, 9, 83, 59, 55, 21,203,165, 98,124,183,241, 48,162,146,149,123,111,196, 97,227,199,104,236, 40,209,162, 85,148,243, +217, 27,167,106, 89,177, 98, 69, 34,145,228, 91, 83, 44,248,210,123,231,156, 37,225,239,224,124,143,202,121, 38, 33,228, 8, 33, +100,102, 84, 84, 84,200,176, 97,195,180,122,173, 58,235,250,162, 10, 51,238, 45, 41, 63,230,198,124,183, 49,191, 77,176,153,145, +147,145,154,181,102,205, 26, 93, 84, 84, 84,136,233, 49, 37,220, 44,145,148,210,147,219,183,111,223,112,224,192, 1, 84,171, 86, + 13,193,193,193,206, 74,165,178,246,227,199,143,237,253,253,253,177,115,231, 78,236,219,183,111, 21,165,244,108,113, 34,203,196, +218,118, 46, 46, 46,206, 55, 34, 34,162,146,173,173,173,206,214,214, 22, 5, 71, 34,102,170, 88,164,164,103,192,222,222, 1,214, +214,214, 62, 37,113,170,213,234,147,113,113,113, 85, 88, 59,191,102, 85,146, 87,103, 4,125, 87, 14, 65,223,149,195,201,233,238, +112,179, 21, 33, 45, 45, 13, 73, 73, 73, 72, 74, 74, 2, 33, 4, 58,157,174,170, 25,156,175, 99, 99, 99,127,142,140,140, 60,226, +226,226, 2,133, 66, 1, 10, 32, 62, 93,135, 7, 43,252,241, 96,133, 63,226,211,117,200,204,202, 66,249,242,229,161, 80, 40,170, + 21,213,101,228,225,225,209,190,119,239,222, 10, 0,200, 19, 80,159, 81, 74,199, 20,178,140,214,235,245,141,141,251, 78,153, 50, +197, 30, 64,219,127,248,126,226, 17, 66,198,142, 24, 49,226, 19,137, 68,130,117,235,214,189, 6,176,203,216,214,111,216,176,225, + 25, 0, 76,152, 48, 33, 16,192,100, 82, 68, 36,104, 35,132, 66, 97,157,170, 85,171,226,198,141, 27, 0,112,184,132,211, 31,188, +126,253, 58, 42, 87,174, 12,137, 68, 82,183,132,125,125,202,149, 43,135,103,207,158, 1,192,253, 34,246,185,255,236,217, 51,148, + 43, 87, 14,132, 16, 31, 51,202,222,165, 77,155, 54,143, 46, 92,184, 80,183, 81,163, 70, 24, 54,108,152,230,214,173, 91,237, 41, +165,151,239,223,191,223,178,127,255,254,202, 42, 85,170,224,210,165, 75,254,253,251,247,191,206,227,241, 22,153,193, 57,116,225, +194,133, 51,187,118,237,138,133, 11, 23,210,253,251,247,247,163,148,158,201,123,190, 78,239,221,187,119,224,226,197,139,105,183, +110,221,176, 96,193,130,153,132,144, 49, 37, 88,135, 50, 12, 6, 3,148, 74,165, 89, 38,121,115,247,119,116,116,252,188, 77,155, + 54,152, 51,103, 14, 60, 60, 60,112,236,216, 49, 10,224, 56,165,244,138, 90,173,110, 70, 41, 93,169, 84, 42,127,187,113,227, 6, + 90,183,110, 45,196,219, 83,140, 20, 9,189, 94, 31,126,225,194, 5,173,131,131, 3, 60, 61, 61,225,229,229, 5,165, 82,137,244, +244,116, 84,171, 86, 13, 13, 26, 52,128, 82,169,196,241,227,199,181,233,233,233,102, 13, 88,209,107,148, 59,206,158, 56,148,225, +160, 16,195,211,217, 6,229, 61,236,145,157,158,140,164,248, 88,212,169,234,133,230,117,202, 35, 57, 67,131,211,199, 15,165,101, +101,229,236, 48,171, 23, 64,157,179,237,220,239,199, 50,236, 20, 66,248,250, 5,162,255,176, 9,181,106,213,174,127,182, 94,189, +198,167,151, 47,253,174,198,103, 13,171,146,232,228, 92,156, 58,126, 56, 45, 35, 51,115,219,251,104,235, 23, 0,188, 92,155, 42, +151,215, 31, 9,250, 57,160,221,136,159, 67,162,177, 26, 0,116, 60,158,127,251,207, 63, 71,116,116, 52, 14, 29, 56, 16,151, 3, + 60, 52,151, 79, 42,149, 50, 0,144,145,145, 1,241,155,217, 66,160, 7,252, 58,116,232,128,164,228,100,236,222,181, 43,233, 20, +112,207,146,124,118, 2, 68, 50,233, 27,131, 96, 70, 70, 6, 8,144, 9, 0,132,143,246,245,170, 85, 70, 82,106, 38, 46,220, 14, +201, 46,175,194,151,197,241,124,168,142,240,197,249,104,149,100, 15, 77,158, 60,121, 50,196, 98, 49,220,220,220,242,197,145, 81, +172,136, 68, 34,184,185,185, 65,175,215, 99,239,222,189, 0, 80,172, 15, 3, 3,168, 59,143, 89,194,170,117, 52, 71, 32, 16,188, + 19,206, 60,203,129,186,251,180, 95,216,223,175, 23, 62, 40,166, 52,156, 31, 0,234,229,197,196,170, 71, 41, 77, 11, 15, 15,143, +238,213,189,115, 70, 68,232,147,120,101,122,108, 92,102, 74, 84, 92,212,235,199,241,179,166, 79,206,136,142,142,142,202,139,165, + 85, 47, 54, 54,182, 51, 0,115,125, 13, 38,247,234,213,235,167, 17, 35, 70,208, 7, 15, 30, 0, 0,130,130,130, 48,120,240, 96, + 58,112,224,192,213, 0,102,148, 34,223, 74,149, 74,245,150, 53, 68,107, 96,243,187,252, 50, 51, 51, 17, 27, 27, 11,141, 70, 99, +182, 34,126,113,122,197,243,212,240,187,186, 64,111, 57, 2,189,229,240, 47, 39, 3,209,103,231,139,172,164,164, 36, 36, 36, 36, + 0, 64,174, 5,249,204, 84,171,213,111,229,211,180,107, 50, 51, 51, 19,241,241,241, 48, 24, 12,154, 34, 30, 58, 54, 38, 38,230, +244,190,125,251,178, 0, 96,249,242,229,169,132,144, 63, 8, 33, 63, 21,178,108,228,243,249,215,140,251,174, 88,177, 34, 21,192, +201,127, 80,100,117,173, 94,189,122,218,204,153, 51,215, 77,156, 56, 17, 27, 55,110, 68, 92, 92,220, 12, 74,169,222, 88,150,228, +228,228,105,235,215,175,199,144, 33, 67, 48,119,238,220, 21,181,107,215,206, 36,132, 20,233, 95,225,228,228,228,201,231,243,113, +239,222,189, 76, 74,233,171, 18, 26,168,248,123,247,238, 37, 16, 66,224,230,230, 86,177,184,125,237,237,237, 43, 41, 20, 10,196, +196,196, 0,121, 95,204,133, 32, 60, 54, 54,150,138, 68, 34,184,187,187, 87, 46,169,252,118,118,118,211,126,254,249,103,254,147, + 39, 79,240,217,103,159, 69, 95,186,116,169, 53,165,244, 98, 94,222,238, 5, 5, 5, 53,109,217,178,229,243,179,103,207,226,251, +239,191, 39, 53,107,214, 28, 83, 18,167,183,183,247,232,161, 67,135, 98,237,218,181,216,180,105,211, 24, 74,233,129, 2,101,222, +179,126,253,250, 9,155, 54,109,194,176, 97,195,224,227,227, 83,172,175, 74, 68, 68,196,244, 22, 45, 90, 4,189,120,241,194,172, + 25, 15,204,217,159, 16,210,178,126,253,250,149, 84, 42, 21,182,109,219,246,170, 82,165, 74,119, 14, 28, 56, 48,153, 82, 90,240, +133,253,219,161, 67,135, 48, 96,192, 0,212,172, 89,115, 27, 33,164,175, 25, 47,157,216,136,136,136,228,135, 15, 31,178, 60, 30, + 15,158,158,158,104,223,190, 61,250,244,233,131,154, 53,107, 34, 49, 49, 17,151, 47, 95,102, 67, 67, 67,147,205, 13, 92,154,252, +252,194,177,176,176,231,215,238,221,186,172,227,243, 24,120,185,217,227,139, 86,181, 48,188, 71, 99,212,241,247, 64, 68,162, 10, +231,207,159,213,133,133,189,186, 97,206,136, 67, 35,103, 72,240,195,235, 79,238, 93,213, 11,248, 4,254,126, 85, 48,103,214, 52, +187,197,243,166,219, 86,169,232,133,135,175, 51,112,246,204, 41, 93,108,116,212,133,247, 53,226,240, 18, 32,180, 18, 19, 57,143, + 97, 96, 96,196, 74, 94, 94, 32,227,106, 1, 1,190, 46,174,174, 56,113,226, 4, 24,224,169, 69,124, 86,111,122,193,179,179,179, + 97,228,171,228,231,231,231,229,237,141,147, 39, 78,128,199,178, 79,155, 91, 24, 96,244, 25, 32, 51,229, 37, 64,238,151,229,160, +168, 84,206,217,207,206, 70,142, 91, 15, 95, 66,173,163,183,119,165, 33, 7, 31, 33, 10,118, 27, 90,210,117,184,124,227,198,141, +245,126,254,249,231,214,147, 39, 79,182, 26, 52,104, 16, 36, 18, 9,114,114,114,224,233,233, 9,131,193,128,223,127,255, 29,119, +239,222,205,102, 89,246, 44, 10,132, 13, 32,132,180, 50,141,181,241,123, 40,149,190, 9,130,153, 83,239, 72,207,158,239,132, 19, + 0,172, 94,178,214, 41,229, 53, 59,215, 28,184,218,109,247,233,123,228,171,190,205,153, 58,126,229, 0, 0, 46, 46, 46,176,182, +182,182,152,243, 29, 84,250,223,206,105,218,173, 27, 23, 23,247,140, 16,146, 56, 98,196, 8,127,163,227,187, 88, 44,206,141,138, +138, 10, 49, 6, 44, 45,120, 76, 73,249,204, 27, 25,247, 37, 33,228,104, 70, 70,198,233,169, 83,167, 98,241,226,197, 56,118,236, + 88, 83, 74,233,181,210,148,157, 82,106,240,241,241, 73,191,125,251,182, 75,229,170,181, 81,193, 89,128,102,223,188, 0,165, 20, + 14, 50,138,172,244, 84,220,191,127, 15, 89, 89, 89,183, 44,201,167,187,187,123,122, 98, 98,162,163,179,179, 51, 82, 83, 83,145, +156,156,156, 47,178,210,210,210,144,154,154, 74, 9,121, 59,102, 75, 9,156,202, 74,149, 42,229,132,132,132,136, 92,202, 85, 70, + 69,103, 33,234,207,122, 6, 80, 10, 47,123, 6, 89,153,233,184,113,227, 6, 50, 50, 50, 46, 22,197,201,178,236,215,253,251,247, +231, 1, 24, 56,117,234, 84,123, 0, 53,167, 77,155,118,182,224,200, 66,129, 64,240,195,206,157, 59,171, 25,187, 24,167, 79,159, +190,138, 82,250,243, 63,117, 47, 57, 56, 56,124,125,226,196, 9,133, 86,171,197,154, 53,107,176,106,213,170,173,148,210,255, 21, +168,143, 19, 60, 30,111, 61,195, 48, 99,199,141, 27,135, 81,163, 70,201, 62,249,228,147,201, 38, 86,175,183, 56, 99, 98, 98,230, +212,169, 83,103,110, 98, 98,162, 89,142,253, 47, 94,188, 24, 89,167, 78,157, 57,137,137,137,203,138,187, 70,114,185, 92,110, 48, + 24, 16, 22, 22,150, 70, 41,205, 40,226,218,229, 86,169, 82, 37,198, 96, 48,120,202,100, 50,251,146,238,207,180,180,180,239, 62, +249,228,147,249, 9, 9, 9,103, 0, 44, 42, 24,170,132, 82,250,128, 16, 18, 56,113,226,196,241, 75,151, 46,237, 22, 31, 31,191, +183, 36,206,136,136,136,239, 90,182,108,249,205,243,231,207,183, 23,213, 5, 76, 41, 93, 71, 8,209,238,220,185,115, 76, 88, 88, +216,146,226, 56, 41,165,199, 81, 76, 87,122, 33,220,133,238,111,202,201,227,241,166, 45, 93,186,148,217,184,113, 35, 40,165, 43, +244,122,125, 81,249,124,200,227,241,118, 52,110,220,120,208,129, 3, 7, 36,129,129,129,163, 0,236, 41,233,254, 84,171,213, 55, +175, 95,191,222, 32, 60, 60,220,177,101,203,150, 66,227, 7, 74,122,122, 58,142, 31, 63,174, 13, 13, 13, 77, 86, 42,149, 55, 45, +105, 67,244,154,204,190,215,207, 31,217, 19,254,226,113,195, 22,237,186,216,105,180,158, 16,167,240,144,158, 18,143,223,143, 31, + 74, 11, 11,123,117, 35, 39, 39,189,175, 37,156, 90,117, 70,159, 27, 23,142,238,141, 14, 11,105,208,172,101,123,187, 92,141, 55, +196, 66, 6, 41, 9, 49,248,253,196,145,212,176,176,215, 87,114,117,234,193,239,171,157,231,249, 96, 17, 47,254,238,136,209,157, +106, 65,106,231,121, 95, 0,172,105, 12, 72, 29, 93, 92,132,121,207, 14,172,128, 8,115, 57, 19, 0, 81,229,188, 94,170,156,156, + 28, 8, 0,205, 16, 64,224,228,228, 36, 5,128,231,207,159, 67, 6, 68, 90,154,207,108, 64, 46, 51,225,101,128,156, 20, 62, 60, + 42, 89,203, 9, 0, 68,199,167, 64,163,195, 53,124,164, 48, 90,180, 10,115,138, 47, 41,248, 34, 11,224, 38, 33,228,222,178,101, +203,154,253,244,211, 79,205, 39, 77,154, 36,250,252,243,207,113,231,206, 29,156, 59,119, 78,163, 86,171, 47, 1,184,108, 28,174, +110, 70,102,222, 57,231,129, 55,251,245,170,231, 65,236,181,172,234,240,156,159, 78, 53, 41,239,106, 75,245, 6,150, 60,126,252, + 24,215,175, 95,183,152,243, 3,185,176, 0, 80,143, 16,114, 36, 47,233,118,193, 16, 14,121,221,133,245, 76,172, 96,165, 57,213, +125, 62,159, 79,253,252,252, 72,222,244, 52,193,101,201,119,124,124,124,191,233,211,167,159,217,127,240, 48,255,208, 56, 41, 50, +210, 51,222, 52,192, 25,233, 72, 73,136,197,249,243,231,181, 73, 73, 73,163, 44,225, 76, 74, 74,250,178,111,223,190,251,247,236, +217, 99,159,150,150,150, 47,180,210,210,210,192,178, 44,182,110,221,154,148,144,144, 48,219, 18,206,184,184,184, 97, 83,167, 78, + 61,184,123,239, 65,254,217, 25,118,200, 54, 70,159, 87,102, 32, 37, 49, 14,199,142, 29, 83, 39, 39, 39, 79, 44,230,250, 24, 8, + 33, 95,245,239,223, 31, 70,177,117,227,198,141, 9,132,144,117,198,151, 57, 33,164,194,215, 95,127,221,215,196,143,107,213, 63, + 61,234, 48, 37, 37,101,113,131, 6, 13, 86, 37, 37, 37,189,214,106,181, 7, 40,165,133, 70,233, 55, 24, 12,227, 8, 33,215,215, +173, 91,215,199,209,209,209, 37, 62, 62,126,169,165, 47,250,178,238, 31, 25, 25, 57,179, 78,157, 58,179, 18, 19, 19,151, 22,183, +223,203,151, 47,199,230,237,183,204,140,115,159, 0,112,162,132,125,244,120, 19,218,226, 7, 51,203,115, 4,192, 17, 51, 27,231, +205,239,163,253, 48, 24, 12,203,171, 87,175, 46,209,235,245,103, 75,242, 7,100, 89,118,228,164, 73,147,162,167, 76,153, 82,203, + 96, 48,152, 91, 7, 58, 0, 87, 8, 33,238,201,201,201, 62, 0,108, 1,128,207,231,167,167,167,167,151,106, 10,158,188,136,239, + 29, 29,125, 91,119, 58,176,125,237, 16,202, 26,106, 18, 66,192, 99,120, 15,178,178,115,182,153,107,201, 42,132,179,131,163,111, +235, 78, 9, 49, 17, 67, 41,107,168, 9, 16,150,207,103, 30,102,101,231,108, 73, 10, 57,251,222,166,224, 25,228, 1, 23, 30,193, +184, 51,191,124, 67, 0,160,245,208,111,107,149,183,133,149, 62, 29,233,200,107,203,227,226,226, 96, 7,164,153,203, 41, 3,244, +218, 60,159,232,180,212, 84,200, 0, 85, 28,192,203,243,187, 36, 9,241,241,176,178,128, 47,255,131, 17,208, 22,224,205, 0, 32, + 54,186,115,166,102, 42, 1,243,227, 26,126,144, 22,173,130,191,243, 5, 23,165,212,236, 5,111,230,215,251, 2,192,146,188,181, +188,132,253, 91,189, 15,206, 6,110,240,109, 85,137,132,180,247,227,167, 2,232,241, 46, 56, 45, 93,254,110, 78, 0,219, 53, 26, + 13,205,205,205,165, 57, 57, 57, 52, 59, 59,155, 2, 56, 82,200, 49, 71, 98, 99, 99,105,116,116, 52,141,140,140,164,225,225,225, + 20,192, 46, 75,243,105,109,109,253,115,207,158, 61, 13, 2,129, 96,237,187, 40,187,189,189,253,146,250,245,235,107,127,252,241, + 71,250,219,111,191,209, 45, 91,182,208,113,227,198,209,106,213,170,169,109,109,109,251,150,134,211,213,213,117,142,159,159, 95, +202,214,173, 91,233,174, 93,187,232,234,213,171,233,236,217,179, 13,158,158,158,241, 10,133,162,109,105, 56,157,157,157, 55, 55, +105,210, 68,187,121,243,102,122,246,236, 89,186,123,247,110,250,245,215, 95, 83,127,127,127,181, 92, 46,239,110, 14, 39, 0, 30, +159,207, 95, 57,122,244,232,120,119,119,247, 19, 5,182,201, 2, 2, 2,238,244,239,223, 63, 22,192,244,143,229,254,228, 56, 57, + 78,142,179,236,156, 3, 61,224,222,186, 2,244,244,242, 55,148, 94,254,134,182,170, 0,182,159, 59, 60, 40,192,147, 9,133,125, +154, 55,109,186, 66, 8,244,161, 0,175,208,165,176,124, 2, 60, 9,143,215,163,113,253,250, 43,132, 64, 95,227,190, 18, 30,175, + 71,243,166, 77, 87, 8,120,188, 1, 69,242, 21,195, 73, 1,158,144,207,159,222,184, 97,195,149,124, 96,150, 49,237,211, 10,228, +233,215,237,202,209,166,222,228,229, 0,103,200,138,227, 44,162, 62, 70,190,235, 58,254,167,151,210,222, 8,252,119,125, 19,126, + 40,156,255, 34,161, 85, 57,175,219,230,136,201, 50,179,144, 99,102, 22,216,103, 59,128,202,165,172, 79,233,187, 44, 59,128,234, +142,142,142,167, 42, 87,174,156, 84,190,124,249, 88, 59, 59,187, 61, 0, 60,203,200, 25,232,234,234,250,171,139,139,203, 11, 55, + 55,183,135,142,142,142, 63, 0,112, 42, 11,167, 64, 32,168,239,226,226,114,209,199,199, 39,221,219,219, 59,193,209,209,113, 47, + 0, 23, 75, 57, 1,184,161,144, 70, 5,128, 16,128, 27,247,210,225, 56, 57, 78,142,179,160,128,105, 83, 17, 75, 91, 87,128,190, +117, 5, 24,218,248,224, 7, 83,129,210, 17,144,150, 86, 20, 13, 6,196, 5,247, 47,145,175, 4, 78, 10,240, 26, 1, 86, 5,143, +105,239,137, 0,115, 56, 63,100,161,101,204,103, 94, 59, 63,210, 52,223,252,210,152,200,140, 78,178,239,184, 27,236,131,224,252, + 23,117, 27,190, 4, 74, 14,246,102, 26, 65,254, 29,156, 83,245,142,203,240, 8,192,231,239,152,243, 9,128,129,239,146, 83,171, +213,222,130,153,243,190,149,144,183,184, 98,124,225,226,192,129, 3, 7, 14,111, 55, 14,134,211,192,140,214,190,100, 13,223, 0, +230,212, 43, 26, 99,186,249,216,159,129,143, 45,226, 4,128,109,133, 76,207, 83, 42, 62, 19, 78, 0,184, 6,252,101,118,135, 19, +101,116, 55,249,192,222,205,113, 0, 54, 91, 20, 71,139, 3, 7, 14, 28, 56,112,224,240,254,112,246, 57,229, 62,196,254,253, 56, + 81, 96,142,195,124,191, 79, 2,160, 85, 17,170,204,236,145, 20,132,144, 86,165, 80,125,231, 56, 78,142,147,227,228, 56, 57, 78, +142,147,227,252,111,113,154,112, 23, 53,176,226, 89, 1,190,247, 50, 96,228, 93,129,152, 63,109, 89, 41,200, 63,208,176, 9, 28, + 39,199,201,113,114,156, 28, 39,199,201,113,254,179,156, 31,180,152,122,219,154,245,150, 64,228,186, 14, 57,112,224,192,129, 3, + 7, 14, 28,202,128,226,172,110,156,208,226,192,129, 3, 7, 14, 28, 56,112, 40, 3, 8, 33,110,120, 51, 69,213,137,188, 53,103, +209,226,192,129, 3, 7, 14, 28, 56,112,120, 71,232, 64, 41,221, 92, 88,100,120,134,171, 27, 14, 28, 56,112,224,192,129, 3,135, +178,193,232,167,101,233, 92,135, 28, 56,112,224,192,129, 3, 7, 14, 28,138, 65,113, 62, 90,111,141, 58, 60,113,226, 4,237,208, +161, 3,225,170,140, 3, 7, 14, 28, 56,112,224,240, 62,240, 33,106, 17, 19, 11,214,137,130,193,169, 57,139, 22, 7, 14, 28, 56, +112,224,192,129, 67, 25, 96,180,104,229,117, 27,190,149,198, 9, 45, 14, 28, 56,112,224,192,129, 3,135, 50,160, 56,139, 22, 3, +188, 49,211,113,213,196,129, 3, 7, 14, 28, 56,112,120, 95,248,144,181, 8,165,116,115,222,242,151,233,146,140,163, 14, 91,228, + 21,176, 5,119,169, 57,112,224,192,129, 3, 7, 14,239, 1, 31,172, 22, 33,132,184,229,117, 27,186,253,101,219,223, 57, 5, 15, + 7, 14, 28, 56,112,224,192,129,195,199, 14, 99,252,172,194,226,104,113, 66,139, 3, 7, 14, 28, 56,112,224,192,161,140, 66,171, + 96, 90,190,131, 60, 39,180, 56,112,224,192,129, 3, 7, 14, 28,254, 30,252,173,145,225, 9, 33,173, 56, 78,142,147,227,228, 56, + 57, 78,142,147,227,228, 56, 63,118, 24, 35,194, 23,180,110,113,225, 29, 56,112,224,192,129, 3, 7, 14, 28,202, 40,178, 76,125, +179, 76,255,115,115, 29,114,224,192,129, 3, 7, 14, 28, 56,252, 77,224, 44, 90, 28, 56,112,224,192,129, 3, 7, 14,101,128,113, +196,161,233,127, 78,104,113,224,192,129, 3, 7, 14, 28, 56,188, 67,177, 85, 88, 58,215,117,200,129, 3, 7, 14, 28, 56,112,224, + 80, 6, 20,116,128, 55,253, 79, 0,180, 42, 66,153,157,179,224, 4, 22,143, 62, 40,137,159,227,228, 56, 57, 78,142,147,227,228, + 56, 57,206,143,143,179, 36,110, 75,244,199,191, 73,104, 21,229, 12, 15, 74,233,223,182, 0,104,197,113,114,156, 28, 39,199,201, +113,114,156, 28, 39,199,249, 49, 47, 0,220, 0,140, 52, 89,220,140,219, 56, 31, 45, 14, 28, 62,116, 28, 36, 60,164,249,249,128, + 82,119,240, 68,113,136,123,244, 10,243, 40, 91,102,206,132, 0,111, 72,117, 46,208, 75,146,144,240,240,117,153, 57, 57,112,224, +192,225, 35, 69,222,100,210,133,250,104,113, 66,139, 3,135, 15, 29, 73,254,190,224, 99, 9, 24,184,129,106, 67,225, 20,176, 4, +192,227, 50,115, 10,217, 69, 48, 48,158,160,218,231,112,246, 91, 10, 32,152,171,108, 14, 28, 56,112,176, 12,255,184, 51,188, 64, + 32, 72, 32,132,176, 98,177,248, 80, 97,179, 92,115,224,240,174, 64, 8,113,147, 74,165,135, 8, 33,172, 80, 40, 76,248, 40, 11, +185,179,186, 12,140,225,115,141,142,245,248,253, 81,186,115,142,218,224, 11, 70,223, 30,191,248, 90,149,137,147, 79,218,228,106, + 89,175, 93,183,115, 92,148, 26,125, 85, 80,148,141,243,207,107, 98, 43, 18,137,126, 39,132, 56,114,119,232,199,137, 0, 66, 62, +169, 43, 16, 76,169, 74,200,167,132, 16,194,213, 8, 7, 78,104,253,195,208,235,245,206, 81, 81, 81,100,203,150, 45,157,173,173, +173, 67, 5, 2,193, 76, 66,136,240,191, 82,225, 10,133,226,186,141,141, 77,130,173,173,109,130,141,141,205,189,146,210, 63, 82, + 1,228,235,236,236, 28,225,224,224,240,220, 52,221,185,102,183, 70, 85,154, 12,154,231, 24,216,181,121, 25,249,133, 2,129, 96, +166,141,141, 77,232,230,205,155, 59,135,132,132, 16,157, 78,231,252, 81, 86,102, 46,235, 2,134,215,242, 73, 92,142, 44, 46, 83, +231, 18, 20,158,163, 0,120, 45,160, 65,233, 63, 98, 50, 88, 23,128,126,250, 32, 90, 37,191,158,234,228,114,229,149,218, 26, 12, +211, 18,185,196,181,204, 13, 14,195,140, 97, 89,182,181, 80, 40,252,138,107,126, 63, 78,136, 24,166,241,245,206,157, 23, 77,175, + 81, 99,188, 63,208,169, 48,177, 69,222, 96, 66,213,170, 85, 79, 17, 66,250,188,195,182,229,123,127,127,255, 24, 66,200, 68,238, + 74,112,248,135,223,107,181,141, 31,248,121,211,240,184, 89, 44,180,122, 86, 32,141,251, 85, 36,151,122, 87, 32, 89,125, 42,146, +236,129, 21,201,213, 30, 21,200,167,165,201,144,167,167, 39, 26, 53,106,196,139,140,140,148, 78,156, 56,113,158, 88, 44, 14, 35, +132,180, 45, 13,151, 76, 38,187, 43,151,203,163, 4, 2,193, 91,121,145,203,229,119,173,172,172,162, 4, 2,193,103,166,233,214, +214,214,215,109,108,108, 18,172,173,173,239, 21, 33,132,238,218,216,216, 36, 40, 20,138,187,166,233, 2,129,224, 51,133, 66, 17, +109,109,109, 93, 48,253, 83,107,107,235,168,130,233, 69, 65, 32, 16,120, 70, 69, 69, 57, 71, 71, 71, 59,139, 68, 34, 23,211,244, +200,200, 72,231,168,168,168,183,210, 45,129, 64, 32,248,212,202,202, 42, 74, 46,151,223, 45, 44,189, 96,153,138,130, 73,221,125, +106, 78,186,165, 34,171, 77,155, 54, 87,227,226,226,188,108,109,109,109, 77,183,217,219,216,182,253,117,235,250,201, 93,218,183, + 25,227, 28,240, 69,245, 82,242,183, 21,139,197, 97,147, 38, 77,154, 23, 29, 29, 45,173, 95,191, 62, 79, 40,252, 72,117,252,193, + 0, 33, 8,219,140,165,212,233,105, 76,174, 83,135,206, 61,249,247,163, 84, 78, 58,131,193, 30,224,181,192,246,242,226, 82,113, +242,117, 77, 89, 74, 93,254, 8, 23, 56,181,236, 53,158,119, 62,156,239,164, 51, 24, 28,192,160,121,169, 56,255,188, 54, 2, 30, +143, 55,121,229,202,149, 12,128,113,132, 16,209,127,169, 33,174,239, 65, 60, 62,171,204,191, 93,199,157, 52,126,135,141,123,160, + 92, 46,191, 75, 8,241,253,183,148, 83,195,178,207,246,190,126,125,122, 64,165, 74, 29,167,215,168, 49,164,160,216,202,251, 61, +125,233,210,165, 3,159, 60,121,226, 84,161, 66,133, 81,132, 16,230, 29,212,197,234,165, 75,151, 78,123,242,228,137,187,143,143, +207,130,119,193,201,225,223,165,225, 1,180, 4,208, 1,192,103, 0,234,229,253,174,155,183,116,192,155, 40, 10,166,235,186,121, +199, 26,183,215, 47,130,163, 67, 33,199,213, 53, 73, 55,253, 95,240,183, 17,181,243,214, 29,242, 70, 27,118,200,223, 66, 41,197, +241,227,199,169,233,186,224,210,219, 7,243,199, 55,242,200,121,122,108, 55,205,142,122, 77,211, 66,238,211,251,155,191,163,227, +235, 58,229,244,171,128,239, 45,244,204,167,148, 82,186,107,215, 46,122,254,252,121,154,158,158, 78,131,131,131,105,189,122,245, + 84, 50,153,236, 15, 0, 62,150,240, 41, 20,138,132, 63,254,248,131,182,105,211, 38,195,202,202,106, 5, 0,134, 82, 10,107,107, +235,132,107,215,174,209, 54,109,218,100, 40, 20,138,213, 0,120,148, 82,116,239,222, 61,145, 82, 74,157,156,156, 98, 11,227,235, +210,165, 75, 26,165,148,218,216,216, 36,228,229,151,167, 80, 40, 86,143, 29, 59, 54,251,206,157, 59,212,206,206,206,152,206, 88, + 91, 91,175, 24, 55,110, 92,118, 80, 80, 80,126,122, 73,139,189,189,125,148,193, 96,160,199,142, 29,163,206,206,206,249,121,176, +179,179,139, 50, 24, 12,244,200,145, 35, 69,230,173,152, 58,101,172,172,172,150, 15, 24, 48, 32, 43, 60, 60,156, 58, 56, 56, 36, +152,164,175, 24, 52,104, 80, 86,100,100, 36,117,116,116, 52, 43,143, 14, 14, 14, 9,215,175, 95,167,221,186,117,203, 52,173, 83, + 7, 7,135,132, 27, 55,110, 24,211,151, 27,211,139, 91,220,221,221, 71, 57, 59, 59,199, 58, 59, 59,199,218,218,218, 46,118,115, +115,139, 79, 74, 74,162,148, 82, 90,177, 98,197, 68, 74, 41,156,106,124,209,168,114,227,129,243,156, 3, 59, 79,218,120,224,198, +173,203,143, 83,146,106,180, 30,179,220,166, 70, 23, 27, 11,234,192, 71, 34,145,252,209,172, 89, 51, 85,120,120, 56,205,206,206, +166,119,239,222,165, 87,174, 92,161, 79,159, 62,165,121,247,221,199, 53,210,101,125,128, 39,221,228,183, 55,120,174, 87,200,229, +165,237,116, 52,252, 60,221, 61,196, 73,119,105,146, 71, 40,253,201,255,127,116, 83,213,114,165,226,252,169,234,238,135,179,189, +158,173, 93, 48, 65, 23, 17, 17, 65,167, 12,106,167, 63, 51,222,227, 21,221,232,127,160, 84,156,127, 94,163,190, 95,124,241, 69, +118,100,100, 36, 13, 8, 8, 80,242,120,188, 97,255,149, 17, 73,245,220,225,209,202, 87, 20,243,112,215, 20,182, 83,160, 44,165, +182, 27, 26,191,131, 81, 78,129,206,206,206,201,219,183,111,167, 10,133, 34, 17,128,239,191,100,244, 21,241, 7, 58,239,168, 81, +227, 8,219,163,135, 97, 71,141, 26, 71,252,129,206,120, 19, 78,136, 0,152,177,108,217,178, 32,157, 78, 23,180,109,219,182,160, +206,157, 59, 7, 1,152, 82,198,115,254,248,253,247,223, 83,157, 78, 71,183,109,219, 70, 59,119,238, 76, 1,172, 49,247,120, 43, + 43,171,202,213,171, 87,223, 25, 16, 16, 16, 89,179,102, 77, 77,213,170, 85,115,125,125,125,195, 3, 3, 3,183,139,197, 98, 31, +110, 84,221, 63,179,148,160, 69,234,205,152, 49, 99, 38, 0, 58, 99,198,140,153,148,210, 14,121,237,122, 7,211,223, 5,215,148, +210, 86,166,255, 11,227, 48, 46,133,113, 22,118,142, 2,191, 11,142, 58,116,203,251, 63, 50,127,155,177, 80,199,143, 31,111,126, +252,248,241, 75, 5, 11,215,179, 2, 26,141,111,228,161, 82, 37,197,209,199,223,125, 69, 47,180,244,164,215, 90,184,210,231,147, +191,160,113,187, 86,211, 47,107,217,229,244,168,128,150,150, 10,173, 67,135, 14,209, 35, 71,142,208,147, 39, 79,210,199,143, 31, +211,148,148, 20,186,107,215, 46,131,131,131,131, 74, 44, 22, 47, 5, 32, 53,135,207,218,218, 58,129, 82, 74,213,106, 53, 93,188, +120,113,174, 66,161,184, 7,192, 37, 79, 40,209,244,244,116,186,116,233,210, 92, 27, 27,155,135, 0,220, 29, 29, 29,163, 94,191, +126, 77, 93, 92, 92, 10, 21, 51,118,118,118, 9,207,158, 61,163,118,118,118, 9, 0, 60,236,236,236, 30, 31, 61,122, 84, 75, 41, +165,209,209,209,212,222,222, 62, 1,128,139,131,131,195,253,227,199,143,107, 41,165, 52, 54, 54,150,218,219,219,155, 45,180, 84, + 42, 21, 61,115,230,204, 91,121, 48,166,159, 58,117,234, 45, 1,102, 70,125,186,216,216,216, 4,237,219,183, 79, 99, 48, 24,232, +227,199,143,169,141,141, 77, 2, 0, 23, 91, 91,219,123, 7, 14, 28,208, 24, 12, 6, 26, 18, 18, 98,182, 24, 44, 95,190,124, 34, +165,148,234,245,122,186,113,227, 70,181,177, 78,141,233, 26,141,134,110,216,176, 65,109,109,109, 29, 4,192,165, 56, 46, 71, 71, +199, 88,141, 70, 67,211,211,211,105,253,250,245,179,175, 93,187, 70, 51, 51, 51, 41,165,148,230,241,193,175,249,176,111,111,189, +200,206, 28, 58,109,253,126,159,122,253,190, 59,125, 59, 38,250,231,223,238, 6, 57, 6,118,105,103, 70,249,165, 66,161,112,169, +155,155, 91,238,249,243,231, 13, 26,141,134,190,124,249,146, 94,191,126,157,222,188,121,147,222,189,123,151, 62,126,252,248,227, + 19, 90, 7,192,163,155,252,186,208, 77,126, 65,219, 7, 56, 38,103,221,219, 67,233,217,137,244,213,183, 21,232,220,118,138, 44, +118,147, 95, 16,221,228,223,131,206,111,206,183,136,115,115,213, 78,116,147, 95,208,247, 61,189, 83,238, 7,221,161,151, 46, 93, +162, 27, 86, 47,163,227, 91,121, 40,217, 77,126, 65,244,167,170,221, 44,226, 52, 89,196, 98,241,139,171, 87,175,210,203,151, 47, +211, 5, 11, 22, 80,153, 76, 22, 89,246,122,168, 42,164, 63,249,122,211, 45,190,205,233,214, 42,110,244, 98,233,242,246,119,139, +172,214,190,162,232,228,251,191, 81,154,250,146,198,175, 8,160,237,252, 4,101, 18, 91,121, 34, 43, 41, 60, 60,156,198,199,199, +211, 85,171, 86, 81,107,107,235,127,181,216,242, 3,186, 0,152,185,124,249,242,124,145,181,126,253,250,160, 71,143, 30, 5,121, +121,121,157, 44,195,185,214, 44, 95,190, 60, 95,100,173, 95,191,158, 62,122,244,136,122,123,123, 71,149,116,236,128, 1, 3,100, +141, 26, 53, 10,234,223,191,127,206,246,237,219,105,120,120, 56,125,248,240, 33, 93,190,124, 57,157, 55,111, 30,253,229,151, 95, +104,183,110,221,148,245,235,215,191,213,163, 71, 15,137,133,121,227, 83, 74, 69,121,139,128, 82,106, 20,154,124, 0, 2,227,199, + 63,183,188, 45,180,138,210, 34, 69,137,169,162, 4, 86,193,109,197, 8,177, 98, 5, 91, 73,231, 43, 40,170, 10, 91, 76, 77,171, + 23, 59,116,232,240, 23,223, 24, 62,197,194,145, 95,127, 43, 9,219,190, 10, 9,251,214,129,151,158, 0, 65, 86, 10,212, 87, 79, + 64,119,245, 40, 6, 54,108, 40,149, 18,178,200, 82, 27,160, 68, 34,129, 84, 42,133, 88, 44, 70,122,122, 58, 94,189,122,133, 70, +141, 26, 49,119,239,222,149,140, 28, 57,114,162, 84, 42,141, 36,132,116, 53,195, 92, 12, 0,184,126,253, 58, 70,140, 24, 33,222, +185,115,103, 77, 39, 39,167, 7, 6,131, 65, 4, 0, 33, 33, 33,232,221,187,183,120,207,158, 61,213,220,221,221,239,105,181, 90, +153, 88, 44, 6,143,199, 43,146, 79, 36, 18, 65,167,211,137,171, 84,169,242,240,193,131, 7,129, 29, 59,118, 20, 68, 68, 68,224, +245,235,215,208,233,116, 34, 95, 95,223, 71,247,238,221,171,217,161, 67, 7, 65, 84, 84, 20, 34, 34, 34, 96,174,207, 39, 33, 4, + 26,141, 6, 98,177, 24, 12,195,188,149,174, 86,171, 33, 18,137,204,230, 18, 8, 4,159,250,251,251, 63,122,240,224, 65,237, 46, + 93,186, 8,239,220,185,131,232,232,104, 24, 12, 6, 81,213,170, 85, 31, 61,120,240,160, 86,231,206,157,133, 15, 31, 62, 68, 66, + 66,194, 91,231, 43,193,143, 6, 0,240,224,193, 3,244,239,223, 95,244,251,239,191,215,114,115,115,123,168,215,235, 69, 0,240, +232,209, 35,244,238,221, 91,116,250,244,233,218,229,202,149,123, 88, 66, 87, 34, 15, 0,116, 58, 29, 70,141, 26, 37,183,182,182, + 70, 84, 84, 20, 88,150,133,193, 96, 0, 0,164,164,165, 60,122,240,232,113,200,192,190, 61,155,171,180,106,245,141,219,119,159, + 86, 44,239,237, 73, 8, 45, 95, 66, 93,118,149,201,100,145,223,127,255,253,164,176,176, 48,177,159,159, 31,243,240,225, 67,164, +167,167, 67, 36, 18, 65, 34,145, 64, 44, 22, 67, 32, 16,124,124, 70,244,204, 0, 7,176,104, 29,145,164, 17,139,109, 61, 21, 86, +110,190, 64,228,101, 84,112, 18,131,199,240, 36,119, 94,231,200, 1,218, 26, 94,201, 14,150,113,178,173, 95, 39,106,196, 58,251, +106, 86,238,158, 94, 72, 73, 73, 65,185,138,254,200, 21, 57,137,174,191, 84, 90,129, 88,200,249,231,181,106, 90,165, 74, 21,215, +202,149, 43, 35, 57, 57, 25,181,107,215,134,157,157,157, 29, 33,164,117,169,235, 96,123,121, 49, 50,209, 24, 96, 86,192, 64, 22, + 64,199, 95,130,151, 73,181,177,185,206,191,230,130,215,247, 32, 30,214, 86,162,155,123,246,238,243,112,240,170, 10,156, 24, 10, + 23, 91, 49,182,142,169,109,239,100, 35, 62, 82,154,110, 68, 66, 72,160,139,139,203,249, 91,183,110, 57, 74, 36, 18,220,187,119, + 15, 1, 1, 1, 88,181,106,149,147,157,157,221,229,127, 67, 55, 34,165,148,134, 0,199,190,127,248,112,219,206,208,208,227, 3, + 42, 85,234,216,223,215,119,241,232, 62,125,134, 77,152, 48, 1,203,150, 45,195,145, 35, 71,208,184,113, 99,140, 28, 57, 82, 23, + 25, 25,185,163,148,221,133,235, 86,172, 88, 49,126,226,196,137, 5, 57,181, 17, 17, 17,223, 23,119,108, 96, 96,160,231,139, 23, + 47, 98, 38, 79,158, 92,123,231,206,157, 82,153, 76,134,244,244,116,108,217,178, 5, 51,103,206, 4, 33, 4,148, 82,252,242,203, + 47,178, 33, 67,134,212, 11, 13, 13,141, 41, 95,190,188, 57,110, 29, 4,128, 4,128, 44,111,145, 3,144,237,217,179,199,166, 75, +151, 46,214,121,105, 82, 0, 82, 66,136, 24, 28, 10,162, 80, 45, 98,114,205,143, 23,184,215, 58, 22, 76, 43,184,141, 82,218,177, + 56, 14, 11,239,237,194,206,119,162, 96,100,248,183,222,169, 38,191, 91,156, 56,113,226,210, 95, 72,129, 26,174, 62,126,200, 56, +123, 0, 82, 62,129,148,151,183,240, 9,152, 87,143, 80, 78, 34,128,142,210,192,210, 8, 45,163,216,146, 74,165, 16, 10,133,200, +206,206,134, 78,167,195,172, 89,179,196,103,207,158,117, 96, 24,230,127, 37,241,152, 10,166,231,207,159,163,106,213,170,228,216, +177, 99, 46,227,198,141,147, 2,128, 72, 36, 66, 70, 70, 6, 42, 87,174, 76, 78,157, 58,229, 60,123,246,108,171,226,196, 12, 33, + 4, 66,161, 16, 19, 39, 78,148,222,190,125,219,222,221,221, 29,175, 94,189, 66,106,106, 42,172,172,172, 48,113,226, 68,233,173, + 91,183,156,220,221,221, 17, 30, 30,142,140,140, 12, 88, 89, 89, 89, 44,180,132, 66,225, 91,199, 16, 66,160,213,106, 33, 18,137, +204, 22, 68, 54, 54, 54,187,131,130,130,156,108,108,108,240,240,225, 67,232,245,122,216,216,216, 96,252,248,241,210,160,160, 32, + 39, 91, 91, 91,132,132,132, 24, 45,127, 22,229, 17, 0, 88,150, 69, 72, 72, 8,202,151, 47,143,203,151, 47, 59,143, 30, 61, 90, + 98, 76,127,249,242, 37, 60, 61, 61,113,249,242,101,103,185, 92,190,187, 40, 46,150,101, 17, 23, 23,135, 39, 79,158,224,213,171, + 87, 72, 74, 74, 66,114,114, 50,178,178,178,160,215,235,223,248,217,101,101,158,216,179,255,216, 3,169, 84, 42, 11,240,173,226, +245,232,113,112,162, 84, 42,149,121,123,121,249, 18,178,128, 41, 38,159,255, 11, 13, 13,117, 24, 50,100,136,240,197,139, 23,136, +141,141,133, 64, 32,200,191,183,140,139, 88,252,145,181,101,132, 16, 16, 77, 21, 16, 82,251,230, 43,165,125,211,142,125,133,120, +253, 59,192,234, 0,134,143, 22, 53, 60,249, 71, 30, 41, 93, 64, 81, 3,106,248, 3,102, 92,120, 66, 8,160,173, 12,144, 79,206, +188,208, 59, 52,254, 98,140, 48, 38, 38, 6, 66,161, 16, 98,177, 24,181, 63,237,206,223,243, 64,231, 10,130,154,208,194,207, 44, + 78, 19, 72,165,210,111,230,205,155, 39, 55,229, 28, 54,108,152,220,198,198,102, 94,169, 69,150, 82,214, 16,122, 58,241, 73, 76, + 78,249,197, 39,226,171,134, 38,170,252, 64,233,100, 64, 87,171,172, 98,139, 16,210, 66, 34,145,188, 38,132, 52, 41,147,200, 82, +136,110,236,221,187,207,195,190,220, 27,145, 5,125, 46, 32,144,194,213,201, 22, 91, 39,181,180,119,178,149, 90, 36,182,242, 68, +214, 31, 55,111,222,116,148, 72, 36, 8, 10, 10,130, 80, 40,132, 68, 34, 65,245,234,213,177,105,211, 38, 39,123,123,251,127,149, +216, 90,250,240,225,246, 37, 79,158, 60,159, 17, 24,232,223, 85, 46,183, 31,219,191,191,205,236,217,179,143, 31, 61,122,116, 91, +135, 14, 29,146,111,223,190,253, 3,165,244,128,133,215,135, 16, 66,214,175, 92,185,114,172, 81,184,205,158, 61,251,151,163, 71, +143, 46,233,208,161, 67,220,237,219,183, 39, 83, 74,215, 23,199,145,157,157,125,116,206,156, 57, 54, 95,124,241,133,241, 63,174, + 94,189,138, 29, 59,118, 64, 46,151,191,181,111,231,206,157, 49, 98,196, 8, 59,141, 70, 83,236, 59,201,197,197,229,179,155, 55, +111, 6, 0, 16, 2, 16, 27,133,214,227,199,143,109, 51, 51, 51,109,173,172,172,108,221,220,220, 20, 70,177,245,197, 23, 95,216, + 10, 4,130, 38,224,128,146,180,136,169,208, 49, 39,173,180,251,155, 43,182, 10,252,143, 43,106,158,195,183,132, 86,135, 14, 29, + 46, 1,104, 86,216, 78,218,212, 4,136, 97,128,148, 71, 32,227,153,136, 45,176,224,103, 36,162, 52, 3,120, 11,190, 12,165, 82, + 41, 36, 18, 9, 4, 2, 1,116, 58, 29, 50, 50, 50, 44, 18, 5,214,214,214,176,178,178,130, 74,165,130, 94,175,135, 68, 34, 49, +138, 17, 88, 91, 91, 67, 32, 16,228,191,132, 11, 90,147, 10, 90,115,132, 66, 33,228,114, 57,226,226,226, 16, 17, 17, 1,150,101, + 97,101,101, 5,185, 92, 14,145, 72,132,216,216, 88,196,198,198,130, 82, 10,185, 92, 14,185, 92,110,182, 56, 2, 0,131,193, 0, +145,232,175,126,192, 58,157,206, 34,139,150, 94,175,199,211,167, 79, 17, 25, 25, 9,137, 68,146, 95, 86,177, 88,140,151, 47, 95, + 34, 62, 62, 30, 50,153, 12,214,214,214,176,177,177, 49,155,215, 88, 22,133, 66, 1,169, 84,138,180,180, 52,228,228,228,228,215, +169,181,181, 53,228,114, 57, 50, 50, 50,144,152,152, 88,108,217, 13, 6, 3, 98, 99, 99,145,148,148,132,168,168, 40, 36, 39, 39, +231,139, 45,150, 45,123,252,203,203,151, 47,227,213,171, 87,198,174,169,252,235,107,186, 54,230,251,163,193,134, 64, 27,232, 4, +109,146,179,117,226, 36,173,208,198, 37,176, 21,240,250, 20,192,240, 1,137, 29, 26, 84,171,128,136, 52,131,252, 89,130, 70, 2, +130,182, 88,239,107,103, 22,167, 65,208, 58, 41, 75, 39, 14,215, 58, 89, 87,173, 81, 7, 9, 9, 9, 16,139,197, 16,139,197,248, +164,113, 43,188, 78, 49,200,130, 99, 84, 50, 80,180, 49,139,243,207,103,180,162,149,149, 85,195, 38, 77,154, 16, 83,206,246,237, +219,131, 16, 82,157, 16,226,111, 81,249,215, 86, 18, 65, 43,107, 0, 62,157, 24, 28,151,227,126,228,113,174,111,167,174,221,237, +127, 60,151, 88,245,105,188,218, 7, 84,247, 53,168,182, 78,105,197, 22, 33,164,185, 66,161, 56,190,118,237, 90, 31,137, 68,114, +138, 16,210,180, 52, 60, 86, 82,222,198,111,198,246,245,176, 51,138, 44, 93, 14,192,151, 2, 2, 41,192,151,194,213,217, 17,139, + 70,180,182,151, 73, 4,135, 44, 16,172,123,214,175, 95,239, 84, 80,100, 25,151,218,181,107, 99,238,220,185, 78,246,246,246,187, +223,243,183, 64, 27, 91, 91,219,157,173, 90,181,186, 25,171, 80,140,136,171, 83, 71,244,135,141, 77,198,103, 25, 25, 54,222,143, + 31,107,253,128, 71, 0, 54, 68, 69, 69,181, 51, 87,100, 17, 66,250,216,216,216, 4,181,106,213, 74,171, 80, 40, 34, 87,173, 90, +245,229,184,113,227,176,108,217, 50,204,153, 51,103, 11,128,225,148,210, 89, 81, 81, 81,238, 37,137, 44, 0,136,143,143,239, 55, +125,250,244,228,228,228,100, 0, 64,245,234,213,145,158,158,142, 41, 83,166,224,171,175,190, 2, 0,212,170, 85, 11,148, 82, 36, + 36, 36, 96,197,138, 21, 9,241,241,241,131, 75,104,219,163, 14, 28, 56, 80, 79,171,213,122,230,117, 15,138,211,211,211,173, 83, + 83, 83, 21, 90,173, 86,206,178,172,220,214,214,214, 10,128,108,224,192,129,252,224,224,224,170,122,189, 62,134,211, 86,127,162, + 56, 45, 82, 74,156, 40,139,229,170, 48,139, 88, 17,247,103,241, 22,173, 14, 29, 58, 16,211,245, 91, 22, 35,130,135,145,119, 47, +195, 62,176,206, 91,214, 44, 25,143, 64,106,109,131,215, 81, 17, 16,130, 60,177,180, 16, 70, 97, 85, 80,108,101,100,100, 96,204, +152, 49,170, 94,189,122,165,176, 44,219,221, 92, 81, 96, 99, 99, 3, 27, 27, 27, 4, 7, 7,211,110,221,186, 37,172, 90,181, 74, +101, 42,180,158, 63,127, 78,219,180,105,147, 56,111,222,188,236,226,132,150,209,162,181,116,233, 82, 85,139, 22, 45,146,158, 60, +121, 66,141, 98,202,202,202, 10, 43, 86,172, 80,181,108,217, 50,225,206,157, 59,212,152,102,137, 69,139, 97,152,124,161,101,122, + 12,195, 48, 96, 89,214, 34,161,165, 84, 42,251,117,232,208, 33, 33, 36, 36,132, 26,203,105, 99, 99,131, 85,171, 86,169, 90,183, +110,157,240,228,201, 19,106, 76,179,182,182, 54, 91, 12, 26,207,175, 80, 40, 96,109,109,141,224,224, 96,218,166, 77,155,132, 53, +107,214,228,154,166, 63,125,250,148,118,238,220, 57, 33, 43, 43,171, 95,113, 22,173, 87,175, 94,229, 91,176,114,115,115,145,156, +156,140,168,168,168,252,174, 67,149,220,186, 93,223, 94,157,106,170, 84,170,156,224,231, 47, 34,171, 87, 11,112, 86,169, 84, 57, + 17,145,145,207, 41,157,199, 22,243, 32,116, 31, 58,116,104,202,204,153, 51, 85,153,153,153,133,138, 44,227,250,163, 2,195,186, +130,208, 38, 87, 94,100,219,182,238,212, 91, 68,226,111, 3,218,108, 64,108, 7,136,237,192,151, 59,224,243,166,181,120,219,111, +102,186,130,178,141, 32, 20,123,150,200, 41,160, 46, 0,219,244,236,243, 92,187, 38, 61,198,139, 82, 83, 83,193,227,241,242, 69, +145, 76, 46,199,103, 93, 7, 50,191,220, 86,187, 2,180, 49, 8,207,211,220,236,138, 68,162,105,223,124,243,141, 48, 45, 45, 13, + 12,195,252,201, 41,147, 97,244,232,209, 98,107,107,235, 57,102,151,253, 96,128, 16, 2,113, 3,128,126,245, 44, 62,215,253,232, + 35,149,223,215, 75,183, 74, 3,107,213,195,168, 22,206,210,165, 39, 18, 3, 31, 68,169, 42, 0,134, 73,208,107, 62,177, 84,108, + 17, 66,154, 42, 20,138, 19,119,239,222,149,181,111,223, 30, 43, 86,172,144, 75,165,210, 83,132, 16,139, 27,126,101,182, 97,220, +194, 53,191, 38, 60,252,161, 45,160, 85,190, 17, 88, 38, 75, 98, 54,139,185, 91,207,103,232,116,180,175,185,156, 42,149,106,208, +240,225,195, 83, 14, 29, 58,244, 23,145, 37,145, 72, 16, 22, 22,134,197,139, 23,167,166,166,166, 14,126,159, 34,107,220,184,113, +139,163,163,163,253,206,158, 61,203, 79, 74, 74,114, 94,249,243,207, 25, 7, 51, 50, 82,151, 60,126,252,108, 86,181,106, 85,102, +212,168, 49,184,168,208, 15, 69,137,172,177, 99,199,238,137,142,142,174,125,238,220, 57, 65, 82, 82,146,231,216,177, 99,177,124, +249,114,204,153, 51,103, 19,128, 81, 52,207, 89,198, 92,104, 52,154,103,105,105,105, 29,219,182,109,155,158,150,150,134, 26, 53, +106,160, 83,167, 78,112,117,117,133,187,187, 59,186,116,233, 2, 95, 95, 95,164,164,164,160,111,223,190,169, 73, 73, 73,109, 41, +165,175,138,227, 76, 73, 73, 9,221,189,123,247,243,241,227,199,215,142,142,142,174, 10,192, 33, 43, 43, 75,158,149,149, 37,214, +104, 52, 82, 59, 59, 59,187, 90,181,106, 57,142, 28, 57,210,234,254,253,251, 85,163,163,163,179, 1, 68,112,242, 42, 95,100, 21, +169, 69, 0, 36,229, 9, 30, 77,129,117, 82, 9,219,204, 61,182,208,223,102,236,247,150,216, 50, 93,254, 98,209, 42, 10, 90, 96, +238,142, 3,219,115, 69, 94,149, 97,227, 87, 19, 50,137, 4, 82,145, 8, 82, 59, 7,168, 89, 22, 63,135,197,231, 40, 41,157, 99, +105,133,154,118, 27, 74, 36, 18,240,120, 60,108,216,176, 65,223,176, 97,195,220,243,231,207,175,205,201,201,241,162,148,254,102, +137, 40, 88,179,102, 77,206,196,137, 19, 31, 36, 38, 38,214,148, 72, 36, 26, 99,250,218,181,107,115, 6, 14, 28,248, 56, 58, 58, +186,182, 76, 38,203, 41,202, 63,203, 84,104,137,197, 98,117, 98, 98, 98,189, 97,195,134,133,108,216,176, 65, 41,147,201, 32,151, +203, 33, 22,139, 53,137,137,137, 53,191,252,242,203, 7,203,151, 47,207,145, 74,165,144,203,229, 22,117,203, 81, 74,255, 34,168, + 76,211,205,133, 78,167, 59,159,152,152, 88,115,226,196,137,247,127,252,241, 71,165, 81, 0,153,230,113,229,202,149, 57, 86, 86, + 86, 22, 89,180,140,251,201,229,114,172, 94,189, 58,103,252,248,241, 15, 18, 19, 19,107,138,197, 98,141, 73,186,114,220,184,113, +247, 19, 19, 19,107,234,116,186,243,197,124,225, 25, 50, 51, 51,193,231,243,241,248,241, 99,181, 80, 40, 4,195, 48,120,249,242, +101,190,208,178,183,183, 15,168, 89,189,154,255,175,123, 14, 92,146, 10,197,226,134,245, 62,169,250, 42, 60, 34,154, 82, 18, 94, +194, 23,199,111,185,185,185, 94, 87,175, 94, 93,219,182,109,219,220, 45, 91,182,232,249,124,254, 95, 94, 62, 31,159,208,130, 12, + 4,210, 23,137,106,133,132,209, 19, 60,255,237,141,200,146,216, 2, 18, 59, 64, 98, 7, 15, 15, 79,220, 14,203, 81,128,129, 8, + 6, 51, 98,136, 81, 42, 7,129,236,113, 2, 20, 2,145,148,196,199,199,231, 11, 34,227,226, 83,185, 42,238, 69,100, 91,129, 80, + 49,120,176, 36, 4, 73, 71, 7, 7, 7,126, 92, 92,220, 95, 56, 3, 2, 2,120, 58,157,206,252,208, 46,177, 6, 55,128, 29,251, + 60, 62,215,237,240, 3,165,223,164, 37,191, 72,165,134,116,224,238, 26, 4, 86,116,199,164, 30,181, 68,179,143, 38, 5,222, 9, +207,169, 8, 30, 29, 5, 54,219,201, 2,129,208, 68,161, 80,156,186,115,231,142, 76,161, 80,224,213,171, 87,168, 87,175, 30, 54, +111,222, 44,147,201,100, 39, 9, 33, 45, 44,185, 76, 55,227,105, 68,118,150,161,225,180, 3,145,241, 15,227,244,111,137,172, 36, + 37,197,240,239,143,166,167,101,230,118,191, 17, 89,244,243, 83,200, 61,127, 63, 61, 61,189,205,156, 57,115, 82,146,146,146,222, +186,199, 35, 34, 34,140,130,160, 5,165,244,201,251,186, 61,109,108,108,250, 47, 89,178, 4,119,238,220, 65,251,246,237,113,249, +242,101,164,166,166, 98,239,169, 83, 47,118,191,120, 49,203,232,179, 85, 88,232,135,162, 96,109,109,253,245,146, 37, 75,112,247, +238,221,124,206,148,148, 20, 44, 89,178, 36, 26,192, 24, 75, 69,150, 17, 9, 9, 9,183,159, 61,123,214,182, 70,141, 26, 79,215, +174, 93, 27,237,230,230,198,142, 28, 57, 18,195,135, 15,135,147,147,147, 97,245,234,213,145, 77,155, 54,125, 28, 26, 26,218, 74, +169, 84, 62, 50,227,250,208,228,228,228,235,155, 55,111,190,249,233,167,159,202, 6, 13, 26,228,116,228,200, 17,135,156,156, 28, +119,177, 88,236,172,209,104, 68, 79,159, 62,229, 29, 60,120,208, 53, 56, 56, 56, 76,165, 82,221, 46,109,222,255,131,184,147,103, +157, 58, 87, 96,125,167,132,109,230, 30, 91,212,239,146,246, 51,189,254,155, 77, 23,211, 13, 37, 46,253, 43, 98,254,232,106,138, +156,235, 3, 26,208,248,145, 77,104, 66,239,170,244,106,115,123, 58,172, 18, 81, 14, 42,101,120,135,152,152, 24,154,144,144, 64, + 83, 82, 82,232,190,125,251,168,171,171,171, 82,161, 80, 88, 28,222,193,213,213, 53, 33, 51, 51,147,214,173, 91, 55,213,201,201, + 41, 63, 20,129,155,155, 91,130, 82,169,164, 13, 26, 52, 72,117,118,118, 94,141,188, 17, 30,158,158,158, 81,148, 82,234,237,237, + 29, 91, 20,159, 94,175,167,174,174,174,198, 16, 9, 2,123,123,251,159,234,215,175,159,154,144,144, 64,221,220,220,242, 67, 39, + 56, 57, 57,173,168, 87,175,222, 91,233,102,228, 55, 42, 58, 58,154, 70, 71, 71,211,114,229,202,197,154,166, 71, 68, 68,208,136, +136, 8,234,233,233,105,113,120, 7, 39, 39,167,229, 5,243, 82,218, 60,122,121,121, 37,168, 84, 42,218,168, 81,163,183,234,212, +203,203, 43, 33, 55, 55,215,152,110, 86,120, 7,169, 84, 58, 74, 34,145,196, 74, 36,146, 88,177, 88,188,184,124,249,242,137,251, +247,239,167,171, 87,175,166, 10,133,226, 77,120,135,128,206, 13, 43, 55, 26, 60,203, 41,160,203,215,101, 9,239,160, 80, 40,254, +112,117,117, 85, 30, 60,120,144,170,213,106,170,211,233,168, 17,248,152, 70, 29,110,246,173, 76,127,242, 63, 26,186,208, 39,120, + 98, 51, 89,238,163, 69, 53, 41,253,223, 23,148,158, 28, 78,233,249,105,244,246,166,145,180,145,143,216,112,109, 74,185,231,116, +163,223, 97,179, 66, 50,108,174, 94,153,254,228,127,242,197, 2,159,224, 65, 77,221,115,127,222,176,154,222,186,117,139, 62,126, +252,152,190,122,245,138,158,252,109, 63,109, 84, 81,246,134,243, 39,255,163,150,132,121, 0,208, 88, 44, 22,103,175, 90,181,138, +222,188,121, 51,159,243,232,209,163, 84, 38,147,229, 0,102,142, 90, 6, 8,253, 41,160,171,126,131,223,149,217,173,173,178, 82, +142, 79,163,244,209,118, 74, 55, 7, 82,186,173, 62,165,251, 59, 80,122,108, 48,189,185,186, 7,109,236, 35,212,209,141,126,151, +233,166,128,214,230,230, 83, 32, 16,100, 30, 58,116,136,198,198,198,210,203,151, 47,211,187,119,239,210,144,144, 16, 26, 25, 25, + 73, 79,156, 56, 65, 5, 2, 65, 46, 0,139, 71, 53,214,119,129,119,171, 42,194,184, 7, 75, 27, 83,122,164, 47, 77,218,221,159, +118,172,166, 72,109, 80,142,255,105, 25, 70,218,213,114,112,112, 72, 62,113,226, 4, 13, 11, 11,163,151, 46, 93,162,206,206,206, +201, 0, 2,223,247,253,217,170, 85,171, 91,148,210,160,246,237,219, 7, 1,248,189, 85,171, 86, 65,175, 95,191, 14,170, 87,175, +222, 77, 20, 19,250,161, 56,206,207, 62,251, 76, 75, 41,165,237,219,183,167, 0, 98, 91,181,106, 69, 95,191,126, 77,235,213,171, +167,121, 71,163, 36,121, 0, 6, 11, 4,130,159,237,237,237, 47,216,217,217,157,231,241,120,155, 1, 12, 48,167,157, 43,134,211, + 29, 64, 0,128, 79,242,150,170,121,105,220,136,195,255,210,132,211,230,238,216,195, 7,141,135, 84, 36,151,250, 85, 64, 86,223, + 10,200, 30, 90,137, 92,237,238,131, 79, 45,157,221,219, 40,180, 82, 83, 83,233,253,251,247,105,243,230,205,149,114,185, 60, 6, + 64,219,210,204, 24,238,232,232,120,215,217,217, 57,138,207,127,187,209, 50, 73,255,204, 52,221,217,217,249,186,155,155, 91,130, +147,147,211,189,194, 56, 29, 29, 29,239,186,185,185, 37, 56, 58, 58,222, 53, 61,142,199,227,181,119,116,116,140, 41,152,206,231, +243, 63,117,118,118,142, 42,152,142, 34,102, 54,119,117,117,141,138,141,141,165, 73, 73, 73,212,203,203, 43,182,160, 0,139,143, +143,127, 75,128, 89, 50, 91,122, 81,121, 41, 42,189, 40, 78, 51,234,212,226,235,110,178,205,215,195,195, 35,113,229,202,149,212, +202,202, 42,209,116,155, 95,179,161,223,220,122,145,157, 57,124,250, 79,251,157,170,118,173, 94,154,153,226, 1,180,149,203,229, + 49, 45, 91,182, 84,190,124,249,178, 88,161,133, 15,100, 70,251,191,112, 30,168, 42,164,155,170, 54,166, 27,171,158, 8,153,231, +253,116,112,125,185, 58,104,101,123, 74,207, 79,163, 55,127, 26, 78, 27,250,136,222, 8,162, 77,254,167,232, 47,190,205,232,154, +138, 34,179, 56,127,174,212,148,110,242, 63, 21, 60,215,251,233, 23,117,156, 52,123,182,111,162, 47, 95,190,164, 71, 15,238,166, + 13, 42,228,137,172,141, 85,207,208,159,170,182, 52,139,179, 16,177,181,117,235, 86,250,242,229, 75,122,248,240, 97,179, 68,214, + 91,156, 38, 66,107,102, 43,171,244,225,245, 37,234,190,181, 68,154, 46,129, 66,109,155,202, 66,125, 35,111,190,161,166, 27,195, + 86,117, 2,109,227, 39, 85,211,141,126,151,233,198,170,109,205,205,167, 72, 36,138,132, 73, 76,157,130,139, 88, 44, 78, 42, 74, +104,149,116,221,235,187,192,187,149,175, 56,238,143,133,159,210, 78, 53, 20, 41,230,136,172,146, 56, 1,212,114,116,116, 76,222, +182,109, 27,117,113,113, 73, 50, 71,100,253, 19,247,167,141,141,205,206,236,236,236,160,211,167, 79, 7,181,106,213, 42,104,231, +206,157, 65, 87,175, 94, 13,146,201,100, 59,139, 10,253, 80,181, 64,251, 95,144,211,218,218, 58, 40, 43, 43,139,158, 62,125,154, +182,106,213,138,238,220,185,147, 94,189,122,149,202,100,178,160,127,213,179,201,113,254,119,197,212,155, 24, 90,111, 45, 22, 11, +173,119,117, 33, 0,208,244,244,116, 58,105,210, 36,141, 68, 34,201, 17, 10,133, 51, 1, 8,255, 43, 55,161,163,163,227,117, 23, + 23,151, 4, 23, 23,151,183,196,158,105,186,163,163,227,189,143,249, 1, 4,224, 43, 20, 10, 35, 4, 2,193,115,211,116,167,128, +206, 13, 43, 53, 30, 52,199, 37,176,243,231,101,201, 39, 0,161, 80, 40,156, 41,145, 72,114,166, 76,153,162,201,206,206,254,184, +132, 22,165,160,107, 42,138,140, 98,235,209, 28,239,144, 78,213,100,218,205,147,219,208,134,229, 11,136,172,109,222, 98,139, 56, +243,196,214,253,217, 94, 33, 45,125,173,244, 75,230, 76,162, 13, 42, 72,223, 22, 89,150,112, 22, 16, 91, 50,153, 44,107,222,188, +121,102, 91,178,254,194,249,179,159, 23,221,228,191,243,141,136, 42, 97,249,201,111, 11, 93,231,231,245,111,185,238,245, 93,224, +253,153,175,248,137,185,150, 44,115, 56, 1,212,178,179,179,123,106,174, 37,235,159, 40, 59,128, 54,163, 71,143, 14,122,253,250, +117,208,171, 87,175,130,174, 94,189, 26,212,181,107,215, 32, 0,109, 10,139,179,165,237,214, 77, 93,139, 97, 38,149,192,217,103, +244,232,209,244,245,235,215,244,213,171, 87,244,234,213,171,180,107,215,174, 20, 64, 31, 78,192,112, 66,235,223,190,240,255,233, + 78, 86,137, 68,146,104,107,107,235,100,101,101,117, 34, 55, 55,119, 60,165, 52,238,191,212,201,156,148,148,212,200,146,244,143, + 17,148,210,231, 0,188, 11,166, 39, 62, 57,114, 3,192,141,119,192,175, 5,176,132, 16,178, 99,211,166, 77,107, 87,172, 88,209, + 85, 34,145, 36,125, 84,149, 56, 62, 84,131,181,149,238, 66, 36, 90, 90,205, 67, 54,227,155,246,148, 44, 57,125,221,123, 89, 55, +231,200, 70,149,228, 97, 16,176,223,131,168,111, 99,112,184,218, 66,206,219,144,234,150,214, 44, 39,155,241, 93, 23,144,239, 79, +109,247, 94,222,213, 33,178, 81, 69,171, 72, 80,124, 15,113,206, 13,139, 56,223,190, 46,215, 8, 33,159,175, 92,185,114, 71, 78, + 78,206, 8, 74,233, 5,139, 73, 20, 76, 60,148,186,121,208,241,170,129, 66, 84,204,201,114,192,240, 30, 35, 17,255,154,201,196, +111,198,211, 8, 0,129,239,248, 89,186,159,215, 29,245,111,122,190,207, 16, 66,176,123,247,238,254,254,254,254, 21,131,131,131, + 95,229,228,228,236,162,148,158, 49,245,101, 34,132, 28,251,254,225, 67,229,186,224,224,107, 26,150,189, 86, 2,231,222, 60,206, +175,253,253,253, 3,131,131,131,159,228,228,228,172,164,148,238,229, 92,151, 56,252,219,241,143, 11, 45,149, 74,229,194, 85, 59, +135,127,168,193,143, 3,208,237,163, 45,160,137,216,170,227, 37, 29,127,104,180, 52, 7,148, 68, 67,192,174,182, 88,100, 21, 34, +182,234,121, 75,191, 58, 60, 74,154, 3,138,120, 80,252, 80, 22,145,101, 42,182, 0, 84, 40, 53, 65,143, 96, 45,128, 48, 16, 18, +142,249, 40,218,137,122, 62,242, 63,187, 57,188, 31,177, 5,224, 76, 9,251, 80, 0,231,243, 22,115, 56,247, 2,224,132, 21, 7, + 78,104,113,224,192,225, 31, 22, 91, 7, 3,238, 32,153, 55, 5, 12, 42, 0,250, 8, 40,245,241, 24, 31,174, 41, 35,231, 45, 36, +147,137,224,193, 23, 34,125, 40,178, 53,241, 24, 93, 6,206,191,225, 77,142, 55,190, 83,133, 99, 30,119,107,112,224,192,225,159, + 3, 33,100,164,233, 72, 67,211,255,156,208,226,192,225, 67,199, 27, 43, 79,116,222,242,239,229,228,192,129, 3,135,255,152,224, + 2,222,204,201,212,170,136, 15,198,115, 22, 16,183, 42,197, 7,233, 57,142,147,227,228, 56, 57, 78,142,147,227,228, 56,255, 91, +156, 37,113, 91,162, 63,254, 77, 2,171,144,114,108, 54,254,248, 71, 71, 29,114,156, 28, 39,199,201,113,114,156, 28, 39,199,201, +113,254, 87, 22, 6, 28, 56,112,224,192,129, 3, 7, 14, 28,202, 98,209,170,157,183,118,203,155,130,199,205,184,237,189,250,104, +201, 28,125,221,192,103,106, 16,150,250, 3, 0,101, 72, 8,244,236,195,156,228,231,101, 14,249,160,240,240,179,167, 16, 29, 32, +208,244,204,138,121,150, 90, 86,190,234,126, 54,221, 92, 28, 21,253,227, 83, 50,118, 60, 14,201, 58, 98,201,177,182,182,229,109, + 36,246,118, 61,212, 90, 93, 53,145, 80, 24,169, 77,207,220,156,154, 26,154,197,221,154, 28, 56,112,224,192,129,195, 71,129,218, + 0,238, 1,232, 64, 41,221,156,215,149, 88,188, 51,124,249,192,166,119, 36, 18,169, 15, 0,176,148,130,165,128, 50, 51, 61, 40, + 46,244, 78, 91, 0,112,242,169,115, 90, 32,177,174,195,210, 55,219, 13, 44,160,215,230,134,101,132,223,172,107, 78,142,172,156, +253,190,104,213,166, 85,183,142, 29, 59,248, 85,175, 86,189, 18, 0, 60,122,252, 40,244,248,241, 19,207,172,156,253, 14,101, 39, + 62, 59, 92,150, 18, 83, 72,190,253,228,147, 90, 77,238,222,189,183, 16,192,216,178,214,160,131,131,213,248, 51,255,155,210,236, +179,110, 43,228, 0, 44, 18, 90, 18,123,187, 30, 93, 58,181,171, 53,117,194,104,102,248,148,239,124,238, 92,187,184, 76,225, 94, + 45,157,178,186, 51,202,132,222, 87,138,155, 56,153, 3, 7, 14, 28, 56,112,224,240,175,199,137, 60,113,117,162,224,134, 34,133, +150, 68, 34,245,185,121,241,184,253,225,171, 81, 0,128, 86,181, 93, 49,107,209,218, 54,132,144,103, 0,208,121,248,124,223,133, + 51, 39,224,250,147, 68, 80, 74, 81,171,178, 3, 62,239,210,211,172,220, 72, 93, 3,234,246,238,213,171,223,148, 41, 95,119,126, +249,242,101,248,158, 61,123,174, 0, 64,211,102,205, 42,127,247,221,119,189, 86,216,217,139,165,174, 1, 49,170,248,224, 59,165, + 41,173,212,163,146, 71, 64,149, 26,253,247,253,178,150,105,209,182,123, 95,169, 71,165, 37,170,152,208, 24,115,142,117,114,114, +154, 40, 16, 8,108, 0,128,101,255,212, 63, 21,203,241, 92, 1, 64,111, 96, 21,246, 30,254, 89, 60,161,196, 32, 22, 11,131,179, +178,179,119,100, 68, 7,255, 92, 28,167, 90,167, 11,252,106,204, 16,230,254,171, 20,248, 4, 54,229,173, 94, 50, 27,172, 65,103, + 55,105,230,162, 30,119,111,237, 3, 48,239, 18,119,143,114,224,192,129, 3, 7, 14, 31, 38,242,226, 54,110, 54,249,191,185, 68, +161, 5, 0, 86, 82, 62,158,189,142, 7, 0,216, 74,129,241,163, 6, 33, 37, 57,201, 87,163,103, 49,116,208, 0,220, 11,137,195, +179,176, 36, 80, 74,225,235, 41, 51, 59, 67, 60,176,159, 12, 29, 54,180,249,233, 51,103,110,127, 51,231,155, 95, 9,121, 19, 13, +124,211,230, 45, 13,231,206,155, 59, 98,192,160, 1,173, 15, 30, 60,248, 4, 5,102,198, 54, 23,124,162, 88,187,124,233, 98, 81, +116,114,110,238,196, 41, 51,216,175, 39, 79, 92, 13,160,187, 57,199, 10, 4, 2,155,232,232,104, 43,134,121,219,125,237,251,197, + 51, 46,183,238,182,226, 69,120,100,250,253,211, 71,143,214, 13, 8, 8, 64,116, 76,124,227,101, 63,110,172,233, 86,169,238,144, +172, 76, 85, 55,101, 82,112,161, 81,168,197, 2,193,147, 5,203,126,170,197,218, 86,102,102,141,104,143,192, 74,238,136, 73, 76, + 71,179,182,157,249, 65,119,238,180, 1,192, 9, 45, 14, 28, 56,112,224,192,225, 3, 69,113,163, 14, 25, 0, 56,113,226, 68,161, +129,255, 12, 6,138,103, 97,113,120, 22, 22,135,219, 33, 73,208, 82, 1, 86, 47, 91,128,149, 75,230, 33, 85,197,224,240,245, 40, + 60, 15,139,199,243,176,120, 36,167,101, 23,166,240,222, 26,162,185,114,169,172,246,234,213, 54,203,219, 52,147,183,176,183,179, +179,123,241,228, 87,229,220,201, 9, 85, 23,124, 21, 37, 20,104,196,209,114, 43,121,163, 3, 7,246, 7,184, 56, 57,203,173,172, + 20,211,228,158,181,182,218,218,214,180, 41,142,179, 32,100, 46, 85, 59,119,238,208,238, 83, 87, 87, 23,118,244,234,160,144,106, + 85,253,117, 85, 42, 87,105, 44,115,241,237, 92,140, 18,205,231,100, 89, 22, 12,195, 32, 33, 33, 1,177,177,177,120,253,250, 53, +158, 63,127,142,168,168,240, 4,150, 82,129, 1, 44,227,230,230, 9, 62, 95, 4,159,242,222,248,105,245, 18,217,162,249,179,234, + 73,228,162, 35,132, 16, 82, 24,103,110,106,218,193,147,191,159,137, 57,181,231, 39, 3, 0, 36,166,101,227,252,157,151,184, 23, + 28,101,169, 98,126,231, 67, 94, 57, 78,142,147,227,228, 56, 57, 78,142,243,223,192, 89,148, 22,249, 16, 64, 41,221, 92,112, 49, +110, 43,118,212, 97,104, 84, 42,158,189,142, 71, 29,127, 15, 84, 42,239,134,219,207,211,176,235,124, 20,182,158,142,192,249, 7, + 73, 96,249, 10,196,103, 2, 47,194, 19,240, 34, 34,185,184, 56,205, 0, 0,158, 88,208,251,171,175, 50,166, 84, 15,200,108,112, +241,212,120,120, 56,189, 8,152, 62, 61,125, 60, 79, 44,232,109, 87, 78,177,103,198,148, 73,253, 21, 50,153, 72,163,214,160, 98, + 5,111,201,132,113,227,135, 16, 59,241, 30,115, 11,106,237, 25, 96, 39,150, 74,127, 94, 52,127,154,248,135,195, 47, 34,149, 26, + 40, 15,221, 72,120,245,245,140,185,169,124,129,228, 39,107,207, 0, 59,115,185,116, 58, 29,212,106, 53, 52, 26, 13,180, 90, 45, + 98,162,158,118,254,227,240,212,182, 21,202,217,183, 21, 75, 36,160, 0, 50, 85,122,188,142,203, 65,203,207, 90,243,234,212,174, + 29,104,229, 86,117, 88, 97, 92,233,233,225, 25, 44,229, 41,142,255,182,155,183,255,236,125,252,122,252, 14,142, 92,184,143,219, +151, 78,233, 41,171,203,159,166, 66,225, 94,197, 87,225, 94, 35, 66,225, 81, 51, 33,127,241,172,126,151,251, 86,224,192,129, 3, + 7, 14, 28,254,189,200, 27,105, 56,178,224,136, 67,160,152,174,195,220, 92, 85, 88,247,222, 3,224,230,236,106,213,165,197, 96, + 97, 80,104, 58,146,226, 34,240,242,249, 99,228,228,234, 32,180,171, 0, 72, 92, 81,222,199, 27, 15,159, 29,209,174, 89,126, 34, +155,213,171,195,138,226,235,210,197,221,211,205, 73,206, 44, 95,230,117,243,249,179,180, 58,187,231,108, 67,191,126, 86,142,203, +151,121,221, 12,127, 37,103,100, 18,218,104,200,160,190,132, 33, 20,211,167, 79, 65,151,142,237, 48,116,200, 64,178, 99,199,246, + 6,230, 22,148,133, 96,221,204,217, 11, 68, 9,233,122,205,237,231,217,106,153, 92, 42,189,246, 34, 91, 25,232,227, 37,109,223, +109,112,236,137, 3, 63,255, 0, 96,144, 57, 92, 70,129,165,211,233,160,213,106, 1,192, 0, 0, 12,243,102,157,146,165, 65, 98, +186, 26, 9,233,106,232, 13, 44,186,245, 30, 36,189,115,247,193, 32, 0, 69,248,107,177,172, 78,175,195,161,179,247, 16,115,231, + 32, 75, 24, 94,134,209, 25,222, 40,178, 92, 93,189, 46,119,236, 54,208, 73, 36,121,211, 13,155,165, 84, 99,199,198,101,220, 29, +204,129, 3, 7, 14, 28, 56,252,139, 81,112,250, 29, 66, 8, 74,156,130, 39,252,201,149,186, 0,224, 87,183,109,138,149,132,111, +207,103, 8, 18,162, 67,177, 99,197, 68,176, 44, 69,251, 17,203,161,240,113,133, 84,200,131, 58, 59, 37, 59,229,229, 69,135,226, +213,158,174,245,250, 77, 49, 62, 95,142,169,104,189,123,119,182, 0, 0,118,239,206, 22,140, 25, 93,206,122,195,166, 48,159,250, + 77,234,128, 26, 12,232,216,165, 59,122,247,233,141,240,248, 28,252,239,114, 36,148, 42,141, 89,243,171,201,156,170,214,116,118, +247,104,247,213,224,118,114, 62,143,144, 42,222, 54,188,168, 36,157,158,199, 19, 24,142,221,201,136,237,214,173,143,227,249,147, +251, 63,149, 57, 85,173,153,147,244,244, 65, 73,124,106,181, 26, 6,131, 1,106,181, 26, 58,157, 14,246,142, 21, 78,182,238,190, + 34, 58, 46, 62,235, 68,124, 90,110,125,165, 78,143,132,116, 53, 18,211,213, 72, 87,106,225,170,176,131, 94,167,169, 94,204, 69, +248,181,107,247, 1, 3, 1, 48,132,209,111,203,138,125,250,220,184,205, 40,178,218,117,233,231,116, 57, 40, 20, 47,239,158, 74, +163,172, 94,247,166,226, 88,110, 10, 20, 14, 28, 56,112,224,192,225, 95, 14, 19, 63,173, 19,121,206,241,120, 75,104, 25,251, 70, + 59,116,232, 64, 10, 30, 28,147,144, 10, 7, 43, 62,156,220,125,208,127,226, 74,252,250,195,100, 24, 12, 58, 80, 10,232, 13,230, + 69, 38,160, 84,112,118,236, 24, 31,255,242, 62, 60,167,254,253,100,170, 93,187,115,164,253,251,201, 84,213,170, 59,100,140, 29, +227, 19,150,149,235,213, 88,111, 48,224,218,147, 68, 60, 14,203,192,227,240, 76, 88, 73,205, 15,243,197, 19, 9,199, 44, 91,186, + 68,200,231, 17,242, 36, 34, 59, 59, 58, 69,159,205, 19, 8,180, 50,169,136,106, 40, 95, 29,158, 76, 83, 62,235, 58, 68,117,108, +231,143,195, 0,140, 43,138,199, 56,210,208,104,201, 50,174, 41,165,148, 0, 44, 75, 12,134,232,228, 92,100,107,117, 72, 72,251, + 83,104, 17,125,209, 61,167, 10,247, 42,190, 54,214,246,191,243,120, 60, 49,165,128, 78,171,239,165,112,175,210, 54, 43,246,197, +115, 83,145,117,243, 73, 44, 66,239,159, 75, 48,104,115, 6, 40, 19, 66,254,224,110, 91, 14, 28, 56,112,224,240, 95, 66,113, 90, +228,223, 14,163, 5,171, 80,139, 86,113, 5,162, 20,120, 17,145,140,242,158, 78,240, 44, 95, 9,207,159, 62,252,115, 27, 0,189, +193, 60,223,181, 35, 71, 98,163, 87,173,178, 97, 39, 79,206,104,184,108,153,215,141, 49,163,203,217, 84,171,238,144, 49,109, 90, +100,195, 85,171,108,110,156,189, 41, 48,208,188,120, 93,198,216, 92,121, 97,254,205, 4, 83,175,102, 64, 5,222,130,221, 47, 34, +255,120,148,149, 40, 20, 10,117,174,118, 18,162,176, 18,241,120,140, 64,164,214, 49,106,223,192,218,188, 99,204,155,232,173, 37, + 9,173,130, 93,135, 41, 73,161,157,207,252,111, 74,181, 22, 93,151,219,199, 36,169,144,161,225,229,119, 29,242, 24,130, 71, 79, + 35, 0,158,240,113, 97,156,214, 10,251,211,123,118,253,234,181,106,217, 98,104,245, 6,140,157,252, 13,134, 12, 26,112, 90,225, + 94,165,173,151,143, 95,208,149, 99,219,100,109, 71,255,132,136,103,119,227,245,234,204,189,156,200,226,192,129, 3, 7, 14,255, + 53,124,136,226,202,136, 2,163, 14, 11,183,104, 21, 7,111, 79, 23,220,122, 28,134,234,254, 21, 96, 99,173, 64, 72,104, 52,120, +140, 0, 12, 1,116,122,243,197, 16,213,234,246,173, 90,101,131,136, 48, 57,179,225,167, 48,159,177, 99,124,194, 86,173,178,185, + 65,181,186,125, 0, 6, 80,250,102,238, 69, 99,128, 84,131, 5, 97, 60, 41,171, 43,231, 98, 47,227,221,125,165, 76, 97, 24,158, +218,193, 70,194, 58,216,136, 25, 7,133, 72, 32, 20,240, 88, 61,101,180,158,206, 62,185,148,101,107,154,195,103,218,117,104, 48, + 24, 64, 8, 99,200, 19, 98,242,168, 20, 21, 50,114,121, 72, 72, 87, 35, 45, 75,139, 42, 30,114,156, 59,127, 48,199,160, 83,237, + 46,140,139, 39, 16,218, 84,242,241,196,172,111, 87, 65,165, 54,224, 69, 76, 54,132, 98,177,171,139,107,224,131, 1, 95,206, 16, + 79,216, 28,138, 97,159, 58, 96,242,149,208,152,156, 4,201, 12,238,113,227,192,129, 3, 7, 14, 28, 62, 28,152,250,104, 21,132, + 89, 66,203, 74, 38, 1,229, 73,112, 37, 40, 20,126, 1, 53,176,253,232,109, 84,174,222, 0,113, 89,122, 80, 48, 37,142, 54, 52, +226,235, 25, 57,247, 0,220,235,210,197,221,243,139, 47, 60, 90, 83, 42, 56,187, 97, 99, 70, 52, 0,252,180,183, 57, 40, 0,150, +165,160, 20,160,236, 27,193,101,190,156,228, 71,132,197,101,150,247,113,149, 35, 56, 90,171,150,139,133,140,157, 92,196,115,178, + 17, 9,133,124, 62, 12,148,168,227,226, 66,213, 4, 8, 55,135,174, 96,215,161,204,202,237,228,103, 93,151, 39,133, 71,102,220, +173,146,154, 83, 51, 67, 43, 2,165, 64, 21, 15, 57, 30,223, 60, 97, 72,136,121,249, 66,149,240,108, 99, 97, 92, 44, 11,158, 86, +207,226,193,171, 12,164, 43,117, 72,207,214,162,113,203, 78,194,198,173, 58,227,202,227,100,176,122, 29,150,109, 57,145,101,160, +186,222,148, 6,235,184, 91,150, 3, 7, 14, 28, 56,112,248,112,144, 55,210,176, 3,222, 68,134,239, 96, 42,190,204,154, 84,218, +192, 82, 56, 58,216, 67, 34,183, 70, 88,130, 22, 89,196, 25,105, 57, 20, 6,195, 27,139, 22, 91,244,137, 91, 21,150,126,228, 72, +108,244,111,191, 37,109, 61,114, 36,214,196,209,251, 79, 75, 86,254,154,165,102,115, 18,106, 56,119,244,212,197,140,206,245,157, +236, 24, 30, 79, 37, 20, 48,106,190,144,167, 21,242, 25,157,144,207,104, 92,172, 5,188,139,199,246,138, 40,193,197,146, 56,115, +115,115,209,170, 85, 43,180,111,223, 30, 93,186,116, 65,207,158, 61,225,235, 91,213,153,225, 17, 13, 37, 44,235, 36,202, 66, 37, + 39, 2,126,110, 20,254,216,251,125,206,227,107,191, 61, 48,168,115, 59, 81,147,190,206,183, 56, 41,101, 83, 51,212,200,213, 26, +144,150,173, 69,154, 82, 11,189, 83, 67,252,118, 61, 22, 42,141, 1, 17, 65, 7, 85, 73,241,209, 19,115, 19, 94,132,149,112, 33, + 91,253, 13, 55, 7,199,201,113,114,156, 28, 39,199,201,113,190,119,206, 15, 28, 29,242,132, 85,135,130,113,180,204,176,104, 81, + 84,116,147,163,178,135, 28,185, 90,103,228,106, 12, 80,230, 26,144,153,163, 69,102,142, 14, 97,241, 57,120,124,180,236, 57,124, + 99,197, 2, 72,222,111,144, 55, 2,207, 92,155,150, 72,171,249,118,229,178,239,122,237,173, 93, 75, 51,161,131, 91,185,135, 97, +154, 88, 66, 24, 21,195,227,235,236, 21,124, 65, 72,200,195,164, 27,151, 79, 54,147,232, 13, 3,139,227,209,235,245, 25, 30, 30, + 30, 0,222,158,130,167,106, 37,105,151,107, 39,166, 87,104,222,121,153,211, 15,139,167,228, 48, 60, 33, 75,248,194,199, 6,157, +106,143, 42,225,217, 79,180, 24,135, 50, 70, 40,121,122,235,126,112, 3, 91,251,114,120, 25,163,132, 50, 87, 15,173,158,133,157, +149, 16,209,143, 78,107,195, 66,238,238,207,138,121,176,157,187, 79, 57,112,224,192,129, 3,135, 15, 19, 70, 63, 45,227,186,196, +240, 14, 38,214,157,176, 38,173, 58,129,101, 41, 12, 20, 96, 13,121,150, 39,246, 79,235,147, 65,151, 27, 86,214, 12,178,172,225, +246,186,205, 91,219,215,174,215,156, 23,224,101,133,204,148,120,220,188,118, 65, 15,150,222, 48,231,248,228,228,231,217, 50,215, + 42,221,123,245,248,226,192,160,161,163,211,155,181,108, 41,119,118,118, 85, 71,199, 68,231,252,178,115,151,238,244,201, 35,205, + 88,232,251, 36, 39,191,200, 46,142, 39, 61, 61,253,199,194,210, 63,107, 82,174, 49,128, 10, 60, 62,209,228, 36, 62,151, 91, 82, +182,228,152,168,110,223,125, 59, 63,188,223,136, 73,162,138, 30,149,144,152,193, 67, 88,116, 60, 66, 46, 31, 81,199, 60,191,115, + 56, 51,250,222, 48,238, 22,229,192,129, 3, 7, 14, 28, 62, 76,148,201, 71, 43, 50,248, 77, 60,173,191, 27, 89,241,137, 3,182, +111,255,117,209,175, 59,247, 54,206,213,104, 60, 40,132, 81, 6,189,230, 82,182, 1,115,205,229,200,137,127,113,215,209,209,183, +218, 47, 91,214,205,254,101,235,134,230, 96, 13,254, 4, 8,167, 4, 23, 37, 58,195,160,146, 68, 86,241, 66, 46,107, 83,235,238, + 43, 84, 41, 41,217,191, 90,122,108, 78,114, 72,188,149, 75,197,114,155, 86,127,187,156, 97,120,109, 12, 6, 86,192, 26,116, 47, + 13,218,220,239, 85, 73,207,142, 82,203,134, 87,114,224,192,129, 3, 7, 14, 28,254, 69, 32,132,140, 44, 24,180,212,108,139,214, + 63,133,212,212,208, 44, 0, 19,202,202,147,156,252, 60, 27,192, 59, 31,185,247,232,121,198,255, 0,252,175,180,199,103, 39,188, + 74,130,153, 81,233, 57,112,224,192,129, 3, 7, 14, 31,190,224, 2,204,116,134,231,192,129, 3, 7, 14, 28, 56,112,224, 80,188, +200, 50, 93,231,167, 3, 40,116,228,128, 37, 51,115,151,102,244, 65, 73,252, 28, 39,199,201,113,114,156, 28, 39,199,201,113,126, +124,156, 37,113, 91,162, 63, 62, 8, 1,246,119,186, 7, 17, 66, 90,189,235, 10,227, 56, 57, 78,142,147,227,228, 56, 57, 78,142, +243,227,227,252,160,197, 84, 1, 43, 86,158, 96,252,119,249,104,113,224,192,129, 3, 7, 14,255, 20, 28, 29,125,173,128,124,191, +222, 18, 33,119, 10,112, 1, 0,101, 82,112, 2, 87,123, 28,138, 18, 85,133,249,104,149, 74,104, 17, 66, 4, 12, 95,244,149, 68, +106, 53,152, 48,176,206, 78, 79,246,248, 15,171, 88,226, 91, 94, 62,174, 92, 57,167,150,209, 49, 9, 59, 66, 94,229, 28,121, 31, +156, 86, 46, 21,157,136,200,238, 48, 97,213,223,101, 70, 63, 62,245,142,203, 40, 14, 8, 8,168, 5, 0,193,193,193,247, 41,165, +234,178,114,202, 93,252,250,218, 89,219,142,210,178, 26, 67,142, 50,231,167,236,248,231, 7,223,101,158, 21,238, 85, 28,192, 87, +108,132, 65,223, 18, 20, 60,240,248, 15,136, 58,119,120,102, 82,240,171,226,142,243,234,178,196,127, 88,175, 14,115,182,238, 63, +177, 40,242,200,204,144,130,219,237, 63, 95,171, 24, 63,176,205,244,245,123,143, 44, 77, 62, 58, 45,155,107, 94, 44,135, 87,147, +126,182,122,190, 43, 47,246,226,138, 20, 75,142,243,244,107,248, 68, 32, 16, 56,105,181,218,196,152,231, 55,171,153,115, 76, 57, +255, 70,247,120, 60,198,221,160,103,163,163,158, 93,255,132,171,253,146, 33,117,174,216, 16,122,253, 44, 10, 16, 16,254,202,220, +148, 87, 23,202,194,231,238,238, 46,181,177,177,105,102,109,109, 93, 78, 38,147, 73,210,210,210, 84,105,105,105,145, 17, 17, 17, +231, 41,165,250,247, 81, 70,185,139,223, 76, 34, 32,243,242,126, 47, 80, 38, 60, 91, 82,124,251,234,191,136, 48,116,102,222,239, + 37,217, 9, 33,115,254, 13,215, 74,226,234,231,205,163,152,192, 99,248,141,244,172,110,113, 78,194,243, 99,150, 28,111,111,111, +223,134,207,231, 75,141,255,245,122,189, 42, 53, 53,245, 12,247, 20,148,234, 61, 57,178,224,239, 82, 91,180, 8, 33, 60,129, 88, +118,181,223,208,177,213,150,206,159, 33, 89,189,245, 55, 72,172,236,130,115,179,211, 2,254,141,133,119,170, 88,255, 46,143,225, +121,154,166, 25, 88, 67,116,210,171, 91,239,164,209,245, 43, 47, 29, 54,123,218,128,201,125,123,181,242,110,213,113, 34, 1, 80, +168, 40, 82,120,213,189, 78, 8, 83,129, 33, 0,195, 16, 48, 4, 0,104,108,242,171, 91,181, 75,203,105,132,141,115,165, 10, 34, + 43,167,203, 77,186,140,117, 13, 58,183,107,187,220, 41,160,181, 50, 41,248,225, 59,184,113,156, 42, 85,170, 84,215,215,215,215, + 97,252,248,241, 66, 0,248,225,135, 31, 42, 87,174, 92, 57, 37, 52, 52,244, 14,165, 52,169, 84,141,156,179,255,128, 31, 87, 44, +252,245,243,207,219, 35, 54, 89,137,101,171,214,183,176,114,245,237,249,174,196,150,157, 93, 5,107,190,181,221,163,137,211, 22, + 58,183,107, 81,151,151,157,171,199,239,151,239, 55,221,181,126,225,109,107,167,128,122,197,137, 45, 54, 39, 99,142,139, 21,109, +199,230,100, 0, 64,223,130,219, 61,172,116,173,156,164,134,118,110, 98,254,125, 0,135, 74,204,139, 79,147,211, 2,177,216,155, + 97, 24, 24,175, 61,143,188,185,254, 58,173, 42, 34,250,233,229,182,255,134,231,196,218,187,126, 60,120,124, 7,134,252,153, 63, +146,119,159, 18, 74, 51,227,158, 95,113,120, 7,247,147, 77,181,202,182,129, 29, 26, 55,249,229,210,235, 84,185, 87,243, 73, 39, + 8,101, 54, 68, 92, 94,249,192,172,151,138, 68, 98,119,236,216, 49,167,118,237,218,217,184, 84,235,122,201,156, 99,172, 68,146, +128,227,199,143, 10,219,181,107,107,193,253,233,215, 26, 12,179,147, 0, 2,150,165, 63,240, 88,186, 63, 59,229,121,168,165, 97, + 88,100, 46,254,195, 24, 80,179,219, 25, 22,228,110, 78, 66,200,214,210,214,175, 64, 98,243,153, 64, 40,252,170,130,111,245,218, + 49,225, 47,239, 42,179,179, 86,233,114,211, 47, 89, 76,164,211, 79, 61,119, 37,232,115,190, 64, 64,218,125, 86,159, 7,160, 76, + 66,203,197,197,165,235,218,181,107, 43, 54,108,216,208,248, 50,183, 62,112,224,128,235,183,223,126, 43, 55,231, 25, 42,226, 94, +242,112,114,114,242, 18,137, 68, 30, 0,160,209,104, 98,146,146,146, 34, 41,165, 49, 37,222, 19,174,149, 28, 9,248, 11,175, 92, +190,204, 7,128,166, 77,155, 45,242,110, 58,222,142, 39,180, 82, 21, 90, 29,154, 44, 57,128, 73, 55,111,221, 32, 0,208,160,126, +195, 25,114,167,128,117,239,211,178, 37,117,241,175,207, 0,147, 27, 55,107,221,173,119,159, 1, 76, 96, 21, 47,180,105,253,233, +116, 0, 22, 9, 45, 62,159, 47,189,125,251,118, 37,134, 97,120,122,189, 62,183, 65,131, 6,145,101,201,151,135, 95,163,235, 4, + 76, 57,173, 94,179, 37,233,213,221, 69,148, 82,182,160,126,176, 41, 87,123, 54,120,252, 17, 44,203, 70,101, 70,220,105,244,177, + 89,180, 10,173,103, 75,201, 24,190,232,171,190, 67,190,172, 54,233,235, 89,146,137,171,207,227,196,250, 25,201,255, 86,145, 5, + 0, 60,134,231,121,250,204,105,103,153,136, 7, 0,200,206,213,227,243,118,237, 74, 60,206,214,167,254, 69,134, 16, 63,227, 84, +226, 6,189, 86,194, 23,136,114, 9, 0,144, 55,163, 8, 28,221,203,159,119,115,179,151,245,237,213,202,123,231,222,179,209,145, +209, 41, 69, 54,106, 12,195,243, 60,114,244,152,179,135,131, 4,124, 30, 65,182, 74,143,118,237, 59, 25, 10,219,215,205,205,190, + 67,223, 94,173,188,119,239, 59, 23, 25, 23,151,122,162,216,198,220,205,183,142,220,198,229,247,110,163,190,117,200,101,236, 49, +119,241,143,142,151, 79,237,190,212,188,195, 0, 54, 34, 34, 42,151, 18, 18,156,150, 26,247, 85,118,220,203,103,230, 10,105, 43, + 43,171,138, 86, 86, 86, 53, 63,255,252,115,201,148, 41, 83, 4, 45, 90,180,200,223, 62,114,228, 72,225,197,139, 23,221, 86,172, + 88,209,222,221,221, 61, 55, 59, 59,251, 65,118,118,246, 43, 74,169,193,220,107,226,234,234, 52,174,251, 23,157,240,105,183,177, + 48,176, 4, 35,191,156,132,211,167, 14,141, 6,240, 78,132,150, 78,102,253,237,136, 81, 83,156, 26,212,173,197, 91,184,251, 25, +164, 34, 62,218,126,226, 71,134,140,159, 99,187,117,205,194,159, 1, 52, 47,204,146,197,230,100,204,169,230,168,233,211,185, 97, + 5, 28,221,163,233,227,217,106, 58, 24,153, 77,190,101,171,210,231, 19, 20,118, 82,233, 90,119, 91,158,179,216,144,180,182,210, +231, 19,206,133,158, 90,147, 85,236,203, 79, 44,246,222,179,123,119, 21, 59,133, 16,124,134,128,199, 35,224,243, 24,228,106, 12, +232,217,171,207,187,250,146,226, 73,157,171,180,103,128, 33,111, 94,216,216,166, 74,124,113,210,146,107, 66,120, 66,135,227, 71, + 15,243,157,109,196,224,241, 8,120, 12,192, 99, 8,194, 19, 84, 24, 54,108,136, 77, 89, 5,251,231,141,157,235, 94, 92,215,188, +109,131,106,246, 53,246,221, 32, 54, 13, 62,239,237,144,156, 43, 27,188,247,200,133, 62, 94,205, 38,223,162,148, 93, 30,117,101, +117,177, 95,210,106,181, 58,161,109,187,207,173, 9, 95, 46, 59,247,219,246,102,124,134, 64,103,160,208, 27, 40, 12,121,115,163, +190,121, 94, 9, 24,134,128,178, 20, 35, 70, 12, 67,219,118,159,231,176,122, 54,218,252, 70,142,217,249,251,185,107, 78,106, 29, +139, 21,107,183, 46, 84,102, 36, 45,124, 29,226, 16, 46,115,241,157,148,147,240,220,236,121, 48, 24,208, 79,162, 94, 61, 30,181, +251,248, 77, 84, 11,168, 10, 3,251, 38,159,126,158,114,236, 62,113, 19,254,126,254,111,242,205, 82,248,150,179, 66,221, 79,234, + 2, 64,169,132,150, 64, 98, 61,183,121,135,129, 11, 58,246, 28, 10,103, 39, 39, 48, 84,215,241,220,137,221, 29, 5, 82,155,169, + 58, 85,198, 10,203,222, 24,134,252,247, 2,101,217, 50,187,151,184,187,187, 59,213,173,251,103, 56, 70,189, 94, 15, 31, 31, 31, +196,196,196,248,149,226, 94,146,185,185,185,117,216,180,105,147,115,251,246,237, 5,174,174,174, 0,128,248,248,120,143,223,127, +255,189,182,187,187,123, 98, 92, 92,220, 9, 74,105, 78, 81, 28, 6, 29, 35,100,248,224, 73, 36,178, 55,101, 4, 97,166,140, 27, + 88,195,197,205,189, 80, 75,125, 82, 82,188,104,218,216, 11,132,207, 23,230,237, 15,134, 82,150, 20, 99, 37,106, 37, 16, 8,164, +133,109,211,242,172, 27, 80,129,205,112,134,199,188,185, 89,245,186,164,212,136,160,170, 22, 88,226, 2, 5, 34,225, 79,253, 6, +141,106,212,163, 91, 23,184, 57,217,224,220,213,135, 24, 61,110,178, 78,175,213,173, 42,213, 59,146,199,227, 39, 38, 38,134,219, +217,217,185,150,253,125, 75, 42,156, 61,125,202,249,220, 31,231,103,172, 92,189,102,140,187,111, 83, 29, 75,105,254, 60,198, 94, +213, 62, 21,180,238,216,203,218,185, 82, 3,201,154,121,195, 5, 31,155, 69,171, 40,177,101,241, 67, 36,146, 42,122,125, 51,109, +188,228,219, 93, 55,113, 98,253,232,100,101, 70,146, 83,254,151,130,141,221,189,236,140,180,218,165,201,164,194,217,175, 33,225, +241, 71, 17, 30, 79, 78, 24, 34, 98, 13,108,148, 94,163, 89,148,147,252, 60,174,172, 21,192,178, 20,255,187,158,104, 89,165, 81, + 84,222,185,239,176,179,139,173, 24,185, 90, 3,122,247, 29,128, 95,127,253, 85,225,100, 35, 66,174, 70,143,229, 43, 87,102,101, +135,159,112, 14,143, 74,139,105,213,105,242,153, 87, 97,137,143, 35,227,114,247, 23,125, 17, 24, 56,219,136,177,120,239,115, 88, + 75, 5,176, 83, 8,193, 48,196,244, 34,229,119, 23,198,198,165,101,152,112,238, 42,242,161,115,171,222,214,198,206,125,207, 23, +163, 22,219,190, 72,228,131, 66,139, 80,107, 9,122, 13,158, 96, 93,209, 85, 10,185,132,103,251,127,246,206, 59, 44,170,163,109, +227,247,108, 99, 89,118, 97,233, 85, 64, 69, 17, 44,168,216,123, 47, 17,123,111,209, 24, 75, 76,140,137,198, 24, 91, 44,137, 26, +163,177,199, 88, 98,139,189, 27,123,239,137, 21, 20,197, 2, 74,145,222,217,222,203,124,127, 0,190,196, 80, 22, 53,223,251, 38, +153,223,117,157, 11,118,247,236,189,115,206,153,115,206,125,158,121,102, 38,225,101,154,207,180, 47,191,188, 33,245,172,209, 84, +158,253, 34,161,162,237,174, 90,181,106,255,158, 61,123, 58,124,241,197, 23,124,127,127,127,108,219,125, 32,176, 77,183, 65,189, +210, 51,178,252, 41,165,240,242,244, 76, 25,247,193,160,227,167, 78,157,122,153,146,146,194, 95,186,116,105,179, 35, 71,142,212, +169,204,147,169,133, 82,232,244, 22, 88,138,110,144, 57,114,125,101, 43, 52,241,243,243, 19,166,165,165,233,139,163, 12,132,144, + 87, 59, 83,226,215,176, 91,167,118,205,120, 27, 79, 39, 66,165,179, 64,108,207, 71, 98,150, 6,141, 27,134,145,159, 45,230, 6, +165,105,126, 56, 56, 98,142,151,132,118,239,221,162, 58, 60, 93, 28,176,245,199, 69, 56,118, 51,161,123,150,138,192,189,247,210, + 9, 62, 66, 94, 23, 15, 7,193,218,246,141,107,120,119,108, 20,136,187,141,107,120, 95,139,124, 22, 27, 54,120,197,167,105, 42, +254,133,252,211,159, 42, 75,191,240,112,224,234, 40,192,150,179, 47,225, 96,207,131,216,158, 7,177,176,240,111,201,227,255, 70, + 79,181,190,117,252,185, 86,203,135, 78,190,117, 62, 28, 58,120,144,239,240,161,131, 40,184, 28, 28, 56,116,188,207,174, 93, 59, + 51, 36,222, 33,155, 45, 28,238, 22,109,250,227,148, 10,247, 41, 7,240,148,218,225,203,205,143,224, 36,226,195,209,129, 15, 39, + 7, 62, 58,214,247, 0,151,243,198, 23, 30,151,143,250, 4,245,136,222,209,185, 67, 72,128, 36,248,193, 11,249,227, 15, 23,222, + 91,117, 69,214,225,243, 31, 87,214,113, 83,201, 12,188,185,211,198,241, 82,211,211, 59, 28, 56,126,181,163,111,211, 15,159,153, +141,234, 89,217, 15,246,151, 26,193, 77,121,250,123,120,149, 22,131,236,141, 42,211,195, 7,207, 82,107, 20,232,133,136, 73, 82, + 64,108,207,131,164,120,223,218,243, 32,182,231, 67, 98,207, 67,122,106, 34,242,213,220, 27,105,110,156, 14,244,202,239,149,106, +162,210, 25, 45,184,159,160, 66,213,144,134,240,241,241,133,161,199,136,170,183, 47, 29,250, 85,236, 83,251, 59,117,198,147, 89, +182,234,236, 62,113, 11, 51,166, 76,136, 36, 64, 84,209, 77, 58,124,238,146,117,141,190,153,241,201, 31,222,155,182, 96, 77,163, + 55,143,100, 57,205,233,216,239,227, 5,109,186,244,131, 50, 63, 11,191,159,219,143,110, 61, 7, 96,196,152,207,224,236,236,190, +140,111, 47,125, 96,210,201, 47,253,233,154,235, 83,187,117, 88,189,218,187,252,124,125,253,173,214,194, 89, 62, 40, 5, 90,183, +235,136,233,159,143,131,149, 82, 52, 8,111,218,177,199,208, 79, 41, 45,154, 13, 36, 55, 47, 87,253,236,233,227,206,218,172,167, +183,109,222,151, 58,157, 41, 39, 39, 7,247,239,223, 71,108,108, 44, 98, 98, 98,144,151,151, 7,169, 84,170,170,100,125,114,170, + 95,191,254,240, 75,151, 46,217,187,184,184,188,122,223, 96, 48,192,209,209, 17,195,135, 15,231,119,237,218,213, 47, 34, 34, 98, + 20, 33,100, 55,165, 84, 81,154,142, 54, 47, 46,221,201, 59,116, 67,187,246,237, 38, 2,128,200,201, 39, 97,237,182,227, 49,229, +158,107, 82,223,192,150, 45, 91,213, 0,165, 32,160,171,213,185,207, 50,203,137, 18,137,111,221,186, 21,196,229,114,121,255,185, + 7, 89,241,211,214,125,161,231,175, 63,236,191,100,217, 15,246, 78, 98, 33,114,228, 6,140, 29,209,207,230,123,176,131,119,104, +143, 86,173,218,253,250,205,130,175,121, 18,177, 24,231,110,199,227,211,207,191,212,101, 36, 61,250,129, 90,249,235,212,217,207, +178,223,242, 86,249, 78,122,198, 5, 87,145,192,177,119, 55,251,143,222,239,109,111, 48, 89, 32, 83,155,160, 55, 90, 96,177, 82, +200,213, 38, 60, 78, 86,194,221,201,238, 77,164,155, 0,240, 0,144, 3,224,238,107,175, 81,244, 63, 74,121,157, 91, 24, 30,129, + 27, 0, 3,128,146, 63, 94,252,186,172,247,139,191,255, 24, 64,237, 34, 77, 11,128, 59, 0, 10, 74, 51, 91,165, 69,185,120, 39, + 79,158,164, 17, 17, 17,175,174,248,175,191,126, 29,161,128,239, 43,150,122,128,210, 39, 40,113,111,131,151, 79,149,188,245, 27, +126,118,149,186,184,189,148, 23,228, 5, 22,253,200, 5, 91,110, 22, 60,194, 93,209,174,125,219,174, 19, 63,254, 24, 33, 65, 85, + 4, 22,139,133, 62,138, 77, 48,109,223,178,117,180,212, 63,108,149, 34,245,209,156,226, 16,100,101,123, 57, 88,172,150,212,215, + 35, 88, 22,171, 37,245,181,157,113,225,207, 59, 12,112,150,216, 97,195,233, 68, 80, 10, 16, 80, 72,197,124,236,189,146,138,132, +200,195,138,158, 13, 20,234,225, 75,230,119,236,208, 99,242,165,199, 47,116,251,179,179,117,103, 41,165,153,101,105,114, 8,192, +227, 18, 56, 57,240, 33,117, 16,192, 89, 44, 0, 41,113, 3, 43,217, 92,216,190,199,228,243,151,126,123, 57, 11, 64, 78,201,124, +168,146,154, 34,239,224, 38, 78,206, 85,246,247,159,184,212,241, 97,170, 25, 60, 46, 80,221, 91, 4, 87, 71, 1, 12,102,130,164, + 28, 99,209,153,227,140, 79,167, 45,112,157, 49,117,226, 41, 66,234,212,163,244,177,177,188,109,215,104, 52,118, 35, 71,142,228, +155, 76, 38,227,240,177,159,117,205,204,204,233,243,211,234,239,133,158,158, 94,208,232,204,136,140,121, 94,251,155,111, 22, 84, + 63,126,230,202,209,249, 95,126,244,107,247,238,221,165,251,246,237,179, 86,180, 63,255,240,132,152,149,251,227,214, 93, 7,119, +172,252, 97, 49,158,189, 44,192,150,141,235, 64, 45,230, 13, 21,132,101, 47,148,248,159,206,154, 53, 75,116,244,232,209, 42, 98, +177, 88,161,209,104,114,254, 16,143,224, 16, 94, 86,190, 6,238,142,118, 16,240, 56,240,114,177,135,167, 84, 8, 62, 23,224, 16, + 98, 41, 77,115,203,254,147, 11,173, 26, 57,142,237, 49, 12,221,250,227, 34,140,153, 52, 27,143,114,237,206,112, 28,164, 11, 63, + 25,218,127,134,135,200,210,221,215,153,227,217,177, 81, 85,136,237, 5,152, 57,121, 36,154, 70, 38,121,166,201,172,179,115,180, +220,134, 0,102,151,122,220, 57,133, 17, 44, 71, 7, 62,206,236, 90,150,173,150,231,200,139,155,228, 12,122,221, 75, 27, 67,210, + 23, 74,121,178,157,209,168, 97,253, 69, 19,199,127,200,105,213,162, 41,229,112,248,200, 85, 26, 8,165,192,231,159,126,132, 79, + 62, 26,231,157,146,158, 61,119,221,186, 13,115, 36,158,181,191, 85,101, 63,153, 95,158, 38,135, 20, 70,129, 36,246, 60, 72, 68, +133,198, 69, 98,207,131,206, 96, 1, 33,224,186, 4, 54,146,147,194, 72,110,122, 94, 82,233, 79,224,175,107,186, 6,212,189,120, + 62,193, 49,180, 96,127,193,205,196,244,152,133,145,209, 89,119, 40,165,249, 1,237,166,142, 50,154, 41, 84, 58, 51, 18,179, 52, + 48, 27, 41, 25,243, 94, 32,170, 13, 36, 33,139,183, 70,237, 32,132, 56, 21, 27,232,215, 53, 83,111, 30,208,185,135,245, 31,178, +114,205,198,187, 63, 44,154,205,205,149, 27, 96,165, 20,246,118, 92,136,236,120, 69, 11, 23, 90,181, 28,235,214,255,156,105, 6, +233, 79,175, 92, 49, 87,166,126,194, 74, 71,244,235,209,118, 47, 1,236, 8, 71,144,234, 27, 88, 53,176, 83,175,209,246,157,122, +143,132,197,108,152, 33,246, 10,189,172,206,122,122,209, 22,205,122,117,106,131, 0, 81,170,172,103, 31, 1,128,196, 43,100, 67, +104, 72,104,163,215,223,171, 89, 51,164,145, 45,199,189, 24,129,200,105,146,139,171,199,236,144,186, 13, 61,131,194,218, 17, 71, +183, 42, 72,140,187,143, 61,235,231,238,180,234, 12, 11, 46,158,220,191,104,213,150, 35,131, 59,117,239,135,173, 63,125, 63, 19, +192,165, 63,157, 71, 86,235,136,237,155, 55,249,243,237,132, 48,153,173, 48, 89,104,225, 95,179, 5,249,249, 5, 48,153,173,176, +119,112,132,217, 74, 96,178, 88, 97, 50, 91,161, 55,152,197, 31,141,140,248, 24,192,237,210,202, 89,165,118,251,179, 2,161, 48, +144,162,112,238, 90, 74, 41,184,102, 3,199,199,199,103, 55, 0, 8,133, 66, 8,133, 66, 88,173, 86, 68, 62,203,153,228, 17,218, +121, 34,138, 12,158,197,104,120, 89,144,120,163, 91, 89,219,238,237,237,221,235,117,147,165,211,233,160, 82,169,112,253,230, 93, +233,230, 29, 7,187, 39,190, 76, 13,178, 82,169,222,209, 51,168, 27,128, 94,101,237, 79, 69,230,211,143,253, 91,140,231,124,241, +201,168,154,107,182,159,184, 19,119,230,219,153,229, 85,137,234,157,103, 24,190,152, 48,160,241,146,213, 91,226,242,111,172,159, + 82,209, 49,226,241,120,252,156,156,156, 87,231,247,218,159,247, 52,142,122,150,214,119,213,202, 85,246,145,241, 74, 60, 76, 76, +199,168,206, 1,248,195, 77,160, 28, 77,137,119, 13,247, 26, 53, 66,119,175, 91,189,132, 23,151,174,195,143,135,239,224,210,175, + 27,174,103,102,223,238, 78, 51,211,181,111,114, 13,121, 91,163, 85,158,230,229,232, 92,168,116,102,232, 13,102,152,172, 20, 10, +141, 9,217, 50, 3, 20, 26, 35, 84, 90, 51, 70,117, 9, 40,245,123, 21,248, 17, 15, 66,200, 9, 74,105, 79, 20, 14, 75,101, 87, +226, 53, 8, 33, 39,138,202,245,135,215, 51,102,204,152,245,221,119,223,197, 20,175, 91,252,126,241,186,229,189, 95,226,251,110, + 51,103,206,172,183,100,201,146,197, 45, 90,180,216,251,251,239,191, 39,148,102,180,202,141,104, 21,111,204,201,147, 39,105, 5, + 79, 20, 65, 14, 78,110, 66, 39, 17, 31,213,171, 5,224,131, 89, 91,221,157, 92,189,178,237,237,120,220,211,167,207,184,230, 25, + 36,224,112,184,106,219,163, 88,181, 90,138, 68, 14, 39,151, 47, 95,142,161,189,218,136,146,115, 77,170,232,100,109,150,218, 0, +179,167, 71, 45,187,133,139,151, 72,150, 44, 93,246,201,137, 99, 86, 25,128,101,165, 55,241, 53,185,199, 37, 37,114,176, 8, 1, +181, 90, 82,243, 19,239, 52, 6,128,183,201,197, 82,233, 76,224, 22,229,214, 16, 2,104,116,102,112,185, 36, 91,246,108,255,227, +225,223, 46,236,184,115,239,249,116,202,113, 86,170,213,137, 14,148,210,212,242, 35, 6, 4, 10,141, 9, 82, 7, 62,156, 37,124, + 72,197, 2,112, 75,156,100,197,205,133, 59,247,156, 75,123,249, 50,239,110,145,201, 42, 83,147,199,229, 36, 80,139, 73, 71,169, +197,177,103, 19, 15,120, 58,219,193,199, 69, 8,161, 29, 15, 38, 51,160, 53, 88,161, 51, 88,144,148,173,133, 82, 43, 66, 88,187, + 65,213,221,124,238,233,221, 2,155, 28,205,123,121,183,127,185,230,212, 98,193,246,221, 7,107,166,167,103,245, 57,117,116,151, + 48, 71, 97, 66,116,146, 26,217, 50, 61,192,245,192,188,197, 63, 10,191,154, 50,190,239,246, 61,135, 94,118,106,211,236,101,101, +247,171, 58,251,233,206,176,150, 17, 27,122,246,236, 43,138,185,125, 10,113,247, 47, 46, 82,101,217,158,159, 69, 8,225, 28, 56, +112,192, 60,126,252,120,229,226,197,139,253,143, 29, 59, 86, 45, 39, 39,231, 62, 0,147,179,179,115,104,173,154,129, 15,206,157, + 57,237, 23,209,119, 16, 63, 53, 87, 11,169,131, 0,129,158, 14,184,121,253,172,201,206,142, 95,106,190, 73, 81,243,224,176, 42, +157,191,194,177,155, 9,221, 99,242,236,175,140,251,112,212,203,115,215,158,229,173,221,113,238,123, 63,137,233,190,189, 53,103, +237,189,198, 53,188,103,124, 58, 18,223,173,217,137,171,145,207,178,213, 28,159, 69, 25,122,243,249,249, 67,166,151, 17, 74, 47, + 52,216,142, 34, 62,212,138, 28,249,243,200,211,181,222, 81,164,122,212,185,163, 59, 57,249, 74, 19, 82,114,117, 36, 61, 95, 9, +139,149,194,217, 65, 0,179,149, 66,150,159, 75,118,237,220,129,187,119,111,114,192,229,140, 5, 48,191,220,102, 46, 82,216, 84, + 40,177,231, 23, 70,132, 68,133,127, 77, 22, 43, 66,106,214,192,166,181, 43,156,220, 61,189,208,186,109, 7,219,163,212,110,129, + 13,246,110, 91,139, 43,191, 71,181,191,186,234,199, 38, 18, 95,143, 53, 78, 85,234,252, 32,173,214, 69,167, 55, 90, 32,151, 21, +192,206,144,130,166,126, 57,112,117,176, 32, 73,225,131, 71,153,113,146,138,114,161,114, 31, 30,190,239, 81,175,223,156,131,199, + 47,125,215,173, 75,123, 60, 74, 82, 64,100,199,131,189, 29, 23,246,118, 92,240,137, 5, 43,214,111, 48, 21,200,149, 61,115, 31, + 29,205,125,131,250,121,161,232,233,183,240, 38,231, 21,228,177,115,205,156, 95,198, 77, 95,218,173,123,191,209,228,209,221,203, +179, 0, 92,180,237, 65,143,218,244,158,213,106,251, 61, 78,228,228,177,122,234,156,101,147,187,246, 28, 4, 46,151, 7,147,201, +132, 67,251,118, 98,219,143,243,158, 26, 84,121,163, 41,165, 86, 66, 92,199,239,223,185,126,208,244,185, 43, 72,189, 6, 77,155, +149,234, 39,185,100,227,251, 31, 78, 24,226,229,229,229,248,159,136, 22, 69,173,144, 58,232,209,123, 0,206,254,122, 4,143, 99, +162, 97,165,133,134,201,106,165,144, 21,228,101,154, 77,134,237,101,182,120,216,219, 7,110,221,182, 35,152,195, 33, 48,154,172, + 48,152,173,152,242,241, 7,134,143, 62,159,213,186, 71,215,118, 49,118, 92, 40,146,146, 51,156,111, 70, 61, 9,179,242, 37,254, + 31, 78, 91, 33,208,233, 45,144,107, 76, 56,181,165,108,175, 35,114, 13,108,209,160,101,223, 15, 63,250,122,147, 80,200,229, 24, +235,214,242, 79,104,215,188,110, 74,128,175,187,242,155, 37, 63, 54,189,113, 59,170,199,224,225, 31,218,143, 10,109, 68,124,221, + 68,142, 31, 12,239, 87, 95,236, 22,240,190, 58, 47,185,204, 41,211,248, 14, 46,178,128,106, 53, 53,255,137, 24,133, 28, 38, 20, +213,255,112,227, 36, 72,208,100, 62,235, 15, 0, 62,190, 1, 58,190,208, 73, 89, 9, 35, 66, 1, 96,205,207,123, 26, 63,136, 77, + 31,183,114,229, 42,135,200,120, 37,238,199,203, 33, 20,112, 96, 52, 89, 65,108, 12,106, 91, 41,119,194,236,153, 51,156, 10,212, + 22, 92,137,206, 65,204,189,203,212,160,210, 13,119, 48, 59,245, 23,123,133,188, 15,160, 6,128, 23,132,208,141,234, 44,239, 95, + 41,189, 82,233, 78, 6, 86,107,225,243,178,212,179, 70,117, 11, 79,216,131,111, 39,110, 65, 8,173, 75, 40, 92, 0,154,150, 87, +116, 79,181,213,169,169,179, 98,177,116,241, 92,172,222,124, 4,233,121, 58, 72, 45, 41,248,117,203, 66,124,241,221,110,104,245, +101,103, 53, 84,228, 71, 74, 51, 70,175, 27,174,226,255,139,215,251,238,187,239,122,190,118,108,122,150,113,204,254,180, 94,241, +247,151, 44, 89,178,184,196,231, 26, 91, 77,214, 43,163, 85,188, 81, 21,108, 92, 45, 15,159,192,223,127, 61,122,216,165, 64,101, +132,189,128,139,128,106, 53, 49,127,237,175, 30,239, 53,118, 71,174, 81,138, 61,155,126,200,215,105,148,251,108,186, 88,120,133, + 54,115,116,116, 60,117,248,208, 17, 4, 5,120, 10,118, 93,207, 79,140, 74,208,190, 10,245, 42,114, 94,218, 85,115,210,240,250, +247,235,231,112,241,210,229,207,203, 50, 90, 92,194,173,242,243,142, 67,158,142, 34, 62, 8, 1,148, 90, 51,198,189, 63,224,237, +111, 99,212,202,253,112,244, 40,144, 34,147,165,200,203,196,172,175, 62,214,137, 77,113,143,147,147,146,211, 58,247,250,226,162, + 66, 69,116, 67, 70,126,124,247,113,236,119, 5, 21,215, 98, 83,106,143,136, 30,130,194,200, 1,192, 37, 4, 86,106,205, 10,169, + 38,249,244, 79,205,133,153,250,159, 43, 50,110,202,180,103,249,142, 62, 97, 3,119, 46,159,244,179,175,151,167,155, 68, 44,162, + 18, 7, 33,169, 27, 26, 44,104,222,188,165, 93,181,144,250,130,235, 79,180, 72,206,209, 34, 33, 93, 14,161, 87, 67,222,208,142, +239, 97,231,170,105,237, 9, 33,156,215,147, 20, 95,231,252,149, 91,189, 54,175, 95, 41,204,146, 25,241, 52, 89,133,204, 2, 29, + 50, 10,244,200,204,215, 65, 34,226,163,109,239,241,194,147,191,110,236,213,169, 77,179, 53,111,178,123, 19, 18, 18, 79, 38,165, +101, 12,170, 31,222, 20, 59,127,217,214,198,197,165,186, 83, 65, 65,130,194,214,163,179,112,225, 66,187, 37, 75,150,240,214,174, + 93,171,104,222,188,185,247,204,153, 51,187,101,103,103,223,169, 90,181,106,200,217,195,219, 47, 53,108,219,167, 9,172, 70,143, + 54,237, 58, 8,132, 86, 30,206,157, 56, 97,220,191,111, 87,158, 86,171,252,168, 92,195,225, 32, 93,152,165, 34,240,240,243,139, +145,216, 89,186,240, 56,178,216,252,211,159,238, 0,112,184,198,123,147, 47, 92,190,247, 44,182,113,100,146,231,165,200,231,217, +249, 26, 99,173, 23,167,167,150,123,225,229, 18, 2, 62,151, 3, 71, 17, 15,156,162,171,170,163, 95,131,231, 32,196,163, 56,114, + 74, 64,138,254, 2,132, 32, 61,255,101,148, 13, 57, 27,132, 90, 41,240, 44, 85, 13,149,174, 48, 52, 95,197,221, 1, 57, 89,169, +248,105,205,118, 68,221,187,139,174,239,245,198,186,159,119, 97,220,251,131,116, 21,169,113, 56, 69, 17,173, 18,209, 44,137,136, + 7,128, 64,166, 54,225,208,141, 20,212,168,206,177,249,198, 0, 0,142, 18, 7,200,149, 90,112, 4,142,120, 17,121,202,225,244, +229,219, 51,231,124,187,242,203,130,140,232,228,231, 15,175, 35,196, 93,142,234,126, 70,196,100, 58,225, 94, 94, 53,132,212, 12, + 2, 71,112,215, 38,237,220,152,176,165,191,114, 14,245,108,220,176, 78,139, 64, 79,103,104, 13,150,162,168, 22, 23,219,182,238, + 64, 82, 98,234,135,185, 49, 71,163,222,133,163, 85,101,197,231,216,123, 5,127,242,240,246,197,132,126,195, 63,129,143, 95, 64, +131,202,164, 45,216,242,158,197, 70,163,101, 39,118,153, 57,109,238,242,201, 93, 35, 6,226,214,245,139,184, 31,243, 2,205,154, + 53,193,123,125,135, 66,169,200, 15, 61,176, 99, 85, 23, 0,103,121, 66,243,228,166, 45, 59, 18,171,197,130,184,167,143, 94,148, +166,165, 73,127,122, 31,128,211, 31,154,167, 60,106, 55,144, 72, 93,239,235,141, 22,164,165,165,226,183,223,175,132, 23,173,103, + 51, 66, 1, 23,231,162,178, 97, 52, 89, 97, 52, 91,209,182, 93, 23,131,128,163,111,179,104,229,214,230, 25,233, 25, 28,177,147, +187,213,213,175,182,192, 71,104,212, 63,136,151, 11,140, 38, 43,130,124,197,229,106,122,248,214, 92, 60,109,218,148,218, 92,129, + 8, 74,181,222,144,145,158,230,189,105,207,101,213,147,167, 15,253,170,120, 74,157,190, 95,181, 81,160,208, 17,100,203,245,200, + 87, 42,200,240, 9,211,125, 55,255,248,221, 8, 0, 54,207, 77, 75, 40,170,159, 60,119, 61,212,197, 81, 64, 84, 58,179, 53, 79, + 97,180, 12,239,219,225,173,234, 78,145,201, 26,191,114,197, 42,135,168,120, 37, 30,196,203, 97, 47,224,194, 78,192,129,193,100, +133, 45,167, 19, 33,132, 83,189, 94,187,143, 90, 54, 14,195,217,251,185,224,114, 57,208, 42, 11, 52, 60,228,197, 54,110,223,213, +161, 81,211,230,232,208,190, 29,158,199, 62, 11, 56,113,236, 80,167,155,191, 93,205,148,120,134, 76, 82,101, 63, 59, 82,169,122, +174,209,112, 77,118,222, 31,248,248, 85,109,213,127,232, 7,210,192, 0, 63,226,233,238, 6, 51,229, 97,252,251, 3,108, 62,243, + 11,141, 57,176,228,219,153,208,235, 13,240,112,182, 3,165,192,214, 53,243, 97, 48, 24,224,235, 38,132, 92,109, 42,243,251, 21, +249,145,178,162, 80,149,108,134, 62, 81,154,217,122,253,125, 66,200,137, 25, 51,102,204, 2, 64,103,204,152, 49,171,248,245,119, +223,125,167, 5,144, 94, 94,211, 97, 73,227,197, 43,185,113,101, 22,202,206, 46,196,221, 39,240,230,185,179,103,164, 71, 31, 88, +113,235,200, 61, 68, 52,243,129,128,199,129,131,212, 23, 15, 18,229, 56,121,120,189,236,215,189, 27,211,244,122,253,178,138,219, +154,131, 27, 59,138,157,206,254,178,115,159,213,221,205,141,243,211,185,156,248, 60,165,249, 85,147, 86,236,237, 99,214,123,103, + 55,249, 80,144, 51,246,246,246, 53, 13, 6,131, 75, 69, 7,118,235,185,151, 69, 73,188,228, 93, 92, 91, 65,184, 92,203,206, 93, + 59,225,238,100, 7,189,201,138, 25, 95,126,166, 29,213, 85, 34, 27, 62,120,104,199, 14, 61, 38, 95,226,139,131, 47,182, 12, 15, +166, 13, 27, 54,148,113,185,220, 10,245,242, 18,238,252,169,119, 69,104, 53,135,177,179,167,143,154, 93, 74,115,161, 77,137,187, +202,140,135, 55, 0,252, 33, 66, 66,106,212,176,219,125,224,215,207, 6, 14, 30, 50,199,175, 65, 95, 73, 98,134, 28, 2, 98, 68, +147,218, 62,184,124,230, 8, 77, 77,138,157, 82,145,201, 2,128,236,156,124,127, 15, 15, 47, 68, 37,168,144,150,167, 69,102,145, +201,202, 40,208, 67,169, 85,162,126,160, 47,100,114,185,255, 27,239, 95,224,200,217,179,103, 7,245,232, 51, 4,147,191, 92,208, +122,203,250, 31,162, 37,222,181,198,168, 50, 99,175,216,242,164, 72, 8,201,255,234,171,175,106,252,252,243,207,156, 17, 35, 70, +104,195,194,194,236, 71,142, 28,217,122,199,142, 29,246, 14, 14,246,218, 7,215,143,205, 25,251,233,140, 62,155, 86, 47,108, 80, + 80, 80, 64,204, 38,211,105, 99, 65,193, 12,101, 5,102, 46,249,215,153, 79, 73,157, 5,163,187,180,241, 56,230,234,192,169, 43, +164,134,161,164,206,130,125,244,241, 60,227,139,211,107,148, 97,131, 87,124,154, 46,179,206,214,113, 60, 23, 85,100,178, 0,128, +195, 37, 48,152, 45,112, 20,241,193,225,112,138, 77,188,207,182,125,167, 29, 60,164,118,224,115, 57,224,113, 11,163,157,185, 10, + 35, 62,249,160,143,205, 79, 2,102, 11,133,214, 96,134,166,232,233, 80,169,200,197,204, 47,167,226,189, 94,253, 48,246,163,169, + 40,208, 2,247, 18,148, 48,154, 76, 21,158, 20, 28,194,129, 70,111,198,152,174,129,200, 87, 25,161,214,154, 97, 48, 91,225, 96, +199, 3,159,199,129,216,158, 7, 39, 7, 62, 64,169,160,248, 98,194,231,243,117, 70,163,113,103, 57,199, 9,213,252,189,160, 53, +113,208,116,200, 15,232,220,162, 22, 98,110, 28,226, 93,189,245,176,250,231, 95,206,198,103,227,122,225,224,211, 26,112,245, 12, +132, 68, 44,130,137,114, 0,216, 54,116, 8,165,243,172, 62,161,253,135,109,248,121,235,179,111,230,206,176,151,169, 9,132, 2, + 46, 46, 93,188,128,155,183,239,173,206,137, 57,186, 19,239, 16, 62,229,120, 57, 57, 57,193,222,142, 11,131, 81,111,176, 61,117, +129,130, 2,225, 18,175,144, 13, 69, 79,252,225, 22, 43, 74,121,175, 98,163,197, 23, 73,103, 76,254,106,225,226,174, 17, 3,113, +238,196, 65, 28, 56,184,207,210,162,251,135,220, 93,219,214,163,117,231,222,104,221,117, 8, 78, 31,217, 49,149, 47,146,214, 25, +255,217,215,223,182,237,216, 3,231, 78, 30, 68, 86,102,234,114, 91,203,203,229,147,201, 29,187,244,130,206, 96, 65,155, 78, 61, +113,230,248,145, 79, 81,212,201,194,246,155,216,107,215,103,112,204, 83,167, 76,230,103,203, 12,252, 28,133, 1,169, 57, 26, 36, +102,105,240,235,222, 45,212,246,235,133,161, 73,219,250, 85,248,227,151, 94, 74,241,175,226,163,231,235,181,162,216, 23,241,161, + 99, 63, 24,197,175, 94, 51,148,147, 45,215, 35, 71,174, 71,174, 92, 15,149,206,140,154, 85,130, 57, 38, 51,105, 81,217,227,236, + 46,181,227,175, 59,158, 0, 39, 49, 31, 45, 67,223,188,163,173,213,106,253,143,201, 90, 89,104,178,162, 19,228, 16, 10,184, 16, + 10, 56, 16, 10,184, 48, 91,168, 77, 15, 46, 34,207, 90, 61, 62,153,244,177,175,193, 12,228,201, 13,224,113, 9, 60,221, 93,196, + 77, 26, 12,195,214, 31, 62, 5, 0,140,251,234, 39,140, 29, 51, 18,181,235,134, 65, 86, 80,224, 61,108, 96,143,149, 0,142,216, + 90,214, 83,231,174, 4,156,187, 22,245,213, 39,211,230, 73, 6,247,234,192,189, 31, 47, 71, 70,190, 30, 47, 98,149,149,138,188, + 1,128,217, 98, 5, 5,197,246,125, 39, 32,178,227, 33, 71,110, 4,165, 20, 11,215,238,135,163,136,143,140,130,194,230,254,242, + 40,207,143,148, 23,145,170, 68,180,177, 39, 10,115,185, 60,108,141,104,125,247,221,119, 49,223,125,247, 93,169, 17,178, 98,147, +245,198,147, 74,219,217, 73, 66,221,221,124,111,157, 59,115,202,241,200, 3, 11, 46, 63,200,195,192, 54, 85,160,202, 79,198,178, + 47, 7,231, 19, 80, 3,135,203,149,233,181,154,195, 90,173,122, 17,165,212, 88,174,201,242, 9, 9, 23,139,156, 46,172,219,244, +139,217,221,211, 19, 59,175,231,167, 22,168,205,166,255, 52, 91,153,200,189,179,155,170,155,173,166,238,218,204,184, 10, 31,111, +173, 20,130,239,214,255, 10,128,194,106,181,130, 90,173,224,219, 75,196, 30, 53, 90,100, 21, 93,232,236,121, 28,162, 43,121, 5, +160, 86,115,106, 78,124,249, 97, 80, 2, 64,234,192,199,190,171,105, 0,144,197, 85, 70, 62, 25, 62,184,176,185, 80,103,176, 87, +212,173, 81,131, 54,105,210, 68, 38, 18,137,222,248, 96, 87,182,185,208,166, 10,244,226,133, 1,192, 82,223,144, 54,253,186, 73, +234, 55,181,227, 8,208, 40,196, 7,151,207, 30,165,183,206,108, 29,167,201,122,246,139,141, 21, 17, 42,157, 9,233,121, 58,164, +229,233,144, 89,160, 67,102,190, 30,153, 5, 58, 16, 66,160, 51,188,221,240, 55,234,236,103, 7,118,254,178,185,183,222,136,161, +109,187,246,195,212,121,235, 2,119,110, 88,114, 65,228, 21,218,202,150, 68, 91, 74,169,133, 16,146,244,193, 7, 31, 52,216,179, +103, 15,183, 94,189,122,218, 39, 79,158, 56, 0,176, 2, 48, 74, 36, 14,162, 45, 63,126,119,182,105,211,166,123,211, 98,159, 94, + 2, 80, 96, 75,247,252,170,237, 63, 16,134, 58,229,143, 15, 16,183,236, 22,228,237,128, 0,177,178, 91,168,228,193, 50,207, 78, +159, 47,206,190,184, 42, 59, 67,111, 62,159,163,229, 54, 76, 83,241,109,202, 21, 52,233,117, 47,251, 15, 28, 10, 46,225,192,168, +211,188, 44,174, 92,158, 82, 59,204,223,245, 20, 18,123, 62, 28, 69, 60, 72, 68,124,180,174,227,138, 74, 92,207,168,201, 98,133, + 70,111,129, 86,111,134,206, 96,134,187,191, 11,126,222,121, 0,201,217, 90,252,122, 55, 23,207, 94, 42, 17, 92, 69, 12, 74, 43, +190, 76, 90, 45, 38,117,175, 1, 35, 28,185, 28, 2, 46,135,112,234,132,214, 66,190,202, 8, 1,143, 3,129,189, 8, 98, 33, 15, + 78, 34, 62, 4, 2, 62,178,179,179,161,215,235, 17, 16, 16, 96, 95,190, 21,164,112,148,136, 16, 92,221, 23, 70,147, 25,167,174, + 61,198,162, 41,253,209,165,109, 99, 16,190, 4, 79,245,225,112,116,117,132,149,195,129,209,108,133,193,104, 1,192, 41, 51,250, + 22, 16, 16,208, 81, 44, 22,139, 53, 26,141,242,229,203,151, 87, 50,158, 30, 78,246,172,219,119,252,153,115,151,118,246,124,175, + 11,162,162, 99,112,240,200,177,235,185,110,242,105,197,223,169, 87,175, 94,115,119,119,119, 73, 94, 94,158,226,225,195,135,119, +222,240,233,151,136,189, 66, 63,111,209,186, 61, 84,178,108,100,165, 36,218,252, 20, 93, 59,208, 17, 95,127,183,174, 81, 72,173, +144, 70, 22, 90,104,188,234, 4, 56,226,139,121,107, 26,213, 8,174,213,168,184, 67, 72,237, 0, 73,249, 38, 75,236,212,245,253, +241, 95,124,215,123,224,104, 92, 58,119, 12, 43, 22,125,185, 83, 44,245,168,237,234, 34,109, 88,175,121, 87, 92,191,112, 12,246, +142,222,112,113,243,110, 61, 98,204,164,206, 3, 71, 76,192,205,235, 23,176,122,201,172, 29, 22,189,114,183, 45,101,149,120, 5, +121, 52,108,210,118,184,163,171, 23,100,114, 37, 28, 93, 60, 81,187,126,147,225, 18,175,160,175, 84, 89,241, 57,111,122,174, 91, + 41,133,222, 72, 81,160, 50, 34, 37, 71,139,164,204, 66,163,101,181, 86, 34, 39,200, 98, 37, 18,123, 30,207,213,244, 60,224,225, +133, 75, 52,208,223,139, 44,253,246, 75,174, 17,246,200,145, 21,154,172, 28,133, 1, 57,114, 3, 84, 58, 19, 92,197, 60, 88, 45, +214, 74, 63,117, 23,168,140,112, 44,202,163,181, 88,223, 60, 55,124,253,182,125, 33, 15, 98,211,251,174, 88,177,202,225,126, 66, + 9,147,197, 47,140,102, 9, 5, 92, 88,172,214,162, 59, 77, 5, 6,155,199,159,220,167, 71,103,164,228,106, 11,123, 45,115, 8, +130,195,154,194, 93,100, 69,167, 33, 51, 0, 0,189,122, 20, 14, 95,146,144,161,198,241, 91, 57,192, 31, 19,187,203,191, 22,107, +181,220, 77,187, 78,126,126, 96,255, 94,169,206,194,195,198,211, 73,208,232,205,176, 23,112, 33, 20,112, 33, 18,112,255,144,143, + 93,177,209, 42,204,185, 75,206, 53, 65,163,211, 65,161, 53,129, 2,184,243, 92, 5,173,193, 12,185,218,132,230,161, 46,111,251, +236,115, 18, 64,196,235,134,232,117,179, 84, 34, 34, 85, 26,119, 75,106, 20,175, 95,150,145, 43,153,179, 5,160, 82, 61,184,120, +175, 59,199,146,175,237, 36,174,181,165,110, 30,183,206,156, 62, 33, 57,242,192,138, 43,209,133, 38,203,164,205,197,242,175,134, +165, 42,100,185, 29, 40,165,241,182,254,152,216,163, 78,125,145,131,195,165,239, 87,109, 52,122,122,249, 89, 15,223,146,101,203, + 53,150, 63,196, 16, 45,122, 61,135, 90,169,192, 22,147, 85,212,228, 97,156,247,105, 63, 88, 41,197,252, 85, 7,176,120,218, 16, + 72, 68, 35, 28, 8, 33, 14,106,157, 25, 83, 22,108,198,242,175, 63,116,116, 16,242, 64, 8,160, 51, 88,240,254,208,126,182, 85, + 64,157, 25, 47,110,239, 81, 41, 19, 78, 60, 41,217, 92,216,172,245,123,247,154, 53,107, 38,115,113,113,129, 72, 36,250, 79,164, +194,198,139,118,105,189, 11,179,101, 72,117,116,116,108,231,228,228, 84, 82, 79, 45,147,201,142,190, 73, 45, 84,202,114, 47,101, + 38, 61,108,218,170, 67, 47, 92, 57,123,148,222, 58,189,101, 92,101,198,232,113,113,117, 73,137,124,248,162, 54, 33,174,133, 17, +173, 34,147,101, 48, 89, 17,232,229,128,148,164, 23,112,150, 74, 83,108,213,115,240, 12,237, 67, 56,244, 35, 2,186, 85,149, 25, +123,160,200,244, 12, 19,123,135, 70,199, 60,186,191,168,231,240,201,188,174, 3, 63,230,110,248,110,210, 44,188,150,196, 90, 14, +198,103,207,158, 61,254,240,195, 15, 91,222,188,121,211, 2, 64, 67, 8, 49,113,185, 92, 7,131,193, 32,232,208,161,131,252,233, +211,167, 87, 81, 74,210,226,235,180, 25,115,208,157, 8,149,239,213, 8,110, 50, 44,208, 81,217,165, 67,155, 22,104, 81,215, 31, + 41,109, 90, 0,192,228,151, 42, 73, 72,235,137, 91,246, 85,247,168,114,106,195,182,227,139,199, 13,233, 60,197,183,215,130, 21, +233,199,231,149,155,136,154,252,248, 74,183,210,108, 60,143,203,129,163,136, 15,137,136, 7, 71, 17, 31,142,246,124,152,204,180, + 50, 79,142,212,100,182, 22, 70,180, 12,102,168,180,102, 92,186,159,133, 76,185, 1, 50,165, 17, 90,163, 5, 20,180,240,105,212, +134,171,121,118,220, 13,231, 87,199, 62,176,145,124,211,218, 31,156, 14,221, 72,125,213,163, 79,234, 96, 7, 71,135,194,222,216, +215,174, 93,131,155, 91,197, 79,251, 86,171, 21, 7,207,220,193,138,237,151,112,102,235,116,216, 11,184,168,223,103, 1, 70,247, +109, 6, 43,181,226,197,179,152,172,224, 58, 13,188, 56, 28, 17, 56,132, 64,111,178, 2,160,101,238, 79,131,193,224,150,156,156, +172,168, 89,179,166,183,159,159,223, 64, 46,151, 75,133,128,254,232,222,124,205,197, 19,187, 29,212, 90,189,197,193, 44,223, 90, + 51, 67, 27, 17, 28, 28, 12, 66, 8,117,119,119, 23, 92,186,116, 73, 21, 22, 22,230,241,134, 38,139, 35,242,172,181,122,236,196, +207, 7,214, 8, 10,194,129,221, 91, 65, 41, 57,100,235,247,119, 29,191,137,111,103,254,177,135,225, 23,243,214, 52, 90,190, 96, +242, 31,222,155, 56,115, 69,185,189, 14, 69, 66,201,180,254,195,198,227,222,157,223,177,108,193, 23,123,245,170,252,209, 38,179, +105, 80,126, 70,194,222,234,117,154,129, 26,149, 56,183,255, 7, 12, 25, 57, 78,216,181,231, 64,220,188,126, 1,139,103, 77,220, +165,145,101,127, 96,235,248, 95, 86,202,255,168, 67,183,190,124,173,222,136, 53, 75,231, 98,194,180, 69,104,222,177, 23,255,209, +253, 91, 31, 1,248,198,214,109,214, 27, 45,232, 16,230, 94,104,158, 77, 86, 28, 75,224,242, 74,171,129, 60, 46,225, 52, 12,114, +134,214, 96,134, 66, 99, 42,255, 70, 37,224,103,202,228,138,170, 63, 46,254,156,171,214,153,145, 35, 55, 32, 91,174, 71,174,236, + 63, 6, 43, 87,174, 71,142,220, 0, 62,143, 32, 54,254, 37, 56,124, 94,165,243,243, 10, 84, 38, 52,173,229, 82,120,142,190, 97, +235,136,137,231,212,236,204,213, 7,253, 87,172, 88,105,255, 32, 81,137,232, 4, 69, 81, 36,139, 11, 33,159, 3,187,162,255, 45, + 86,160,162,159,144,122,214,168, 62,234,195,113,157,156, 36, 34,164,199,101,131,199, 45, 28, 34, 70,234,233, 15,169, 80,135, 73, + 19,199,195,221,205, 25,201,185,122,172, 62, 18,139,232,199,207, 97,213, 86,110,179,215,108,220,219,125,236, 39, 95, 56,115,248, +118,216,113, 54,177,176,156, 92, 11,158,222, 58,174, 75,127,241, 80,173, 82,228, 81, 80,139,141, 1, 0, 66,205,150,194,234,182, +120,254, 12,236,221,254, 19,206, 70,102,191, 74,222,186,113,104, 57, 62,159,185, 16,185, 10, 67, 81,213, 47, 63,146,245,218,235, +156, 18,145,168, 63,189, 46, 97,142, 74,123, 77,138, 94, 27,202,208, 48,188,102,174, 12,175,189,111,120, 77,239, 65, 41, 15,255, +155, 42,108, 58,252,147, 41,114,241,172, 39,117,148,254,126,250,244,113,241,209,104,250,202,100, 25, 53,185,116,209,228, 94,169, + 10, 89, 78,215, 74,153, 44,207, 90,245,132, 98,241,213, 57, 11, 87,235,189,252,170,154, 79,221, 87,228, 41,117,150, 63,133, 69, + 4, 14, 98,139, 88,234,161,115, 14, 12, 95,193,215, 26,230,230,228, 60, 86, 87, 20,121,178, 82,138, 19,183, 51, 65,105,225, 35, +210,254,107,105, 40,122, 50,135,197, 90,216,172,114,254,126, 54,120, 69,121, 40,182,134,191,215,111,252, 73, 17, 17, 38, 87, 15, + 95, 60,255, 85,115, 97,243, 6,133,145, 44, 39, 39, 39, 56, 59, 59, 67, 34,145,192,150,166,195, 98,202,234, 93,232,232,232,216, +238,254,253,251,246, 78, 78, 78,224,114,185,208,235,245,168, 91,183,238, 27,157,232, 18,239,208, 79,154,118,236, 55,171,117,199, + 94,184,116,230, 48,189,117,102,219,248,202, 14,132, 24,209,185,229,241,111,191,157, 95,125,206,162, 31,133,142,246, 60, 60, 81, + 25,192, 33, 4,129, 94, 14,112, 19,115,112,229,232, 14,221,144, 94, 45,109, 30, 28,207,223,223,111,231,242,181,155,196,203,151, + 44,232,224,232, 23,114, 73,153,246, 44, 31, 0,212,153, 79,151, 58,120,135, 62,174,242,251,185, 83, 13,218,245,131,151,111, 80, +151, 74,132,127, 41, 33, 68, 19, 31, 31,159, 48,103,206,156,144, 37, 75,150, 80, 46,151,107, 5, 32, 92,181,106,149, 38, 46, 46, +238, 62, 10,187,230,162,162,155, 77,167, 46,117,167, 72,236, 44,205, 93, 29, 56,117,131,188, 29,208,162,110, 97,171,232,144,136, +214,240, 15, 8, 64,124,166,166, 97,190,198,202, 87, 25,184, 65,235, 54, 70,223,173,230,206, 29,103,214, 26, 30,163,130,193,100, +203,170,179,197, 9,242,197,209, 44, 71, 17, 31,214,194, 27,123,165,140,150,222,104,129, 86,111,129,214, 96,134,218, 96,129,198, + 96,129,149, 22,158, 19,132, 16, 24,205, 86,216,244,216,252, 90,221,119,114,117, 71, 80,181,194, 94,178,142,162,194,161, 30,156, + 28,248,133,125,164,221,220,224,233,233,105, 83, 84,212, 96, 44, 60,197, 13, 38,235,171,102,125,131,209, 12, 74, 41, 98, 99,159, + 77, 79, 74, 72,232, 83, 51,184,102,219, 58,245, 27,184, 58, 8, 57, 0, 80,166,209,210,104, 52, 22, 71, 71, 71, 79, 87, 87, 87, + 78, 90, 90,218, 43,243, 92,179, 97, 7,243,145,195,135,208,191,127, 63,213,147, 59, 15, 94,117,113,215,106,181,164, 85,171, 86, + 78,254,254,254, 28,189, 94,175,168,220, 62, 32, 68,236, 81,171,175,127,104,203, 69,239,127, 48,161, 86,135,206,221,113,249,226, + 57,252,122,120,207, 47,234,236,103, 54,143,156, 29, 18, 18,250,167, 94,135, 53,130,107,253,169,215, 97,213,234,193,229, 26,173, + 58,245,155, 52,163,132,135,179, 39,246, 83, 29,199, 56,177, 48,225,157,236,223,183,254,235,111,134,125, 52,179, 70,143,222,195, +240,254,200,209,224,241,184,184,114,254, 56,150, 47,152,122, 82, 37,207, 30,101, 75,154, 0, 0,144, 58,117, 4, 53, 3,170,126, + 22, 80,163, 30, 34,111, 93,199,139,216, 71, 49, 15,238,222,172, 91, 51,172, 57, 60,124, 3, 63, 35,117,234, 44,161,143, 31, 27, + 43,210, 49,232,116, 47, 71,143, 26,137,146,189, 14, 91,132,135,184,145,215, 79, 0, 0, 26,101,182,113,203, 15, 83,226,138,123, + 29, 90,141,134,151,101,233,202, 11,114, 14, 94,249,237,246,180, 62, 17,221, 57,185, 10, 67, 97, 4, 75,110, 40, 90,244,200, 45, +254, 95,161, 71,176,175, 4,207, 98, 34,173, 58,121,238,161, 74,158,151,186,209,131,186, 61, 46,174,187, 86, 43, 5, 1,116,149, + 61,191, 41,223,105,252,210,101, 43,236, 31, 36,168, 16,157,168, 40,108, 42,228,115, 11, 13, 22,159,243,202,116, 21,246,102,175, + 32, 58, 68,184,139,199,140, 26,138, 92,133, 17, 86, 43,192,227,114,138, 22, 1,146,149, 4, 41, 74, 13,114, 11,114,144,144,244, + 18,178,204, 23,224,112, 56,112,247,173, 5, 91,195,143, 22,106,231,163, 49,208,176,129, 17,109,121,135,127,207,128,131,144, 7, +189, 50, 11,167,247,253,144,163, 87, 41, 22,105, 53,170,195,218,188,184,116, 91,183,157, 67, 72,142, 66,165,243, 18,242,185, 56, +176,253, 71, 12, 26, 61,177,104,167, 20,254,153, 62,251, 91,128, 67,144, 95,160, 4, 33,164,178, 81,210,187, 21,188,126, 19,222, +133, 6, 74, 51, 87,127,120, 80, 40,251,105,148,158, 62,119,230,184,248, 70,146, 16,119,158,101, 20,153,172, 28,235,194, 79, 35, + 82,149,242,252,110,148,210,216, 74,149,128,195,233, 54,100,204,180,152,160, 90,117,244,151, 31,169, 18,101,106, 83,153,121, 14, + 45, 6,206,137,185,119,114,109, 15,185, 41,254, 99,137,111, 93,139,213,108, 94,170,201,126,182,160,140,166, 67,187, 5,171, 15, +188,106, 54,252,106,201,142,194,255, 45, 22, 88,168, 21,212, 10, 76,250,122, 61,204, 86, 11,172, 22, 11,172, 22, 10,147,133, 58, + 84, 84, 92, 79,223,170,135, 11,158,238, 15, 29,254,205,159,155, 11,157,157,157,225,230,230, 6, 55, 55, 55, 20, 27,163,183,109, + 46,116,114,114,130, 68, 34,193,245,235,215, 33, 18,137, 32, 22,139, 43,165, 91,194,100,125,220,164,125,159, 31, 59,246,254, 16, +231, 15,111,164,119,175, 29,159,160,201,122,182,217,230, 8,189,197, 66, 76, 38, 19, 34,186,182,127, 25, 21,243,252,204,236,105, + 31,117,111,217,115,130,176, 69,136, 31,116, 6, 11, 82,147, 94,224,202,209,109,186, 90,213,125,206,118,106,211,236,165,201,100, +130,197, 98,169,240, 70,174, 51, 24,115,185,124,145,120,232,208,225,252,187,119,238, 28,146,120,214, 58, 96, 33,156, 7,132, 90, +235, 19, 66,250,215,175, 95, 27, 70,147, 21, 26,141,162,160,178,219,172, 84, 42, 19,182,110,221, 90,125,212,168, 81, 14,117,234, +212,225,191,120,241, 2,203,151, 47,207, 83, 42,149, 9,182,106,156,187,246,108, 21,143, 20,196,217, 89,141,195, 2, 29,149, 93, +146, 91,183,192,208,158,173,177,247,228, 13, 92,185,126, 19, 47, 85,146,251, 42, 51,239,104,202,203,116,125, 93, 87,197,161,222, + 45,170,114, 15,108, 47, 56,228,217, 97,230, 96, 74,133,231,114,174,204, 83,219,126, 19, 7,148, 90, 19,156, 28, 10,199,123, 42, +142,108,113, 9,177,217, 17, 17, 32,225,250,205,200,122,141,131,235, 32, 42, 65,142,108,153, 30, 90,189, 25, 86, 43,133, 21, 20, +110,142,118,176, 23,112,144,156,148, 0, 43, 53, 38, 86,242,114,145,211,174,109, 59, 30, 64, 64, 8,229,241,121, 60, 80, 20,142, +175, 40, 18,137, 84,158,158,158, 54, 69,180,140,102, 51,250,119,111,134,230, 77,234,163,207,132,194, 49, 51, 47,254, 50, 3, 46, + 18, 62,246,238,220,140,228,171, 43,119, 6,181,156,120,238,209,195,152, 1, 49, 81,191, 15,127,175,145,168,161, 55, 47, 93, 80, +150,158, 74,165, 58, 68, 8,177, 19, 8, 4,221,219,182,109,235,122,232,208, 33,153,187,187,187,213, 78, 32,200,233,221,171,167, +149, 47, 16,228, 23,175,251,219,111,191,241, 39, 76,152,224, 88, 80, 80,144,156,149,149,117,147, 82,106, 42,255, 65, 48,180, 51, + 56,216, 3, 66,236, 37, 34,135,151, 45, 58, 15,245,109,210,188,153,180,111,255, 65, 16,218, 9,113,254,220, 25,172, 89,185,100, +191, 42,227,201,152,202,236,201,119,213,235, 48, 53, 57, 49, 65,163,213,135,213,107,220,158, 92, 63,119,116, 50, 33, 30, 43,185, + 66,167, 31, 58,247,159, 88, 35, 33, 93,133, 53,223, 77,135,139, 84,140,196, 23, 79,181,113, 79, 30,174, 55,233, 20,211,109, 53, + 89, 0,224,144,103, 25,208, 98,100,119, 23,189,209,130,107,151, 78,234,172,102,107,247,155, 87, 79,189,168, 82,171,137,125,189, + 38,157, 92,114,127,221,220, 31,192,222,138,116, 82,159,252, 57,130, 27, 16,210, 52,241,226,165, 11, 82,175,192,186, 92, 2, 2, +163, 94,135,156,248,187,102, 77,214, 83,133, 60,245,161, 77,189,112,243, 82,240,245,204,121,223,127,220,164,113, 99, 49,133,253, + 31, 34, 88,197, 6, 43, 87, 97,128,187,163, 29,180,138, 28,196,221, 61,163,211,228,112,203, 29,239,204,108, 80, 59,228,102,103, +189,106, 98, 83,101, 61,107, 94,222,250,185,217, 89,118,102,131,218,161,226, 91, 29, 23, 78, 98, 59, 60, 76, 76,123,149,248, 46, +228, 23,230,102,217,241,185,175,242,180,138,175, 5, 21,208, 94, 96,239,140,180, 60, 29, 8, 40,172, 22, 51,204, 38, 3,148, 10, + 5,210,210, 51,145,149,153, 5,165, 82, 6, 7,137, 11,234, 53,108, 10, 71,177, 61, 30, 92,217, 15, 74,169, 77,227, 26,154, 8, + 63,164, 73,243, 54,194, 71, 73,133,185, 88,246,124,138,227,123,150,228,169, 20,217,109,148,233,177,113,149,189, 22,155, 45,150, + 11,209,143,227,234, 86,241,169, 70,238,191,144, 99,231,207,107, 97, 40,138,108,154, 76, 22, 60, 74, 86, 35, 35, 95,131,228,248, + 39,212,106,177,252,107, 38,164,230,149, 29, 0, 4,175,126,189,218,232, 58,162, 47,126,250,105, 61,226, 19,146,172,139, 38,247, + 72, 86, 41,101,239,217,106,178, 74,206,238,173,206,124,186,116,204, 79,137,169,199,162,242, 57, 90, 67,249,243, 91,217,123, 4, +162,205,152,229,103,181,202,124, 59,139, 94,195, 59,190,115,204,158,210, 52, 11, 29, 52, 12,139,190, 24, 2,137,136, 7, 66, 8, +138,155, 11,215,125, 59, 30, 14,194,194,182,101,173,222,140, 17, 83, 86, 96,231,138,169,160, 0,134, 13,186,161, 41,171,156, 37, +154,246,170,188, 76,202, 78,235,220,235,139,139, 58,163, 80,223,179,223,168,123,141, 27, 55,150,137, 68, 34,136, 68, 34, 56, 57, + 57,193,197,197, 5,206,206,206, 21,110,123,153,131,145,150,232, 93,200,225,112,192,225,112, 32, 22,139, 33,145, 72, 32, 22,139, +203,213, 44,211,100,181,235,189,174, 83,159,177, 56,127,120, 19,189,123,237,248, 71,154,172,103, 63,219,122,140,138,154,123, 30, +244,239,223, 63,108,194,132, 9,130,121,211, 38,156, 61,121,238, 74,236,129, 19,155,122, 21, 20,200,252, 41,165,112,150, 74, 83, +134,244,106,121,188, 67,171, 38, 47, 47, 94,188,104,221,179,103,143,158, 16,242,176,162,114,230,102,103,255,114,241,194,165,249, +109,218,181,199,230,237,123,218,197, 60,126,210,238,197,139, 56,248, 7, 6,161, 90,245, 96,104,136, 11, 46, 93,189, 14,149, 44, +251, 23, 91,202,249, 90, 84,139, 20, 20, 20,252, 62,100,200,144,174, 55,110,220,224, 12, 25, 50, 68,147,155,155,251, 91,241,115, + 84, 89,209,172,146,154,191,175,239,155, 3,224,151,170,237, 63,216,159,102,148,125, 6, 96, 73, 64, 96, 0,174, 92,191,137,155, + 55,110,175,207,117, 8, 88, 48,102,196, 7,227,171,246,230,142,237,221,162, 42,215,211,197, 1,187, 55, 45,231, 30,187,153,180, + 34, 41,207,178, 25,192,183,182, 28,163, 87, 55, 14,165, 17,173,106,187,194,100,161,176,210,194, 11,174,163, 61,191,212, 11,111, +105,154, 60,131,112,204, 71, 19, 38,188,168, 87,191,225,231, 35, 62,248, 72,208, 48,200, 31,119,158,203, 0, 66,224,234, 45, 70, + 70, 70, 6,174, 29,220,100, 46, 72,123,186,158,203,181,126, 83,153,186,148,159, 20, 85,179,196,122,227,115,115,115,113,229,202, + 21, 20, 27, 44, 15, 15,143, 82,141,214,235,154,121, 89,233,191,125,187,108, 99,171,113,239,247, 67,207,246,117,113,245,238, 11, + 24,138,198,107, 42,238, 74,158,112,115,131,221,103, 67,130, 12, 31,247,175,165,208,154,236,146,190, 78,148, 95, 43,217, 43,246, +117, 77, 74,169,129, 16,114,236,217,179,103,173, 27, 52,104, 80,245,212,169, 83,249, 49,183,207, 78, 46, 89,142, 47,190,248, 66, +242,211, 79, 63, 57, 80, 74,127,211,235,245,241, 54,109, 59, 7,187, 35,239,221,115, 51,154,172,184,126,251, 65,237, 78,173, 26, +194, 74,129,187,119,239, 98,243,150,205,186,135,209,247,127, 80,103,121,127, 83,150,121, 41,107,127, 90,222,162,215, 97, 73,205, +140,180,164, 31,206,159, 60,184,179, 73,187, 94, 24, 62,233,155,111,174,156,220, 51,191, 81,155,158,156,218, 77,186, 34,242,230, + 37, 92, 56,117,230,123,163, 42,127,126, 69,243,144,150, 85, 78,161,200,225,211, 58,141,218, 33,249,101, 18, 18,227, 30,253,162, +205,139, 75,151,120,135,254,146,158,250,242,163,234,117, 91,225,198,217,189,147,203, 50, 90, 21,213,121,127, 15,209,166, 83, 39, +142, 13, 77, 77,221,224,173,214,234,132,148, 82,157,208,142,151, 41,225,148,221, 67,253,207,199,253,177, 81,236, 90,173,255,160, + 17, 31,157, 92,179,102, 37,223,203,217, 1,153, 5, 58, 40,180, 70, 40, 53, 70,112, 8, 65, 77, 95, 49, 52,202,124, 92, 61,184, +204,100, 80, 21, 12,161,244,185,177, 44, 77,137, 87,232, 66,128, 78,250, 98,226,101,216, 73,253,125,171,119,154, 85,110,180, 78, +153, 30,221,235,139,137,199, 67, 40,165,157, 36, 94,161,202,226,185, 14, 75,219,118, 66, 10,207,239,225, 29,252, 97, 52, 23,142, + 63,102,182, 2, 22,171,181, 40,202, 7,208, 87,237,249,164,130,109, 39,214,125, 39,127, 67,122,150, 12, 90,131, 9,122,131, 25, + 70,147, 5, 28, 46, 23,206, 46,206, 8,174, 22, 14,169,179, 19,178, 50,211,113,243,226, 49,196, 70, 95,253,141, 80, 44,208,100, +199, 94,180,229, 24, 9, 68,206, 33, 62,190,222,156, 12,133, 1, 34, 59, 46,238, 95, 61,101, 52, 25,244, 63,216, 98,178, 74,211, +148,229,229,175,248,124,218,151,195,182,109,221,238, 29, 86,221, 9,169,185, 90,164,230,232,160,212,153,138,140,152, 21,122, 85, + 46,162, 47,109,207,180,232,148, 43,254,245, 70,203,108,212, 41, 15,157,185,227, 54, 99,254, 50,238,243, 23,241,166,133,159, 69, +164,106, 85,138, 30,149,142,100,149, 96,235,199,213,246, 86,238, 27, 69, 67,154,124,147, 84,254,243,247,235,205,133,212, 10, 43, +165, 56,126, 59,243, 85,115,161,181, 40,243, 50,234,133,172, 82, 77,123,209,207,148,187,180,218, 44,233,211,231, 63, 20, 0, 0, +151,203,125,181, 20,231, 82,233,116, 58,195,155, 52, 23,190,158,248,110,181, 90,225,228,228, 4,145, 72, 84,233, 38, 73,177, 87, +200,208, 38,237,251,252,216,169,239, 56, 92, 56,242, 51,189,123,245,216, 68, 77,246,179, 77,149,206, 81, 40, 40,136, 33,132,196, +253,240,195, 15, 13, 55,111,222, 92,125,218,180,105,241, 59,126,156,191, 6, 0,242,242, 10,231, 0,142,138,138,162, 19, 39, 78, +212,235,116,186,132,130,130,130,200,138, 58, 64, 0,128, 54,199, 97,241,230,117, 75,234,165,164,101,244, 11,170,215, 20, 30,213, +155,194,187,102, 51, 20, 40,141,184,243, 60, 29,241, 79, 46,226,201,245,131,167, 52, 18,243,252,202,150,185, 65,131, 6,254, 28, + 14,167,154, 74,165,242,174, 83,167, 78, 3,177, 88, 28,213,160, 65,131,112, 30,143,151,122,239,222,189,164,202,104, 37, 93,217, +166,175,218,254,131,213, 47,149,142, 29,226, 51, 53,225, 47,149,142, 81, 26,161,116,106,246,197, 85,122,175,174, 63,172,160,198, +220,152, 3,219, 21,135,118,111, 90,206, 29, 49,254, 11,203, 35,185,203,103, 60,145,221,249,239, 70,135, 85,162, 89,138,147,241, +241,168, 62,255, 25,222,161, 40,146, 85,244,191, 77, 97,122,153,236,129, 28,192, 87, 34,223,186, 63, 62,250,108,194,183,245,155, +180, 26,217,246,189, 33, 28,179, 64,130,179, 71, 54,208,132,232, 75, 7,120,212, 50, 91, 99,195,108, 0, 21, 54, 7, 25, 12, 21, +154,172, 82,155,123, 82,196,237, 15,236,217, 50,250,208,145,195,223,245,237,221,199,109,221,215,131,177,108,227, 81,136, 69, 66, + 80,171, 21, 67, 58, 6, 12,124,178,167, 91, 47,127, 47,123,191, 67,151, 83,175, 77, 90,249,232, 43,141,198, 24, 91, 81, 36,166, +200, 56, 95,119,116,116,204,105,221,186,117,115,161, 80, 72,114,115,115,121,158,158,158,102,169, 84,106, 72, 77, 77,213,232,245, +250, 67,148, 82,117,101,182,211,104,178, 34, 49, 75,135, 95, 15, 31,194,131,219, 23,241,228,201, 51,229,147,199, 79,214, 18, 30, + 93,169,202,140,205,127,147,125,103, 45,181,215, 33,173,116,175, 67,139, 94,185,123,199,250,133, 29, 53, 58,253,232, 6, 45, 35, + 80,181,118, 43,142,209,100,193,195,187,151,113,249,224,202,101, 6,101,222,140,183, 57,198,190, 85,170, 7, 83,174, 29,126,191, +114, 18,212,106, 93, 15, 0,212,106, 93, 31,117,227,212, 71,205,122,140,133,171,103,213, 6,132, 16, 82,217,249, 30, 1, 64,192, +227,168, 79, 31,218,118, 36, 49, 49, 17, 79,159, 62,197,243,231,207,145,159,159,143,221,187, 19, 43,117,124,212,249,137,231, 37, +110, 65,221, 6, 12, 30,126,124,224,208,247,237,171, 7,135,113, 66,170,184,192, 77,194,195,179,231, 73,136,189, 23,109,125,118, +231,148,206,168,200,238,171,201, 79, 44,211,248,137, 61,234,120, 17, 14,157, 81, 60,119, 97,139, 22,173, 66,190, 92,244, 93,115, + 55, 15,207, 82,175,227,121, 57,217,118,211, 39, 29, 11,185,121,235,119,155,230, 58,180, 90, 44,121,227, 71, 15,177,114, 11, 39, + 10,197,171, 56, 53, 41, 60,216,133, 15, 83,133,239, 83,171,185,194, 8,254, 7,253,218,192,108,181, 66,173, 53, 66,161,214, 67, +174,212, 33, 35, 59, 15, 15,162,163,113,245,248, 49,188,120,246, 32,193,100, 48,156,227,112,200, 65, 77,230,179,171,149,107,105, +226, 85,119,115,117, 69, 66,190, 10,246,118, 60, 36,197,222,211,171, 21,242, 93,111, 90,143, 52,185,177, 25, 98,175,144,174, 67, +134, 12, 61,211,177, 91,111,105,147,150,157, 29,220,157,156, 33,224, 81,196, 37,166, 35,242,183, 51,234,248, 7,215, 20, 38,131, +170,251,187,152,245,229,127, 25,155,122, 29, 26,245,234, 94,195,250,180, 59,204,229,242,236,172, 86,179,222,104,208, 15,120, 27, +147,245, 87, 65,169, 37,117,244,176,126,127,120, 54, 48, 91,169,104,216,160,179,218,146,207, 10, 38, 11,117, 24, 54,232, 55, 77, +225, 5,164,236,196,190, 87, 77,123,123,207,167,190,124,153,119, 55, 63, 95,127,249,109,123, 2,150,156,187,176,156,222,133,234, +208,208,208, 87,230,138,203,229,194, 98,177,216,124, 33, 18, 8, 69,227, 58,246,254,144, 92, 56,250, 51,189,115,229,232,199,154, +236,216,141,111,209,206,108, 4,112,155, 16,242,104,246,236,217, 77,188,188,188,188,230,206,157,107,175, 80, 40,248,235,214,173, +211,229,230,230,102, 42, 20,138,155,148, 82,173,237,154,145, 38, 0,253, 37, 94,181, 58,208, 67, 63,119,113,118,247,235, 42,245, +168, 82, 67,150,147,150, 32,207, 73, 63, 7,224, 66,209, 64,145,149, 34, 60, 60, 60,136,195,225, 12, 1, 80, 79, 44, 22,215,148, + 72, 36, 66, 74,105, 40, 33, 36,198,106,181, 70,215,169, 83,231, 4,128, 74, 29,191,164, 43,219,244,109, 63,222,178, 39, 95, 99, + 21, 24, 56,130, 61, 73, 87,182,233, 1, 32,235,220, 52, 13,128, 95,189, 58,204,232,127,236,102,210,154,152, 2,233,228,236,203, +139,143, 85,182,204,178,148,251, 53,223, 85,253,215,166,199,164, 2, 24, 45,246, 10, 89,254, 48,234,230, 60, 66,193,183,192,188, + 80,147, 21,119,239, 93,232,243,249,124,157,159,159, 95,169,189, 11,133, 66,161,174,252, 99,126,197, 12, 96, 51, 33,237,183, 31, +222,191,125,244,209, 99,191,126,215,182, 83, 95, 55,251, 42, 85, 80,205,147, 96,251,140, 70,147, 47, 70,229,220,233,253,229,181, +159,226,211,117,209,148,210, 74,229,195, 40,149,202, 88, 66, 72,129, 74,165,234, 67, 41, 77, 33,132,248, 23, 20, 20,220, 55,153, + 76, 15, 43,109, 8,172, 24,222,162, 69,211,221,132, 16, 30, 53, 91,151,222,228,115,247,232, 50,158,164,190,137,177, 40, 73, 88, + 53, 39, 76,153,187,186, 81,141,154,181, 26, 21,207,117, 88,183,170, 35, 38,124,181,188, 81,213,234,193,141,254, 51,255,161,164, +162,115,146, 18, 66,198, 28,222,178,244, 90,212,173,203,179,220,125,170, 86,205, 76,141,127,146,242,252,254,183,102,173,252,240, +219, 30,231,196,231, 49, 43, 55,255,240,213,180,140,180,132,205,234,236,216, 71, 0,160,206,142,125,228,224, 85,235,235,220,204, +212,105,121,217,241, 63,188,233,190, 80,171,213,233,187,118,237,114,110,213,170, 21,199,203,203, 11, 57, 57, 57,184,124,249,178, +213,106,181,166, 85, 86, 75,149, 23,127,153,144, 26,174,191,108,252,113,169, 64,236,216,195,108, 54,251, 82, 10,240,120,188, 12, +131, 70,113, 70,201, 17,127, 73,243, 19, 43,168,151, 86, 2,128, 83, 60,119,161,213,106, 37, 75,215,108, 79,226,219, 59,150, 58, + 63,162, 73,167,116,176, 90,173, 54,207,117, 88,240,242, 94,141,119,118,179,166,116, 65,131,198,205,103,153, 76, 70, 29, 10,243, +197,116, 0,116,148, 34,143,195, 33, 87,185, 86,211, 89,249, 91, 60, 76, 17, 2, 39, 74,120,112, 20,241, 64, 64,160,146,231,211, +202,228,100,149,122,188,179,158,197, 16,210, 62,240,180, 97,255,168, 75,231, 79, 13,178, 88, 44,213,138,106, 78,162, 94,171, 62, +160,202,112,249,133,210,187,102,252,243, 57, 89,108,182,120,229,156,216,177, 40,156,219,231,127,154,188,132, 59,141,223,165, 94, + 70, 86,254,246,110,125,167,209,196,164,236, 59,201,153,250, 95, 74, 78,171,243,182,154, 41, 41, 57,151,139,154, 11,245,127,142, + 80,188, 89,239,194, 87,198, 88,167,253,126,213,236,161,208,105,213, 59, 52,217,177,219,223,141,137,165, 90, 0, 87, 9, 33,210, +143, 63,254, 56, 92, 34,145,240,115,115,115,111, 83, 74,229,111,170,169,202,138,189, 12,224, 50,128, 25,239,162,140, 81, 81, 81, +241, 13, 27, 54,220,201,225,112,170, 81, 74,189, 40,165,210, 34, 35,155,203,227,241,210, 30, 63,126,156,246, 70,219,174,119, 60, +173, 50,112,131,205,212,229,204,159,204,135,155,231,249,151,249,150,159,185, 98,251,255,153, 28, 3,117,214,179, 24, 0, 3,222, +181,110,121,227,100,217, 94,143,254, 99,184,174,156,220, 54,154, 99, 39, 93,216, 41, 68,167,233,250,121,218,183,215, 31,230,220, +166,148, 42,223,162,142,230,216,217,217,105, 9, 33,254, 2,129, 64,107, 48, 24,162,223,104,255, 21,154,124,143,119,185,239,172, + 32,247, 26, 53,106, 92,169,245,109,136,228,109, 47, 90,222, 41,170,204,167,223,162,168,249,251, 15, 17,138,172,216,133, 0, 22, +190,141,246,221,187,119,143,255,240,195, 15,242, 53,107,214, 4, 88, 44, 22, 7,131,193,160,209,106,181,137,169,169,169,191,191, +217, 49,127, 97, 0,240, 89,209,242, 6, 81,151,167,153, 18,175, 90,171, 91,182,104,249, 89,225, 3, 58, 93,157,120,117,245,148, +242,190, 35,241,170,165, 45,185,126,121,115, 29,190,211,227,146, 29,187, 30,192,250,191, 46, 82, 97,205, 25, 62,176, 15, 80, 52, + 48,183,213,108,206,121, 39,178,133,231,252, 22,188,225, 36,233,255, 4, 40,165, 25, 0, 54, 21, 25,102,250,151,253,144,173,249, + 42, 76,147,105, 50,205,127,151,166, 45,179, 19,176,253,201, 52,255, 74, 77,145,111, 29,127, 0,176,101,210,245,178,214,103,251, +147,254,107, 18,218,109,216, 31,227, 75, 49, 91,182, 13, 88,202, 96, 48, 24,127,193,211,158,149,237, 5,198,127, 19, 91, 13,214, +155,174,207,248,215, 93,211,202,204,137, 38, 40,156, 5,187,180, 47,217,236, 84, 9, 33,157,223,160, 80, 23,152, 38,211,100,154, + 76,147,105, 50, 77,166,249,239,210,172, 72,251,239, 24, 41, 43, 37,162,117,178,168,249,176,112, 96,182,191,106, 1,208,153,105, + 50, 77,166,201, 52,153, 38,211,100,154, 76,243,223,180, 0, 24, 95,252, 63, 7, 12, 6,131,193, 96, 48, 24,140,191, 4,150,163, +197, 96, 48, 24, 12, 6,131,241, 22,148,214,116,200,140, 22,131,193, 96, 48, 24, 12,198, 59,160,188,100,120,214,116,200, 96, 48, + 24, 12, 6,131,241, 22, 20, 71,180, 8, 33, 62,132,144,241, 37, 35, 92,204,104, 49, 24, 12, 6,131,193, 96,188, 3, 40,165, 25, +175, 71,183, 8,165, 20, 39, 79,158,164, 17, 17, 17, 4,192, 31,254,103, 48, 24, 12, 6,131,193,248,255,224,239,236, 69, 8, 33, + 62, 0, 34, 74,110, 78,241,240, 14,156,146, 27,200, 14, 51,131,193, 96, 48, 24,140,255,166,217,250, 59,150,187, 56,146, 85, 98, +121, 53,105,246, 43,163, 21, 17, 17, 65,152,217, 98, 48, 24, 12, 6,131,241,223,226,159,232, 69, 56,175,111, 32, 59,204, 12, 6, +131,193, 96, 48,254,155,102,235,159,180, 61,108,120, 7, 6,131,193, 96, 48, 24,140,183,160,188, 28, 45, 82, 52, 84, 60,131,193, + 96, 48, 24, 12, 6,227,205,140,214,248,146,189, 13, 75,190,102, 17, 45, 6,131,193, 96, 48, 24,140,119, 96,182, 74,125,159, 69, +180, 24, 12, 6,131,193, 96, 48,254, 26,254,210, 1, 75, 9, 33,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,201, + 20,143, 8, 95,244,255,248,162,156,173,191,222,104, 49, 24, 12, 6,131,193, 96,252, 11,136,160,148,110, 42,145,155, 21,193,140, + 22,131,193, 96, 48, 24, 12,198, 59,164,180,201,165,153,209, 98, 48, 24, 12, 6,131,193,120,135, 6,171,228,107,102,180, 24, 12, + 6,131,193, 96, 48,254, 34,152,209, 98, 48, 24, 12, 6,131,193,248,139, 32, 0, 74,237, 57, 64, 41,189, 96,179,200, 27,244, 62, +168, 72,159,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 60,205,138,180, 43,227, 63,254,103,204,212,127, 70,134, 63, 89,244, +247, 63,205,135,148,210,191,108, 1,208,153,105, 50, 77,166,201, 52,153, 38,211,100,154, 76,243,159,188, 0, 24, 95,242,111,201, +133, 53, 29, 50, 24, 12, 6,131,193, 96,188,125, 84,171,228, 56, 90,175, 70,137,103, 83,240, 48, 24, 12, 6,131,193, 96,188, 5, +165, 13,235, 80, 12,139,104, 49, 24, 12, 6,131,193, 96,188, 5,175,207,115, 88,242, 53, 51, 90, 12, 6,131,193, 96, 48, 24,127, +129,225, 98, 70,139,193, 96, 48, 24, 12, 6,227, 29,154,172, 63, 69,183,138,178,228,113,242,228, 73, 26, 17, 17, 65,216,174, 98, + 48, 24, 12, 6,131,241,223,224,159,232, 69, 56, 37, 55,236,228,201,147,148, 29,102, 6,131,193, 96, 48, 24,255, 45,147,245,119, +244, 34,132, 16,159,226,222,134, 69,139, 79,241,103,172,215, 33,131,193, 96, 48, 24, 12,198,219, 17, 81,178,231, 97, 81,243,225, + 38,102,180, 24, 12, 6,131,193, 96, 48,222, 1,165, 37,194, 3, 44, 71,139,193, 96, 48, 24, 12,198,255, 8,255, 68, 47,242,202, +104, 49, 24, 12, 6,131,193, 96, 48,222,192, 76,149, 18,205, 42,110, 74,100, 70,139,193, 96, 48, 24, 12, 6,227, 29, 25,174,215, + 71,137,103,227,104, 49, 24, 12, 6,131,193, 96,252, 5, 38,235, 47, 55, 90,132,144,206, 76,147,105, 50, 77,166,201, 52,153, 38, +211,100,154,255,116,147, 85,252,151, 77, 42,205, 96, 48, 24, 12, 6,131,241, 14, 97,147, 74, 51, 24, 12, 6,131,193, 96,252, 69, +176, 73,165, 25, 12, 6,131,193, 96, 48,254,159, 13, 23, 51, 90, 12, 6,131,193, 96, 48, 24,239,208,100,189,110,182, 88,142, 22, +131,193, 96, 48, 24, 12,198, 91, 80, 94,142, 22, 1,208,185,140, 47, 93,168,132,139,235,252, 6,133,186,192, 52,153, 38,211,100, +154, 76,147,105, 50,205,127,151,102, 69,218,149,241, 31,255,171,252, 97,168, 7, 74,233, 95,182, 0,232,204, 52,153, 38,211,100, +154, 76,147,105, 50, 77,166,249,111, 90, 0,140, 47,254,159, 53, 29, 50, 24, 12, 6,131,193, 96,188,101, 4,171,172,207,152,209, + 98, 48, 24, 12, 6,131,193,120, 11,216, 56, 90, 12, 6,131,193, 96, 48, 24,127, 17,132, 16,159,162, 17,225,139,255,134, 51,163, +197, 96, 48, 24, 12, 6,131,241,110,136, 40,138,106, 21,255,101, 70,139,193, 96, 48, 24, 12, 6,227, 93, 81,214, 56, 90,132, 82, +138,147, 39, 79,210,162,215,237, 35, 34, 34,174,178,221,197, 96, 48, 24, 12, 6,227,255,147,127,170, 23,121, 21,209,138,136,136, + 32, 0,174,176, 67,205, 96, 48, 24, 12, 6,227,191,193, 63,209,139,112, 94,115,146,237,217, 97,102, 48, 24, 12, 6,131,241,223, +224,159,232, 69,120,175,185, 72, 6,131,193, 96, 48, 24,140,255, 10,127, 87, 47, 66, 8,241, 1, 16, 1,224,100,209,223, 87, 67, + 62,176,113,180, 24, 12, 6,131,193, 96, 48,222,210, 35, 82, 74, 55,253, 97,234,157, 98, 19, 86, 52, 84, 60,131,193, 96, 48, 24, + 12, 6,227, 13, 40,109,100,248, 98,195,197,140, 22,131,193, 96, 48, 24, 12,198, 95, 4,107, 58,100, 48, 24, 12, 6,131,193,120, + 75, 74, 70,181, 74, 54, 31,114,254,226, 31,237,204, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,249, 79, 55, 89,148,210, 77, +197, 75, 73,211,197, 70,134,103, 48, 24, 12, 6,131,193,248,139, 96, 77,135, 12, 6,131,193, 96, 48, 24,111,193,235, 81,172,146, + 77,135,204,104, 49, 24, 12, 6,131,193, 96,188, 3,179, 85,218,251,172,233,144,193, 96, 48, 24, 12, 6,227, 45, 40,109,120, 7, +102,180, 24, 12, 6,131,193, 96, 48,254, 98,195, 69, 0,148,218,115,128, 82,122,161, 18,194,149,238,125, 80,145, 62,211,100,154, + 76,147,105, 50, 77,166,201, 52,255,121,154, 21,105, 87,198,127,252, 47, 27,172, 87, 77,137,148,210,191,108, 1,208,153,105, 50, + 77,166,201, 52,153, 38,211,100,154, 76,243,223,186,176,166, 67, 6,131,193, 96, 48, 24,140,191, 8,155,141, 22, 33,196,131,207, +231,207,114,112,112,248,201,193,193, 97, 35,159,207,255,129, 16,226, 82,217, 31,148, 72, 36,147,125,124,124,158,250,248,248,164, + 6, 6, 6,158,114,114, 18,127, 94,195,158,180, 37,132,240,223, 65,232,142, 67, 8, 9, 33,132,124,238,224,224,240, 68, 36, 18, + 37, 17, 66,118, 18, 66, 62, 39,132,184,191,141,246, 66, 63, 50, 32,230,243,190, 71, 23,250,145, 1,175,253,102,132,183,183,247, +117, 66, 72,215,119,117, 80,134,137, 73,231, 65, 18,146, 60, 72, 66,146,135,137,223,124, 80, 56, 39, 39,167,145,190,190,190, 55, +221,221,221,211,124,125,125,127, 19,137, 68, 3, 43,185, 63, 61,189,189,189,151, 5, 4, 4,196,250,249,249,173, 42,154,157,252, +127,150,182,246,164, 77, 11,123,146,211, 82, 72,148,173,133,228,167,150, 66,210,165, 43, 33, 14,111, 88,151, 90, 19, 66, 14, 74, +165,210,251,124, 62,255, 4, 33,164,127, 81,253,234,207,231,243, 79, 72,165,210,251,132,144,131,132,144,214,111, 88, 79,151, 17, + 66,210, 8, 33,139,139, 94,127, 26, 16, 16,160,108,208,160, 65, 82,131, 6, 13,182, 5, 7, 7,191,111,171,158, 88, 44,238, 18, + 16, 16,112, 40, 48, 48, 48,169,101,203,150,249, 85,170, 84,121,230,239,239,191,221,222,222,190, 61,187,196, 49, 24, 12,198,127, + 25, 27,194,131,189, 0,124, 7, 96,109,116,116,116, 36,165, 52,146, 82, 26, 25, 29, 29, 29, 9,224, 39, 0, 75, 80, 70, 8,241, +245,247,221,220,220, 22, 44, 92,184, 80,151,145,145, 65,115,114,114,104,108,108, 44, 93, 57,231, 43,107, 55, 87, 30, 13,242,112, +209,248,248,248,188, 8,172, 82,101,111, 93, 9,231, 43, 0, 53, 42, 19,174, 4,224, 34, 18,137,110,207,153, 51, 71,117,253,250, +117,149,193, 96, 80, 89,173, 86, 85,122,122,186,234,194,133, 11,170, 86,173, 90,169, 0, 76, 1,192,125,147, 16,232, 55,190,184, + 74,183,124, 77,191,241,197,213,146,239,135,134,134, 62,182, 90,173,116,192,128, 1,122, 0,126,111, 19, 86,245, 3,236,235, 58, +193,121,160, 4, 89,230,237,223, 82,186,110, 26, 29, 40, 70,242,155,104,122,122,122,254, 58,121,242,100, 69, 90, 90, 26,213,235, +245, 52, 57, 57,153, 78,152, 48, 65,238,233,233,185,203,198,253,233, 22, 22, 22,150,117,243,230, 77,171, 76, 38,163, 87,174, 92, +177,214,171, 87, 47, 11,128, 79,101, 67,202,158,158,158,155,124,125,125, 79, 85,102,241,244,244,220, 92,217, 99,212, 76,136,100, + 99,228,101, 74,239,158,163,199, 6,180,160, 43, 27, 87,161,253, 93,237,100,173,237,240,105, 59,128, 87,137,186, 52,168, 93,187, +118,234,135, 15, 31, 90,242,242,242,232,227,199,143,173,227,198,141,211, 1,136, 25, 55,110,156,238,241,227,199,214,188,188, 60, +250,240,225, 67, 75,187,118,237,212, 0,198,218, 90,206,162,135,155,173,243,231,207,167,148, 82,186,112,225, 66, 90,191,126,125, +218,177, 99, 71,170, 82,169, 40,165, 52,137, 82,186,205,108, 54,143,182, 69, 83, 42,149,142,156, 60,121,178, 74,163,209,208, 98, +172, 86, 43,149,201,100,116,237,218,181,106,111,111,239, 83, 0,220, 89,243, 4,211,100,154, 76,147, 53, 29,254,165,169, 82, 62, + 0,198,151, 88, 94,221, 43, 43,250,226,176,175,190,250,170,216, 84,157,110,221,186,245,157,209,163, 71, 71,142, 30, 61, 58,178, +117,235,214, 87, 0,156,189,119,239, 94,228,244,233,211, 35, 1, 12, 43,239, 64, 0,112,105,217,178,165, 44, 51, 51,147, 6, 7, + 7,211,170, 85,171,210,204,204, 76, 74, 41,165,119, 7, 53,162, 23,107,131,166, 92, 59, 77,207, 29, 57, 72,199,249,240,104, 27, + 31,169,201,199,219, 59,207,221,221,125, 17,138, 38,191, 46,235,224, 2,232, 87,187,118,109,101, 76, 76,140, 42, 46, 46, 78,181, + 96,193, 2, 85,199,142, 29, 85, 97, 97, 97,170,254,253,251,171,214,172, 89,163, 50, 26,141,170,205,155, 55,171,156,156,156, 98, + 94, 55, 91,111, 99,180,120, 60,222,234,232,232,104,250,226,197, 11, 10, 96, 89, 89,154, 0,164,206,206,206,221, 93, 92, 92,166, + 56, 59, 59,119, 7, 32,165,148, 34, 24,144, 52,144, 34,224,211, 6, 65,161, 39,134,117,174,177,182,115,147, 70, 3, 29, 57, 50, +211,143,211, 40, 29, 16,240, 70, 70, 75, 42,149,142,252,252,243,207,149,122,189,158,106, 52, 26,170, 82,169,168, 70,163,161, 74, +165,146, 14, 27, 54, 76, 97,111,111,223,175, 34, 77,119,119,247,111,175, 93,187,102,206,204,204,164,215,174, 93,163,167, 78,157, +162,235,214,173,179,122,122,122,174,168,236, 9,232,237,237,125,254,220,185,115,145, 81, 81, 81,145,183,111,223,142, 52,153, 76, +145, 70,163, 49,210,104, 52, 70,158, 56,113, 34,242,240,225,195,145,251,246,237,139, 52, 24, 12,145, 6,131, 33, 82,175,215, 71, + 86,175, 94,253, 76,101,143, 81, 83, 33, 82, 12,215,143, 81,186,226, 19, 42,255,126, 34,149, 77,237, 65,179, 39,180,165, 63, 53, +169, 66,219,138,112,188,100, 61, 42, 79,147,207,231, 95, 77, 74, 74,178,206,156, 57,211, 80,167, 78, 29,249,152, 49, 99,116,122, +189,158, 82, 74,169, 94,175,167, 99,198,140,209,213,169, 83, 71, 62,115,230, 76, 67, 98, 98,162,149,199,227, 93,168,132,209, 90, + 82,108,178,174, 94,189, 74, 75,162, 82,169,104,199,142, 29,147,234,215,175,191,173, 90,181,106,195, 43,210,148, 72, 36,125,102, +204,152,161,162,165, 96, 50,153,168, 82,169,164,137,137,137,214,170, 85,171,166, 3,112, 99, 23,115,166,201, 52,153, 38, 51, 90, +127,153,209, 26, 95,214,235,114,119,226,244,233,211, 35, 41,165,145,179,103,207,142, 44,138,108, 9, 0, 72,138, 22, 30,128,161, + 51,102,204,136,164,148, 70,126,245,213, 87,145, 0,122,149, 99,180,122, 29, 56,112,192,184,106,213, 42,234,229,229, 69,189,189, +189,233,234,213,171,169,213,106,165,153, 39,118,209,139,181, 65,159,204, 26, 69, 41,165, 52,118,209, 36,122,177, 54,104,252,250, +111,232,136, 17, 35, 52, 14, 14, 14,195,202, 49, 48,174,141, 26, 53, 82,106,181, 90,213,246,237,219, 85, 14, 14, 14,119, 1,212, + 1,192, 71, 97,175, 74, 9,128,247,235,212,169,163,120,244,232,145,106,207,158, 61, 42, 0, 11,108,140,108,212, 0,208, 65, 44, + 22,247,159,225,199,143,163, 91,190,166, 51,188,240, 16, 64, 61, 0, 30, 69,235,248,126,245,213, 87,148, 82, 74,253,253,253,175, +149,177,237,210,176,176,176,175,226,226,226,230,153, 76,166,121, 81, 81, 81,243,106,213,170, 53,179,119,117,159, 22, 71,135,117, + 9,151,127, 51, 49,156, 46,159, 26,246,195,123, 77, 59,239, 29,210,126,216, 7,213,220,175,143,241,180,215, 12,150,114,149, 67, + 29,254,160, 99, 83,197,246,243,243,187,157,156,156,252,202, 92, 41,149, 74,154,150,150, 70, 19, 18, 18,232,245,235,215,169,143, +143,207,197,138, 52,189,189,189, 31, 39, 39, 39,211,245, 43, 87,210, 1,245, 66,105, 91,103, 71,218,206,197,145, 54,150,216,171, +107, 3,141, 43,107,180,238,223,191, 31, 9, 32, 18, 64,100, 94, 94, 94,100, 94, 94, 94,100, 65, 65,193,171,247, 0, 68,202,229, +242, 72,185, 92, 30,105, 48, 24, 34,131,130,130, 42,109,180, 90,217,163, 85, 51,123,228,183, 16, 66,219,203,207, 61,125, 98,117, +119,203,173, 97, 45,104,193, 39, 29,233,170,112, 63,218,218, 14,159,218,120,220,123,217,217,217, 93, 1, 48, 13, 0, 23,192,168, +238,221,187,107, 40,165,180,123,247,238, 26, 0,163,138,222,255,156,199,227, 93, 0,208,221,150,114, 2,224,212,172, 89, 83, 93, + 28,201, 2,240,123,205,154, 53,213,245,235,215,167,245,235,215,167,254,254,254, 74, 0,163,108,189,160,213,168, 81, 35, 86,171, +213,190, 50,128, 50,153,140,166,167,167,211,248,248,120, 26, 19, 19, 67,239,222,189, 75,147,146,146,232,254,253,251, 45,206,206, +206, 39,217,197,156,105, 50, 77,166,201,140,214, 95,103,180, 94, 95,254,100,180, 78,156, 56, 65, 95,251,210,247,247,238,221,139, +156, 49, 99, 70,228,235, 78,237,117,241,217,179,103, 23, 71,189,190, 43,231,230,191, 57, 54, 54,150,142, 26, 53,138,134,132,132, +208,144,144, 16, 58,122,244,104, 42,151,203,169,234,249, 35,122,177, 54,232,221,193,141, 41,165,148, 42,159, 68,209,139,181, 65, + 35, 71,180,164, 15, 30, 60,160, 85,170, 84, 57, 87,206,239, 31,255,237,183,223,114,118,237,218,149, 9, 96,103,145,193,106, 14, + 96,181, 72, 36,218, 90,212, 92, 88, 21,128, 75,112,112,112,190, 70,163, 81, 13, 24, 48, 64, 5, 32,160, 28,205,118, 33, 33, 33, + 47, 54,111,222, 76,179,179,179,105,126,126, 62, 93,218,170, 22,165, 91,190,166, 11, 27, 87,181,174, 95,191, 94, 63,109,218, 52, +181,171,171,235, 9, 0,190, 3, 6, 12, 48, 83, 74,105,219,182,109,179, 74,211,115,118,118,238, 30, 23, 23, 55, 79,167,211,205, +147,201,100,243,242,243,243,231, 29, 59,122,116, 94,183,122,181, 70,201,191,153, 24,126,116, 88,151,240,247,252, 92,250,175,232, +218,228,163,180,153, 99, 7,204,110, 89,231,137,110,201,103,151, 7, 85,247, 90,246, 38, 7,220,195,195, 35, 67,175,215, 83, 0, +127, 90, 94,188,120, 65,221,220,220,146, 43,210,112,117,117,157,253,249,208, 33,150,126, 85,253,232,139, 85,115,168,233,252, 30, +106, 58,181,157, 62,255,126, 42,237,237,237,174,104, 46,224,204,176,181, 60,222,222,222,231,111,223,190,253, 7,163, 85, 80, 80, + 80,170,209, 82, 40, 20,145, 6,131, 33,178,102,205,154,103,222,182,226, 55,183, 67, 80, 59, 17,247,110,212,168, 54, 52,103, 98, + 71,218, 93,202, 79,122,139,147,104, 40,128, 43, 0, 70, 84,242,123, 28, 0, 75,138, 13,213,247,223,127, 79, 41,165,180,102,205, +154,106, 0,156,183, 40,143, 52, 52, 52, 52, 97,236,216,177,230,218,181,107,103,183,106,213, 74,118,231,206, 29,122,245,234, 85, +122,234,212, 41,122,240,224, 65,250,232,209, 35,154,150,150, 70, 99, 99, 99,105, 68, 68,132, 12, 64, 59,118, 65,100, 11, 91,216, +242,191,188,188,238, 69,254, 49,189, 14, 79,158, 60, 73, 35, 34, 34,200,201,147, 39,105, 81,178,174, 20,128,125,227,198,141,115, +150, 44, 89,178,188,104, 14, 31, 82,159, 71, 6,117,114,224, 63,232,228,192,127, 80,159, 71, 6, 17, 66, 8,165,116,211,162, 69, +139,190,173, 95,191,126, 6, 0, 17, 33,196,187,140, 92,176, 54,110,110,110, 72, 78, 78,134, 84, 42,133, 84, 42, 69,114,114, 50, + 40,165, 48, 83,192, 68, 1,189,209, 8,173, 86, 11,157,149, 66,107, 5, 20, 42, 21,188,189,189, 97, 52, 26,131,202, 72, 42,110, + 48,120,240,224,160,176,176,176,156,233,211,167,167, 3, 24, 11, 96,235,135, 31,126,120,254,247,223,127, 15, 83,169, 84,249, 49, + 49, 49,186,122,245,234,117, 7,224, 29, 23, 23, 55,114,237,218,181, 24, 53,106, 20, 0,180, 43, 67,179, 94, 68, 68,196,169, 71, +143, 30, 5,141, 24, 49, 2, 87,174, 92,193,210,165, 75,145,155,155, 75, 1, 64,175,215, 83,139,197, 98,108,217,178,165,113,213, +170, 85, 77,219,182,109,123,187,122,245,234, 92, 0, 72, 72, 72,120, 94,134,102,173,192,192, 64,232,245,122,228,228,228,224,209, +163, 71,112,148, 74, 17,157,158,235,213,126,197,250,188, 89, 71,207,243,135, 54, 13,115,157,210,165,149,126,241,185, 43,193,117, +124,189,188, 12, 70,147,119,108, 70, 86,250,155,228,221, 9, 4,130,228,220,220, 92, 24, 12, 6,104,181, 90, 40, 20, 10,228,229, +229, 33, 55, 55, 23,233,233,233, 16, 8, 4, 47, 42, 76,164,207,207,191,150,240,219, 85,178,127,195,247, 8, 50,231,131,119,104, + 53,120,191,254,132, 26,134, 28,108,156, 51,193,209,224,230, 49, 95,234,228, 84,224,226,226,178,137, 16, 82,179, 34,189,240,240, +112,228,229,229, 33, 47, 47, 15,110,110,110,112,113,113,129,139,139, 11,100, 50, 25,228,114, 57, 20, 10, 5,130,131,131,209,160, + 65, 3,236,216,177,227,157,228, 31,222,212,211,120, 51, 44, 19,207, 63, 75,135, 64, 44, 70,117, 23, 73, 96, 83, 71,226, 90, 78, +146,122, 71,129, 64,112,192,205,205,237, 28, 33,228, 19, 66,136,152, 16,242,137,155,155,219, 57, 62,159,223, 23,192, 66, 74,233, +174, 74, 22, 99,241,252,249,243,191,138,139,139,115,120,240,224, 1,166, 79,159,142, 5, 11, 22,224,249,243,231, 63, 82, 74,173, + 69,191,251,177,187,187,251, 9, 46,151,251, 51, 33,164, 7, 33,164,187,175,175,111,167, 10,116,251, 78,155, 54, 77,215,168, 81, +163,216, 39, 79,158,244,253,237,183,223, 26, 79,157, 58, 85,254,242,229, 75,196,198,198,194,199,199, 7,254,254,254, 80,169, 84, + 40, 40, 40, 64,223,190,125,165, 78, 78, 78,195, 88, 86, 42,131,193,248, 95,229,117, 47,242,119,226,245,113,180, 74,190, 46,181, +215,161,131,131,195,252,200,200,200, 22,245,235,215,231, 1,216, 15, 0, 97, 92, 12,236,219,178,225,214,163,155,190,175,127,120, +213,156,250,221,234, 7,111, 13,227,162,184, 23,219,137,198,141, 27,187, 68, 70, 70,182, 20, 10,133,159,150,149,119, 15, 0, 46, + 46, 46,144, 74,165,112,118,118,134,139,139, 11,172, 86, 43, 84, 26, 29,212, 22, 64,169, 51, 64, 46,151, 67, 89,244, 90,165, 55, + 66,173, 86,191,250,110, 41,180, 31, 59,118,108,206,218,181,107,179, 51, 50, 50,190, 7, 80,111,212,168, 81,125,214,172, 89,131, + 75,151, 46,233,122,132,212,112, 91,212,166,225,183,117, 50,158,207, 11,225, 99, 28,128,107,215,174, 93, 67,203,150, 45, 65, 8, + 25, 82,154,160, 72, 36,250,105,239,222,189,162,152,152, 24,212,168, 81, 35,102,200,144, 33,131,190,255,254,251, 32,177, 42,255, + 6, 0,152,243, 50, 99, 38, 77,154,244,245,162, 69,139,114,114,114,114,140, 26,141,198,179,119,239,222, 72, 78, 78, 70, 90, 90, +218,239,101,152,204,216,168,168, 40, 42,151,203, 17, 31, 31,143,168,168, 40,209,215, 95,127,221,212,194,225,244, 73,133,227, 7, +163, 90, 53,110, 58,162,121, 67,236,186,249, 64,112,253, 89,130,115,227,170,126, 46,247, 83, 50,170,153, 8, 94,188,201, 1, 87, + 42,149,171,191,253,246, 91,149, 74,165, 66,106,106, 42, 30, 62,124,136, 39, 79,158, 32, 41, 41, 9, 75,151, 46, 85,229,231,231, +175,169, 72,195,215,158,247,197,178,169, 31, 18,222,227,223,129, 7, 87, 1,141, 18,208,170,160,127, 26,137,109, 79, 51,177,238, +208, 17,187,151,201,201,206,251,246,237, 27, 27, 16, 16, 16, 73, 8, 9,174,168,211, 5, 0,112, 56,156,215, 43, 39, 56, 28,142, + 18, 64,166, 88, 44, 78,113,116,116, 76,225,112, 56,153,148, 82,245,187,168,252, 28, 51,140,224,114, 1, 59, 17, 56,124, 94,121, + 39,201,160, 33, 67,134,236, 77, 73, 73,233, 22, 31, 31,223, 98,205,154, 53,223,218,219,219, 71,175, 89,179,230,219,248,248,248, + 22, 41, 41, 41,221,134, 12, 25,178,151, 16,242,126,101,126,191,102,205,154,147,230,205,155,135,165, 75,151,162, 65,131, 6, 8, + 14, 14,214,204,159, 63,127, 53,128, 57,132,144, 79,131,131,131,111, 76,154, 52,105, 76,118,118,182,119,106,106,106,131, 31,127, +252,113,194,234,213,171,155,164,167,167,219, 87, 32,221,186,107,215,174, 56,125,250, 52, 0,100, 80, 74,227,243,242,242,204,233, +233,233, 8, 13, 13, 69,211,166, 77,161, 82,169,160, 82,169, 32,147,201, 16, 24, 24, 8,171,213,218,130, 93,202, 25, 12, 6,227, +255,207,112,149,105,180,236,237,237, 93,194,195,195, 81,189,122,117,151,162, 92, 44,184,217,241,102, 78, 25, 59,212, 65, 18,121, + 6, 36,234, 34,134,180,169,235,224,102,199,155, 89,244, 21, 94, 96, 96,160, 48, 60, 60, 28, 98,177,216,175,140,223,191,146,153, +153,137,240,240,112, 56, 59, 59, 67, 42,149, 34, 60, 60, 28, 70,163, 17,114,165, 18,106, 11,160, 49, 89, 33,151,203,145,159,147, + 5,141, 5, 48, 59,186, 33, 41, 41, 9, 92, 46, 55,161, 12, 77,159, 26, 53,106,228, 68, 71, 71,231, 0,184, 6,224,163, 5, 11, + 22, 96,198,140, 25,152, 59,119,238, 94,135,140,196,174,123, 79,255,234,182,123,254,199, 30,193,118,100, 40, 0, 99, 74, 74, 10, +156,157,157, 33, 22,139, 75, 53, 6,109,219,182,109, 36, 22,139,177,125,251,118,154,154,154,218,138, 82,122,144, 82,154, 64, 72, +161,217, 19,113, 32,167,148,174,142,140,140,108,246,245,215, 95, 63,235,220,185, 51,191,121,243,230, 88,184,112, 33, 0,156, 40, + 77, 83, 38,147,221,122,255,253,247, 13,151, 47, 95,198,211,167, 79,197, 71,143, 30, 29,184,112,225,194,186, 47, 95,190, 20, 30, + 63,117,230,189,157, 41,138,129,223,159,187,110,191,232,236,149, 91,238, 78,226, 58,213,220, 93, 17,245, 50, 77, 96,225,226, 78, + 69, 7,181,185,128, 55,182,131,136, 31,213,214,158,155,209, 65,196,143,108, 42,224,125,168, 80, 40,246, 29, 59,118,236,236,212, +169, 83, 85,217,217,217,112,116,116, 68, 94, 94, 30, 22, 47, 94,172,138,138,138, 58,164,215,235,143, 87,164,107,177,210, 70,254, + 85, 3,128, 23,209,175,222, 51, 90, 41,238, 24, 4,232,249,209,103, 8, 9, 13,133,193, 96, 64,189,122,245,200,130, 5, 11,196, + 82,169,244,203, 10, 77, 15,231, 79,213,205, 76, 8,201,164,148,166,169, 84,170, 84,145, 72,244, 82, 32, 16,188,204,207,207, 79, +165,148,102,189,131, 10,207,161, 28,124,209,178, 94, 77, 64, 40,194,203, 60, 85,250, 29, 37,205, 47,109, 93, 71, 71,199, 15,215, +173, 91,103,191,101,203, 22,211,164, 73,147,244, 19, 38, 76,224,107,181, 90,207, 9, 19, 38,240, 39, 77,154,164,223,178,101,139, +105,221,186,117,246, 18,137,164,255,155,148,197,100, 50, 33, 58, 58,250,251,184,184, 56, 49,165,244,115, 0,159,205,159, 63,127, + 84, 92, 92,156,253,218,181,107,113,240,224, 65, 28, 60,120, 16,125,250,244,193,228,201,147, 49,111,222,188,242,182,203,161,126, +253,250,225,110,110,110,184,122,245,106, 58,165,244, 37, 33,164,145, 68, 34,113,236,211,167, 15,186,117,235, 6,157, 78, 7,163, +209,248,202,104,113,185, 92, 56, 59, 59,187,177,203, 32,131,193, 96,252,181, 38,235,117,179,197, 3,128,226, 80, 93, 68, 68, 4, + 41,239,198,104, 41,200,134, 76,173, 65,146, 92,131,228, 2,235, 31, 62,179, 90,173,229, 22, 32, 61, 61,253,248,205,155, 55, 63, + 12, 15, 15,231,165,167, 23,182,136,133,135,135, 67,163,209, 32,253,193,109,168,173,128,184, 70, 24,212,106, 53, 10,158,220,135, +164,126, 11,184, 69,140,192,138,181,107,245,121,121,121, 27, 74,211,180,179,179,227, 87,169, 82, 37, 39, 33, 33,193, 12, 32, 95, + 42,149,118, 13, 8, 8,192,149, 43, 87, 0, 96, 23, 5,150, 33,234, 50,112,245, 48,104, 97, 72, 69, 18, 24, 24,136,236,236,108, +168, 84,170, 43,165,105,222,188,121, 51,206,100, 50,213,235,221,187, 55,249,229,151, 95,246, 19, 66,230, 2,120, 56,203, 27,220, + 7, 41, 89, 80, 91, 96, 79, 8,233,226,226,226,242,249,188,121,243, 58, 77,154, 52, 9,199,142, 29,195,185,115,231,140, 40,204, + 5,187, 89, 74, 52, 71, 78, 8,217, 56,109,218,180,230, 28, 14,231,163,243,231,207,155,131,131,131, 21, 70,163,209, 82, 43, 36, +132, 51,119,193, 55,130, 79, 62, 26,239,156,167,193,227,110,181,124, 90, 18, 2, 60, 78,203,126, 25,167,164,121,229,237,211,118, + 66,222,137, 33,109,234,183,253,112, 72, 47,137,184, 70, 29,168, 31,221,246,222,120,224,212,138,246, 34, 94,207, 44,173,185,143, + 84, 42, 29,120,229,202,149, 79, 12, 6, 67,117,161, 80,248, 66, 38,147,173, 82, 42,149, 21,154, 44, 30,143, 23, 17,230, 95,197, + 69,150,159, 15,251,162, 72,148,194,100, 69,174,222,140,167,206,193, 24, 86,197,255, 85, 51,104,102,102, 38,188,189,189,137,197, + 98,233, 85,158,230,185,115,231,208,179,103,207, 98,227, 9, 66, 8, 8, 33,185, 33, 33, 33, 89, 66,161, 48, 79, 32, 16, 40,150, + 45, 91,166,211,233,116,224,241,120,246, 22,139,133,251, 54, 21,190,153,152,120,182, 21,145,159, 38,244,238,208,185, 65,157, 80, +122,237,238, 3, 82,160,209,109, 43, 39, 10,248, 99,205,154, 53,121,249,249,249,199, 1, 60, 53,153, 76,187,247,239,223,111, 63, +114,228, 72,221,129, 3, 7,134, 3, 8, 90,190,124,249, 64,149, 74,181,169, 50,229,120,254,252,249,143,139, 22, 45,250,106,246, +236,217,216,177, 99,199, 36, 0, 51,138, 34, 93,125,230,205,155,135,101,203,150, 97,199,142, 29,214,167, 79,159,158,178, 90,173, +207,167, 78,157, 90,223,203,203, 43, 55, 35, 35,227,249,130, 5, 11,202,146,109,220,189,123,119,253,141, 27, 55,236,148, 74,229, +117, 66,200,231, 19, 39, 78, 28,219,172, 89, 51,197,144, 33, 67, 36,249,249,249, 50, 7, 7, 7,187,205,155, 55,187,240,120, 60, +168,213,106, 16, 66,160, 84, 42, 13,236, 82,200, 96, 48,254, 87, 41,203,139,252, 29,120, 53,221, 78,105,247,212,210, 54, 80,163, +209,100, 37, 39, 39,135,166,165,165,153, 1,152, 1, 32,207, 96,254,110,209,230,195, 91,250, 55,175, 41,206, 48,153,112,244,110, +140, 38,207, 96,254,174, 56, 50,145,150,150,166,124,249,242,165,163, 86,171, 85,149,241, 91,191,255,244,211, 79,218,203,151, 47, + 59,198,199,199,195, 98,177,160, 81,163, 70,136,141,141, 69,193,211,104,136, 67, 27, 65,220,174, 39, 98, 34,239, 34,234,220, 5, + 36,170, 12,230,103,115, 22,201, 85,106,245, 60,131,193,112,180, 52, 65, 62,159,159, 95,184,125,212, 2, 0, 10,133,226,161, 74, +165,106,227,229,229,133,199,143, 31,139,213, 22, 76, 30, 56,115,197, 26, 74,169, 69, 80,216, 83,108,202,144, 33, 67,112,239,222, + 61, 0,184, 87,154,166, 66,161,152, 52,110,220,184,203,219,183,111,231,197,199,199,119,219,178,101, 75,183,103,207,158, 81,146, +159,108,185,161,225, 35,104,212,228, 38,235, 3, 67,206,245,236,217, 19, 62, 62, 62,216,188,121, 51, 86,173, 90,101,250,248,227, +143,227, 86,173, 90,213, 4,192,238, 50, 14,130, 28,192, 25,119,119,247, 79,234,214,173,171, 84,171,213,200,203,203, 67,122,122, + 58, 92,221,220, 56,102,112, 90,122, 56, 59,239, 62,158,169, 20,243,206,220,194,237,212,140,114,163, 89, 45, 4,188,247,135,182, +111,216,246,211,217, 51, 37,184,113, 20,100,220, 60,208, 45,223,226,179,209, 3, 29,117,250,221,237, 26,243,120, 35,229,102,243, + 78, 0, 7, 43,233,200,187,183,105,211,102,239,162, 69,139, 68,179,150, 46,194,242, 80, 63,152,243,242,144,163,183, 32, 87,111, +134,162,224, 41, 30, 63,142,129,155,155, 59, 18, 19, 19,161,211,233,240,228,201, 19,202,229,114,143, 87, 20,209, 41,241, 27,197, +205,133, 50,161, 80,152,199,231,243,179,120, 60, 94,126,124,124,188, 90,167,211,129,195,225,136, 45, 22,139,200,134,178, 86,113, +119,119,159, 10,160, 63,128, 99,202,220,220,213,225,124, 56,131,135,246,213, 61,221,222,155, 51, 97,164,123,128,175,167, 44, 62, +238,133,105,195,217,223,114,117,122,124, 87,206, 73,114,162,100, 68,146, 16,242,217,129, 3, 7,198, 2,216, 90, 52,239,214, 5, + 0,235,223,224,252,155,115,232,208,161,175,102,207,158, 13,145, 72,244,106,240, 84,145, 72,100, 15, 0,123,246,236,193,227,199, +143,155, 21,231,107, 1,216,107,131,102, 80, 88, 88, 88,252,225,195,135,237, 0,248, 78,156, 56,177,197,154, 53,107, 48,122,244, +232,156,152,152,152,230,133, 17, 88, 18,244,209, 71, 31,221,217,177, 99,135,139,213,106, 69, 65, 65, 1, 12, 6, 67, 2,187,148, + 51, 24, 12,102,182,254,146,104, 86, 56,165, 52,170,104, 96,239, 8, 0, 39, 41,165, 25,127, 48, 90,197, 27, 8, 0, 58,157,238, +199,192,192, 64, 41, 0,127, 0, 61, 1, 28,123,104,193, 65, 60, 75, 66,116, 98,234,204, 98,227,245,208,242,234, 38, 62,248,206, +157, 59,134,170, 85,171, 62, 0,240,109, 25, 55, 50,133,187,187,251,194,169, 83,167, 46, 94,184,112, 33,143,199,227,225,242,229, +203,184,121,246,164,245,201,245,219, 36, 73,107,209, 42,238, 78, 75,227, 81,203, 45, 47,109,254,163,251, 26, 28,162,148,166,150, +183, 97,106,181, 58,249,249,243,231,118,117,235,214,181,220,191,127,223,157, 82,122,228,212,169, 83,109,166, 79,159,142, 43, 87, +174,236, 62,175,179, 12,163,212,186,159, 16,194, 3, 48,172, 87,175, 94,159, 15, 28, 56, 16, 13, 26, 52, 48, 2,216, 81, 70, 57, +111, 16, 66,134,165,164,164,108,252,242,203, 47,157,191,252,242, 75,112, 56, 28, 82,114, 95,229,230,230,226,193,131, 7, 24, 50, +100,136,252,183,223,126,155,220,169, 83,167, 49,173, 91,183,198,233,211,167,125,109, 56, 24,191, 63,121,242,164,159, 84, 42, 37, +207,159, 63,135, 66,161,192,141, 27, 55,248,129,129,129, 45,247,239,223, 47,172, 94,189, 58, 98, 30, 61,194,169, 97,195, 34, 8, + 33,129,148,210,151,165,233,136,248,228,147, 81,131,122, 73,244, 55,142, 3, 81,215, 0, 0, 42,133, 18,218,196,104, 12,108, 90, +211,233,202,147,164,137, 40,236,133, 89, 41, 92, 93, 93, 63, 91,190,124,185, 56, 56, 56, 24, 95, 44, 90,138,169,179,167,227, 35, +207, 64, 40,210,146,145,107, 1,236, 28, 28,176,112,206,108,244, 26, 52, 4,158,158,158,120,244,232, 17,221,188,121,179, 90, 46, +151, 47,179,197,104,113,185, 92, 16, 66, 0, 64, 45,151,203, 85,118,118,118,114, 30,143,151,103,177, 88,178, 78,172, 93,221,136, +147,151,245, 1, 33,132, 43,178,114, 78, 20,117,182, 40, 53, 63,207,153,144,192, 26, 65, 65,143,126,222,188, 89,220,172, 89, 51, +114,247,238,221, 79, 38,142, 31, 55,182,127, 88,181, 83,125, 59,183,133,183,143,183,222,106, 52,200, 78, 29, 59, 97, 90,127,224, +212, 85, 3,177,126, 25, 73,169,182, 18, 79, 39,123, 75,154, 30, 66,200, 80, 0,131, 0, 28,166,148,238, 34,132,140, 2,208, 23, +192,161,178, 18,228, 9, 33, 28, 0,155, 6, 12, 40,156, 76, 64,171,213,106,138,223,175, 95,191,126,201,223,178, 86,230, 24, 57, + 56, 56, 56,218,219,219,191, 56,125,250,180,104,200,144, 33, 46,139, 23, 47, 78, 27, 61,122,180,223,238,221,187,127, 4,144, 72, + 8, 9, 1, 80, 67,173, 86, 91, 56, 28, 14, 66, 66, 66,176,110,221, 58,149,197, 98,217,202, 46,227, 12, 6,227,239, 96,182,254, +134,197, 14, 7, 16, 5, 32,162,168, 3,225,120, 0,229, 79, 42, 13, 96, 81,116,116,116,241, 24, 90, 19,203, 27,222, 97,198,140, + 25,145,247,238,221,139, 4,176,164,162,110,142, 60, 30,239,200,199, 31,127, 76,189,188,188, 84,158,158,158, 71,248, 92,238, 88, +127, 17,194,241, 6, 93,221, 1,180,217,185,115,103,159, 31,127,252, 49, 2, 64, 51, 0,124, 63, 63,191,244,204,204, 76,213,111, +191,253,166,106,213,170,149,202,221,221, 61, 59, 44, 44, 76,181,124,249,114,149,201,100, 82, 77,157, 58, 85,133,215,198,251, 42, + 67,219, 30,192, 39,118,118,118, 71,106,215,174, 29, 61,167,119, 71,211,210,201, 99,233,168,154, 30, 42, 0, 63, 2,248, 24,128, + 51, 0,254,192,129, 3, 47, 62,121,242,228,108, 88, 88,216, 70, 27,116,125,235,214,173,123,105,239,222,189,247, 14, 31, 62, 28, +249,229,151, 95,222,115,115,115, 75,141,139,139,179,234,116, 58, 90, 80, 80, 64,101, 50, 25, 61,121,242,164,197,213,213,117,109, + 89, 58,109,132,220, 12,122,110, 87,169, 67, 56,164,204, 30, 65, 91,217,113,210,222,164, 27,170, 88, 44,206,207,203,203,163,153, +153,153, 52, 62, 62,158, 30, 58,116,136,118,111,217,148,238,251,168, 63,221,245, 97, 31,186,172,123, 83,218,204,209, 94,237,237, + 40,185,231,232,232,152,237,236,236,188, 9, 64,205,138,134,119,208,235,245,175,134,111,168, 82,165, 74,100, 72, 72,200,225,176, +176,176, 21,199,142, 29,251,108,229,202,149,125, 58, 84, 11,252,106,113,183,150, 90,205,133, 3, 84,185,255, 71, 58,163, 81,176, + 46,140,139, 65,101, 14, 23,226,230,186,243,234,149, 43,214,226, 1, 58,205,102, 51, 61,122,228, 8, 29,252, 94,151,104,249,153, + 61, 63, 95,159, 55,105,239,212, 70,193, 71, 91,217, 99, 40, 94, 27,168,180,180, 37, 92, 2,183,182, 78,156,117, 61, 2, 92, 51, +218, 72, 57, 63, 54,119,132, 75,137, 99, 54, 56, 56, 56, 56,158, 82,154, 17, 26, 26, 26, 15, 96, 87,104,104,104,201,215, 31, 84, + 52, 56,233,252,249,243, 41, 10,103, 81,224, 0,152,187,104,209,162, 72, 74,105,100,205,154, 53,111, 80, 74,209, 64, 12,247,118, + 82,206,207,189,131,188,242,218, 73, 57, 63, 55, 16,255,121, 52,119, 74, 41, 2, 5,168,213,198,195,225,122,159,154, 62,202,246, +126,210,107,187,182,109, 89,218,163, 71,143,205, 0,214, 2,248,214,205,205,237,250,208,161, 67, 31,239,216,177,227,241,242,229, +203,141,113,113,113,116,204,152, 49,106,161, 80,248, 45,235, 58,206, 22,182,176,133, 45,127,249,200,240, 62,149, 25,176,180,215, + 87, 95,125, 21, 73, 41, 45, 30, 75,107,100, 41,235,244,158, 61,123,118, 36,165,180,120,116,248,206, 21, 13,104, 6, 96,254,186, +117,235,168, 80, 40,252,249,109, 7, 73, 3,224,221,183,111,223,230, 10,133,162,137,151,151, 87,147,162,168,147,191,187,187,123, +252,238,221,187, 85, 90,173, 86, 69, 41, 85,153,205,102,213,189,123,247, 84,237,219,183, 87,161,112, 8, 8,155, 70, 8, 47,185, +204,242,198,141,187,115, 62,164,179,188,113,227,181,239,142,216,186,117,235,233,132,132,132,227, 78, 78, 78,211,109, 28,184,210, +223,195,195, 99,174,171,171,235, 89,119,119,247, 89,174,174,174, 25, 70,163,145, 22, 20, 20,208,216,216, 88,122,229,202, 21,122, +243,230, 77,234,234,234,154, 90, 86, 57, 59,137,120,183, 10,150,126, 66,173, 91, 23, 81,195,154,153, 20, 0,149,173,156, 65,115, +127, 90, 64,239,142,235, 70,219,219,115,127,127,147, 65,231,156,157,157, 55, 29, 57,114,196,250,252,249,115,122,226,196, 9,122, +242,228, 73, 58,121,242,100, 90,203,215, 71,223,220,142,147,213, 70,200, 59,251, 38, 3,150,234,245,250, 72,133, 66, 17,169, 82, +169, 34,107,215,174, 29,217,180,105,211,195,205,155, 55, 95,113,224,192,129,207, 22, 47, 94,220,167,147,163, 48, 86,115,225, 0, +165, 95,190, 71,233, 39,173,233,139,177,237,105, 71, 17,239, 65,153,154, 94, 94,169,197,163,181,171,213,106,122,237,218, 53,122, +233,210, 37,234,237,238,174,104, 43,226,142,111, 37, 68,187, 86, 78,112,182,181,156, 29,164,156,109,183,126,250,206,162, 61,189, +131,238, 25,245,158,185,189, 51,103, 93,137,245,246, 81, 74, 51, 6, 12, 24,144, 72, 41,205, 56,116,232, 80, 10,165, 52,163,127, +255,254,137, 69,161,225,189,165,105,190, 54, 56,233,214, 34,147,245,201,252,249,243, 35, 41,165,145,243,231,207,143, 4, 10, 7, + 81,109, 39,229,108,191,189,113,153, 85,127,114, 59, 61, 48, 38,194,210, 78,202,217, 94,106, 57,157,121,199,163,182,174,164,134, +179,187,232,145,201,195, 45,173,189,157,174, 6, 7, 7, 47,251,236,179,207, 14,223,188,121,243,161,197, 98,121, 28, 31, 31,255, +120,237,218,181,143, 91,180,104,113,195,205,205, 45,218,206,206,238, 99, 54, 40, 34,211,100,154, 76,147, 13, 88,250,223, 89,120, +229, 52,157, 28, 39,132,136, 41,165, 83, 7, 14, 28,136, 37, 75,150, 12,174, 87,175,222, 80, 63, 63, 63, 15, 0, 72, 79, 79,215, + 0, 80, 12, 28, 56, 16,115,231,206,197,210,165, 75, 87, 20,229,178,252,127, 38,159,101, 18, 66,170, 76,154, 52, 41,123,241,226, +197,214, 49, 99,198,132, 82, 74, 31, 17, 66,106, 13, 31, 62,252, 19, 30,143, 55, 48, 48, 48, 48, 44, 35, 35, 35, 71,171,213,238, + 2,176,177,184,205,180,178, 8, 57,176, 52,174,234,131,179, 28, 88, 74, 52, 13,189, 55,119,238,220, 33,253,251,247, 55,174, 92, +185,210,172, 80, 40,142,217, 88,238, 20, 0,223, 20,191,118,115,115,243,126,240,224,193,199,158,158,158,156,248,248,120,232,245, +122, 60,127,254,220, 10,224,215,178, 52, 84,102,186,122,253,161,243, 33, 83, 71,244,116,210, 60,189, 15, 1,151, 11, 19,223, 14, +153,183,206, 98,235,181,167, 10,181, 17,107,222,100, 59,101, 50,217, 15,147, 39, 79, 30, 62,125,250,116,251,192,192, 64,242,251, +239,191, 99,255,254,253,250,236,236,236,238,148,210,171,111,122,172,172, 86, 43,236,236,236, 0, 0, 51,102,204, 0,135,195,225, +103,103,103,219, 17, 66,132,132, 16, 7, 66, 8,215,148,240, 24, 86, 69, 1,178, 10,100, 72,201,146,149,171,103,177, 90,247,223, +190,125,123, 74,195,134, 13, 57,119,239,222, 69, 78, 78, 14,158, 63,127, 78, 45,148,238,189,170, 49,111,170,108,249, 28, 92,221, +250, 54,112, 17,114,236,182,205, 69, 91, 3,135,187,193,138, 1, 0, 62, 41,250,120, 43, 33, 68, 0, 32,175,118,237,218, 29,158, + 60,121, 34,170, 93,187,182,246,233,211,167,167, 9, 33,126, 0,182,151,218,188, 43, 18,229, 2,200, 61,116,232, 16, 0,140,163, +148, 90, 9, 33,141,230,205,155,151,113,237,218, 53,204,159, 63, 63, 11,192, 58, 0,144,184,184,245, 14,147, 10,136,221, 47,243, +209, 66, 15,206, 26, 43, 45,181,115,129,196,211,171, 99, 93, 49, 7,252, 45, 95,163,137,119, 8,199,206,108,172,183, 96,193,130, +107, 42,149, 74,191,111,223, 62,195, 7, 31,124,192,141,139,139,187, 3,224,122, 81,179,166,153, 53, 68, 48, 24, 12,198, 95,158, +163,245,250,176, 14,165,231,104,149, 98, 8,246, 16, 66,114,151, 46, 93,218, 17,128,211,129, 3, 7, 26,215,170, 85, 11, 0, 16, + 27, 27,235, 16, 18, 18,242,172,126,253,250, 79, 0,220,162,148, 30,183,177, 60,197, 23,126,235, 59,218,190,152,233,211,167,147, + 29, 59,118,152,129, 66, 19, 84,116,115, 89, 13, 96,117,121,121, 62,111, 75,112,112,112,151,175,191,254,218,176,101,203, 22,203, +183,223,126,123,140, 82, 26,247, 38, 58,249,249,249,203, 71,142, 28, 57,124,222,188,121, 82, 71, 71, 71, 18, 29, 29,109,221,186, +117,171, 34, 63, 63,127,121, 89,223,185,109, 48,239,107, 39,228,245,151,169, 15,116, 25, 28, 94,213,241,201,164, 8,196,222,190, +142, 93, 87, 31, 43,227,242,181,231,238,154,205,251,223,208,188, 62, 39,132, 52,152, 59,119,238, 12,163,209,216,159,207,231,223, + 81, 40, 20, 11, 40,165,191,191,233,126, 50,153, 76, 89,213,171, 87,127,253,119, 76, 86,171,149, 82, 74,249,102,179, 89,236,106, +180,158,156,183,106,203, 71, 31,132, 72,133,185,185, 50,252, 18,167,208,151,232,108,241, 39,114,114,114, 86,140, 29, 59,118,244, +188,121,243, 92,156,156,156, 72, 76, 76, 12,221,183,111,159, 42, 39, 47,111,201,155,148, 81, 83,144,127,238,196,193, 3, 3, 91, + 27,204,100,103,162,146,242,184,228,116,137,178,158, 7,112,190,232,100, 26, 65, 8, 25, 0,224, 40,165,244,151,114, 53, 53,154, +115, 0,236, 6, 12, 24,128,232,232,232,193, 0,246, 0,216,251,205, 55,223, 52,159, 59,119, 46, 22, 44, 88,128,121,243,230,117, + 1,112, 86, 89,144,119,242,240,222, 93,195,218,155, 76,156,157, 73, 74, 43,151, 67, 78,149,170,153,155,117,254,244,249, 11,189, +155, 56,249,146, 77,103,175, 91, 53, 86,122,127,212,168, 81, 5, 6,131,225, 44,128, 53, 0,162, 41,165,172,119, 33,131,193, 96, +252,255, 6,126, 54,149, 98,188, 54, 85,104,180,138,190,124, 1,192, 5, 66,136,119,171, 86,173, 22, 73,165, 82,177,197, 98, 65, +126,126,126, 26,128, 85, 69,209,153,202,176, 79, 46,151,127, 41, 20, 10, 55,188,163,141,211, 17, 66, 60,107,215,174,205, 7,160, + 47,229,243,119, 99,178, 40, 14, 61,143,123,238, 4,138, 67,197,111,197,197,197,237, 13, 11, 11,235,243,244,233,211,223, 40,165, +167,222, 98, 27, 94, 18, 66, 26, 78,158, 60,249, 11, 0,125, 0,252,154,159,159,191,188,172, 68,248, 98,174,234,205, 3,155,240, +120,195,239, 39,101,126,108,176,210,106,118, 28, 78,130,218, 72,127,186, 99, 54,239,121,203,125,250, 28,192,152,162,229,173,201, +205,205,173,112,144, 79, 66, 8,185,250, 34,253,214,227,148,236,210, 58, 91,148, 86,198, 12, 66, 72,131,169, 83,167, 78,181, 90, +173,131, 56, 28,206,145,220,220,220, 10,247, 89,153,145, 60,131,101,202,134,203,119, 5,171, 44,214,206, 66, 14,231,172,202,100, +153, 89,198,239,238, 2, 96,211,232,240, 47, 94,188,248,121,193,130, 5,117,231,205,155,135,245,235,215, 23,119,187,188, 48,111, +222,188,108,139,197,226,191, 96,193, 2,108,220,184,209, 12, 0,122,147,117,218,150,107,247, 57, 27,172,214,247,248, 28,206,105, +189,201, 58,173, 84, 83,174, 51,127,178,230,240, 25,163,209,106,237,194, 5, 57,157, 97,176,206,209,235,105, 18,187,204, 49, 24, + 12,198,255, 38, 60, 91, 87,164,148,102,190,139, 27, 47,165, 52, 30,128,211,172, 89,179,222,165,147,204,254,171,119,212,215,233, +244, 71, 0, 63,126,253,253,190,146,191,123, 7,168,120, 80, 81, 91,205, 22,128, 79,139, 22,155,185,107, 54,239, 70, 25, 67, 74, +252,205,158, 6, 40,128, 3, 69,139,173,223, 73, 69,225, 92,150, 83,222,246,247,239,107,104, 6, 10,123, 17,190,203,109,138, 66, + 97, 47, 20,164,165,165,149,220,206,135, 69, 11,138,199,148,187,173,166,217, 0,134,219, 88,206,193,236,210,197, 96, 48, 24,255, + 59,148,214,116, 88,105,163,197, 96, 48, 24, 12, 6,131,193, 40,245,193,186,204,220, 96, 2,160,115, 25, 95,178, 57,177,157, 16, +210,249, 13, 10,117,129,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 46,205,138,180,255,191, 59,214,253,127,184,176,191,114, + 92, 9,214,245,149,105, 50, 77,166,201, 52,153, 38,211,100,154,255,218,133,195, 2,126, 12, 6,131,193, 96, 48, 24,111, 14, 33, + 36,188,232,175, 15, 33,100,124,209, 84, 60, 0,202,200,209,226, 55, 91,148,101, 54,155, 61, 1,128,199,227,101,155,238,204,241, + 41,239, 7,248, 64, 39, 51,240,115,145,224, 56, 83, 97,119,248,215, 53,207,155,205,102,151, 34,205, 2,211,157, 57,221,202,213, +108,186,240,236, 31,214,191, 61,187, 75, 41, 91,198,229, 55, 93,152,254, 90, 89,125,109,222, 51, 69,115, 36,254,213,229,252,187, +104,254,155, 17, 52, 95,148,101, 50, 21,214, 35, 62,159,151,109,188, 93,126, 61, 18, 52, 91,152,254,135,245,111,205,246, 42, 79, +211, 65, 36,204,171,225,231,177,162, 60,205,248,244,220,169,106,141,206,173, 60,205,202,158,155,254, 62, 62,157, 44, 69,231, 38, + 23, 24,151,146,158,126,254,127,169, 46, 17, 66, 26, 3,152, 3,192,169,196,219,209,148,210,207, 89,173,100, 48, 24,127, 35,202, +156,130,167, 84,163,101, 54,155, 61, 35,143,204,131, 90, 15,116,122,127,161,103, 80,223,141,127,234,213,102,214, 21,216,201, 98, +246,133,113, 77, 10, 23, 15,158,209, 41, 61, 61,157, 20, 93, 56,127, 6, 16, 80,138,166, 75,228,145,121,208, 24,128,182, 67, 23, +184, 4, 0, 78, 57, 2,193, 23, 34,177,184,131, 86,171,173, 11, 0, 34,145, 40, 70,171, 86, 95,246, 48, 26,151,191,190,126, 89, + 91, 86,178,172, 29, 71, 46,244, 12,237,187,113,178,197,106,181, 75,187,187,161,173, 46, 55,142,199, 55,235,215,205, 2, 78,207, + 3, 44,182,236,169, 63,252,238,160,153,110,124,160,163,157,189,125, 3,103, 23,151, 54, 86, 74,107, 91,173, 86, 98, 49,155, 31, + 43,228,242,235, 86,179,249,129,217,160,118,139, 60,246,157,181,188,114,190,190, 45,131, 0,222, 17, 96,160, 88, 34,233,192,229, +243, 91, 2,128,197,100,250, 93,173, 82, 93,238, 7, 28,180,101,219,109,221, 63,111,186,254,191, 13,147,201,236,153,112,118, 30, +244, 38, 32,124,192,119,158,245,135,255,178, 27, 0, 12,217, 15,188, 84,113,199,154, 1,128,184, 70,207,219, 66,239,240, 44, 0, +224,189,204,240,140, 61, 49, 27,122, 19, 80,187,231, 2,207,138, 52, 63,152,187,223,109,250,248,254, 66, 0, 56,119,232,199, 90, +151, 14,175,127, 15, 0, 58,246,159,120,186,235,128, 73,177, 0,176,116,211, 97,183,189,223, 13, 46, 87,211,182,115, 83, 46,144, +199,157,168,105, 80,100, 56,251,139,121,222,113,113,113, 28, 0,240,245,245,181,233,220,172, 2, 72, 51,128, 79, 56, 92,110,155, + 26, 53,107,134, 3,160,241, 47, 94, 68, 89,204,230, 27, 62,192,186,119, 92,151, 38, 83,250,199,193, 89,139,230,194,100, 48, 24, +140,191, 19, 39,139,204,213,201,215, 63, 40,179,215,161, 90, 15, 92,125, 14,180,107, 94, 31,227,135,247,144,148,252,236,224,198, + 5, 1,113,119,127, 13,221,242,203,114, 78,253,250,245,145,144,144, 96, 83, 41, 52, 6,224, 74, 28, 0,217, 19,199, 2,177,248, +197,202,101,203,156,186,116,233,194,243,245,245, 5, 33, 4,153,153,153,205, 47, 92,184,208,120,202,148, 41, 31, 65,246,164, 64, + 99,128,242,138, 13, 67,128, 22,151,181,110,173,170,152, 51,105,176, 20, 0,102,189,191,174,241,221,103, 89,174, 47, 94,188,232, +244,213, 87, 95,229,113, 47, 95, 94,239, 14,108,203, 2, 82,108, 41,231,142,227,183,237,165, 25,123,130, 70, 76,154,116,168,102, +205,154,146,192,192, 64,226,232,232, 8, 46,151,139,130,130,130,128, 71,143, 30,189,119,231,206, 29,245,133,171, 63,219,221,187, +211, 59, 62,219,190,153,206,166,109,215,166,219,159,115,116,140, 25,217,175, 95,149,193,131, 7,219,215,168, 81, 3, 0,240,226, +197,139,224,131, 7, 15, 14, 61,116,232,208, 92,104,211,205, 26, 3,116, 21,109,251, 43, 77, 0,246, 64, 75,103, 79,207, 17, 92, + 62,191,174,217,108,246, 43,138, 54,164, 89, 76,166, 24, 89,118,246,174,215,215,103,252, 25,189, 9,120,146, 1,116,110, 19,142, +145,253, 59,139, 1,224,171, 33,139,154,191, 76,124, 46, 48, 24, 12,168, 21, 82,187,213,183,223,173, 56, 11, 14, 7, 59, 15, 95, +120,181,190, 45,154,209, 79, 18, 48,239,219,149, 72,127,120,176,185, 69,254,188,131, 82, 33,231, 2,128,147, 84,218,255,224,190, + 61,151,125,195, 6,222,122,158,107,180, 73,179,188,115,243,204,190,181, 62,169,143, 46,215,249,233,220, 86,126, 64, 64, 0, 30, + 62,124, 88,185,115, 83,254,204,209,234,227,243,120,249,151, 95,122,183,109,219, 22, 18,137, 4, 60, 30, 15,102,179,185,243,141, + 27, 55, 58,207,155, 55,111, 34,228,207,212,182,158,155, 54,176,156, 16,210,225,131,241,147,125,122,244, 25,136,254,221, 91,177, +138,200, 96, 48,254, 86, 16, 66,198, 23,245, 58,124,213,243,176,100, 47,196, 82,141, 22,143,199,203,238, 50,106,177,103,155,102, +245,112,247, 65,172, 60, 41, 57, 67, 85,252, 89,126,204,193, 90,125, 90,249,213,185,118,237, 42,244,122, 61,126,255,253,119, 60, +120,240, 0,137,137,137,152, 48, 97,130,158, 7,140, 43, 67,179,160,237,208, 5, 46,144,199, 73,130,237,158, 85,187,240,244, 41, + 87,167,211,225,218,181,107, 40, 40, 40,128,157,157, 29,170, 84,169,130,174, 93,187,242,158, 62,125,234,218,169, 75,119,105,219, +238,195, 18, 32, 13, 86,241,120,188,130,178, 54,144,199,227,101,119,122,127,161,103,157,224,170,120,145,148, 46,159,243,221, 22, +149,213, 74,121,241,137, 47,141, 87,175, 94, 69,120,120, 56,206,159, 63,239,150,159,159,255,245,186,117,235,230,240,191,255,105, +181,201,144, 55,173, 28,189,130,182, 67, 23,184,184,101, 31, 8,188,116,230,168, 32, 38, 38, 70,176, 97,195, 6,228,229,229,193, +206,206, 14,206,206,206,240,246,246, 70,173, 90,181,200,172, 89,179, 36, 61,123,198,224,211,113, 3, 3,141, 65, 99,159,149, 85, +206, 87,219,174,122,233,224,174, 56, 87,227,240,201,147,156,214,173, 91,255,225,177,189,122,245,234,232,214,173,155,253,136, 17, + 35,106, 12, 30, 58,220,218, 54,226,131, 23,144, 4,106, 42,212, 84,167,136,220, 52, 55,125, 59, 15, 29,122,108,193,130, 5,206, +222,222,222, 16,139,197, 0, 0,185, 92, 94, 37, 41, 41,169,249,220,185,115, 7,220,142,222,199,107,219, 51, 37, 29, 98,127,109, +121,251,243,223, 10,159,207,203, 46,142, 34, 57,138, 69, 5, 41,169, 89,106, 0, 48, 24, 12, 48, 24, 12,208,235,245,248,120,226, + 4,238,184, 1, 77,107, 6,182,153,124, 63, 49, 45, 43,191,246,133, 91,174,197,223,173, 72,147,167, 73,148,201,146, 47,142,155, +247,229,151,222, 94, 94,255,105, 17,220,185, 99, 7, 55, 63, 63,191,243,188,121,243,234, 80,135,246,178,218, 61, 23, 56,151,167, + 89,222,185, 41,139, 61, 89,237,219, 73,221, 26,108,252,238, 4, 44, 22, 11,110,222,188,137,107,215,174, 97,197,138, 21,244,244, +233,211,114, 39,177,184,130,115,243,153, 99,107,159,204,160,239,191, 63, 68,132, 66, 33,126,253,245, 87, 60,125,250, 20, 28, 14, + 7,245,235,215,199,200,145, 35,209,185,115,103,239,241,227, 39,208,182,221,135,196, 67, 26,162,124,155,186, 68, 8,225, 0,152, + 60,115,222,247, 62,239,143,253, 4, 75,191,157,197,140, 22,131,193,248,219, 70,179,202, 28,226,129, 82,138, 19, 39, 78,208,162, +165, 29,165, 20, 20,224, 84,239,187,113,239,129,123,214,147,213,251,110,220, 75, 1, 14, 5, 56, 78, 64,213,134, 13, 27,154,100, + 50, 25,189,115,231, 14,253,248,227,143,213,171, 87,175,190,124,242,228,201,131,102,163,113,179,175,143,207, 15, 20,224,148,154, +121, 15,112, 2, 1,169,131,131, 67, 78,114,114, 50, 61,117,234, 20,157, 63,127, 62,221,181,107, 23, 61,125,250, 52,189,112,225, + 2, 61,125,250, 52,221,187,119, 47,141,142,142,166,177,177,177, 84, 44, 22,231, 4, 2,210,114, 52,185, 20,224,214,234,187, 97, +218,161,187,166, 5, 33,125, 55, 78,161, 0,215, 5, 8,109,216,176,161,229,224,193,131,116,231,206,157,244,151, 95,126,161,209, +209,209, 52, 55, 55,151,242,132,226,156,226,239,149, 85, 78, 10,112,252,252,252,114,100, 50, 25,245,247,247,167,118,118,118,212, +203,203,139,214,170, 85,139, 54,111,222,156,190,247,222,123,116,248,240,225,244,235,175,191,166, 50,153,140,218,219,219,103, 21, +127,175, 44,205,112, 64, 36, 22,139,147, 35, 35, 35,105, 89,104,181, 90,154,155,155, 75,207,158, 61, 75,197, 98,113,114, 56, 32, + 42, 79, 83, 4, 52, 10, 11, 11,203,201,205,205,165, 70,163,145, 38, 39, 39,211, 71,143, 30,209,167, 79,159,210,228,228,100,170, +213,106, 95,105,199,198,198,210,160,160,160, 28, 17,208,168, 76,205,127,243, 82, 92, 39, 94, 91, 2,188,188,222,243,246,246,214, + 30, 58,116,136,166,165,165,209,237,219,183, 83, 14,176,232, 79,235,150,163,105, 7,116,109,221,186,181,229,230,205,155,244,254, +253,251,116,198,140, 25,180, 91,183,110,180,123,247,238,116,222,188,121, 52, 53, 53,149,166,166,166,210,247,222,123,207, 98, 7, +116,173,168,126,150,118,110, 74,129,128,158, 61,123,106,141, 70, 35,141,143,143,167,117,235,214, 77,229, 2, 35,196, 64,157,118, +128,176,162,250,233, 7,184,248,248,248,100,220,188,121,147, 30, 62,124,152, 6, 6, 6,230,112,129, 15,156,128,234, 78, 64,117, + 46,240, 65,245,234,213,115,110,222,188, 73,243,242,242,104, 64, 64, 64,134, 31,224,242,166,117, 9,133, 19,108,111,157, 57,239, +123,250, 44, 85, 77,103,206,251,158, 2, 72, 46, 26,208,245, 60,171,147,108, 97,203,191,111,249,147, 23,249,167,245, 58,140,136, +136, 32, 0,174,148,103,217,180, 92,238,226,165, 75,151,242,116, 58, 29,182,108,217,162, 28, 52, 96,192,129,118,109,218,196, 87, + 11, 12,148, 17, 14,167,194,185, 11,115,132,194,207,150, 46, 93,234,108, 48, 24,112,239,222, 61, 52,110,220, 24,222,222,222,144, + 72, 36,144, 72, 36,240,244,244, 68, 72, 72, 8,178,179,179,225,232,232,136,233,211,167, 75,115,132,194,207, 42,210,181, 90, 41, + 15, 0, 44, 86,171,157, 0, 24, 31,212,164,201,189,185,115,231,114,220,220,220,224,234,234, 10,137, 68,130,167, 79,159,194, 96, + 48,192, 65,228, 96,211, 32,173, 28, 14,135, 35,145, 72,112,233,210, 37, 76,158, 60, 25, 45, 91,182,132,179,179, 51, 28, 29, 29, + 81,183,110, 93,116,237,218, 21,227,198,141, 67,124,124, 60,136, 13, 73, 37,143,121,188, 79,198,141, 27,231, 25, 30, 30, 94,234, +231, 58,157, 14, 50,153, 12, 57, 57, 57,168, 82,165, 10, 6, 14, 28,232,249,152,199,251,164, 44, 61, 55,192,187, 74,112,240,177, + 59,119,238,184,139,197, 98,236,220,185, 19, 71,143, 30,197,153, 51,103,112,234,212, 41,156, 56,113, 2,191,254,250, 43,114,114, +114, 0, 0,193,193,193,216,191,127,191,187,196,211,243,132, 27,224,205, 30, 64,108,227,101, 86,214,185,186,153,153,238, 35,134, + 15,191,174, 82,169, 48, 98,196, 8, 44, 94,178,100, 22,223,198,209,232, 67, 0,169,171,143,207,182,239,191,255,158,147,153,153, +137,126,253,250,229, 46, 95,178,228,195,168,179,103,107, 68,158, 57, 83, 99,241,130, 5, 31,182,107,215, 46, 55, 53, 53, 21, 59, +118,236,224,120, 5, 4,108, 11, 1,164,149, 45,167, 18,152,188,106,213, 42,123,157, 78,135, 46, 93,186,196, 91, 99, 98, 66,204, +192, 30, 21,240,244, 10, 96,172,232,251, 25,192, 39,211,167, 79,247, 22, 10,133,248,226,139, 47,114, 53, 47, 95,214, 51, 3,191, +200,129, 36, 57,144,100, 6,126, 81, 38, 36,212,123,255,253,247,115,133, 66, 33, 86,174, 92,233,157,241,159, 73,183,109,141, 96, + 53, 38,132, 28, 35,132, 92, 5,144,254,193,248,201, 31,132, 55,109,129, 29,155,215,225,187, 5, 95,109, 3, 48,136, 16,178, 11, +192, 52, 86,243, 24,140,127, 39,182,120,145,255,213,230,195, 50, 91,202, 94,197,189, 78,158,164, 0,218,151, 39,228,226,230,214, +184, 94,189,122,184,118,237, 26,194,194,194,238, 56, 59, 59,155, 5, 66, 33,248,124, 62,168,181,226, 57,162, 69, 98,113,167,206, +157, 59,243,110,221,186,133,160,160, 32,136, 68, 34,240,249,252, 63, 44, 2,129, 0, 62, 62, 62, 80, 40, 20,232,212,169, 19,127, +205,154, 53,157,160,215,127, 91,225, 13, 49,238,145, 36,231,214,247,195,127,222,190,173,122,219,182,109, 33,151, 43, 96,181, 90, +225,224,224, 0,131,193, 0, 30,143, 87,216, 4,100,162, 10, 91,118,154,197, 98,177,112,185, 92, 4, 5, 5, 97,241,226,197,208, +233,116, 16, 8, 4, 0, 0,133, 66, 1,153, 76,134, 71,143, 30, 33, 41, 41,201,166,249, 20, 29,165,210, 30,131, 7, 15,182, 43, +237, 51,189, 94, 15,185, 92, 14,185, 92, 14,153, 76, 6,157, 78,135, 22, 45, 90,216,157, 60,113,162, 7,242,242, 74,157, 88, 90, +111,111, 63, 96,199,142, 29,158,118,118,118,208,106,181, 80, 42,149, 72, 73, 73,193,203,151, 47,117,217,217,217,102, 71, 71, 71, + 78, 96, 96, 32, 71, 40, 20, 10,251,246,237, 75, 20, 10, 5, 8, 33,232,217,179,167,219,238,157, 59, 7, 3, 88,193, 78,105,219, + 56, 7,232, 27, 25, 12,189,154, 53,109,122,233,206,221,187,225,159,125,246, 25,162,163,163,191,119,216,183,239,170, 6,120, 80, +222,119,227,129, 79,126, 40, 97, 96,232,203,151, 97, 70, 32,167,196, 42, 73,129, 9, 9,103,222,127,255,253,135,209,209,209,238, + 43, 87,174,244, 30,212,175,223, 39, 0, 22, 85,166,140,142, 82,105, 19, 31, 31, 31,156, 62,125, 26,201,137,137, 95,153, 1,109, +101,190,207,225,114, 91,183,109,219, 22,191,254,250, 43, 82, 95,190,252,202,252,199, 50, 22, 62, 40, 1, 57,188,248,248,175,182, +109,219,182,117,204,152, 49,224,242,120,173, 97, 54, 87,230,103,254,148,248, 62,102,194,103,216,182,105,205, 54, 0, 99, 41,165, + 86,188,163, 41,173, 24, 12,198,223,180, 13,206, 6, 47,242,119, 49, 91,197, 77,137,149,138,104,121,122,122,250, 73, 36, 18,164, +167,167,163,118,104,104,182, 80, 40,132, 29,159, 15,123, 59, 59,155, 10,161,209,104,194,124,125,125, 33,151,203,225,238,238, 14, +129, 64,240,106,177,179,179,123,245,191,163,163, 35, 56, 28, 14, 2, 2, 2,160,209,104,194, 42,212,205,122,228,185,111,205,196, +143,111, 94, 61, 93,189, 95,191,254,112,113,113,133,191,127, 21,120,122,122, 66, 36, 18,193,223,223, 31, 53,106,212,160,203,151, + 47,135,131,103,125,155, 46,228, 37,205, 19,143,199,131,197, 98, 65, 86, 86, 22,158, 61,123,134,232,232,104,220,188,121, 19,247, +239,223,135, 82,169,132, 45,243, 86,107,180,218, 6, 60, 30,175, 84,147, 37,147,201, 32,147,201, 94, 25,173,156,156, 28, 36, 37, + 37, 65,165, 86, 55, 44,199,244,246,175, 87,175, 30, 23, 0, 68, 34, 17, 26, 54,108,136,141, 27, 55,154,143, 31, 61, 58,164,206, +205,155,174,254,103,207, 58,255,188, 97,195,144,129, 3, 7, 90,110,221,186, 5,133, 66,129, 39, 79,158,192,195,195,131,103,103, +111,207,230,202,171, 36,145,128,218, 93,169,236,222,178,101,203, 4,185, 92,142,101,203,150,113,248,142,142,155, 22, 0,220,114, +191,200,229,182,106,219,182, 45,142, 29, 59,134,244,151, 47,103,188, 44,197,192,188, 4,114,146,227,227,103,108,219,182, 13, 93, +187,118, 5,225,241, 42,157,168,212,188,121,243,122, 86,171, 21, 15, 31, 62,132, 51,112,187,178,223,175, 81,179,102,120,113,228, + 87, 12, 92, 47,107, 61, 49,112, 61, 42, 42, 10, 34,145, 8,181,235,212,105, 84,201,159, 89, 78, 8,201, 24, 51,225, 51, 28, 62, +243, 27, 0, 96,219,166, 53, 89, 37, 76, 22,131,193, 96, 17,173,191,101, 68,171,216, 88,149, 92, 94, 61,200, 86, 82, 4, 0,192, +231,243, 97, 39, 20,194,206,206,174,208, 32, 9,133,149,113,124,176,183,183,127,101,172, 74, 26,172,146,255, 59, 56, 56,216,100, + 96, 0,160,224,249,153, 54, 99, 63, 28, 99, 39, 20, 10, 97, 48,232, 65, 41,133, 80,104, 15,103,103,103, 4, 5, 5, 65,161, 80, +160,101,171,118,250, 20,153,224,132, 91,237,190,209,111,178, 3,205,102, 51,212,106, 53, 10, 10, 10,144,159,159, 15,133, 66, 1, +173, 86,107,115, 87,116,171,213,202, 77, 73, 73,193,158, 61,123,144,151,151, 7,160, 48,209,186,216, 92, 21,255, 77, 72, 72,192, +206,157, 59,145,152,152, 88,169,227,211,166, 77, 27,156, 56,113,130,219,190, 83,167,205,231, 3, 3,211,207, 7, 6,166,183,239, +212,105,243,177, 99,199,184,126,126,126, 72, 74, 74,194,189,123,247, 80, 80, 80, 0, 74, 41,235, 63,255, 6,188, 0, 10, 52,249, +249, 99,102,205,154, 69, 37, 18, 9,150,253,240, 67,131, 69,192, 48, 91, 13,140,180, 28, 3, 35,125, 59, 3, 3, 74, 41,172, 86, + 43, 44, 22,203, 27,109, 27, 33,132,240,249,252,202, 14,173, 64, 42,161,255, 42,241,125,250,215,139,113,234,215,131,197, 31,197, + 49,147,197, 96, 48,254,238,148, 55,215, 33,175,132,131,124,245,183, 44,178,178,178,210,212,106,117,245,192,192, 64,164,166,166, +122, 6, 4, 4,188,180,227,243, 33,176,179, 3,225, 84,236, 9, 28, 28, 28, 30,166,167,167,183,242,243,243,131,217,108,126,101, +170, 94,111, 58, 44,142,210,220,191,127, 31, 14, 14, 14, 15,161, 43,119,228, 4, 88, 12, 5, 85, 27, 53,106,244, 42, 50,228,236, +236, 12,103,103, 41,132, 66,123,204,158, 61,219,186,114,249,242,117, 1, 29, 23,200, 71, 79,153, 69,103, 45,218,252, 78,119,174, +173, 55, 38, 7, 7,135,135,254,254,254, 45,164, 82, 41, 14, 31, 62,140,164,164, 36, 20, 20, 20, 64,163,209, 64,175,215, 67,163, +209,192, 96, 48,192,222,222, 30,117,234,212,129,147,147, 19, 46, 92,184,240, 16,122,125,233,230, 50, 47,239,240,195,135, 15, 91, + 52,109,218,244, 85, 68,165, 67,135, 14,164, 67,135, 14,238,175,162,104, 26, 13,114,115,115,113,231,206, 29, 92,184,112, 1,132, + 16,196,197,197, 89,244, 90,237, 94,118, 90,188, 25, 58,224,119,238,182,109, 91, 63,250,232,163, 15, 91,181,106, 5, 11,240, 30, +128,157,255, 45, 3, 83,204,205,155, 55, 31, 89, 44,150, 86,181,106,213,130, 12,104, 6,224,215, 74,153,200,231,207,163,204,102, +115,167, 6, 13, 26,224,240,129, 3,109, 0, 36,149,182,158, 26,104, 19, 30, 30, 14,173, 86,139, 39,143, 31, 71, 86,194,100,109, +158, 57,239,251, 15,222, 31,251, 9,118,108, 94,135,109,155,214,164,108,221,184,218, 31, 54,228,143, 49, 24,140,127, 85, 52,171, + 66, 47,242,191, 72,105, 57, 90,197,230,139, 87, 25, 33,121, 65, 65,100, 84, 84, 84,245, 70,141, 26, 97,243,230,205, 77, 91,182, +104,145, 38,176,179, 51,219, 9, 4,224,216,112, 35,209,170,213, 23, 47, 94,188,216,172,111,223,190,188, 91,183,110,193,219,219, +251,149,209, 42,254,203,227,241, 64, 41,133,131,131, 3,142, 28, 57, 98,212,170,213, 23, 43,140, 22, 89,172, 22, 78,145,209,163, +148, 66, 38,147, 65, 32, 16, 96,197,138,149, 88,187,124,249,112, 11,112, 48, 88,236,241, 37, 0,251,255,218, 13, 90,163,185,116, +234,212,169,198,115,231,206,229, 87,169, 82, 5, 50,153, 12, 5, 5, 5,200,203,203,131, 66,161,128, 66,161, 64, 65, 65, 1,100, + 50, 25,236,237,237, 17, 29, 29,109,210,105, 52,151,202,210, 19,234,116,135, 70,141, 26, 53, 61, 42, 42,202,135,199,227,193,100, + 50,193,106,181,194,106,181,194,104, 52,226,249,243,231,136,137,137,193,211,167, 79,145,159,159, 15, 62,159, 15, 46,151,139,251, +247,239, 23,136, 77,166, 3,236,148,126,115,248,192,225, 27, 55,110,124, 56,114,228, 72,248, 86,169,210, 14,169,169, 54, 25,152, +163,229, 24, 24,249, 27, 24,152, 63, 24, 32,165,242,110, 66, 66, 66,171,246,237,219,195,167, 74,149,239,235,164,166,158,127, 92, +137, 60, 45,139,217,124,253,198,141, 27,157,222,127,255,125,108,222,188,249,123,143,132,132, 51, 57,175, 53,115,122, 0, 30,213, +106,212,248,254,131, 15, 62,192,185,115,231, 96, 49,155,175,151,115,209, 41, 57,226,123,213, 15,198, 79,246,127, 45,241,125, 35, + 33,100, 18,128,101,172, 70, 49, 24,140,127,114, 68,171, 82, 77,135, 34,139,101,230,180,105,211, 76, 28, 14, 7,253,251,247,119, +252,245,216,177,129,247, 31, 60, 8,202,206,206,118,182, 88, 44, 21,106,121,232,245,171,167, 77,155, 38, 51, 24, 12, 8, 9, 9, + 65,126,126, 62, 44, 22, 11,120, 60, 30,120, 60, 30, 8, 33,224,112, 56,144, 72, 36,136,138,138,194,214,173, 91, 21, 30,122,253, +234, 10,111, 18, 22,203,195,157, 59,119,130,203,229, 82,123,123,123, 16, 66,192,227,241,176,114,229,202,236,181,192, 97, 0,224, +114, 56, 6, 0,224,112,136,173,217,187, 21,182, 91,218,217,217,193, 90,216, 9,160,194,117, 93,244,250, 85, 75,151, 46, 85, 62, +121,242, 4,106,181,250, 85,244, 77,165, 82,189, 74,174,151,201,100, 32,132, 64,173, 86,227,216,177, 99, 74, 23,189,126, 85, 89, +122,121, 64,102,106, 92, 92,239,166, 77,155,230, 37, 36, 36, 64, 46,151,227,225,195,135,184,112,225, 2,246,239,223,143,115,231, +206,225,249,243,231, 48,155,205,240,243,243, 3,165, 20, 71,143, 30,149,155,149,202,247,242,128, 76,118, 90,148, 77, 85,111,239, + 78, 94,158,158,201, 30,238,238,169, 85,189,189, 59,189,254,185, 20,136,141,141,141,133,217,108, 70, 80, 80,144,107,121,121, 90, +212,108,190,113,227,198, 13,188,255,254,251,240,175, 94,125, 73, 32,224,241,250, 58,129,128, 71, 96,141, 26, 75,138, 13, 12, 53, +155,111, 84,182,204,142,192,154, 47,191,252, 82, 43, 16, 8,176,111,223,190, 32, 83,205,154, 79,121,192, 48, 9, 16,218, 30, 16, + 84,244,125, 31, 96,221,215, 95,127,157, 73, 8,193,174, 93,187,220,165, 53,106, 60,226, 1,163,164, 64, 85, 41, 80,149, 7,140, +146,214,168,241,104,223,190,125,238,102,179, 25, 83,166, 76,201,244, 1,214,149, 35, 57,153, 82,218,139, 82,218,150, 82,234,191, +117,227,106,156,250,245, 96,177,201, 26, 75, 41,189, 67, 41, 29, 73, 41,125,196,106, 28,131,193,248, 39, 67, 74,203,131,226, 55, + 91,148, 5, 80,207,118,205,235,227,238,131,103,114,119, 23,167,179,197,159,229,199, 28,172,213, 49,204,169,254, 79, 63,253, 4, + 62,159,143,148,148, 20, 60,126,252, 24, 78, 78, 78, 24, 62,124,184, 94,171, 84,246, 46,158,235,144, 16,210,153, 82,122,161, 72, +179,112, 62, 53,121,156,164, 6, 47,186,250,153, 83, 39,184, 82,169, 20, 42,149, 10, 28, 14, 7,246,246,246,112,112,112,128, 72, + 36,194,189,123,247, 16,209,171,143, 37,199,161,237,171, 1, 75,139,231, 83, 43,169, 9, 66,184, 0,208, 12,112,136, 2,190,240, +244,245,157, 54,103,206, 28, 81,183,110,221, 32, 16, 8, 80,165,106,112,102, 80,247,101,107, 56, 28, 98, 78,205, 83,204,174, 81, +213, 87,250, 56, 46, 9, 0, 41,156, 19,177,104,174,195,210,202, 25, 96,184, 26,116,228,151,229, 78, 13, 27, 22,230,163,203,100, + 50,100,101,101, 33, 59, 59, 27, 50,153, 12,106,181, 26, 0,112,226,196, 9,156,186,246, 84,161,173, 50, 48,190,172,114,254,103, +219,159, 57,250, 26,111, 87,219,189,243, 23,174,135,135, 7,178,178,178,144,147,147, 3,153, 76, 6,173, 86, 11,139,197,130,252, +252,124,108,217,246,139, 37, 79,210, 54,177,120, 64,200,114, 53,213, 41, 34, 87,213,111,126,225,117, 2,233,135, 31,126,232,232, +228,228, 4,171,213,138,130,130, 2, 36, 39, 39, 35, 33, 33, 1,215,174, 93, 83,103,203, 12, 80,187,119, 73, 45, 30,176,180,212, +253,249,238, 66,168,127, 63,205,162,186, 4, 0,190, 62, 62,233, 47, 95,190,244,180, 88, 44,240,243,243, 51,203,242,243,151,216, + 1,231, 28,129, 12, 0, 52, 23,152,179,106,205,154, 49,125,250,244, 65,147, 38, 77, 82, 50,179,178,170,149, 86,151, 64, 8, 55, + 4,144,106,170, 84,137,185,115,231,142,119,114,114, 50,222,127,255,253,220,151, 47, 94,204,144, 22,229,107,201,129, 54,129, 53, +106, 44,217,183,111,159,123,245,234,213, 17, 22, 22,150,105,159,156, 92,247, 25, 32, 47,163,126,150,121,110,202, 98, 79, 86,155, +216,175, 94,147,143, 63,254, 24,102,179, 25,215,174, 93,195,237,219,183,241,242,229, 75,252,246,219,111, 50, 39,177,120, 72,241, + 92,135,101,213,207,247,130,213, 65,187,118,237, 36, 2,129, 0,219,182,109, 67, 84, 84, 20, 0, 32, 60, 60, 28, 31,124,240, 1, +204,102, 51, 70,140, 24, 73, 79, 62, 19,197,151, 87, 63, 9, 33,245, 0,252,128, 66,147,215,132, 82,106, 79, 8, 73, 7,224, 95, +153,156, 44, 86, 63,153, 38,211,252,247,104,254, 83,169,112,174,195,133,235, 33,253,227, 52, 31,227,210, 15,110, 92,192,107,221, +166,109,232,130,249,243, 56, 77,155, 54,133,191,191, 63,194,195,195,145,156,156, 44,116,118,118,174,104, 62, 53, 85,219,238,195, + 18,234,215,175,239, 60, 99,198, 12,105,215,174, 93,249,254,254,254,160,148, 34, 42, 42, 10,135, 15, 31, 54,110,222,188, 89,161, +241,234, 37,139,188,188, 71,101,203,124,106,183, 1, 13,128,111,170,164,167,111,250,100,226,196,121, 13, 27, 53,250,112,254,252, +249, 28,137,131,136,191,120,246, 88,123, 0, 88,248,227,126,105,159,129,195,177,170, 38,208,110, 88,233,243,200,149, 44,103,114, +234,184,151, 61,250,117,170,249,197,164, 49,150,193,131, 7,139,157,156,156,224,239,239, 15, 23, 23, 23,196,199,199, 35, 53, 53, +149, 30, 63,126, 92,117,243,126, 44,255,232,185,187, 47,237,165, 62,182,204, 75,168,108,219,109, 80, 98,143, 30, 61, 92, 70,141, + 26,229,216,184,113, 99,190, 80, 40,132, 80, 40, 68, 86, 86, 22,158, 63,127,110, 60,126,252,184, 74,227,249, 94, 65,228,229,125, + 74, 27,231, 58,212,182, 29,186,224,249,245,243,243,167,196, 60,124, 56,210, 10, 52, 48, 26,141,126, 22,139,133,112, 56,156, 12, +171,213,250,208,168, 84,110,213,135,207, 95,201,230, 58,180, 13,139,197, 34,176, 88, 44,144,201,100, 56,127,254, 60,239,197,139, + 23,115, 30, 60,120, 48, 39, 61, 61, 29, 38,147, 9, 3, 6, 12, 64,120,120, 56, 46, 95,190,140,156,172,172,227,229,105, 61, 3, +228,194,212,212, 15,198,141, 27,119,122,231,206,157,156, 7, 15, 30,184,111,219,182,109, 75,105, 6,102,228,200,145,214,172,228, +228, 15,244,128,188,156,250, 89,222,185,153,123,102,223,218, 7,125,251, 15,172, 51,127,238, 28,126,203,150, 45,225,238,238,142, + 54,109,218,192,104, 52, 58,215,174, 93,187,162,115, 83,217,182,251,144,248, 6, 13, 26,136, 87,174, 92,233, 61,102,204, 24, 76, +154, 52, 9, 0,160,213,106,113,238,220, 57, 76,153, 50, 37, 51,153,215, 76, 93, 81,253, 44,138, 84, 21, 27,176,171, 0,218, 2, +136,103,137,239, 12, 6,227, 31, 25,181, 34, 36,156, 82, 26, 69, 8,241, 1, 16, 1,224, 36,165, 52,163, 76,163, 5,252,103, 62, +181,235,183, 31,161,228, 52, 31,133,248, 60, 54, 7,140,122, 49, 97,218,146, 48,174, 73,225,194, 39, 58,167,184,216, 88, 82,209, +156,135,175,230, 83,147, 6,171,220, 18,246, 54, 93,188,112,225,103,171, 86,173,234, 84, 60,132,131,131,131,195, 67,173, 90,125, +209, 67,175, 95,173,145, 6, 95,172,236,220,124,169, 64, 22,128,137, 46,145,145,107,122,246, 25,176,212,222, 53,136, 63,107,209, +102, 29,151,195, 49, 60, 79,207,193,170,154,128,216,134, 14,146, 26, 3, 16, 35,243, 49,103,185, 13,124,246,245,151, 95,126,177, +240,155,111,154, 74, 36,146,118, 70,179, 57,216,106,181, 2, 86,107,156, 70,173,190, 74,141,198, 59,250,240,185,203,237,165, 62, +212,230,121, 9,157,107, 43, 93, 19, 15, 54,221,190,117,235,228, 3, 7, 14,252,105,219,221,244,250, 53, 26,231,218, 23,108,217, +246,146,235,232,128,223,145,157,253,123,153,149, 0,108,174, 67,155,159, 62,172,214,241, 46, 46, 46, 59, 58,117,234,100,223,185, +115,103, 68, 68, 68,160,101,203,150,176, 90,173,160,148, 66,169, 84, 98,255,254,253, 88,186,116,105, 92, 53,224,155,138,244,244, +192, 69,225,169, 83,239, 53,104,208, 96, 91,121, 6,166,200,100, 85,152,147, 88,254,185, 41,140, 51, 75,123, 39, 13,253,100,113, + 77,131, 34,195,217,205,193,236, 29,243,232, 33,199,246,115, 51, 68,105,137,218,223,108, 64,191,126,159,112,121,188, 54, 69, 61, + 32,233,147,199,143, 35,139, 39,149, 70,248, 7,231, 43, 89,151,138,199,174, 99,137,239, 12, 6,227,159, 74, 56,128, 40, 0, 17, +148,210, 77, 69,201,241,101, 39,195,243,120,188,236,226,168, 15,143,199,203,142, 63, 58, 97,120,121,234,124,160, 83, 81, 36, 11, + 21,206,117, 88,244,127, 18,160,132, 94,255,237, 31, 6, 35, 45,209,187,144,255,218,250,149,217,218, 2,224, 25,204,250,158,200, +126, 12, 28,155, 88,168,215,116,225, 87, 37,183,169,204,155,236, 31,126, 87,144,175, 3,174, 67,165,186, 14,149,170,212,164, 93, + 62, 79,144, 95, 81, 57, 95,223,246,100, 64,241,182,219,206,171,228,254,225,189,197,254,252,183,145,150,155,123, 20,128,164,202, +137, 19, 94,103, 78,156, 24,252,197,212,169, 3,124,124,125,107,184,187,187,187, 56, 58, 58,114,110,221,186,149, 96,214,233,214, + 52, 4,182, 23, 69, 83, 43, 68, 15, 92, 12, 73, 78,174, 59,168, 95,191, 79, 8,143,215,186,164,129,161,102,243,111, 65,192,186, +242, 34, 89,111,122,110,250, 11,125, 58, 21, 69,178,192,181,241,220, 76, 45, 44,199, 34,152,205,139, 16, 29, 93, 74,157,175,116, + 93, 90, 72, 8, 81,130, 37,190, 51, 24,140,127, 46, 39,139,204,213,201, 63,125,242, 87,206,239, 3,160, 51,211,100,154,255, 20, +205, 66,175, 2, 39,182, 63,153, 38,211,100,154, 76,243,221,107,254, 83, 23, 30, 51,161, 12,134,109,208,194,228,116, 5,219, 19, + 12, 6,131,193, 40, 73,137,220,172,146,247,140, 77, 64, 97,234, 78,231, 50,110, 42, 23, 42,241, 3,157,223,224,166,117,129,105, + 50, 77,166,201, 52,153, 38,211,100,154,255, 46,205,138,180,255,142,189, 25, 9, 33,227,139,115,179, 94, 31, 83,139,216, 58,205, +205, 27,254, 48,235,250,202, 52,153, 38,211,100,154, 76,147,105, 50,205,127, 52,229, 69,180, 56,108,247, 48, 24, 12, 6,176, 96, + 1,225, 0,132, 0, 11, 56,192, 65, 46, 48,136, 91,248,250,205, 25, 52,136,148, 58,152,237,228, 17,174,142,108,143, 51, 24,255, + 28, 40,165, 25,101, 77, 42,205,114,180,254,187, 14, 56,192,219,219,123, 35, 0,146,153,153, 57,158, 82,154,204,246,202,255, 30, +110,110,110,157,204,102, 51,228,114,249,197,127,226,246,213,173, 73,250, 81, 14,106,255,231,138,129,228,199,113,116, 71,105,235, +214, 9, 38,239,131,252,103, 44, 46, 98,197,147,152,231,244, 72, 37,234, 60,231,189,206,254,235, 0,224,244,133,148, 79,254,138, +113,181, 8, 33,181, 60, 60, 60,206,242,120, 60,158,197, 98,153,152,149,149,117,162,108, 35, 52,136, 11, 0,124,122,121,166,187, +107,232,140,207, 63, 34,124,141,126,171, 76,175, 85,203,185,124,110,162,144,239,125, 3, 92,191,211, 5,170, 22,143, 75,251,254, +129, 3, 7,202,156,197,187, 94, 48,121, 47,180, 78,157, 94,141,194, 68,241, 63,172,110,186,170, 93,144, 59, 63, 33,229,190,228, +251, 13,242,141, 78,174, 85,123,141, 26,226,118,130,231, 64, 70,110,217,146,171, 98,103,153,237,124, 71,136,171, 17, 8,227, 11, +133,254, 22,179,217,139, 0,148,203,227,101,153,244,250, 20, 1, 16, 61,131, 82,217, 63, 93, 83, 32, 20, 86,177,152,205, 94, 0, +240,191, 88, 78,198, 31, 41,211,104, 57, 58, 58,222,227,112, 56, 85, 74, 78,134, 91, 60,159, 96,241,123, 37, 63, 35,132,192, 98, +177,164,230,231,231, 55,174,196, 5,209, 9,192, 96, 0,197, 93,212,119, 3,216, 79, 41, 85,188,225, 5,214, 73, 32, 16, 76, 19, +139,197, 29,181, 90,109, 93, 0, 16,137, 68, 49,106,181,250,146,209,104,252,225, 77,116, 9, 33, 60, 0,131, 36, 18, 73, 7, 14, +135,211,129, 82, 74, 40,165,151, 85, 42,213, 37, 0, 7, 40,165,230, 55,208, 20,121,122,122, 46, 10, 13, 13, 29, 54,115,230,204, + 60, 55, 55,183,144, 41, 83,166,220,245,240,240,216,147,155,155, 59,155, 82,170,253, 95,168, 28,132,144, 26,222,222,222,187,249, +124, 62, 55, 37, 37,165, 3, 0,248,251,251, 95, 54, 24, 12,150,236,236,236,225,148,210, 23,149,212, 19, 3,104, 46,145, 72, 26, + 75, 36,146,182, 22,139,165,118,209,252,140, 79, 84, 42,213, 53,163,209,120, 15,192, 45, 74,169,250,127,200, 12, 59,122,122,122, +238, 36,132,128, 16, 18, 76, 41, 85,254,227,158,196, 56,168,253, 56,230,105,200, 43, 51, 85, 55,180,156, 29,130,128, 82,214,181, +217,104,117,108,231,211,171,119,239, 46, 28, 0, 48,152, 78,247, 66, 37, 39,191,182,197,100,245,239,223,255,247,157, 59,119,186, +232,245,122,140, 31, 63,126,183, 84, 42, 93, 39,151,203,103,150,247, 61, 39,137,203,148,101, 43,207, 57, 20,206,127, 13, 79,171, +213,226,153,150,246, 34,248,241,163,223,187,199,196,220, 92,172,125,122,233,150,149,240, 39, 24,209,230,169, 45,229,168, 83,131, +244,236, 51,168, 95,196, 55,223,204,199,176, 33,195,170,198,196,232, 68,126, 78,241,118,249, 90,113, 77, 55, 15,207,222,223, 44, + 60, 72,110, 92, 63,218,123,231,182, 5,151, 62,252,208,189, 35, 51, 91, 54, 29, 91,178,144,199,107,238, 18, 26,218,118,200,209, +163,144,248,251,243,120, 66, 33, 7, 0,204,122,189,191, 42, 37,197,103, 95,239,222,205, 22, 16,114,101, 30,165,183,153,230,255, +191, 38,163,146, 70,139,195,225, 84, 73, 75, 75,243, 20,139,197,197, 97, 49, 88, 44, 22, 88, 44,150, 87,147, 23, 83, 74, 95,253, + 53,155,205, 8, 13, 13,181,233,137, 22, 64, 71, 0,163,219,183,111, 63,240,135, 31,126,224,135,133,133, 21, 79, 25,210,102,214, +172, 89, 63, 18, 66, 14, 1,216, 14,224,162,173, 79,188,132,144,110, 98,177,120,215,178,101,203,156,186,116,233,194,243,245,245, + 5, 33, 4,153,153,153,205, 47, 92,184,208,120,202,148, 41, 19, 9, 33, 35, 40,165,103, 43,113, 98,215,115,116,116, 60,216,175, + 95,191, 42,237,218,181,179,175, 83,167, 14, 44, 22, 11,238,223,191, 63,230,222,189,123, 67, 15, 29, 58, 52,143, 16, 50,208,214, +249,218, 8, 33, 68, 34,145,140,242,243,243, 91, 52,119,238, 92,215, 17, 35, 70,216, 61,122,244,168, 32, 40, 40,136,220,184,113, +195, 99,255,254,253, 19,151, 44, 89, 50,200,209,209,113,182, 74,165,250,133,218,144, 64,231,228,228,116,143,195,225, 84,177,197, + 8, 3,176,217, 12, 19, 66, 26, 86,171, 86,109,255,245,235,215,171, 37, 37, 37, 89,250,246,237,187, 3, 0, 46, 93,186, 20,102, + 50,153, 72,215,174, 93, 79, 19, 66, 6, 83, 74,239,219,184,237,245, 93, 93, 93,127, 29, 54,108,152,107,141, 26, 53, 28,170, 85, +171, 70,196, 98, 49,184, 92, 46,228,114,185,239,163, 71,143, 58,223,190,125, 91,123,225,194,133,124, 66, 72,111, 74,105,116, 37, +142, 83, 75, 79, 79,207,145,124, 62,191,158,217,108,246, 3, 0, 30,143,151,102, 50,153, 30,101,103,103,239,164,148,254,254,166, + 39,136,151,151,215,218, 69,139, 22,185,103,103,103,211, 37, 75,150,172, 5, 48,234,159,122, 49,216,189,231, 0,238,221,189, 13, + 0, 2, 66, 8,121,189,254, 17, 66, 72,237, 96, 8, 62,255,124, 42, 26, 55,105,134,225,195, 6, 85,168, 25,209,217,127, 25,223, + 78,224,166,211,233,126,151,107,244, 7,188,220,156, 7, 15, 27,218, 51, 14, 0, 78,159,185, 50,184, 89, 51,215,203, 82, 7,225, + 32,123,123,251,150, 38,131, 49,239,228,133,148, 47, 43, 99,170,252,252,252,206,186,184,184, 56,228,231,231,103,230,228,228,172, +239,223,191,255,194,237,219,183,187, 36, 36, 36, 32, 37, 37, 5,159,125,246,153, 36, 53, 53,245, 19,161, 80,120, 83,175,215,151, + 25,217, 82, 42,243, 87,207,154,209,103,174, 84,234,206, 21, 59, 56,193, 81,234,138,160, 26, 13,208,188,101, 47,188, 23,241, 33, +158,199, 69, 53,223,190,237,155,168,180,180, 11,223, 73, 92,171, 47,148,201,170,149,121, 93,170, 27, 66,218, 21,155,172,185,115, +231, 35,246,233, 83,101, 82, 34,231,211,147, 71,121, 14,239,117, 10, 21,154, 13,153, 73, 55,174, 31,173,214,186, 77, 95, 0,104, +188,115,219,130, 75,147, 71,184,118, 90,179, 43, 95,201,110, 73,101, 95, 59,191,225,243, 71,117, 91,185,210, 51,124,226, 68,129, + 42, 49,209, 24,191, 97,131, 38,235,218, 53, 11, 79, 40,164,254,221,187, 19,143, 14, 29,236, 39, 62,121, 34,248,109,201,146,182, +139,237,236,130,102, 25, 12,187,152,230,255,159, 38,171,163,175,146,225, 95,229,106, 21, 55, 31,242,202,249, 18,196, 98, 49,246, +237,219, 7, 62,159, 15, 30,143, 7, 62,159, 95,230,255, 1, 1, 1,182, 20,164,191,183,183,247,143,235,214,173,243,234,214,173, + 27,236,237,237, 95,125,198,229,114,209,165, 75, 23,116,238,220,153,159,158,158, 62,116,223,190,125, 67, 23, 47, 94,156, 69, 8, +153, 68, 41, 61, 92,129,110,135,144,144,144,195,231,206,157, 19,233,116, 58, 92,187,118, 13, 5, 5, 5,176,179,179, 67,149, 42, + 85,208,181,107, 87,222,211,167, 79, 93,187,116,233,114,152, 16,210,147, 82,122,217,134,178, 54,246,244,244,188,122,224,192, 1, +251, 6, 13, 26,144,231,207,159, 35, 60, 60, 28, 0, 32,151,203,209,183,111, 95,251, 17, 35, 70,212, 24, 58,116,232, 45, 66, 72, + 59, 74,233,189, 10,244, 26,121,123,123,255,210,175, 95, 63,223,197,139, 23, 59, 57, 58, 58, 34, 41, 41, 41,195,219,219, 59,184, +120,127, 15, 29, 58,212,174, 87,175, 94, 62, 75,151, 46, 93,125,240,224,193, 47, 9, 33,163, 40,165,145,229,233, 22, 27, 98, 7, + 7, 7,100,101,101, 97,247,238,221,248,228,147, 79,192,229,114,145,157,157,141,253,251,247,227,211, 79, 63, 45, 54, 52, 54,153, + 97,177, 88,220,185, 65,131, 6, 91, 46, 93,186, 84,197,217,217, 25,190,190,190,156,175,191,254,186, 94, 80, 80,144,168,106,213, +170,220,140,140, 12, 28, 62,124, 56,104,228,200,145,191,218,219,219,143,209,233,116, 21, 54,169,121,121,121,109, 61,121,242,100, + 64, 76, 76, 12, 54,108,216,128,252,252,124,216,217,217,193,217,217, 25,222,222,222, 8, 14, 14, 38, 51,102,204,112,232,213,171, +151,195,164, 73,147,182, 2,104,104,195, 49,106,224,233,233,185,113,232,208,161, 65, 11, 22, 44,112,246,246,246, 70,241,131,129, + 92, 46,175,146,148,148,212,124,238,220,185, 3,189,188,188, 18,178,179,179, 39, 80, 74, 31, 84,242,196,105,216,169, 83,167,158, +125,251,246,229,102,100,100, 96,231,206,157, 61, 9, 33, 13,109, 53,151,127, 55,238,221,189,141,241, 31,127,166,242,245,247, 23, +156, 59,187,165,191, 76, 86,231,174,179,168,112, 66,106,153, 22,198,142,237,184, 77,186,118,251, 80,208, 35,162,175,106,211, 79, +171, 37,182, 24, 45,190,157,192,109,247,174, 21,201,215,111,220,171,119,254,194,237,238,253,123,247,166, 2,129,115, 16, 0,124, + 57,229,115,254,225, 99,199,182,117,233,220, 44,189, 77,235,198,201,195, 71, 76, 13,168,196,177,169, 85,171, 86,173, 43, 81, 81, + 81, 94, 66,161, 16,249,249,249,110,155, 54,109, 90,209,186,117,107, 78,124,124, 60,158, 62,125,138,196,196, 68,200,229,114,116, +233,210, 69, 18, 25, 25,185, 30, 64,153, 70,203,200,233,184,200,183,170,105,141,155, 72, 92,205,104, 81,120, 82, 83, 70,157,243, + 39,207,215,223,187, 83, 27,238,229, 19, 26, 60,250,131,121,248,102,225, 33,254,158,221,223,207,189,120, 97, 47,192,169, 86,246, +140, 0, 20, 45,103,205,158, 9,133, 82,143, 17,195,198, 97,228,176,113,110, 20, 6, 31,106,209,137, 13,218, 2,103, 71,193,147, + 19,235, 54,175,232, 7,160, 74, 9,179,117,145,153,173,178,249,134,199,107,214,243,199, 31, 61,234,141, 29, 43,124,176, 96,129, + 58,247,218, 53,109,205, 30, 61, 10,194, 63,250, 72, 15, 0,202,196, 68, 65,236,188,121, 14, 30,109,219,138, 90, 76,155,230, 98, + 49, 24,188,191, 37,164,233,215,148,222,169,172,102,192,224,193,150,185,219,182, 53,185, 54,117,106,123, 98, 50,113,187,183,104, +113,127,201,206,157,105,111,163,249, 46,203,153,126,245,170, 62, 63, 40, 8,225,125,251,230, 5,120,122,234,223,229,182,191, 77, + 57, 25, 40, 14, 74,101, 0, 40, 30, 25,190,240,122, 69, 41,197,201,147, 39,219, 1,184, 2, 96, 65, 68, 68,196,124, 0,112,118, +118,206,146,201,100,158,135, 15, 31,174,208,100,241,249,124,248,248,248, 32, 56, 56, 56, 59, 43, 43,203,171,156,139, 99,138,213, +106,173, 66, 41,125, 21,125, 41, 11,189, 94,143,184,184, 56,212,175, 95, 63,149, 82,234, 95, 94,211,142,131,131, 67,252,211,167, + 79,221, 31, 63,126,140,123,247,238, 33, 40, 40, 8, 46, 46, 46,224,243,249, 48,153, 76, 80, 40, 20, 8, 9, 9,129, 80, 40, 68, +163, 70,141,114,213,106,117, 80,121, 77, 64,132, 16,161, 88, 44,142,187,122,245,170,127,120,120, 56,238,220,185, 3,127,127,127, +120,123,123, 3, 0, 18, 19, 19,113,227,198, 13,244,232,209, 3, 81, 81, 81, 24, 48, 96, 64,138, 90,173, 14,166,148,234,203,210, +116,115,115,203,184,116,233, 82,106, 88, 88,152, 78,173, 86,115,178,178,178,248,215,174, 93, 51, 43,149, 74,137, 92, 46,231,203, +100, 50,190, 66,161,224,169,213,106, 62,135,195, 17,104,181, 90,254,197,139, 23,185, 6,131,193,169,188,253, 84,124,156,142, 29, + 59,134,176,176, 48, 28, 62,124, 24, 95,124,241, 5,126,251,237, 55,248,251,251,227,192,129, 3,152, 54,109, 26,158, 61,123, 6, +119,119,119,212,169, 83,167,220, 99, 4, 0, 53,107,214,124,254,240,225,195, 26, 2,129,160,120, 94,199,226,249,242,144,147,147, +131, 23, 47, 94, 32, 45, 45, 13, 53,107,214,196,176, 97,195, 94,164,166,166,214,172,168,242, 85,169, 82, 37, 39, 38, 38,198,189, +126,253,250,200,202,202,130,179,179, 51,164, 82, 41,156,157,157, 95,253, 31, 20, 20,132,169, 83,167,194,219,219, 59, 91,171,213, +122, 85,100,130,194,194,194,206, 94,188,120,209,221,201,201, 9,153,153,153, 80, 40, 20,224,241,120,112,112,112,128,187,187,251, + 43, 35, 31, 23, 23,135,136,136,136,220,248,248,248,110,149,136,192,113,188,188,188,158, 70, 71, 71, 7, 83, 74,145,156,156,140, +103,207,158,225,227,143, 63,142,211,233,116,161,255,164, 57,251, 74,228, 93, 9, 70,125, 48, 94,208,175, 79, 75,195,147,152, 19, + 68,104,125,134,134,245,156,228, 0,112,255,145, 66,170,231,132,160,118,221,158,244,200,175,191,219,253,178,125, 19, 31, 86,120, +129,224,217,227, 88,250,109, 89,218,221, 58,250,142,253,252,243, 49,245,218,183,110,199, 81,170,213,158,235,215,175,108, 20, 31, +255,196, 19, 0,130,130,106,103, 79,156, 56, 37,210, 81, 44,206,190,114,227,170,117,213,170,173,143,206, 94, 74,223,108,195,177, + 9, 10, 14, 14,190,121,236,216, 49,119, 79, 79, 79, 72,165, 82,168,213,106, 24,141, 70, 60,126,252, 88,183,111,223, 62,147,147, +147,147, 99,102,102, 38,100, 50, 25, 8, 33, 56,118,236, 88, 50,165, 52,240,117,173,226, 28, 45, 0,248,248,189,218,252, 58, 29, +131, 93, 4, 66,179, 72,196,143,245, 1,177, 8, 9,149,120,157, 62,123,191,254,233,243,119,134,247,235,255,133, 71,155,118,253, + 48,119,206, 64, 83,122,122,114,184, 17,109,158,150,150,163, 85, 59,152,116,236, 59,160,223,160,111,190,153,143,249,115, 23,224, +196,177,163,114,137,152,163,119,114,230, 75,219, 54,111,165,155,250, 73,159, 20,149, 42,221,255,155,165,251,134, 69,244,153, 90, +165,117,155,190,184,113,253, 40,118,110, 91,112,143,136, 40,107, 70,124,141, 5,132,184, 56, 7, 5, 77,152, 28, 23, 39,120, 48, +127,190,202,156,158, 94,208,120,202,148,220,210,214, 77, 61,127, 94,108,231,235,235,228,210,187,183,235,234,192, 64,106,202,206, +222, 88, 90,142, 81,105,154, 23, 36, 18,231,189,167, 79,119,162,124,126,187,233, 95,125, 37,234,217,179, 39, 20, 10, 5, 14, 29, + 58,132,141, 27, 54,232,125,124,124, 30,250, 62,122, 20, 85, 79,161,152, 99,171,102,227, 41, 83,114, 45, 22, 11, 25, 52,109, 90, +151,152,196,196,142,153,217,217, 85, 1,192,199,213, 53,165,113, 80,208,189,173, 39, 78, 60, 91, 91,173,154,213,214,114,254,124, +230,140,215,193,164,164,177,174,174,174,162,172,236,108,158,208,206, 46,175,121,157, 58, 7,126,154, 61,251,138, 57, 58, 90, 96, + 95,165,138,147,180,103,207, 74,111,123,227, 41, 83,114,243,149, 74,222,228,133, 11, 91,189,204,202,170,170,210,235,107,202,148, + 74,111,139,201,196,113,114,112,200,171, 30, 18,146,173,189,118, 45,163,186, 70,243,217,207,148,102,255, 85,199,186, 52, 47,242, + 55,138,104,189,222,235,240, 79,115, 29, 94,137,136,136, 32,165, 56, 51,155,162, 89,124, 62,255, 15,205, 84,229, 32, 32,132, 32, + 50, 50, 18,110,110,110,240,246,246,134, 80,248,199,201, 7,115,114,114,240,219,111,191,225,201,147, 39,104,208,160, 1,128,194, + 39,234,178, 16, 10,133,159, 47, 93,186,212,217, 96, 48,224,222,189,123,104,220,184, 49,132, 66, 33, 4, 2,193, 31, 76, 96,118, +118, 54,234,214,173,139,233,211,167, 75, 23, 47, 94,252, 57,202,153,163,142,199,227, 77, 26, 55,110,156,103,113, 4, 43, 37, 37, + 5,141, 26, 53,122,245,185,135,135, 7,238,223,191,143,198,141, 27,163, 74,149, 42, 24, 56,112,160,231,206,157, 59, 39, 1,248, +161, 44, 77, 59, 59, 59, 78, 88, 88, 88,147,162,136, 17, 56, 28, 78,172,147,147,147,135,151,151,151,216,201,201,233, 79,219,184, +109,219, 54, 25,135,195, 49, 85,180, 67, 57, 28, 14, 50, 51, 51, 81,175, 94, 61,200,229,114, 0,128, 90,173, 70,205,154, 53,161, + 80, 40, 94,153, 86, 95, 95, 95,104,181,229,167,126, 53,104,208, 96,126,104,104,104,215,246,237,219, 11,249,124, 62, 30, 60,120, +128,240,240,112,236,219,183, 15, 1, 1, 1,112,112,112, 64, 92, 92, 28,194,194,194,112,245,234, 85,120,120,120,160,110,221,186, +194, 70,141, 26, 93,207,207,207,191,156,148,148, 52,191,156,114,114, 36, 18, 9,174, 94,189,138,173, 91,183, 34, 49, 49, 17,233, +233,233,112,116,116, 68,195,134, 13, 81,167, 78, 29,180,108,217, 18,113,113,113, 32, 21, 84, 38, 66,136,119,112,112,240,137, 59, +119,238,184, 83, 74,177,115,231, 78,168, 84, 42, 24, 12, 6,112, 56, 28,216,219,219,195,197,197, 5, 29, 59,118,132,135,135, 7, +130,131,131,177,127,255,126,247,247,222,123,239, 84, 81, 68, 42,179,162,253,234,226,226,242,217,188,121,243,252, 61, 61, 61,145, +148,148, 4,185, 92, 14, 47, 47, 47,180,111,223,222,239,194,133, 11,159, 1, 88,249, 79,185,145, 21, 39,190, 19, 66,200,185,179, + 91,250, 7, 87, 47, 8,107, 16,226,224,127,248,132,151,255,190, 19,217,117, 1,160, 94,109,175,152,254, 61, 29, 82, 30,196,156, + 72, 57,119,246,232,189, 39,177, 56,108, 75,211,182, 92,163, 63,112,254,194,237,238,225, 13, 26, 89,151,126, 63, 45,226,147,143, +199, 10, 61,189, 62, 68, 86,242, 81, 92,184, 20, 25, 48,237,139,113, 30, 63, 44,255,249,244,249, 11,183, 57,114,141,126,142, 45, +229,173, 85, 43, 96,237,246,159, 90,186, 43,115, 15,226,249, 83, 59,136, 28,235, 33, 40,168, 22, 20, 10, 5,236,237,237,237,135, + 13, 27,102,153, 57,115,166,198,201,201,201,129, 16,130,203,151, 47,103, 3,232, 86,145,174,206,211,133, 90,140, 38, 51,181,227, + 90, 41,113,212, 18, 75,190,221,163,199, 9,232,218,185, 67, 86,235,102,245, 22,207,252,102,249,172,224, 90,225, 30, 99,198, 46, +224, 47,156, 63,124, 3, 8,218,148,166,243, 36,142, 94,170, 83,131,136, 0, 68,124,243,237,124,196,199,199,185,140, 31, 45, 91, +192, 19,138,124, 67, 3, 91, 57,110,216,122,185,123,205,154,213,170, 78,157, 52,240,228,138, 31, 87, 68,148,140,108,109,223, 54, +239, 87, 66, 72, 39,250, 87,142,187,243,247,163,254,200, 19, 39,160, 74, 78, 54,229, 95,191,174,235,244,227,143,185,254,221,186, +173, 52, 24,141,238,197,151, 10, 14, 33, 32,197,169, 19, 86, 43,225, 77,159,206,161, 60, 30, 76, 46, 46,163,103, 0,181, 42,210, +252, 34, 35,163,255,240,177, 99, 35,126, 61,115, 6,213,170, 85,123,117, 63,115,118,118,198,180,105,211, 48,101,202, 20,225,253, +251,247,155, 30, 60,120,176,233, 15,203,150,121,205, 0,250,219, 82,206,115,183,110,185,124,244,205, 55,179, 27, 52,110, 28,176, + 99,247,110, 97,141, 26, 53, 0, 0, 47, 94,188, 8,254,126,201,146,192,122, 97, 97, 89,139, 63,255,124,123,204,204,153,117, 1, + 92, 47, 79, 51,243,218, 53,195,193,164,164,177,151, 46, 95,118,174, 87,175, 30, 0,224,217,179,103,158,171, 87,175, 30, 87,119, +224,192, 17,223, 76,156, 56,167,167, 78, 39,115,202,201, 17,246, 92,187,150,183,119,208,160, 10, 53,139,203, 9, 0,237,199,140, +249,188, 77,135, 14,117,250,143, 29,235, 26, 16, 16, 64, 36, 18, 9,140, 70, 35,210,211,211, 93, 98, 98, 98,106,156, 80, 42, 21, + 71,110,221,218,249,115,209,100,241,127, 17,165,122,145,191, 83, 36,171, 84, 79, 81,244,183,253,201,147, 39, 41,128,246, 17, 17, + 17, 87,139,111,224, 22,139,197, 38,147,197,227,241, 80,148, 44,108,107,129,144,155,155,139,220,220,220, 87, 77, 71,217,217,217, +184,116,233, 18,226,226,226,192,231,243, 33, 16, 8, 96, 52, 86, 60, 7,173, 88, 44,238,220,185,115,103,222,173, 91,183, 16, 20, + 20, 4,145, 72,244,170, 92,197,139, 64, 32,128,143,143, 15, 20, 10, 5, 58,117,234,196, 95,179,102, 77,231,242,140,150, 84, 42, +237, 49,120,240, 96,187,226,215, 42,149, 10, 92, 46,247,149,105, 81,169, 84,200,207,207,135, 76, 38,131, 78,167, 67,139, 22, 45, +236, 78,156, 56,209,163, 60,163, 85, 18,141, 70,163,202,206,206,118,110,211,166,141,203,246,237,219,159,181,104,209, 34,228, 15, + 53,237,202, 21,157, 78,167,227,115, 56, 28,155,230,209,219,181,107,215,171,125,159,150,150,134, 13, 27, 54,188,250, 44, 46, 46, + 14,107,214,172,121, 53, 21, 64,121,199, 40, 52, 52,244,189,157, 59,119, 54,222,177, 99, 71, 1,151,203,197,179,103,207,176,123, +247,110, 80, 74,225,225,225, 1,141, 70,131,172,172, 44, 92,190,124, 25,102,179, 25, 18,137, 4,126,126,126,246,147, 38, 77,106, +189, 96,193, 2, 62,128, 50,141,150,197, 98,177,112,185, 92, 4, 6, 6, 98,238,220,185,208,233,116, 16, 8, 10,253,165, 66,161, +128, 76, 38, 67, 84, 84, 20,146,146,146, 80,209, 77,198,222,222,126,224,142, 29, 59, 60,237,236,236,160,213,106,161, 84, 42,145, +146,146,130,151, 47, 95,234,178,179,179,205,142,142,142,156,192,192, 64,142, 80, 40, 20,246,237,219,151, 20, 27,206,158, 61,123, +186,237,220,185,115, 72, 69, 38,137, 16,226, 81,187,118,237, 89,227,198,141,179, 47, 89,103, 51, 51, 51,209,191,127,127,135,223, +127,255,125, 38, 33,100, 55,165, 52,231, 31, 22,242,166, 50, 89,157,187,247, 46, 60, 11, 59,124,194,203,255,101,170,165,213,180, + 47,151,243, 0, 96,211,198,239, 90, 29, 62,145,246, 91,104,181,172,148,131, 71,106,221,117,118,126, 76, 43,138, 8,118,108,231, +211,203,203,205,121,112,255,222,189,233,250,245, 43, 27,125,242,241, 88, 97, 96,173,105, 0, 0, 63,190, 39, 58,153,191, 37, 26, +237, 11,251,245,235, 87, 54,234,223,123, 64, 84, 98, 98,210,198, 78,237,125,247, 95,186,154,113,188,188,136,161,167,155,189,159, +131, 80, 13,191,160, 58, 8,169, 45,198,253, 7,207,112,232,192, 77,212,174,219, 28,122,189, 30,102,179, 89,220,171, 87, 47,205, +190,125,251,116,177,177,177, 74,173, 86,219,142, 82, 26, 91,209,246,167,166, 62,182,134,120, 55, 55, 10, 68, 66,179, 82, 46,208, +204,152,115,112, 80,163,102, 93, 27,187,248,248,241, 61,196,214,227,239,117,105,186,123,235,230,185, 83,230,204,219,141, 38, 77, +187,182,120,242,236,122, 29, 0, 15, 75, 53,175, 47,232,137,122,193,196, 28,255,252,121,196,203,164,164,212, 90, 94,222,134, 23, + 50,106,250,108,198,207, 93,218,180, 27, 88,191, 70,237,182,118, 79, 30, 95, 37,115,167, 15,217,243,205,210, 21,195,138,205,214, +197,243,123,218,141, 30,125,211, 14,128,158,249,171,162,167,115,161,176,138, 36, 48,144,151,184,125,187, 54,168, 87,175, 2, 0, + 48, 24,141,238,137, 73, 73, 82, 7, 7, 7, 80, 74, 97, 50,153,254,144, 67, 92,156, 55, 92, 47, 36,196,203, 22,205,196,175,191, +174, 63,125,250,116,100,102,102,194,108, 54,131,207,231,191,126,205,134, 90,173,198,232,209,163,177,118,217,178,230,182,104, 90, + 44, 22,242,209, 55,223,204,254,106,246,236, 26, 19, 38, 76,224,148,188,246,186,186,186,226,224,161, 67,118,235,214,173,171, 50, +107,237,218,209,195,133,194,248,138, 52,115,107,214,132,107, 86,150,168,216,100, 1, 64, 72, 72, 8, 54,108,216, 32,252,240,195, + 15,237,122,245,234,181,252,126,131, 6,171, 87,182,110,253,220,173, 86, 45, 39, 59,161,176,138,173,251, 19, 0,148, 58, 93,189, +149,171, 87,187,220,190,125, 27, 89, 89, 89,200,204,204, 44, 62,151,209,164, 73, 19, 50,114,228, 72,105,117,127,255,166,127,241, +225,254,147, 23,249, 27, 69,180,198,151,114, 77,253, 79,142, 86,209, 6,145,162, 13, 36, 37,110,142,127, 48, 44, 21, 25,173, 55, + 65, 38,147, 65, 38,147, 97,243,230,205, 16, 8, 4,175,110,190, 0, 96, 48, 24,108, 49, 45, 97,190,190,190,144,203,229,168, 85, +171,214, 31, 34, 89, 2,129, 0, 60, 30, 15, 2,129, 0, 66,161, 16,122,189, 30, 1, 1, 1,208,104, 52, 97,229,105,106,181,218, +134,174,174,174,175,110,176,122,189,254,149,201, 42, 46,175,193, 96, 64, 65, 65, 1, 84, 42, 21,148, 74, 37,212,106,117,184, 45, +219,107,181, 90,241,232,209,163, 23, 33, 33, 33, 13,185, 92, 46, 36, 18,137, 88,173, 86,191,202, 45,202,207,207,199, 47,191,252, +162,126,255,253,247,221,143, 29, 59,166,177,225,224,226,211, 79, 63,133, 80, 40,132, 70,163,193,250,245,235, 49,121,242,100, 8, + 4, 2, 40,149, 74,108,216,176, 1, 83,167, 78, 5,143,199,131,193, 96,192,234,213,171,203,142,108, 60,126,156,120,235,214,173, +240, 70,141, 26,185, 28, 57,114, 36,167, 75,151, 46, 30,221,186,117,131, 72, 36,130, 86,171,133,201,100, 66,243,230,205, 17, 26, + 26,138,236,236,108,156, 62,125, 58, 55, 56, 56,216,253,246,237,219,214,204,204,204,151, 21,221,196, 75, 68, 12, 97,177, 88,144, +149,149, 5,153, 76,134,156,156, 28,164,167,167, 35, 53, 53, 21, 60, 30, 15, 21, 61,204,187,185,185, 13,168, 87,175, 30, 23, 0, + 68, 34, 17, 26, 54,108,136,217,179,103,155,181, 90,237, 96, 0,167,139, 86,123,239,231,159,127, 62,114,227,198, 13,158,175,175, + 47,158, 62,125, 10, 15, 15, 15,222,255,177,119,213,225, 81, 28,255,251,157,221,243,139,187, 39, 4, 73, 2, 73,112,105,113,183, + 64,113, 43, 45, 80,138,150, 22, 40, 20, 41, 90, 42,120,145,226,208, 22,119, 39, 56, 37,184,107, 18, 32, 16, 36, 33,238,122,190, +183,243,251, 35,242, 13,105,228, 18,168,241,219,247,121,238,185,219,189,221,119,199,118,230,157,207,204,124, 70, 46,151,151, 43, +180,156,157,157,127, 63,122,244,168,109,129,184, 46, 72,103,149, 42, 47, 59,122,247,238,109,187,117,235,214,223, 1,116,125,223, + 26, 53,107, 5, 36,245, 2, 45, 51,119, 31, 75, 10,152,252,205, 82, 81,205,192,188,206,235,200, 81, 16, 45, 89, 60, 41, 96,112, + 15,203, 96,107, 69,150,164, 60,158, 46,237, 61, 86,127,244, 81, 7,102,208,192,110, 79, 37, 18,235,106,235, 55,124,231,232,232, + 52,188,136,137,211, 18,118,246,150,168,230, 37, 37,251,130, 31, 57, 78,155,254,189,118,251,214,159,159,239,220,117,172,179, 84, +124,166, 35,128, 49,165,113, 71, 68,102, 28, 81,105,229,181,178, 82, 31, 16, 91,167,102,168, 87,215, 15,142, 14,233,216,248,251, +110,120, 87,109, 4,173, 86, 11, 75, 75, 75,165,209,104,212,179, 44,187,221, 20,145, 5, 0,231,206,101,240, 1, 1, 25, 58, 54, +155,231,190,248,106, 73,175, 14, 93, 62,242,111,219,182, 61,127,250,204,105,125,179,250,250,248, 46,157,234, 37,158, 60,179,250, +105,124,220, 11,159,128,218,205, 17, 30,118,190, 51, 64, 66,129,146, 11,108,232, 83,122,178,122,117,114,126,247,238,145,188,154, +191,171,248,225,199,135, 93,130,130,134, 4,182,108,209,146, 63,115,246, 15,157, 20, 41,143, 44,155, 55,141,253,226,243, 46, 7, +127,221,190,162,227,201, 19,191,215,200,204,138, 58,246,251,239, 84, 16, 89, 69, 59,105, 28,231, 36,146,201,152,228,243,231,185, +218,195,135,107, 11,222, 71,165, 82,137,195,135, 15, 67, 42,149, 22,126, 36, 18, 73,225,111, 39, 39,167,130,197, 87, 38,113, 2, + 64,124,124, 60, 18, 18, 18, 96,101,101, 5, 7, 7, 7, 36, 36, 36,224,234,213,171,136,136,136,128, 88, 44, 70,231,206,157,193, +148, 50,183,185, 56,103,191,201,147, 59,212,170, 93,219,179,184,200, 2, 0,189, 94,143,180,180, 52,244,232,209,131, 57,113,226, +132,243,201,232,232,143,102, 1,219,203,226,172, 31, 20,148,154,184,111, 95,137,207,110,208,160, 1,185,114,229,138,172,115,167, + 78, 19, 39,253,248,227,234, 95,182,110,125,109,228, 56,231,138,196,157, 97, 24,134, 16, 2, 15, 15, 15,164,165,165, 33, 39, 39, +111, 4,219,220,220, 28, 54, 54, 54, 48, 24, 12,224, 41, 21,255,149,121, 93,154, 22,249,143,116, 84, 55, 20, 8,174,226,158,225, + 69,249,227,162, 5, 21, 69,235,162, 13, 11,207,243, 38,137, 44,177, 88, 92,238,156, 43, 83,172, 92,197, 97,138,208, 42, 8,171, + 92, 46, 47,124,209,138, 10,172,130,112, 50, 12, 3,150,101, 97,138, 69,158,231,121, 54, 59, 59, 27,251,247,239, 71,171, 86,173, + 10,135,165, 50, 51, 51,145,145,145,129,204,204, 76,104, 52, 26,188,124,249, 18,231,206,157, 67,141, 26, 53, 0, 19,157,191, 62, +127,254,252,182,183,183,119,195,130, 70,188, 77,155, 54,238,155, 55,111,142,235,218,181,171, 43,165, 20, 51,103,206, 76,249,224, +131, 15,236,139, 54,242,229,129,101, 89, 92,189,122, 21, 53,106,212, 0,165, 20, 18,137, 4, 79,158, 60,129,163,163, 35,120,158, +135, 72, 36, 66,114,114, 50, 44, 44,202,246,145, 24, 26, 26, 58,236,179,207, 62,139,179,178,178,170,147,154,154, 26, 47,147,201, + 90, 92,188,120,209, 67,175,215,195,210,210, 18,150,150,150, 56,126,252, 56,172,173,173, 49, 97,194,132,104,181, 90,125,213,204, +204,204, 73,173, 86, 63, 72, 72, 72,152, 89,145,252,230, 56, 14,185,185,185, 72, 79, 79, 71, 90, 90, 26,178,178,178,160,209,104, +202, 13, 99, 73,104,209,162, 5,142, 29, 59,198,206,159, 63,255,215,231,207,243, 58,134,213,170, 85,195,132, 9, 19, 88, 55, 55, + 55,188,124,249, 18,183,111,223,134, 94,175, 7,165,180,204,151, 87, 44, 22,183,153, 52,105, 82,115, 79, 79, 79,162,215,235,193, +243, 60,180, 90, 45, 10,126, 71, 71, 71,163, 86,173, 90,140,151,151,215,135,132,144, 54,166, 44,172, 16,144,135,196,232, 67,112, + 19, 59, 2,140, 37,168,250, 16, 82, 83, 42,183,109,100, 82, 82,210,143, 83,102, 93, 25,254,203, 34,189, 83, 76, 60,224, 23,216, + 19, 62,254,237, 48,236, 19, 14,243, 23,239,135,167,151, 31,162,162,162,208,166, 77, 27, 73, 92, 92,220,103, 0, 38,155,202,125, +230,204,117,227,233,227, 39,250,246, 27, 48,164, 97,251,246, 93,185, 83,167,142, 35,244,193,169,176,207, 6,244, 73,162,124, 14, +177,181, 86,220,125,242,248,150, 79,157,122,173,161,227,140, 45,128,185,139, 0,148, 90,169, 68, 70, 82,221,119,223,125,199, 4, + 31,250,253,147, 65,131,135,214,109,215,174,163,225,212,153,163,184,125,237,204,253,165,139, 70, 92,152,191, 98, 79,155, 14,157, +251, 4, 56, 56, 93, 61, 30,232,171,253,220,195,206, 42, 82, 40, 41, 37, 67, 36,151,243,200,175, 23, 25, 66, 64, 41,125, 67,100, + 21, 23, 90, 12,195,148,107, 0, 40,202, 89,180, 45, 42,232, 80,175, 95,191, 30, 50,153, 12, 82,169, 20, 98,177,184,220,233, 23, + 69, 57,195, 94,190,108,187,101,251,118, 89, 73, 34, 43, 53, 53, 21,169,169,169,200,201,201,193,192,129, 3, 37,223,221,186,213, +160, 60, 78, 79, 23, 23,173,153, 66,145, 24, 30, 30,238,234,239,239,255, 70,120,179,178,178,160, 80, 40,176,125,199, 14, 73,183, +160,160,177,237,142, 31, 95, 10, 32,163,162,113, 39,132,192,209,209, 17, 54, 54, 54, 32,132,128,227, 56, 36, 36, 36, 32, 44, 44, + 12,183,110,221, 2, 75, 8,247, 87,230,113, 73, 90,228,191,102,213, 42, 46,178,138, 90,180, 72,105,214, 23, 83,133, 22,203,178, +149,182,106,149, 6, 83,134, 14,149, 74,229,195,184,184,184,102,110,110,110,224, 56,174, 80,104, 21, 31, 58, 44,176,126,220,187, +119, 15, 74,165,242, 97,121,156,148,210, 15, 27, 55,110,140, 3, 7, 14,224,252,249,243,120,241,226, 5, 84, 42, 21,180, 90, 45, +212,106, 53,194,194,194,192,243, 60, 2, 3, 3, 97,102,102, 86, 46, 39, 0,228,230,230,198,139,197, 98, 63,133, 66, 81,120,206, +197,197, 5,169,169,169,188,193, 96,192,150, 45, 91,178,156,157,157,205, 20, 10,133,201,194,149, 16,130,164,164, 36,184,187,187, + 23,206,209,202,206,206,134,163,163, 99,129,176,128, 86,171,133,133,133, 69,185, 67,135,148, 82, 13,128, 73, 69,184, 27,245,235, +215,111,231,238,221,187,171,158, 61,123, 22, 55,110,220,128,131,131, 3,126,250,233,167, 23,175, 94,189, 26, 68, 41,189,245, 23, + 20,212,114,175, 73, 77, 77,221,255,240,225,195, 15, 27, 55,110, 92, 88, 75,180,105,211,134,180,105,211,198,190,168,169, 63, 57, + 57, 25, 55,111,222,196,217,179,103, 65, 8,193,211,167, 79,141,106,181,122,103, 25,207,150,120,121,121,109,158, 49, 99,134, 57, +199,113,133,101, 91,161, 80, 64, 46,151, 67, 34,145,128,101, 89,188,122,245, 10, 61,122,244,176, 90,181,106,213,239,132,144,234, +148, 82, 61,222, 19,100,168,161,191, 23,154,101, 21, 88,203, 41,108,195,250,249,205, 70,142, 66,193,208, 33, 23, 88,203, 49,236, + 94,104,162, 85, 67, 71,232,173,165,101,243,156, 56,251,250, 11,157,225, 68,247, 19, 39, 67,250,127, 51,113,130,184, 90,181, 90, + 73,103,255,184,227,217,142,251,158,216,217, 91, 34, 53, 37, 11,175,162, 19,241, 60, 74, 71,171, 85,171,149,116,251,230, 67,217, +226,101,203,125,114, 85,154, 61,127, 92,136, 63, 90, 78,167, 76, 67, 8,233,185,116,165,236,194,144,207, 26, 73, 21, 10, 87,164, +165, 60,132,167,167, 3,122,116,171,131,223,182, 94,133,149,149, 45,156,156,156,192, 48,140,153,169,113, 79, 73, 73, 33,251,119, + 93, 26,254,233,208, 17, 31,116,234, 24,196,157, 60, 21, 44, 58,127,250,200,213,223, 55,124,123,144,178,185, 74, 66,179, 21, 85, +188,157, 31, 68, 62,187, 55,168,109,251,129, 80, 72, 44,106, 0, 53, 75, 44,176,133, 11, 12, 40,162, 25, 6,242, 79,135,142,108, +218,169,211, 71,220,169, 83,135,112,234,248,214,235,115,230, 84, 57,254, 34,118,135,228,218,173, 24,121,207,190, 99,210,143,157, +120,164,235,211,221, 59,194,213,172,158, 26, 2,222,236, 72,138, 68,137,156, 86,235,225,222,169, 19,171,138,138, 18,155, 59, 57, +113, 0, 96, 48, 24,202, 21, 90, 0,120, 83, 56, 77, 13,139, 74,165, 2, 15,112,166,112, 38, 36, 37, 85,201,239,132, 23,194, 96, + 48, 20,138,172,212,212, 84,100,100,100,192,204,204, 12,201, 90,173,147, 41,156, 29,155, 52,217,242,221,220,185,147,247,237,223, + 47, 41, 42,178, 10, 62, 98,177, 24, 11, 23, 45,146,124,245,205, 55, 99,198,138, 68,227, 43,146,158, 5,157,118,150,101, 33, 18, +137, 16, 21, 21,133,232,232,104, 68, 69, 69, 33, 42, 42, 10, 10,133, 2,180,148,244,124,135, 22, 45,242, 95, 45,167, 5, 67,135, + 69,135, 16, 77,114,239, 80,145,201,240,166, 10, 3,163,209,248, 78,133, 86,110,110,238,217,115,231,206, 53,233,217,179,167,232, +250,245,235,112,118,118, 46, 20, 90, 5,223, 5,195, 81, 74,165, 18, 7, 15, 30,212,231,230,230,158, 45,231,101, 58,119,252,248, +241,134,179,103,207, 22, 15, 27, 54, 12,225,225,225, 24, 53,106, 20, 50, 50, 50,144,149,149,133,212,212, 84,168, 84, 42, 52,105, +210, 4,114,185, 28, 15, 30, 60, 48,168, 84,170,115,229, 52, 14, 52, 41, 41, 41,199,193,193,193,165,248,127,125,251,246,117, 90, +179,102,141,234,241,227,199,134,102,205,154, 89,154, 42, 56, 10,176,107,215,174, 66, 75, 93, 68, 68, 4,214,172, 89, 83, 56, 39, +235,206,157, 59, 88,178,100, 73,161,239,179, 10, 90, 25,111, 5, 4, 4,112, 6,131, 1, 53,106,212,128,155,155, 27, 52, 26, 13, +150, 47, 95,206,253, 21, 34,203, 84,104, 52,154,125, 67,134, 12,153,122,247,238, 93, 23,145, 72,148,103,210,206,143,159, 94,175, +199,179,103,207, 16, 22, 22,134,199,143, 31, 35, 45, 45,173,176, 35,112,239,222,189,116,131,193,176,167, 52, 94, 7, 7,135,153, +191,253,246,155,179, 82,169,124,163, 60, 23, 88, 67, 11,172,164,201,201,201,176,182,182, 70,187,118,237, 28,207,157, 59, 55, 19, +192,236,247,161, 65, 35,132,144,182,173,216, 70, 95,125,209, 19,189,187, 41, 95, 31, 56, 22,123,101,201,226, 73,249,147,225, 29, +195,122,119,115,123,125,255,137, 53,250,246, 58,212,232,143, 11, 36,166,172,185,116,249,115,172, 14, 55,105, 98,123,254,192,145, + 35,191, 79,159, 50,241,206,228, 73, 35, 28, 84,234, 72,121, 53, 47, 41, 1,128,231, 81, 58,250, 32,156,215, 44, 89, 58,241,206, +252, 69,171,152,196,212,140, 81, 55,110,148,238,222,160,168,120, 9,240,133,188, 90,205, 86,113, 62,190,205,189,175, 95,221, 14, +115,165, 26,126, 53, 27,161, 83,199, 15,113, 62,228, 30, 18,146, 53,136,143,143,135, 86,171, 45,211, 93,194,227, 7, 7, 63,161, +132,122, 18, 74,162, 9, 67,229,159, 12,249,188, 69, 80,208, 71,244,216,177, 35,220,161,131,219, 47,239,217,182,114, 31, 35, 17, +139,212, 58, 43, 29, 33,154, 76, 48,161,225, 57,185,121, 29, 26,177, 76, 82,186,249, 53,223,177,171,127, 64, 77,231, 79,134,140, +178,234,218,165, 7, 61,126,252, 16,191,103,247,150,243,123, 54,213,222,206, 51, 89,146,248,215, 42, 89,102,150, 33,147, 18,169, +117, 78, 22,175, 74,124, 94, 93,227, 26,212,247,189, 17,237,239,172,195,173,213,198,228,188,126,237, 98,219,170,149,236,217,220, +185, 74,167, 38, 77, 52, 36,127, 14,113, 89, 66,139,101, 89,128, 97,120, 83, 56, 77, 13,139, 90,173, 6, 15, 24, 42,195,201,113, +220, 27, 34,171, 64,104, 21,216, 53, 76,225,220, 48,103,206,117,207, 78,157,210, 66, 66, 66,156, 90,183,110, 77,178,179,179,145, +157,157,253,134,216,114,117,117, 37,254,129,129,202, 93,231,207, 87,155,109, 98,122,154, 18,119,134, 97,254,114,161,245, 95, 70, + 73,150,172, 55, 44, 90,165,161,192,162,101,138,208, 50,209,162,101, 48, 24, 12,112,116,116, 68, 74, 74, 74,169, 13, 63,195, 48, + 80, 40, 20, 5, 99,196,101,174,188,211,106,181,203, 39, 79,158, 60,174, 75,151, 46,246,126,126,126, 72, 78, 78,134,147,147, 19, +228,114,121,225,220,177, 2,190, 59,119,238,224,183,223,126,203,210,106,181,203,203,225, 92,182,104,209,162, 47,122,247,238,109, +235,236,236, 12, 27, 27, 27, 60,120,240, 0, 54, 54, 54,200,202,202,194,147, 39, 79, 96, 97, 97, 81, 56,111,231,200,145, 35,217, + 90,173,118, 89, 57,226,141, 94,188,120, 81,111, 97, 97,241, 32, 57, 57,153, 77, 75, 75, 19,165,167,167,139,178,178,178,196,153, +153,153,226,147, 39, 79,218, 91, 89, 89,169,254,248,227,143,100, 79, 79, 79,246,197,139, 23,172,193, 96, 96, 76,104, 28, 49,126, +252,120, 72, 36, 18,104,181, 90, 44, 95,190, 28,147, 39, 79, 46,156,147,181,104,209, 34,204,152, 49,163, 80, 56,111,220,184,177, +162,133, 7,122,189, 30, 6,131, 1, 6,131,193, 36,241,251, 54, 48, 69,176, 83, 74, 19, 8, 33,221, 26, 55,110,124,122,239,222, +189,118,249, 62,201,144,152,152,136,196,196, 68, 36, 39, 39, 35, 39, 39, 7, 28,199,193,205,205, 13,137,137,137, 56,116,232, 80, +102,118,118,118,167,178, 86, 28,178, 44, 59,164, 69,139, 22,162,226, 97, 40,232,229, 21,136,119,153, 76,134,184,184, 56,180,105, +211, 70, 26, 18, 18, 50,228,191, 46,180, 10, 4, 76, 45, 31, 72, 58,118, 26, 46,169, 21,208, 84,119, 63,236,216,235,154,222,137, +175, 7,247,176, 12, 6,128,123,161,137, 86,247,159, 88,163, 86, 64, 55,218,177,147, 77,195,196,132, 13,181,253,125,137,190,172, +237,122, 0,192, 74, 41,235,215,161,125,147, 56, 11, 51, 51,102,201,210,141, 39,214,174, 93,214, 96, 95,240,255,220, 59, 44, 89, +154,231,222,161, 67,251, 38,252,227, 71,143,251, 1,216,100,170,120,233,214,173,251,221,223, 54,255,134,199, 97,127,184, 78, 29, + 95, 71,154,150,104,128,194,220, 3, 13,235, 57, 97,195,230,135,184,127,255,126,130, 78,167,107, 83,102, 89, 34,212, 51, 44, 60, +212,183,118,128,191,243, 39, 67, 70, 90,118,235,214, 3,199,142, 29,198,182, 45,155, 46,246, 25,216,251,215,216,244, 44,214, 81, +172,148, 40, 41, 47,101, 37, 86, 34,137, 76,145,164,211,229,173,129, 16,139,229,150, 64, 63,190,140,145, 67,140, 30, 57,216,170, +109,251, 30, 8, 62,126, 24,219,182,108,184, 48, 43,160,239, 38,239,250,181, 72,147, 6,139,199,120, 87,245,246,202,205, 73,204, + 98,136, 84,175,209,240, 22,139,183,188,250,249,249,140, 33,207,239,134,246, 91, 42,172, 58,124, 3, 15,182,117,237,218,248,171, +200, 72,137, 67,243,230,138,184,243,231,149,249, 59,145,148, 41,180, 68, 34, 17,104,233, 67, 93,111,112,146,173, 91, 25, 0,101, + 46,194,146, 72, 36, 80,169, 84, 48, 0,122, 83, 56, 93, 78,157,122, 29, 25, 25,233, 99,107,107,251,134,200, 74, 75, 75, 43,252, +173,209,104,160, 82,169,160, 80, 40,194, 76,225, 76,188,120, 81,179, 96,252,248,217,131, 6, 14, 92,121,246,220, 57,185,157,157, + 29, 50, 51, 51,223, 16, 90, 58,157, 14,109,219,181,147, 44,186,123,247, 19, 0,115, 76, 73, 79,167, 54,109,202,157, 15,204,178, + 44,248,191,120,232,240, 61,232,172,142, 44, 73,120, 49,229, 13,225,152,186,234,176,164, 6,146, 16,210,190,216,169, 25, 13, 27, + 54,212, 68, 68, 68,192,211,211,179, 80,172, 20,125,166,165,165, 37,172,173,173,113,231,206, 29,252,248,227,143,106, 0, 51,202, +226,164,148,102,171, 84,170, 1, 29, 58,116, 80,139, 68, 34,212,172, 89,179,208,127, 22,207,243,144, 74,165, 48, 51, 51,195,221, +187,119,209,189,123,119,149, 74,165, 26, 80,220,135, 86, 9,156,153, 42,149,234,227,142, 29, 59,170,194,195,195,209,162, 69, 11, +220,191,127, 31, 57, 57, 57,200,201,201,193,203,151, 47,225,239,239, 15,149, 74,133, 53,107,214,168, 85, 42,213,199,148,210,204, +178, 56,179,179,179,187, 79,158, 60,153,221,185,115,167,183,155,155, 91, 64,163, 70,141,252,218,181,107, 87,189, 87,175, 94, 94, + 93,187,118,117,241,241,241,209,116,234,212,201,161, 75,151, 46, 14, 42,149, 74,124,229,202,149,120,131,193,208,165,156,244, 44, + 20, 39, 17, 17, 17,133, 67,133, 34,145, 8, 41, 41, 41,133,158,251, 11, 42,165,146,132,112,105,156, 69,197,118,129,192, 42, 16, + 92,229,181, 1,165,112,150,219,112, 72,165,210, 2,139, 39, 45,143,147, 82,122,239,209,163, 71, 29, 90,181,106,117,111,248,240, +225,217, 9, 9, 9,176,176,176, 64,181,106,213,224,235,235, 11,123,123,123,232,245,122, 28, 60,120, 48,247,208,161, 67, 15, 51, + 51, 51,219, 20,247,161, 85,156,147, 97,152,151, 37, 85,178, 5,214,172, 2,161, 37,151,203,225,230,230, 86,144,182, 47, 43,146, +158,149,124,121,255, 90,206,124, 1,211,174,109,167,170, 93,131,122, 90, 29, 60,124, 85,186,114,245,161,135, 13,219, 99,163, 93, +149,172, 35,118, 85,178,142, 52,108,143,141, 43, 87, 31,122,120,240,240, 85,105,215,160,158, 86,237,218,118,170, 26, 30,246,216, +239,141,125, 15, 75, 8,167, 92, 46,111,218,162,121,195,244,144,203, 23,248,249,139, 86, 49,109,219,244,185,187,233,215,131, 7, + 55,253,122,240, 96,219, 54,125,238,206, 95,180,138, 9,185,124,129,111,209,188, 97,186, 92, 46,111,106, 74,220, 71,143, 28,108, + 21,212,181, 7,142, 29, 59,200,237,219,181,102,209,238,253, 79, 91,125, 62,238, 98, 98, 68,196,125,154, 20,115, 10, 98, 38, 10, +143, 30, 61,202,212,233,116,109, 74,154, 8, 95, 18,231,168, 17,131,139,138,172, 75,118,206, 45, 54, 62,122, 4,227,153, 51, 71, + 13,231,206,221, 85, 95,186,151,148,121, 59, 60, 37, 45, 46, 57,237, 69, 86, 86,170,142,231,141, 48, 26,141,236,119,223,229, 77, +216, 45, 45,143,154, 53,107,141, 63,206,238,192,150,205,235, 51,121, 30,154,190,123,247, 26,251,245,155, 75,189,170, 84,241,218, +190,107, 7,233,246, 81, 79, 43, 10,240,221,123,247,176,222,185,123, 39,169, 90,163,106,149,106,213,242, 92,218,252, 39,203,210, + 95,192, 57,135,210,244,172,168,168, 11,119, 86,173,210, 58, 13, 24, 96, 43,117,114,178,132,209, 72, 10,234,247,210, 62, 34,145, +232, 13, 11, 76, 89,156,110,246,246,177, 71,142, 28,129,175,175, 47,220,220,220, 80,116,142,108,129, 67,110, 59, 59, 59,236,223, +191, 31, 20,184,109, 10,103,125,111,239, 59, 11, 23, 44,208,241, 60,143,244,244,244, 63, 89,179,210,211,211,193,243, 60,142, 7, + 7,235,178,114,114,182,152, 26,247, 54, 44,155, 51,168,101,203,249, 65, 65, 65,250,200,200, 72,240, 60,143,162,150,173,164,164, + 36,152,155,155, 67,163,213,122, 16, 66,148,166,112, 38,157, 60,105,134,114,234,245,226, 22,173,191, 34,223,255,235, 34,171,232, +134,210, 69, 69, 87,153, 22, 45,142,227,224,225,225,241,198,150, 46, 12,195,188,241,169,200,138, 67, 74,233, 86, 66,200,169, 78, +157, 58,205,254,224,131, 15, 70,207,158, 61,155,245,243,243, 67,102,102, 38,108,108,108,224,232,232,136, 39, 79,158,224,200,145, + 35,198,148,148,148,117, 0,230,153,178,132,158, 82,122,158, 16,210,173, 78,157, 58,187,167, 77,155,102,213,177, 99, 71,177,135, +135, 7, 40,165,184,123,247, 46, 14, 28, 56,160,223,180,105, 83, 86,190,200, 58,111, 98, 88, 79, 19, 66,250,116,233,210,101,251, +144, 33, 67, 44,140, 70,163,248,229,203,151,208,106,181, 48, 24, 12,136,142,142,214, 31, 59,118, 44, 71,165, 82, 13,166,148,158, + 54,129,239, 14, 33,196,255,204,153, 51, 67,174, 92,185,242,227,240,225,195,237,218,181,107, 39,225, 56, 14,151, 47, 95, 78,174, + 95,191,190, 99, 82, 82,146,126,255,254,253,169, 26,141,102,134,209,104, 52,105, 11, 30, 66, 8,178,178,178, 96,111,111, 15,173, + 86, 11,158,231,161,211,233, 96,110,110, 94,184,109, 18,165, 20, 21,153, 92, 95,172, 12,176,122,189, 30, 3, 7, 14, 4,207,243, + 88,190,124, 57, 56,142,171, 48,153,149,149,213,237,123,247,238,117,171, 87,175, 94,161,120, 41, 40, 67, 50,153, 12,246,246,246, +176,179,179,195,177, 99,199, 32, 22,139,111,155,152, 71,247, 1,212, 39,132, 52,125,248,240,225,167, 0,234,233,245,122, 55,163, +209, 72, 24,134,137,167,148, 62,200,202,202,250,213,212, 45,120,146,146,146,126, 28, 58,116,104,253, 29, 59,118,152,139, 68,255, +123, 53, 68, 34, 17,100, 50, 25, 10,156, 99, 82, 74,161,211,233, 48,115,230,204,172,220,220,220, 31,223,151,138,162, 97,163, 38, +216,176,102,133,249,185, 63, 78, 37, 63,122,138, 3, 69, 93, 56, 88, 75,129, 63, 46,144,152,196,132, 13,181,227, 94,191, 54,111, +216,168,137, 73,156, 6,157, 62,245,227,193, 95,123,230,111,193, 51,243,229,203, 87,235,183,111,253,249, 57, 0, 44, 94,182,220, + 39, 49, 53, 99,212,227, 71,143,251,173, 95,191,171,169, 65,167, 79, 53,133,243,127,226,101,123, 38, 40, 52,148,210, 27,132, 16, +239,238, 3, 78,206,168, 81,213,242,163,164, 84,117,108, 78,142,234, 75, 74,233,115, 83,227,222,188, 89, 43,252,113,122, 39,182, +109,217,158, 69,121, 86, 99,111,111, 79, 1,224,209, 35,123,250,232, 81, 6,253,223,188, 98,235, 92, 49,189, 63,239,235, 47,219, +125,157,153,149,182,108,217,234,178, 29,215,214,169,251, 1,234,212,253, 0,227,190,252,214,202, 63,160,166, 39, 0,236,221, 75, +141,129, 62,228,232,236, 89,115, 63,154, 55,111, 46,178,178,181,152, 55, 47,111,187,158, 39,161,225,193,145,145, 84, 39, 52, 91, +111, 98, 54,199,221,192,215, 95,251,168,210,210, 28,154, 79,157,106, 47,250,230, 27,166,172,201,240, 69,223, 95, 83, 56,111, 61, +120, 16, 60,234,243,207, 99,231,204,158,221,105,221,250,245,138,218,181,107, 35, 33, 33, 1, 53,107,214,132,155,155, 27,206,156, + 57,131,253,123,246,228,102,100,103,207, 0,176,214, 20,206,173,199,143, 63,241, 11, 8, 72, 89,191,126,189,107, 80, 80, 16,201, +205,205, 69,102,102, 38, 50, 51, 51,161,213,106,145,239, 16,154, 70, 60,125,250,200, 96, 48,172, 51, 53,238,198,228,100,249,188, + 38, 77, 98, 36, 60,191,176, 79,239,222,147,231,125,255,189,172,106,213,170, 68,171,213, 22, 90,181,244,122, 61,204,205,205,245, + 58,157,206, 14,128,202, 20, 78,217,166, 77, 92,114,114, 50, 28, 28, 28, 10,221, 53, 21,245, 75,152,157,157, 13, 74,169,224, 76, +183, 50, 34,172,180,182,220,214,214,246,182, 72, 36,114, 47,106,221, 42,105,239,188,162,231, 12, 6, 67, 76,114,114,114,195,162, +138,151, 82,122,182, 20,129, 80, 13,192, 79,109,219,182,237, 51,105,210, 36, 18, 18, 18,130, 67,135, 14,209,231,207,159,239, 3, + 48,163,180, 74,178, 28, 78, 11,153, 76, 54,193,204,204,172,125,129, 11, 7,165, 82,249, 48, 55, 55,247,172, 86,171, 93, 94,154, + 55,248,114, 56, 45,101, 50,217,120, 51, 51,179, 14,217,217,217,245, 0,192,194,194,226, 94,110,110,238, 25,173, 86,187,162,180, +141,170,203,225, 84, 88, 89, 89,253,104,111,111,255,241, 55,223,124, 99,119,241,226,197,248, 63,254,248, 67,146,145,145,177, 67, +167,211,149,186,169,116, 73,156,118,118,118,183, 89,150,117,255, 43,242, 8, 0,234,214,173,123,172,123,247,238, 65,131, 7, 15, +134,193, 96,192,218,181,107,113,230,204,153,224,167, 79,159,118, 43,171, 55, 90,156,147, 16, 98,239,238,238, 30, 50,122,244,104, +175,129, 3, 7, 42,109,108,108, 32, 18,137,144,155,155,139,103,207,158,225,238,221,187,244,240,225,195, 57,119,238,220,137, 81, +169, 84,173, 41,165, 41,166,166,231,219,244,154,139,115,138,197,226, 86, 30, 30, 30,187,230,204,153, 99,209,161, 67, 7,133,157, +157, 29, 88,150,133,193, 96, 64,124,124, 60, 66, 67, 67,113,234,212,169,220,125,251,246,229,166,166,166, 14,164,148, 94,248, 39, +194,249, 46, 57,253,125,201,172, 98, 27, 69,151,234,237,189,172,107, 77, 9,103,187,214,174, 61,250,245,233,210, 25, 0,246,238, + 63,113,242, 92, 72,220,225,202,134,179,188,176,154,194, 89,203,135,157, 19, 22, 30,250,134, 67,203, 0,255,192,136, 90,181,123, +255, 96, 10, 87,129,103,248,226,113, 47,226,109,191,168, 77,247,141, 97,214,130,141,167,191,157, 49, 29, 63,253, 56, 31,135,247, + 30, 12, 14,143,164,199,254,203,101,233,175,228, 44,216, 4, 89,233,226,210,114, 57,207, 79,191, 31, 26,106, 94,180,195, 86, 96, +121, 46,218,169,116,117,117, 77,138,139,139,115, 50,133,179,219, 47,191,232, 85,102,102,178,233, 11, 23,182,202,209,104, 90,205, +155, 55, 79,116,235,214, 45,172, 89,181,138,211,196,196,108, 79, 6,198,151, 52, 26, 82, 22,167,215,248,241,242, 41,107,214, 12, +171, 86,163,134,227,167,159,126, 42, 22,139,197,200,205,205,197,235,215,175,113,250,212, 41, 93,248,163, 71,225, 89, 89, 89, 31, + 81, 74,227, 76,229,236,246,203, 47,122,235,106,213,160,116,112,160,231,206,159,183, 26, 53, 97,194,232, 42,222,222, 86,157, 58, +119, 22, 91, 90, 90, 34, 61, 61, 29, 47, 95,190,196,193,131, 7,147,114,114,114, 92, 41,165, 70, 83, 56,183, 95,185, 82,231,248, +133, 11,125,127,248,225, 7,105, 96, 96, 32,172,172,172,144,157,157,141,208,208, 80, 92,184,112, 65,187,110,221,186,204,204,204, +204,209, 28,199, 29,249,171,242,253,125, 29, 58, 36,127,229, 84, 0, 83, 50,130, 16,210, 16,192,172,252,195,239, 77,216, 51,240, +189,169,124, 8, 33,158,182,182,182, 27, 52, 26, 13, 85,171,213,163, 40,165,209,255,182,112, 18, 66, 68, 13, 27, 54, 92,147,148, +148,212,148, 82, 10, 43, 43,171,171, 97, 97, 97, 99, 41,165, 92, 69, 57, 9, 33, 44,128,166,230,230,230, 77, 44, 44, 44, 90,105, +181,218, 90,249,195,111,143,114,115,115, 47,232,245,250, 27, 0,174, 82, 74,141,255,100,220,243,195,217,193,213,213,245,115,158, +231,107, 16, 66,172,141, 70, 35, 12, 6, 67, 6,207,243,207, 50, 51, 51, 55, 1, 56,243, 79,135,243, 93,113, 6,212, 32,189, 40, +131, 90,165, 9,130, 55,132, 77, 49, 1, 65,120, 60, 10,123, 70, 15, 86,160,204, 51, 93,218,123,172, 6,242, 86, 38,150,183,149, +209, 27, 66,203, 4,241, 82, 97,145, 89, 67, 52,148, 18,234,249,102,239,147, 68,215,172,211,107,219,219, 8, 45, 83, 17,224, 71, + 90,129,162, 41, 79,113,227,209, 83,250,199,251, 90,215,189, 75,206,249,132,216,174,178,177,185,202,136, 68,206, 0,152,124,235, + 11,207, 19, 98,164,132,112, 69,135,183,138,118, 44,203,227,212, 3,181,197, 50,153,135,145,227,156, 18, 0,243,227, 70, 99, 3, + 13,165, 57,238,192,172,187,148, 62,169, 76, 56,245, 64,109, 86, 38,243, 60, 78,105,143,100, 51,179, 58, 73,106,181, 3, 0,106, +110,102,246, 40, 43, 55,119,139, 70,163, 89, 93,194,230,237,229,114, 74,100, 50,119, 35,199, 57, 1, 0, 35, 18, 37,237,214,106, + 61, 98, 44, 45, 63,213,104,181, 94,230,230,230, 6,157, 78,151,165,209,104, 6, 27, 12,134,115, 21,137,251, 51,142,243,191,194, + 48, 45,244,102,102,118,122, 66,204,116, 28,167,215,233,245,175, 53, 26,205, 67, 0, 63, 83, 74, 35,255,202,124,127,111, 81,176, + 58,237,175,248, 0,104, 47,112, 10,156, 2,167,192, 41,112, 10,156, 2,231, 95,207, 9, 64, 9,192, 19, 0,251, 95,140,251,251, +244, 1, 48,178,224,183, 72,144,154, 2, 4, 8, 16, 32, 64,192,123, 97, 56, 81,161,132, 57, 89, 2,254, 89, 16, 0,237, 75,201, + 48,147, 77,130,149, 89,125, 96,194, 16,131,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,239, 25,103,121,220,255,197, 33,201, +178,246, 58, 20,134, 14, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, 20,134, 14,255,162, 15, 3, 1,165,169, 83, 39, 66,136, +211,187,190, 86,192,251, 93, 22, 74,184,215,141, 16,226, 86,193,235, 93,132, 84, 23, 32, 64,128,128,247, 3,127,187,208, 50,181, +209,122,203,198,237,173,132, 15, 33,100, 62, 33,136,203,251,144,249,239,234, 90, 19,158,235,234,224,224,240, 85, 64, 64,192,118, +103,103,231,113,132, 16,199, 10,222,239, 99,102,102,182,194,220,220, 60,196,220,220, 60,196,204,204,108, 5, 33,196,231, 29,229, + 27, 33,132,140,146,203,229,231, 93, 93, 93, 99,101, 50,217,121, 66,200,104, 82,201, 13, 46, 9, 33,126,132,144,121,132,144,239, + 9, 33,117, 42,114,175, 83, 96,207, 61,142,129, 61, 31, 56, 6,246, 12,181,175,253,145,143, 99, 96,207, 80,199,192,158, 15,156, + 2,123,238,249, 11,202,107,165,243, 55,255,222,232,188, 79,249,247, 18, 66,126, 38,192,107, 66, 16,243,182,101, 73,128, 0, 1, + 2, 4,252, 59, 80,161,201,240,110,110,110,125, 40,165,163, 0, 80, 66,200,134,216,216,216,253,149,104,120,166,228,255, 94, 68, + 41,157,254, 54,215,153,112,239, 50, 74,233,228,138,139, 52, 76,225,121,202, 0, 0,195,144,169, 78, 78, 78, 74,150,101,255, 52, +193,208,104, 52, 42, 9,193, 56,158,167, 36,255,218, 41,132,144, 21,148,210,196,202,136,195, 79, 62,249,100,217,138, 21, 43,228, + 74,165, 18, 81, 81, 81, 29, 71,143, 30,221,140, 16,242, 53,165, 52,190,188,251, 21, 10,197,160,198, 77,154,126,189,112,241, 82, +115, 39, 71, 71, 51,206,200,235, 95, 70,189, 82,206,156, 54,185,137, 66,161, 88, 81,214,102,202,197, 5, 21,128,145, 34,145,168, +191, 92, 46,175,174,209,104, 34, 57,142,219,199,178,108,167, 31,127,252, 49,176,107,215,174,242,172,172, 44, 41,199,113, 53,182, +109,219,246,245,111,191,253,214,133, 16,210,163,172,101,250, 5, 22, 29, 74,105,108,145,211,125,163,162,162, 26, 74, 36, 18, 82, +173, 90, 53, 6,192,131,114,174, 47, 4, 5,124,194, 46,239,173, 13, 0, 1,205,251, 69,132, 93,222,139,252,223,127, 65,167,224, +205,178, 32,151,203,215,105, 52,154,232,130,255,243,195,153,104,202,189,132,144,149,249,219, 7, 53, 4,240,105,254,165, 91, 41, +165,183, 9, 33,206,114,153,108,130, 90,163, 33, 0,200,219,148, 37, 1, 2, 4, 8, 16,240,183, 27,145,234, 83, 74,239,230,143, + 72, 4, 1, 8, 46,104,187, 43,186,234,240,139,167, 79,159,154, 3,128,175,175,239, 88, 0,251, 43, 16,136, 63, 53, 60,237,218, +181,171,175, 80, 40,222,240,130,172, 86,171,165,132,160, 93,101,196, 75,193, 51,116, 58, 45, 35, 22, 75,193, 48,228,235, 58,117, +234, 84, 73, 73, 73,185,200, 48,204,246,152,152,152,244, 74, 36, 30, 54,110,220,232,235,226,226,242, 39,111,205,241,241,241,210, + 30, 61, 62,170, 16,223, 48, 66,100, 90,153,172,137,132, 16, 23, 35,199, 89, 3,128, 72, 36, 74,247,179,178,106,248,211, 15, 63, + 40, 9, 33,124,106,106, 42,212,106, 53, 38, 78,156,168, 8, 15, 15,239, 9, 96,117, 57, 97,244,253,224,195,102, 19, 79,157, 58, + 89, 43, 43, 45, 93,179,113,217,250, 59,106,145, 68,229,237, 95, 83,178,102,195, 22,155,145,195, 6,127, 73, 8,185, 87,210,118, + 36,197,120, 24, 0, 7, 39, 76,152, 16,208,173, 91, 55,105,118,118,182, 92,173, 86, 87,217,190,125,251,204,134, 13, 27,154,215, +171, 87, 79,186,107,215, 46,146,153,153, 9, 74,169,178,102,205,154,180,127,255,254,154,221,187,119,143, 3,176,178, 60,225,203, +178,236,114, 63, 63,191, 57,249,113,150, 20,185, 70,236,239,239,111, 6, 0, 79,158, 60,249,142, 16, 76, 40, 75,100, 19,224,105, + 64,243,126, 0, 65,141,176,203,123,229, 1, 45,250,105, 64,241,140, 0, 79,243, 59, 4,243,128, 34,126,161,222,196,163,216,216, +216, 74,237, 77, 24, 20,212,141, 16, 66,246,185,186,186,238, 79, 74, 74,242, 38, 4, 35, 76,237, 12, 16, 66,136,157,157,221, 80, + 0,243, 1,124,254,232,209,163,250, 0, 80,171, 86, 45, 9,128,219,150,150,150,205,244, 58, 29, 17,170, 43, 1, 2, 4, 8,248, + 79,162, 62,128,187, 0,130,138,108,193,179,161, 50, 66, 75, 10, 0, 23, 47, 94, 4, 0, 89,101, 68, 95, 81, 1, 51,126,252,120, +184,184,184, 20, 23, 47, 8, 9, 57,255, 54,145,125,227, 25,223,127,255,189,121, 70, 70, 70,251, 95,127,253,181,165,155,155,219, +146,216,216,216,235,101,221, 76, 41, 77, 36,132, 44,202,183, 64, 64, 38,147, 71,140, 30, 61,250,110,254,223, 85,142, 30, 61,170, +236,222,189,187, 10,192, 43, 0,144,201,228,110, 44,203,248,230, 77,122,195,162,178, 4, 97, 63, 66,170, 73,165,210,182,163,126, +249,133,107,208,189,187,200,204,193,129, 0,192,171,199,143,237, 22, 45, 94,220, 44,253,249,115,169,218,206, 46, 53, 53, 55, 87, + 29, 17, 17, 1,153, 76, 70, 88,150,109, 80, 94,132,205,204,204,190,250,225,167,133,102, 89,105, 25,106, 77, 86,182,142,229, 12, + 90, 11,133,210,152,152,144,148,106,174, 48, 83, 77,157, 53, 87,250,197,136, 33, 95, 1, 24, 91, 14,213,184,175,191,254,186, 86, +227,198,141,221,246,236,217, 67, 50, 51, 51, 33, 18,137,204,235,213,171,135,134, 13, 27, 26,255,248,227, 15,226,237,237,141,192, +192, 64, 92,190,124, 25, 87,175, 94, 37,245,235,215, 87, 30, 56,112,224,147,146,132, 86,113,113,205,178,204,196,154, 53,107,214, + 51, 51, 51,211,249,250,250, 98,196,136, 17,160,148,162,125,251,246,129,230,230,230,251,115,115,115,165, 79,158, 60,110, 89,158, +200, 78, 12, 61,212, 31, 0, 28, 3,123, 62, 0, 80, 27, 20,207,146, 66, 15,213, 41,114, 73,173, 39, 79,158,124,144,158,158, 94, + 56, 25,177, 96, 3,243,150, 45, 91,154, 92,144, 10,202, 66,247,238,221,166, 2,132,180,111,223, 62, 99,220,184,113,204,227,199, +143, 63,238,213,171,103,224,211,167,207, 80, 90, 56,139,149, 35, 50,116,232,176, 68,115,115,243,222,174,174,174, 79, 0,136, 36, +146, 66,157,201, 58, 57, 57, 57,212,169, 83,103,140,173,173,109, 18,203, 48,142, 20,148,150, 87,150, 4, 8, 16, 32, 64,192,191, + 10,193,249,226, 42,184,248, 31, 34, 0, 8, 14, 14,166,255,235,181, 7,145,178, 26,158,251,247,239,123,168, 84, 42,152,210, 8, + 20, 93,162, 73, 41, 77,100, 89,118, 13,195,144,177,132, 16, 4, 6,214,126,177,124,249,242,146,246,244,210, 5, 6,214,126,193, +178, 76, 85, 74, 41, 8, 97,214,242,188, 49,177, 36,206,210, 26, 70,169, 84, 54, 5, 0,156,157, 93,158,159, 56,113, 66,215,183, +111, 95, 44, 94,188, 88, 50,109,218,180,201, 94, 94, 94,227,162,162,162, 18, 74, 11,103,254,241,116, 39, 39, 39,229,198,141, 27, +125, 71,143, 30,125, 55, 46, 46,110, 58, 0,184,186,186,206, 7,224, 15,224, 85,145,115, 88,183,110,119,236,136, 17, 35, 34, 18, + 19, 19,167,151,198,217,135,144,234, 94, 53,107,182,157,119,241, 34,101,180, 90,146,114,233, 82, 86,114, 98,162, 33, 50, 57, 89, +185,249,246,237,110, 51,231,207, 23,123,120,122, 34,228,200, 17,251, 20,149, 42, 57, 83,171,213, 36, 38, 38, 82,142,227,174,154, + 16,247, 0, 71, 7, 71,229,250,159,215,222,178, 16,179,188,163,187, 27, 17,219,218,138, 24,165,165,148, 21, 49,218,170, 85,124, +164, 0, 2,202,203, 35,137, 68,242, 73,199,142, 29,149,187,119,239, 38,129,129,129,176,182,182,198,165, 75,151,112,239,222, 61, +164,167,167, 51, 6,131, 1,141, 26, 53,194,194,133, 11,225,233,233,137,140,140, 12, 68, 71, 71,219, 75,165, 82,135, 50,210,243, +141,242, 52,101,202, 20,184,184,184,128,227, 56,164,165,165,129,227, 56,152,155,155, 3, 0, 98, 98, 98,112,228,200,225,114,203, +146,137, 34, 9, 31,126,248, 97, 54, 33,228, 81,113,139, 86, 69, 56,221,220,220,118, 37, 39,167,116,105,219,182, 45,210,211,211, + 13,115,231,206, 69,157, 58,117,224,235,235,107, 74,153,159, 46,147,201,126,245,242,242,250,121,252,248,241, 46,182,182,182,208, +106,181, 51, 19, 18, 18, 48,102,204, 24, 0, 64,215,174, 93,235,136,197,226, 19,195,135, 15,135,183,183,119,108, 90, 90, 90,244, +157, 59,119, 70,228,230,230,134, 86, 54,238, 38,166,143,192, 41,112, 10,156, 2,231,191,138,211, 84, 45,242,111, 68,254, 48,225, +134, 34,199, 27,222, 16, 90, 65, 65, 65, 36, 56, 56,152,154, 16,177, 84,119,119,119, 15,133, 66, 1, 0,169, 21, 13,136,209,104, + 28,103,111,111,159, 52,125,250,244,230,190,190,190,186,113,227,198,133,190,124,249,114, 70,209,107,188,189,189,127, 92,181,106, + 21, 34, 34, 34, 94,205,159, 63,255,114, 74, 74,202,247, 21,140,236, 52, 66,200,242,124,235, 88,202,145, 35, 71,234, 92,188,120, +113,236,178,101,203, 28,190,248,226, 11,201, 87, 95,125, 53, 24,192,226,242,120, 88,150, 85,149, 52, 92, 88, 18, 92, 92, 92,116, + 37,205,225, 42, 64,119, 66, 20,150, 82,105,155,121, 23, 47, 82,221,171, 87,170,223,150, 46,181, 88,127,243,230, 28, 3,165, 78, +142,142,142,104,209,172, 89,142,156,101, 83,146, 18, 18,120,199,234,213,217,151, 39, 78,216,171,165,210,184,221,187,119,103,166, +166,166, 30, 42,215,132, 71, 72, 22, 79,169,206,220,221,211,208,183,103,135,192, 91, 55,238, 61,182,112,180,103,234,215, 11,172, +243, 56,226,213, 29,240,188,158, 16,146, 85, 30,143,149,149,149,111,106,106, 42,178,178,178,224,224,224,128,229,203,151,195,217, +217, 25, 42,149, 10, 97, 97, 97,212,221,221,157, 92,188,120, 17,238,238,238, 72, 78, 78,134, 78,167, 67,118,118,118,146, 86,171, + 85,151, 38,124, 69, 34,209,239, 12, 67,134, 17, 66, 80,181,106,181,168,213,171, 87,235,120,158, 71,173, 90,181,208,171, 87, 47, + 28, 56,112, 0, 97, 97, 97, 5,150, 39,157,151, 87,149, 40,134, 33, 94,249, 90,169,210, 86,157,130,173,125, 98, 99, 99,123, 87, +202, 44, 74, 8,227,234,234, 58,216,199,199,103,236,160, 65,131, 12, 82,169, 20,185,185,185, 5,105, 97,232,210,165,107, 70,247, +238,221,172,130,131,131,203, 12,167, 86,171,125,238,228,228,244,249,215, 95,127,189,125,221,186,117, 54, 51,102,204, 0,207,243, +160,148,130,227,184,194, 77,191,121,158,199,193,131, 7, 17, 25, 25,249, 99, 81,145, 37, 64,128, 0, 1,255, 95, 80, 1, 45,242, +175, 67,145,185, 89, 40, 46,182,254,118,207,240, 44,203,174, 63,125,250,116,189,150, 45, 91,138,218,181,107, 23,232,238,238, 30, + 24, 19, 19, 19, 10, 0,238,238,238,129,157, 59,119, 14,116,116,116,196,138, 21, 43, 84, 44,203,174,175,164,178, 44,218,232,221, +117,113,113, 89,114,224,192,129, 69,163, 70,141,130,179,179,179,255,223, 29,103, 75,153,172,254,240,229,203, 57,177,193,192,252, +178,100,137,229,210,243,231, 23,237,217,187, 87,244,225,135, 31, 18, 74, 41, 30, 62,120,160, 88,184,114,165,114, 96,207,158,175, +158, 60,127,206, 29, 62,117,202,144, 24, 27,155, 22,155,156, 60,155, 82,154, 86, 30,191,193, 96,184,246,244,233, 83,215, 22,173, + 62,116,187,112, 51,244, 94,223,158, 93,219,138, 69, 12,121,246, 42,230,182,139,179,189, 85,200,249,179,106,131,193,112,173, 60, +158,220,220,220,151, 28,199,217, 82, 74, 29, 66, 66, 66,224,224,224,128,244,244,116, 24, 12, 6,232,116, 58,157, 74,165,146,167, +166,166, 66,163,209, 64,171,213,194,210,210, 18, 15, 31, 62, 76,228, 56,238,143,210, 56, 57,142, 27, 46,151,203,191, 23,139,197, + 82,137, 68, 18,119,251,246,109,100,101,101, 85,177,182,182, 94,204,113, 28,226,226,226,112,241,226,197,111, 44, 45, 45, 95, 1, +128, 92, 46,135, 84, 42,179,211,106,181, 92,105,147,225, 77,181,104, 85, 22, 46, 46, 46,158, 85,171, 86,157, 55,117,234,148, 90, +117,235,214, 67,114,114, 50,120,158,135,153,153, 25, 84, 42, 21, 44, 45, 45,209,180,105,211,151,243,230,205,139,167, 20, 35,203, + 19,131,137,137,137,201,110,110,110,227, 70,141, 26,245,189,175,175,111, 85, 74, 41,124,124,124,208,177, 99, 71,156, 56,113, 2, + 17, 17, 17,200,205,205, 53, 94,191,126,125,103, 92, 92,220, 81,161,186, 21, 32, 64,128,128,255,158, 78, 44,152,155, 85,212,154, +245,143, 8,173,196,196,196,100,119,119,247,147,119,238,220,233,214,191,127,127,132,132,132, 12, 5,240, 53, 0,200,100,178,161, +253,251,247,199,157, 59,119,240,248,241,227,147,137,137,137,201,239,226,153, 82,169, 84,163,211,229, 25,167,228,114,185,188,130, +183, 87,201, 31, 50, 4,128, 42,101,156, 43, 21,140, 72,228, 82,187,115,103, 81,250,189,123, 89, 27,111,220,248,126,251,246,237, +162,230,205,155, 19,131, 94, 15, 35,207,163, 90,181,106,164, 93,251,246,102,191,111,223,110,107,204,205,189,248,195,212,169,151, + 54, 12, 31,158, 19, 65,233, 43, 83, 2,168,213,106, 87,142, 29,243,121,251,243, 33,151,220,252,107, 86,183, 61,121,250,252, 93, + 59, 59, 43,165,111,141, 26,102,169,233,105,198, 25,211,190, 17,105,181,218, 95,202,227, 81,171,213, 7,207,158, 61,219,211,195, +195,195, 33, 52, 52, 20, 58,157, 14, 70,163, 17,237,218,181, 3,165, 84, 6,128, 23,137, 68,120,252,248, 49,244,122,125,210,211, +167, 79,227,158, 61,123, 38, 3,176,160, 44, 94,141, 70, 19, 85,244,216,195,195,163, 67, 80, 80, 16, 56,142, 67,231,206,157,113, +248,240,225, 14,225,225,225, 75,139,106,190,183,205,243,124, 11, 89, 45, 55, 55,183, 3,249,167, 76,154, 4,239,238,238, 30,232, +227,227,179,110,193,130, 5, 18,119,119,119, 80, 74, 97, 99, 99, 13,149, 74,133,148,148, 84,248,251,251,195,195,195, 3, 11, 22, + 44, 0,128,157,166, 90,220, 98, 99, 99,159, 1,232,239,239,239, 47,201,200,200,104,216,161, 67,135, 21,237,219,183,199,221,187, +119,113,233,210,165,129, 50,153, 44, 73,175,215,115, 46, 46, 46, 35, 9, 33,150,122,189,126, 71, 74, 74, 74,188, 80,119, 9, 16, + 32, 64,192,127, 2, 5,115,180, 10,189,196, 87,216,162,229,239,239,111,150,153,153,249,105,149, 42, 85,164, 0,160, 80, 40,252, +171, 87,175, 62, 57, 50, 50, 50,187,162,161, 81,169, 84,123,182,111,223,222,241,231,159,127,150,116,237,218,181,186,187,187,123, + 99, 0,232,221,187,119,117, 11, 11, 11,108,223,190, 93,175, 82,169,222,153, 79, 36,131,193,208,178, 81,163, 70, 72, 75, 75,195, +171, 87,175, 42, 52, 44,115,244,232, 81, 37,242,230,101,149,121,174, 44,112, 58,157,141,181,155, 27, 19,123,254,188, 62, 45, 43, +203,165,101,171, 86,196,160,215,131, 97, 24,164,166,166, 34, 58, 58, 26, 86,214,214,228,241,211,167,230,155,166, 76, 57, 90,165, +110, 93,169, 81,167,179,171,128,168,200, 37,132, 12,251,114,220, 23, 7,119,236,216,233,144,145,149, 21,169, 80, 40,181, 50,153, +196,121,252,151, 95, 26,211,210,210,134, 80, 74,115, 76,160, 90,176, 99,199,142,206,157, 59,119,126,224,233,233,233,152,156,156, +236,156,145,145, 97, 76, 75, 75, 99,145, 55,215,138, 0,192,249,243,231,145,149,149,197, 25,141,198,139, 0,230, 81, 74,117,166, +134,181, 74,149, 42, 86, 77,154, 52,105,237,224,224,128,204,204, 76,216,217,217,161, 94,189,122,173,171, 84,169,242,235,171, 87, +175, 50,223,101,169, 63,115,230,140, 5,165,244, 3, 74, 41, 58,119,238,108,210, 61, 70,163,241,179,160,160, 32, 9, 33, 4,106, +181, 10,114,185, 2,102,102,230,176,176,176,132,175,175, 31,226,226,226,208,169, 83, 39, 93,100,100,228,154,248,248,248, 10,151, +209,204,204,204, 30, 77,155, 54,157, 52,102,204, 24,112, 28,135, 30, 61,122,224,245,235,215, 75, 95,190,124,185,219,213,213,117, +240,103,159,125,230, 96,103,103,135, 73,147, 38, 41, 0,124, 39,212, 93, 2, 4, 8, 16,240,239, 71,241, 57, 90, 37, 90,180,202, + 26, 19,117,113,113,105, 97,107,107, 59, 83,173, 86, 75, 11,134,100, 8, 33, 82, 7, 7,135,195,174,174,174,243,227,226,226, 42, + 52, 41, 46, 61, 61, 61,203,197,197,229,240,181,107,215,250,245,238,221, 27,103,206,156, 25,146, 47,180,112,237,218, 53,188,120, +241,226,112,122,122,122,214,187,136,188,187,187,123,151,214,173, 91,247,110,212,168, 17,142, 29, 59, 6,163,209,120,181, 34,247, + 23, 93, 97,136, 18, 86, 29, 22,156, 51,137,140,101, 65, 8, 1,199,113, 0,128,148,228,100, 68, 60,121,130,180,244,116,104, 53, + 26,228,170, 84, 70, 95,111,111,117,166, 78, 39, 38, 0,173, 96, 38, 71,153,155,155, 71,171,114,115, 29,237,108,108,213, 74,165, + 12, 25, 89,153,146,219,183,174,231, 80, 74, 35, 77,228,208, 17, 66, 90,157, 56,113, 98, 54,203,178,253,205,205,205, 49,118,236, + 88,182,117,235,214,144, 72, 36,208,106,181,200,200,200,192,246,237,219,147, 57,142,171,154, 95, 14,204,205,204,204,182,176, 44, + 27,147,149,149, 53,179,188,103,232,116,186,174,221,186,117, 19,233,116, 58,252,240,195, 15,152, 51,103, 14, 58,119,238, 44,186, +117,235, 86, 87, 0, 59,222, 85,161,231,121, 30, 29, 58,116, 40, 58, 25,254,145, 41,247,137,197,226,192, 26, 53,106, 32, 57, 57, + 25,201,201,201,112,112,112,128,171,171, 43,156,157,157,177,116,233, 82,186, 98,197,138,147,122,189,126, 77,114,114,114, 98, 37, +202,226,200,161, 67,135,142,236,215,175, 31,114,114,114,112,237,218, 53, 52,107,214, 12,139, 22, 45,114,185,120,241,226,215,141, + 26, 53,130, 88, 44, 70, 72, 72, 8, 56,142,123, 45, 84, 93, 2, 4, 8,248,255,134,255,226,252,172,242, 80,166, 69,203,211,211, +211,218,104, 52,126,211,189,123,247, 14, 61,123,246, 68,167, 78,157,222,248,127,199,142, 29, 22,251,247,239,159,239,225,225,209, + 89,175,215, 47,168,200, 80, 31,207,243, 7,119,236,216,209,245,195, 15, 63, 84,182,105,211,166, 26, 0,200,100, 50,221,142, 29, + 59, 84, 60,207, 31,172,104, 68,138, 59,143,116,115,115,171, 35, 18,137,122,119,235,214,173,206,176, 97,195, 16, 22, 22,134,237, +219,183, 63,243,245,245,189, 92, 65,234, 87,229,172, 58,156, 95,158,117,139,149, 74, 83, 51, 18, 18,172,205, 61, 61,197, 54, 22, + 22,241,199,142, 29,243,104,223,190, 61,121,253,250, 53,210,211,211,161,209,104,112,235,214, 45, 94, 4, 68,137,108,108, 72,212, +181,107,132,149, 74, 43,188,216,192,195,197,198,103,214,180,209, 85, 52, 90, 77, 64,102,102, 38, 39, 18,139,197,238,206,214, 21, +106,176, 41,165, 90, 51, 51,179,134, 0, 68, 60,207,171,108,109,109,149,167, 79,159,134, 84, 42, 5, 33, 4,181,107,215,134, 92, + 46,151,152,153,153, 69, 3,128,179,179,179,116,253,250,245, 86,131, 7, 15,190, 84, 30,119,131, 6, 13,196,222,222,222, 31,249, +250,250,226,218,181,107, 8, 13, 13,141,186,118,237,154, 87,253,250,245,225,233,233,249, 81,131, 6, 13,246,222,185,115,199,240, +142,122, 23,149,154, 12,111, 52, 26,121, 66, 8, 24,134, 1,207,243, 72, 78, 78, 70,213,170, 85,177,122,245,106, 44, 95,190,252, +135,184,184,184, 35,149, 9,143,191,191,191,164, 94,189,122, 67,250,245,235,135,231,207,159, 99,254,252,249, 41,241,241,241,231, + 79,157, 58,213,103,204,152, 49,108,179,102,205,144,154,154,138,223,127,255,157,187,125,251,246,111, 9, 9, 9, 91,133, 42, 87, +128, 0, 1, 2,222, 99,161,229,233,233,217, 79, 34,145, 76, 26, 48, 96, 0,235,231,231,135,196,196, 68, 88, 90, 90, 26, 8, 33, + 98, 0,176,182,182, 54, 40, 20, 10,140, 30, 61, 26,117,235,214,109, 49,101,202,148,102,110,110,110,171, 99, 99, 99,183,152,242, +224,196,196, 68,149,139,139,203,190,177, 99,199, 46,184,119,239,110, 85, 0,184,121,243,230,139,184,184,184,105,137,137,137,170, + 10,138,172, 2,167,152, 68,161, 80,220,240,241,241,121,217,165, 75, 23,203,158, 61,123,194,193,193, 1,119,238,220,193,194,133, + 11,159,234,116,186,217, 33, 33, 33,220,223,157,200,156, 86,155,112,251,208, 33,139,214, 31,127,108, 57, 62, 40,104,201, 23, 99, +199,254, 60,107,214, 44,145,159,159, 31, 81,169, 84,184,113,227, 6,221,191,127,191,225,247,239,191, 95, 14, 51, 51,241,181,253, +251,165, 58,157, 46,170,130,214,146, 86, 93, 59,183,242, 91,242,243, 74,104,212, 57,184,113, 53, 24,233,233,201, 88,191,225,128, +159,187,187,123,171,152,152,152, 11, 21, 72, 79,223, 51,103,206, 56, 82, 74, 33,149, 74, 49,111,222, 60,184,186,186,194,210,210, + 18,217,217,217,248,250,235,175,173, 38, 76,152, 96, 5, 0, 97, 97, 97,133,238, 25,202, 67, 92, 92, 92,211,209,163, 71, 91,112, + 28,135,147, 39, 79,234, 8, 33, 51,207,158, 61,251,107,237,218,181,165, 45, 90,180,176,216,186,117,107, 51, 0, 33,239, 74,104, + 85,242,190,103,167, 79,159,110,212,191,127,127, 42, 22,139, 73, 70, 70, 6,172,173,173,177,122,245,234,220,248,248,248,224, 74, +151, 1,142,147, 42,149, 74, 41,165, 20,251,246,237, 67, 84, 84,212,103, 41, 41, 41, 9, 78, 78, 78, 7,190,249,230,155,201,126, +126,126,222, 79,158, 60,137,202,206,206, 94,148,152,152,248, 82,168,154, 4, 8, 16, 32,224,191,131,130, 73,240, 21,242, 12,111, + 52, 26, 71,159, 58,117,138,229,121, 30, 27, 54,108,192,237,219,183,169, 82,169,156,169, 84, 42, 87, 41, 20, 10,163, 90,173, 30, + 53, 98,196,136,193,115,230,204, 97, 90,180,104,129,107,215,174, 49, 85,171, 86, 29, 2, 96, 75,145, 7,183, 47,203,215, 70,102, +102,230,173,196,196,132,170, 69, 28, 84, 86,149,201,228,183,202,137,204, 27,156, 37, 56,197,108, 50,111,222,188, 92, 23, 23, 23, + 93,104,104, 40,214,173, 91,199,223,190,125,251,188, 84, 42, 93, 31, 23, 23,167, 53,133,243, 29, 37,122, 33,167,148,227,238,108, +155, 60,185, 86,131, 30, 61,248,207, 39, 77,202,145, 40, 20, 95, 45, 89,185,114, 74, 70,118,182, 43, 8,161,118, 86, 86, 81, 27, +230,205,155,223,249,163,143,114,194, 46, 92,144,223, 59,115, 70,236, 96, 48,220,175, 72, 56, 99, 98, 98, 46,248, 84,247,196,230, +141, 63, 67,175,215, 34, 62, 54, 79,167,165,164,102,162, 44,145, 85, 18, 39,199,113,153,125,250,244,145, 0, 80,124,242,201, 39, +210,164,164, 36, 84,175, 94, 29, 0,144,149,149,133,224,224, 96,212,172, 89, 19, 0,240,240,225,195,194,223,229,133,211,204,204, +236,163,102,205,154, 33, 42, 42, 10, 97, 97, 97,231,226,226,226, 82, 93, 93, 93,207,189,126,253,186,107,163, 70,141,112,240,224, +193,238,165, 9,173,138,230,145, 41, 66,171, 36, 78,133, 66, 49,237,192,129, 3,159, 93,189,122,181,255,228,201,147,197,237,218, +181, 3, 0,100,103,103,171, 40,165,198,202,112, 22, 13,147,193, 96, 0,207,243,176,181,181,205,205,239,112,188, 68, 57,142,100, +255,234,242, 41,112, 10,156, 2,167,192,249,111,224,124, 79, 96,186,103,120, 74, 41,199,243, 60, 66, 66, 66,112,224,192, 1,163, + 94,175, 31, 25, 23, 23,247,176,200, 37, 43, 93, 93, 93,207,244,233,211,103,203,147, 39, 79,216,240,240,112,152,210, 16, 21,133, + 70,163, 49, 20,223,146, 88,163,209,188,245,208,209,230,205,155,145,144,144,160,127,253,250,245, 89,142,227, 14,190,229,234,197, +183, 94,117,248, 59,165,218,143, 9, 57, 59,167,121,243, 14,179,207,156,145,125,254,237,183,218,161,195,134,125, 99,212,233, 12, +172, 68,194, 75,205,204, 24,163, 76, 38, 14,187,112, 65,190, 98,204, 24, 91,181, 86,123,114, 91, 5, 38,152, 23,177,104, 97,232, +231, 19,161, 46, 98,209,186,118, 43, 2, 21,181,104,105, 52,154,128,124,209, 17, 13,192,249,211, 79, 63, 5,207,243, 80,171,213, +200,206,206, 70, 92, 92, 92,230,176, 97,195,140,249,226, 73,212,187,119,111, 75, 83,120,171, 85,171,230, 42, 22,139,113,242,228, + 73,136,197,226, 96, 0, 16,139,197,193,103,206,156,233, 58,112,224, 64,184,185,185, 85, 35,132, 16, 90,142, 74,114, 10,236,185, +135, 2, 62, 32,168,145,247,198,163,134, 99, 96,207, 7, 4,120,154,239, 53,254, 81,253,250,245, 1, 19,231,101, 21, 69,254,226, +142,229,246,246,246,123,167, 76,153, 50,182, 73,147, 38, 29,231,204,153, 67, 0,176,239,196,186,201,113,111,229,122, 66,128, 0, + 1, 2, 4,252,123,173, 90, 37,157, 23,149,113,195,134, 86,173, 90,141, 4,192, 18, 66,214,197,198,198, 62, 44,126, 77, 92, 92, + 92,132,155,155,219, 98,111,111,239,194,141,166, 43, 18,168,124, 79,238, 11, 25,134, 76,201, 59,174,184,131,202, 34, 91,157, 76, + 1, 64, 24,134,221,114,247,238,221,111,163,163,163,147, 43, 42,252, 74,194,187, 88,117, 8, 0, 59, 40,125, 57,144,144, 83,147, + 2, 3,219,119, 30, 51, 6,117, 58,119,182,116,245,242, 50,170,245,122,254,225,229,203,228,234,190,125,146,123,103,206,136,213, + 90,237,201, 3,148, 70, 87, 52,156, 49, 49, 49, 23,170, 87,115, 63,221,183,119,215,142,213,188, 93, 1, 0,207, 95,198, 33, 37, + 45,243,116, 69, 68, 86, 49,193,213, 99,245,234,213, 71, 36, 18,137,168,232, 86, 54,122,189, 62,173, 64,140, 17, 66, 92, 55,108, +216,176,139, 97,152,168,242,248,194,195,195, 15,207,158, 61,187,247,171, 87,175, 78, 71, 71, 71,191, 2,128,168,168,168, 87,174, +174,174, 91,226,227,227,123, 71, 69, 69,237,167, 38,168,144, 98,155, 74, 35,236,242, 94, 57,128,218, 5,155, 74, 87,118, 47,195, +162,200,119,173, 48,211,197,197,101, 71,199,142, 29, 71, 0,136,125, 27, 62,157, 78,103, 80,171,213,156,209,104, 20,233,245,122, +170,211,233, 12, 66,181, 36, 64,128, 0, 1, 21, 66, 35, 0, 5, 59,145, 20, 24, 80, 28,138,253,214, 33,127,187,192,130,234, 55, +255, 56, 25,192,173, 34, 28, 69,207,151,119, 47, 0,164, 0,120,144,127,174, 36, 45,178,161,180,227, 82,133, 86,108,108,236,126, +152,176,105,180,169,215,149, 33,148,166, 19, 66, 86, 20,136,166,183,229,224, 56,238,157,236, 15,199, 48,204,203,238,221,187, 87, +232,250,242,174,217, 69,105,212, 87,132,108, 61,246,203, 47,245, 78,174, 91,231,102,228, 56, 59, 2, 80, 86, 42, 77,213,233,116, +175, 28, 12,134,251, 21,181,100,189, 97,141,121, 30,211, 9, 0,124,124,124,232,179,103,207, 64, 41,125,171,213, 27,148,210,251, + 0, 60,202,185, 38, 14, 64, 11, 19,197,224, 78, 0, 59, 75, 16,236,187, 0,236, 50,185,215, 80,176,169, 52,192,240,132,239, 27, +208,188,223, 62, 0,124,193,166,210,239, 18,241,241,241, 79,144,239,231,237,109,240,234,213, 43,173,183,183,247,182,133, 11, 23, +126,114,239,222,189,221,177,177,177, 90,161,206, 20, 32, 64,128,128,138,137, 44, 66,200,177,252,182,167, 91,126,103,255, 88,241, +223, 5,215, 20, 92, 87,244,154, 2,142,226,231,203,186, 23, 0,166, 77,155,246,237,252,249,243,149, 0, 76,218,140,185,168,227, + 82,209,191, 33,245,222,197,230,185,239,122, 3,222,152,152,152,141,127, 69, 92, 87,230, 9,169,235,127,101,122, 62,125,250,148, +188,207,111, 91,193,166,210, 69, 16,248, 95, 8,247,203,151, 47, 87,183,110,221,122,125,108,108, 44, 7, 1, 2, 4, 8, 16, 80, + 17, 56,148, 36,140, 74,209, 3,221,202,250,191,152, 32,250,211,117, 37, 29, 19, 66,142,205,159, 63,191,155,169,129, 45,106,209, + 98,132,188, 19, 32,224,239,195, 63,177,234, 85,128, 0, 1, 2, 4,148, 42,136,222,176, 98, 21,136,175,226,199,211,166, 77,251, + 22,165, 12, 27,230, 95,227, 66, 8, 25,153,191,234,240,141,249, 90, 4, 64,251, 82, 30,110,242,106, 2, 66, 72,251, 74, 68,238, +172,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,255,191, 56,203,227, 46,229,254,160,210,134,250,202, 26, 70, 44,254,187,188, +123, 77,184, 54,184,148,184,140, 44,186,215,225, 27,123, 30, 22, 76,114,254, 43, 62, 0,218, 11,156, 2,167,192, 41,112, 10,156, + 2,167,192, 41,112,190,229,167, 17,165, 52, 8,121,187,166, 80, 74,105, 16,165,180,243,180,105,211,166, 23,156,155, 54,109,218, +116, 74,105,187,130,235,242,175, 41,188,167,224, 92,241,239,226,231,202,185,182,180,244, 24, 89,244,119,209,227,127,197, 28, 45, + 1, 2, 4, 8, 16, 32, 64,128,128, 50,112, 11, 64,163, 34,214,166,100, 0, 15,231,207,159,159, 94,100,238, 84, 50,128,251, 0, +234,230, 95,151,156,111, 80, 42, 58,183, 74,151,127,172, 43,225, 26,157, 41,215,150, 98,133,219, 80,210,111, 0,130,208, 42, 13, +245, 92,216,239, 61,221, 29, 27, 22, 90,253,120, 30, 0,192,231,123, 31, 40,116, 67,192,243,160,148, 34, 46, 41,227,206,131, 68, + 58,171,178,207,243,115, 35,182,142,114,249,114,158,210,230,249,167, 46,100,166,106, 39,134,102,210, 12, 83, 57,106, 57,147, 90, +114, 6,223,240, 20,117, 0,128, 33,120,160,225,177,248, 81, 2,125,244,182,233, 65, 8, 33, 1, 14, 24, 41, 85, 40, 7, 88, 89, +219,212, 72, 79, 79,121,170,215,104,247,134, 39, 99, 61,173,132, 99,168,234,182,228, 3,158,226, 91, 0,140,152,193,210,136, 84, +122, 94, 40,117, 2, 4, 8,248,155,240,182,126,241, 74,114, 29,244,182,139,144, 4, 7,123,166,137,173,226,184,105,226,117,255, + 24, 42, 36,180, 2, 28,201, 24, 16,204, 5, 64, 65,241, 93, 88, 18, 93, 91,161,251, 93, 73,123, 57,203,110, 2,192,106,244,198, + 73,148,199,197, 18, 27,117, 6, 45,229, 18,118, 41, 0, 94, 99, 52, 14, 15,139, 51,125,190, 88,160, 59,233, 44,226,153,109, 60, +165, 98, 35, 79,183,128,226,152,185, 4, 87,174,197, 80, 77, 69,194,234,233,238,216,240,208,205,248,142,231,215,142, 71,147, 58, +213, 65,141, 28,192, 27,160,108,241, 13,206, 45,251, 20, 77,106,121,130,242, 6,128,231, 96,222,101, 9,186, 4, 90, 85,250, 37, +241,115, 35,182, 94,246,142,161, 27, 55,110,114,118,173,230, 79,120, 78,143, 39, 55, 79, 15,158, 48,101,118,219, 64, 43, 18,104, +138,216,170,235, 74, 62,175, 94,213,239,155,137,115,127,102, 93, 92, 61,204,120,131,150, 75,120,249,168,254,202, 69,179,247,215, +117, 37, 75,239,199,209, 77,166, 10, 42,127, 7,140, 18,201,164,253, 20,114,179, 26, 42, 85,246, 51,163,222,176, 55,208, 85,212, +121,241,146,229,245, 90,119,232,106,110,204, 78, 96, 12, 60,252,247,236,222,229,245,203,234, 53, 93, 9, 33, 31, 81, 74,249,138, +196,153,167,152, 18,177,117,100, 87,177,136, 37,181, 62,219,200,194,196, 37,179,197,225,239, 68, 6, 17, 90,190,123, 9, 74,112, + 41, 60,145,238,172,204, 51,106, 57,145, 95, 9,133, 47, 8,246, 17,138, 93, 97, 73, 52, 73,168,239, 4, 8,120,191,192, 48,204, +121,158,231,219,188, 75, 78, 66,200, 7,148,210,235, 66,234,254,255, 70,197, 44, 90, 4, 63,132, 69,190,182,129, 81,143, 0,223, +106,223, 3,168,144,208,146,179,236,150, 91, 79, 19,157,193,233,177,241,199,177,187,117, 6,128, 51,232, 97,228, 12, 48,114, 6, +112,156, 30, 70,131, 1,212,160,197,236,223,206, 3,186,108, 52, 12,244,217, 2,192,197,212,103,136, 41,179,237,206,229,211,182, + 68,151,137,157,107,231,127,249, 58, 57,231,203,179, 15,226, 82, 2,156,200,244,240, 36,252, 94, 17, 65,112,126,221,120,108, 63, + 24, 28,179,226,215,220,199, 60,165,176,181, 84,248, 13,238, 22,230,177,245,240,249,215,203,183,104, 30, 3,128,149,153,212,111, +200,131,167,158,111,147, 9,142,114,249,242,245,107,126,113,118,177, 83, 16,238,234, 2,112, 70, 35, 60,188,130,216,233,227, 6, +187,252,176,108,211, 50, 0, 67,203,186,191,166, 19,241,247,173, 94,107,210,150,224,171,158,185, 89, 73,186,211, 59,190,141,132, + 22, 6,103,183, 90,226,239,231,255,204,206,152, 58,254,235,154, 78,228,198,227, 68, 26, 94, 78,165,192,212,114,196,225,249, 11, +150,212,105,219,165,155, 57,159,147,204,106,114,115,124, 55,254,182,105,110,205, 58,141,149, 45, 2,221, 37, 73,123, 71, 19,117, +118, 26,244,140, 92,214, 54,160,189,165,250,147,129,134,141,155,183,143, 3,176,178, 66,221,193, 34,195,214, 60, 95,249,222, 37, +161,104,113,239,250,249, 81,198,184, 91,160, 70, 3, 96,212, 23,126,195,104, 0,229,243,190,155,140,254, 13, 40,193,135,151, 73, + 21, 48, 69,199,179,151,111,185, 36, 38,196, 55, 90,182,228,167,233,254,142,228, 4,140,216,246, 40, 13, 23, 42, 42, 48, 5, 8, + 16,240,239, 5, 33,132,163,148,138,222, 49,103, 87, 74,233,241,183,228,248, 6,192,231,249,135,155, 40,165,139,223, 65,184,220, + 1, 56,231, 31, 38, 80, 74, 99,132, 18,240, 86,233, 57,178,232,144,225,219,248,209,146,131,242,192,190,158, 0,160,168,104, 64, + 40, 32, 7, 97, 1, 67, 46,122,116,233, 0,123, 71,103,192,160, 2,244, 42,192,160, 6, 12,185,128, 65,141,148,248, 40, 64,159, + 11, 60, 63, 1,142, 82, 89,133, 99,172,205, 4, 34,246,162, 93,125, 79, 56, 88,201, 49,190,135,191,253,134,147, 17,155, 54,157, +126,210, 30,192, 0,147,194, 74, 41,154,212,174,129, 21,155,114, 31, 31,185,147,212, 9, 0,130,234,217,159,108,226,239,229,177, +124,139,230,113,240,131,180,206, 0,208, 37,208,234, 68, 99, 63, 23, 79,254, 45,172,190, 60,165, 45, 92,171,212, 32,198,123,235, +193,103,197, 32, 43, 75,141,152,151, 91, 97,227,214,128, 49,242,104, 85,222,253, 10, 22,211,190,154,177, 80,172,202, 74,212,241, +250,100,163, 3,155,206,138,164, 60, 65,236, 5,109, 14,159, 97,156, 56,242, 83,110,210,172, 31,167, 1, 24, 92,166,117,200, 17, +227,150, 46, 93, 94,187, 89,195,154,142, 9,251,199,147,156,244, 68,112,172, 82,214,227,195,102,176,246,241,231, 19, 67,150, 18, +105,181,246,176,182,171,134,216,171, 59,240,234,250, 1,210,188,126,111,217,239, 59, 37,159,148, 38,180,124, 28, 72,243, 78, 45, + 27,239,174,230,233,234, 66, 41, 15,158,167,160,188, 17,159,245,237,136,233,123,158,195,104, 52,162, 79,167,230,237, 22,142,106, + 75,121,158, 7,165, 60, 94, 39,164,170,254,184,241,184, 93,100, 26,189, 97,138,165,170,238, 7,109,154, 63,184,115,189,166, 33, +226, 40, 26, 14,158,255,152, 0,151,139,148,185,230,119, 79,253, 94, 19,248,173,178, 47, 15,169,229, 8,227,171,147, 11,224,217, +114, 36,187,126,231, 73,135,204,228,216, 33,251,183,174,233,187,118,253,250,237, 0, 70, 11, 85,140, 0, 1,239, 7, 40,165,239, + 92,108, 69, 69, 69,197,189,141,216,114,119,119,111, 9, 96, 81,193, 12, 13, 66,200, 34,111,111,239,217,255,235,168,190,209,215, +203, 52, 26,141,131, 99, 98, 98, 46,150,197,217,173, 91, 55, 87, 0,222, 69, 56,189, 9, 33,222, 37, 93,107,109,109,109,108,218, +180,233,171, 99,199,142,197, 9, 37,164,226,130,171, 50, 66,235,113,244,222,241,245,181,241, 57, 0,240,216,132, 66,251,198,144, +159,198, 96, 92,176,121,238,167, 11, 2,170,216, 34, 59, 87,135,211,183, 95,193,104, 52,192,200,113,249,150, 45, 14, 70,206,128, + 78,117,237,209, 84, 51, 26, 43,143, 61, 1,103,228,231,151,197, 89, 28,122,202, 15,170,215,190,255, 30,158,167, 82,153,152,201, +244,245,176,115,156,212,167, 46, 51,190, 71, 0,212,122,174,191,191, 19,249, 35, 60,145,110, 52,137,147,255,179,203, 35, 90,210, + 57, 35, 87,110,220,203,176, 70, 53, 25,216,173,131, 37,213,102,194,144,242, 28,217, 42, 3,158,167, 26,144,160,201,128,140,196, +155,196,201, 83,212,113,119,115, 81, 94,217, 61,245,165, 29,155, 37,114,100, 57,137,148,225, 96,228, 41, 75, 51,194,181,182, 53, + 59,136, 11,230,109,149, 21, 78,133,210,226,211,150, 29,131,172,162,119,140, 36, 10,223, 78,112,172,239,129,151, 23, 55, 35,233, +246, 49,164,198,189, 34,150,154, 12, 56,217, 85, 71,151,193, 3,176,120, 64, 35,100,103,101,131,141,143,180,146,138,101,214,165, +113, 82, 35, 6, 47, 93,248,163,139,136,101,242,210,179,224, 99, 52, 64,173,213, 2, 70, 14,114, 17, 15, 66, 11,254, 51,192,104, +208, 43,235,244,158, 58, 22,192,141,242,226, 30,158, 72,119, 6, 56,146, 22,224, 13, 53,169, 65, 13, 2, 92, 14, 75,162,133,226, +199,223,137, 12,106,208,105, 88, 11, 74,112,169, 50,121, 20,104,135,110, 13,189,205,205,204,178, 30, 35,102,223,151,136,132,156, + 58, 53,251, 28,131, 62, 27,167,220,176, 97, 67,119, 66,200,152,162,115,212,254,138, 77, 86, 5, 78,129,243,191,202,105,101,101, + 85,181, 74,149, 42,179, 13, 6, 67, 75,137, 68,226,164,215,235,193,243,124,130, 84, 42,189,244,234,213,171,121,153,153,153, 47, +254,109,113,127,240,224,129,201, 98,203, 20, 78,177, 88,140, 39, 79,158, 60, 51, 85,108, 21,231, 20,139,197,219, 46, 95,190,140, + 61,123,246, 0, 0, 34, 34, 34,224,227,227, 99, 86,210,189, 47, 95,190, 52,107,221,186,245, 54, 20,219,209,163, 56,231,195,135, + 15,171, 30, 61,122, 20,251,246,237, 3, 0, 60,121,242, 4,190,190,190, 37,134,231,242,229,203,236,199, 31,127, 92, 21, 64,220, + 95,157, 71,239,131,200, 42,250,253,134,208, 10, 14, 14,166, 65, 65, 65,164,248,239, 18,240,220,211, 70, 90, 31, 26, 35, 0, 60, +175,104, 32,194, 19,232,194,186, 46,226,206,231,246,173,110, 41,151, 48,152,179,113,210,235,228,180,236, 15, 68, 4, 60, 0,112, + 20,140,141,185,244,218,252, 33,117, 61,211,115, 52, 56,114, 51,246, 98, 88, 98,197, 76,164, 97,113,244, 12, 0,235,255, 53,148, +196,119,200,226, 51,187,118, 77,235, 92,103, 98,143, 58, 56,124,245,213, 68, 0,229,122,125,167, 60, 15,202,115,133,147,223,243, +187, 14, 0,255,230,166,192, 60,104,222, 57,190, 98, 22,173,214,132,136,210, 29,209,197, 86, 41, 93, 53,106,212, 8, 75, 67,242, + 83,164,233, 36,120,157,174, 65,130, 90,140, 28,145, 35, 98, 31, 63, 52, 50, 4,103,202,207, 92,100, 81, 78, 99,109, 35, 53,103, + 2, 59,140,117,203, 58,249,109,186,148,112,172,101,175, 31,172, 83,206,253,252,138,203, 77,206, 37, 4,229,238,173,103,101,101, +237,163, 73,125,197,102,166,167,192,218, 57, 0,157,251,119,195,119, 65,254,200,206,202, 69,114,218, 53, 90,195,197,146, 68, 93, +218,142, 25, 93,106, 33, 53, 49, 30, 90, 3, 64,114,181,105, 26,157, 38,167,212,116,100,176,126,194,228, 41,131,188, 92, 28,204, + 10, 22, 21, 80,222,136,186,181,170,161, 67,203, 38, 56,115,249, 10,110, 61,140, 0,159,191,168,128,242, 60, 98,146,210, 19, 53, +122,227,230, 10, 37,168,145, 3, 53,104, 74, 20, 98,168,196,144, 97,109, 39,162, 52, 2,179, 62,168, 97, 49,124, 90, 55, 47, 11, + 51, 25,129,198, 96,132, 70,103, 64,246,149, 85,176,171, 82, 27, 74,185,156,212,135, 90, 4, 64,216,183, 80,128,128, 34,232,215, +175,159, 60, 49, 49, 49, 36, 40, 40,200,191, 67,135, 14,202, 22, 45, 90, 32, 55, 55, 23,167, 79,159, 70,110,110,174,151,135,135, +135,215,233,211,167,123,127,240,193, 7,225,238,238,238,173,247,238,221, 91,145, 57,180, 34,252,111, 50, 59, 15,128, 35,132, 32, +255, 28, 1,192,191,205, 62,183, 82,169, 20, 81, 81, 81,239,220,178, 21, 27, 27,251,172, 50,150,173,156,156, 28,137,155,155, 27, + 28, 28, 28, 96, 52, 26,145,155,155,139, 67,135, 14, 33, 51, 51, 19, 60,207, 67,161, 80,224,135,165, 27,241,248,110, 8,110,220, +184,129,204,204, 76, 73,121,156, 49, 49, 49,164,110,221,186,208,106,181,224, 56, 14, 26,141, 6,103,207,158, 45, 60, 22,137, 68, +152,242,253, 50, 68,220, 14,193,189,123,247, 16, 19, 19,243,183,236, 54, 82, 1, 45,242,111,180,134,110, 40,171,192,254,173, 48, + 26,185,233, 27,182,236,186, 54,125,244, 0,140, 27,216,222, 99,222,234, 3,237,195,147,233, 22, 0,240,119, 32, 67, 62,105, 83, +195,211, 90, 41,198,119, 59,110, 3,148, 78,127,219,231,133,166,210,136, 0,103, 50,241,224,141,168,144,111, 7,212, 71, 53, 23, + 75,159,234,213,137, 52, 50,210,132, 61, 5,121, 14, 54,230, 50,191,160,122,246, 39,193,243,176,182,144,213,132,145,131,181,185, +204,175, 75,160,213, 9, 0,176, 86, 74,106,150,100,249, 42, 13,141, 60, 37, 35,149, 50,209, 72,179, 6, 46,158, 67,187,119, 80, +116,237,222, 91, 97, 46,230,144,122,227, 52,178,196,238, 48,216,122, 65,107, 72, 67,204,139, 72,227,185,235,143, 98, 83,178,181, +147,202, 13, 38,197,197,216, 23, 79, 28,170,214,233, 96,147,114,108, 70, 82,213, 97, 59,188, 25,240, 76,246,246, 94,137,102,142, +141, 21, 55,159,191,200,225,233,159, 45, 58,197,145,149,153,249,202, 96,132,139,218, 40,178,136, 60,255, 59,166,117,169,141,244, +180, 36,104,244, 28, 50,213,156,222,217, 90, 46,211,190, 8,133, 86,207, 65,103,224, 33,182,118,195,233,107, 15, 83,120,131,225, + 68,105,156,145, 41,244, 30, 0,243,162,231,170, 59,144,186, 83, 45, 21,247, 96, 80, 35, 42, 38, 14, 91,130,175,213,207,191,174, +242,133,156,231,242,134,159,139, 88,178, 8, 69,139,202, 76,130,175,229, 68, 26, 43,228,146, 95, 22, 77,252,216,255, 67, 95, 91, + 25, 31,115, 13,132,215,195,204, 40,130, 90,106,132,149, 71, 53,240,186,108,170,210,104, 50,194, 0,193,211,187, 0, 1, 69, 80, +179,102, 77,103, 43, 43,171,176,201,147, 39,219,246,234,213, 11, 7, 15, 30, 68, 86, 86, 22, 54,111,222,140,229,203,151, 99,238, +220,185, 48, 24, 12,216,176, 97,131,114,255,254,253,141,215,172, 89, 19,227,229,229, 21, 16, 21, 21,149, 80, 94,159, 18,128, 12, +128, 56,191,237, 34, 0,248,227,199,143,163,107,215,174, 56,126,252, 56,159,127,206, 72, 8, 49, 80, 74, 43,181,159,168, 84, 42, +133, 84, 42, 69,102,102,230, 59, 17, 91, 98,177, 24,230,230,230,144, 74,165,200,206,206,174,176,216,226, 56,142,141,137,137, 65, +102,102, 38, 58,116,239,142,101,243,231,163, 77,155, 54,232,208,161, 3, 40,165, 56,123,246, 44,218, 55, 11,196,128,143, 90,227, +209,163, 71,224, 56,206,164,240, 38, 36, 36, 32, 49, 49, 17,157,187,119,199,198, 53,107,208,164, 73, 19,248,249,249,129,227, 56, +132,132,132,160,111,167,102,144,247,108,143,136,136, 8,161, 80,155,104,205,122, 87,115,180,222, 26,161, 73,244,186,191, 3, 57, + 54,176, 83,227,110,221,155,251, 99,227,238,115, 63,250,251,147, 93, 0, 96,103, 33,251,225,211, 54,213, 16, 30,157,142,115,247, +226,142,133, 39,191,155,213, 26,188, 17,246,118,150, 74,128,149, 66,173,231, 57,203,231, 40,119, 2, 51, 79, 41,148, 45,167,226, +147,238,225, 30, 77,252, 61, 60, 10, 86, 29,154,119,253, 25, 67, 30, 62,243,108,228,231,236, 9,163, 1, 48, 26, 96, 57, 96, 7, +240,189, 89,185,225,104, 94, 85,118,102,234,164,137, 77,187,244,236,175,144, 42,173, 96,204,122, 13, 67,194, 67,164, 62,189,136, + 92,165, 15, 18,162,158, 99,207,169, 27,153, 79, 99, 82,179, 24, 6,167, 19, 51,181,223, 68,166,209,156,242,120, 53, 6,204,159, + 61, 99, 82,208,158, 93,187, 45,100,213,154,147,200, 85, 93, 51,165, 34, 78,230,224,221,128, 81,201,237,233, 79,155,119, 91,230, +234,176,160, 60, 30, 85,110,214,129,179,167, 79, 14,168, 81,181,185,197,203, 91,193, 80,107,180,208, 26,128,128,198,173, 97, 52, + 82, 41, 97, 8,111,201,178, 36, 41, 53, 29,196, 96, 76,188,116,255,101,252,229,251,207, 89,173, 69,249,220,111,168,123,194,126, +213,189,117, 61,192,160,198, 71, 45,107, 99,217,246,115, 95, 2, 24,246,118,153,156,103,209,162, 64,243, 0, 71,178, 14, 64,243, +219,135,150,215,108,216,115, 2, 42, 98,209, 10,116, 32, 93, 2,171,187,254,190,236,135,169,182,118,238, 62, 44,225, 13,160,206, +117,128,172, 24, 74, 98,174,193,202,173, 9,140,174,205,176, 97,229,146, 28,158,167,187, 42,227,218, 66,128,128,247, 25, 26,141, +230,192,194,133, 11,109,187,117,235, 86, 96,145,193,181,107,215,176,105,211, 38,152,153,189, 89, 79,118,237,218, 21,148, 82,219, + 57,115,230, 28, 0,240, 97,105,156,205,154, 53,235,190,114,229,202,184,122,245,234, 61,207, 23, 91, 18, 0, 76,104,104, 40,243, +250,245,107, 98, 99, 99, 67, 93, 93, 93, 13,113,113,113, 60, 0,227,103,159,125,198,154,155,155,215,200,201,201,185, 80, 89,161, + 37,149, 74,223,201,156, 45,177, 88, 12, 66, 8,164, 82, 41, 36, 18, 9, 40,165, 21, 18, 91, 70,163, 81,116,252,248,113,220,190, +125, 27,115,235,213,195, 68, 55, 55,216,218,218, 34, 36, 36, 4,148, 82,152,153,153, 33, 45, 45, 13,187,118,237, 66,219,182,109, +193,113,156,196, 20,222,125,251,246,225,206,157, 59,248,190, 97, 67, 76,180,178,130,185,185, 57,206,158,205, 27, 13,148,201,100, +136,138,138,194,217,179,103,209,186,117,107,161, 80,191, 37, 76, 46, 60,173, 9, 17, 17, 39, 56,235,117,106, 80,142, 2, 4,174, +254,254, 68, 18, 30, 78,245, 21,125, 40,195, 96,198,202, 45,199,130,126,158,208,157,140,236, 81,223,117,222,239,231,199, 0,192, +240, 62,190,110, 74,153, 8, 43, 14,135, 83,134,193,140,119, 17, 65,127,127, 34, 97, 24,140,233,208,196, 15,113, 25, 58, 68,198, +101,252, 17, 78,169, 73, 67, 61,231,126,254, 4, 91,143,132,188, 94,190, 85,243,152, 82, 10,107,115,153,223,144, 7,145,158,191, + 31,191, 19,189,116,143,230, 49,229, 41,172,149,226,154,195, 30, 53, 43,119,213, 97, 35, 79,201,200,233, 83,191,105,214, 99,216, +100, 57,247,120, 47,116,145,167,192,235,213,200,210, 75,144,193, 58, 35, 38, 58, 26, 63,109, 56,246, 58, 43, 87, 55, 32, 52,169, + 98, 2, 51, 34,133,230,248, 59,144, 94, 63,125,247,237,153,249, 63,204, 49, 87, 63, 15,201, 97, 9,167,102,171,180, 18,253, 48, +247,103,146,173,213,245,143, 76,163,217,229,241,104, 45,176, 96,225,210,149, 65, 35, 6,247,126,236,235,211,202,206, 24,247,194, + 78,147,149,149,180,227,228, 29,231,252,158, 34, 1,128,200,152, 84, 36,103,230,114, 70,206,112,193, 66,140,121, 97,166, 88, 7, +243, 81,205,137, 56,244,106, 81,231, 99, 7, 11, 9,212, 57, 25,112,180, 16,163, 83,147,234, 31, 87,115, 34, 83,159, 39,210,228, +202, 11, 45, 3,168, 65,141,235, 11,218,214,164, 70, 67, 77, 24, 13,208, 63,216, 86,113,203, 24,193,196,113, 45,205, 45,109,116, + 47, 25,228,154, 1, 10,123, 16, 75, 47,192,202,155,136,107,245, 71,220,243, 48,238,203,143, 7,167,190,120, 21,243,171,189, 2, +139,133, 42, 68,128,128, 55, 17, 21, 21,245,233,244,233,211, 47, 55,105,210,196,201,222,222, 30,181,107,215,198,145, 35, 71, 48, +121,242,228,194,107,234,213,171, 7, 74, 41,210,210,210,176,112,225,194,132,184,184,184, 79,203,226, 12, 11, 11,123,188,117,235, +214,150,254,254,254,122,137, 68,146, 1, 64,150,145,145, 33, 79, 75, 75, 35, 26,141, 6, 60,207,243, 86, 86, 86,198,184,184, 56, +195,128, 1, 3,180, 87,175, 94,173,158,155,155, 27,245, 54, 22, 45, 15, 15,143,208,212,212,212, 76, 66,200, 91,187,126, 40, 16, + 89,246,246,246, 14, 57, 57, 57, 60,128,244,202,184,126,224, 56, 14, 13, 27, 54,196,169,139,119,113,252,220, 85,100,197, 61,193, +152, 17,159,162,118,237,218, 56,117,234, 84,165,243,172,110,221,186, 56,121,246, 50, 46,223,190,143,168,136, 7,248,114,204, 8, + 4, 4, 4,224,228,201,147, 66,129, 54, 29,193,197,230,102, 5, 23, 23, 90,173,131,131,131, 11,122,230,127,146,175,181, 28, 72, + 93,215, 26,210,109,115,186, 84,175, 37,238, 48, 7, 68,172,192, 94,159,147,205,102,252,180,234,113,109, 39, 50,248, 97, 98,249, +171,195,222,176,106, 37,210,176, 0, 71,178,243,254,163,154, 31,127,212,196, 3, 27,143, 40,103, 1, 64,255, 22, 85,113,243,105, + 50,110, 68, 36,237, 12, 75,162, 97,111, 27,235,218, 78, 68, 9,138,157, 11,191,234,209,218,203,221, 25,155, 14, 94, 6, 33, 56, + 96, 82,131, 75, 41,109,226,239,133,229, 91,139,175, 48,116,246, 92,186, 71,243,248, 84,104, 86, 23, 0,232, 88,203,236, 68,163, +234, 54,158,229, 89, 54, 20, 82,209,168, 46,189, 63,145,115, 17, 71,128, 87,103, 65, 56, 45,212,122, 30,241, 41,217, 80, 89,121, + 32,228,218,125,117,166, 70, 55, 33, 44,169,114, 86,188,240,100,250,188,158, 11,137,206,201, 85,187, 40, 29,170,107, 88,134,231, +115,180, 20, 55,195, 95,101,133,197,211, 39,166,112, 68, 70, 82,221,135,238,164,197,186, 45,123,102,139, 37,210,254, 44, 1,113, +180, 54,115, 88,247,243,247,176,176, 48, 7,175,203, 1,114,147,209,235,139,159,146, 31,198,234,171, 2,128,175, 61, 49,111, 89, + 77,178, 69,196,144,152, 63,158,233,102,150,107, 94, 53, 96,244,224, 78,245,196,188, 46, 23, 95, 45,220,141,245, 83,123,224,147, +118,181,196,193, 87, 34, 70, 3,152, 87,217,188,166, 70, 14,212,160,198,135,223, 94,124, 76,128,203, 20,104,126,123,207, 15, 53, +129,187, 38,115, 52, 32, 68, 44,114, 33,181,234,120,154, 73,248,152, 43,224, 99,174, 80,214,163, 25,136,103, 75, 66,156, 27,210, + 95, 22,205,205,221,184,113,211,105,158,193,119,229,185,202, 16, 32,224,255, 43, 40,165,207,173,173,173, 59,119,237,218,245,220, +169, 83,167,108, 3, 3, 3, 1, 0,183,111,223, 6, 0, 52,108,216, 16,190,190,190, 72, 76, 76,196,192,129, 3, 83,226,227,227, + 59, 83, 74,203,156,243,155,157,157,253, 98,223,190,125, 78,185,185,185,245,102,206,156,153,228,229,229,149,165,209,104, 72, 70, + 70, 6,207,113, 28,108,108,108,164,245,234,213, 67,211,166, 77,115,174, 93,187, 86,229,245,235,215,217, 0, 94, 85, 38,252, 61, +122,244,192,197,139,121,139,246,222,133, 95, 45,137, 68,130,192,192, 64,183,231,207,159,199,230,167,207,245, 74,164,105,225,239, +251,247,239,227,194,221, 24,136,116,106, 72,147,227,112,253,224, 62,116, 31, 53, 22, 28, 87,249, 89, 12,247,239,223,199,161,179, +215, 97, 38, 19,225,201,147, 48,236,219,183, 15, 99,198,140,121, 43,206, 74,162, 76, 45,242, 47, 47,247,241, 0, 54,148,106,209, + 10, 10, 10,186,128, 18,188,218, 86,175, 78,164,178, 28,204,233,212,208,109, 74,255,230,213, 89, 67, 86, 28,120, 35, 15, 86, 12, + 56,218, 91, 98,219,182,157, 85,119,238,222,125,173,174,155,120, 37,207,113, 51, 30, 38, 82, 85, 5,194, 53,231,231,221,151,251, +111,155,212, 90, 52,166, 75, 77, 91, 0,144,136, 24,172, 56, 18,198, 1,152,243, 54, 17,254,208,157,200,115, 12, 24,233,108,103, + 53,107,250,231, 65,182,173, 27,250,226,194,141, 80,172,220,119,237,162, 52, 9, 91, 77, 78, 56,222,128,226,250,169,164, 85,135, +224,203,159,119,105, 52, 82,103,137,153, 13,244,175,206, 3,122, 13, 52, 90, 61, 94,167, 26,241, 58, 77, 3,145, 82,130,219, 17, + 49,106,187, 4, 28,171,108,156, 9, 33,164,121, 53,185,235,236, 31,151,186,107,212, 57, 92, 86,122, 10, 39,145, 94, 23, 43, 21, +178,248,138,240, 92,139,161,154, 86, 85, 37, 13, 0,158,149,202,169,234,219,175,135,154,197,134,159, 66, 13, 38, 14,132, 82, 40, +106, 5,193, 66,193, 74, 90,120, 75,162, 1,192,219,217, 74,186,240,187,201, 86, 19,166,126, 87,238, 28, 48,127, 66, 36,181, 27, + 57, 79, 8,244,178,193,197, 59,143,113,241, 97, 84,216,197,219, 79, 2,218,212,118,133,175,187,245,120,127, 66, 22,132,211,138, + 91, 72,243, 50,134, 3, 12,154,194, 85,135,254, 78,100, 80,163,254, 51, 75, 92,109, 88, 26,188, 1, 62,194, 72, 65, 88, 22, 32, + 76,222, 10,200,215, 87, 32,178,174, 70,119,238, 57,164,218,180,105,235,247,225,201, 84,176, 98, 9, 16, 80, 14, 50, 50, 50, 30, + 40,149,202, 78,117,234,212,217,252,213, 87, 95, 89, 12, 30, 60,216,117,196,136, 17, 12, 0, 36, 38, 38,242,203,151, 47,143,251, +229,151, 95, 50, 83, 82, 82,134,233,245,250,135,166,116,124, 9, 33, 87,127,253,245,215,228, 75,151, 46, 5, 52,110,220, 88,214, +160, 65, 3,222,198,198, 70, 36,147,201,140, 58,157, 78, 19, 17, 17, 97,124,254,252,185, 75, 70, 70,198, 51, 0,145,149, 25,214, +207,183, 94,205, 99, 89,118, 54,165, 52,240, 93,204,209, 82, 42,149,174, 0,158, 17, 66,106, 84,116,216,240, 79, 13,182, 72,132, +244,244,116,168, 18,194, 32,143,121,138, 58,102, 12,252,109,204, 97,105,105,249, 86,162, 40, 51, 51, 19,200,141,197,229,203,247, + 1,142,131,149,149, 21,172,172,172,254,118,161, 85,154, 22,249, 47,160,248, 74,195,252,114, 91,246, 28,173, 0, 71, 50,198, 70, +138,229,163,130,170, 75,188, 61,221,161,141,185,141,251,175,115, 48,227,131,198,225,172,204, 66, 51,234,211, 30, 13,123,247,173, +130,214, 77, 27, 17,111, 23,171,241, 11,126, 94,251, 69,128, 19,153, 28,150, 72, 87,152, 18,168,176, 36,250,162,150, 35,217,116, +254, 65,204,104,119,165, 26, 60, 79,113,254, 97, 60, 30,190, 74,223,244, 40,137,190,168, 72, 4, 3, 92, 73,123, 17,152,221,148, + 82,185,149,153, 89,118,189,186, 53,237,219,127, 88,151,233,220,170, 33, 36, 44,112,249,230,125, 76,252,249,192,117,158,167, 65, +119, 76, 28, 54,204, 91, 97,248,166,128,202, 91, 97,104,120, 99,133, 33,165,148,230,173, 58, 44,123,218, 23,203,146, 4, 85,212, + 45,103,177,157, 15,212,145,231,241, 42,157, 71, 84, 82, 54,178, 68,206,208,198,198, 2,148,143, 14,161,180,210,165,218,222,222, +222,177,170,191,111,245, 85, 91,246, 65,175,202,196,139,144,205,200, 73,143,199, 15,235,142, 84,119,119,119,111, 21, 19, 19,115, +161, 2, 5,198,247,220,177,157,142,160, 0, 43,150, 33,120,205, 30,164,216, 41, 96,175,148,128, 87, 39, 99,212,132,193, 86, 93, + 58, 12,182, 2,128,168, 39,247,224,165, 84,155,196,171,183, 67,239,254,109,252,172, 97, 80, 99,203,201,123, 26, 6,232,188,245, +116, 88,100,155,154,214,242,254,205,189,108,230,197,101,244, 65, 37,157,138, 22, 88,180, 10, 45,124,149, 88,109,184,151, 82, 99, + 45, 7, 18,185,251,106,146, 89,223, 14, 13,148, 18, 17, 33, 52, 39, 22, 84, 97,143,181, 91,246,230, 72, 13,216, 32, 52,161, 2, + 4,152, 6,149, 74,117,135, 16, 82,251,155,111,190, 25,244,237,183,223,182, 52, 51, 51,171, 10, 0,185,185,185, 47, 12, 6,195, + 69, 0, 59, 43,178, 58, 48, 95, 56, 61, 35,132,188,136,140,140,116,218,190,125,187, 53, 0,121,254,223, 26, 0, 25, 0, 18,223, +102,197, 97,129,168, 34,132,204,126,135,150,142,227,249,156, 53, 42,115, 63,195, 48, 70, 66, 8, 8, 33,144,201,100,184,116,233, + 18,250, 5,117,192,163,224, 12, 4, 90,155,163,241,176, 81,216,125,230, 12, 88,150, 5, 33, 4, 44,203, 86,168, 29, 17,137, 68, +184,124,249, 50, 62, 25,216, 23, 50, 17, 96,101,101,133,111,190,249, 6,135, 15, 31,134, 72, 36,236,210, 87,129,124,222, 80, 32, +184, 76,247,163, 69, 48,239,204,230,159, 36, 48, 26,112,116,243, 18, 28, 11,205,209, 61, 73,198, 12,191,100, 44,223,135,108, 62, +249,231,173,163,207, 92, 14, 93,252,217,128,110,202,182,109, 58,160,109,235, 54,162,128, 70,173,102, 1, 88, 81,164,193,110, 95, +150,175, 13, 35,143,239, 55,156,124, 60,106,119, 72, 4,129, 62, 27, 3, 58, 54,162, 70, 30,223,151, 35, 2,254,196,105,165, 48, +223,125,249,218, 53, 27,232,115,240,234,222, 31,242, 42, 85,171, 3, 70, 61,158, 61,123,138, 95,182, 28,228, 67,110, 62,217,166, +227,240, 85,100, 26,205, 53,149, 51, 79, 89,113,176, 50,147,250,117, 9,180, 58,193,131,194, 90, 41,169, 73,121, 35,172,149,226, +154, 29,107,153,157,160,148, 82, 11,133,184, 38, 53, 26,202,229, 84,235,184,245, 91,126,219,180,116,248,240,225,102, 41, 49, 9, +136,203, 10, 69,142,212, 13, 6,165, 7, 34,239, 93, 84,171,180, 92,185,141,120, 89,233,153,146,146,146,116,231, 70, 26,118,175, +155, 15,131, 78,139,164,152, 60,173, 26,151,146, 5, 75,123,183,107, 21,225,212,115,124,102,239,193, 35, 37, 10, 11, 40, 62,233, +221, 77, 26,153,170, 69,125, 87,139,188,194,148,147,140, 71,103, 47,163,117,110,158,110,123,254,154,129, 87, 93, 87,147,194,105, + 33,151,124,213,165,129, 27, 94, 68,199,227, 82, 88,236,150,231,169, 52,174,154, 29,217, 18, 25,151, 49,186,199, 7,158, 88,118, + 56,252,203,210,196, 81,105,156,254, 78,100, 16,128,230,121,147,225,213,160, 64,115,127, 39, 50,200,148,149,134, 37,113,138, 36, +248,120,233,137,168,153,123,111,165,244,152,242,113, 11,203,166, 77,187, 74,193,233,144,173,214, 26,194,211,105,214,219,228,209, + 91,244,148, 4, 78,129,243, 63,201,153, 47,122,182,229,127,222, 37,103, 28,138,249,117,122,219,184, 23, 29, 38,164,148,138,242, +173, 89,101, 78,134, 47,143,179,232, 48, 33,165,244,120,190, 53,171, 76,171, 86,113, 78,158,231,227, 26, 54,108,104,219,189,123, +119, 24,141, 70, 60,125,250, 20, 81,175, 95,163,253,232, 47, 97,109,109,141,139, 15, 30,224,201,147, 39,152, 61,123, 54, 12, 6, + 3, 14, 29, 58, 20, 83, 30,167, 72, 36,210, 87,175, 94, 93,210,179,103, 79,112, 28,135,231,207,159, 35, 54, 54, 22, 19, 39, 78, +132,149,149, 21,238,220,185, 83,200,153,146,146, 2,145, 72,164,255, 59,202,210,127, 29, 37,137,172,178,133, 22, 96,132,209,128, +204, 51,115,176,226, 18,244,122, 3,106,134, 37,209,151, 69,254, 95, 91,199,142, 28,125, 16,250,248,197,157, 43,109,165, 72,122, +152,119, 79, 5, 16,145, 66,227, 27,121,136,178,161,207,182,196,243, 19,120,153,152,157, 19,145, 66,227, 43, 26, 57,202, 27, 9, +244, 42, 32,254, 54,174, 94,188,128,144,235,247,113,235,225, 99,227,213, 59, 17,187, 25, 30,223,135,167,208,167,149, 80,167, 48, + 15, 90,134,161, 15,159,121, 54,242,117,242,132,145, 3,229, 13,176, 26,176, 19,195,194,155,122, 54,170,102,237,153,103,201, 50, +192,230,243, 63,128,165,242, 50,249,110, 69,235, 55, 52,175, 42,235,147,157,145,250, 65,187, 86, 31,154, 89,213,234,130,148,103, + 17,120,122,255,178,250, 78,104,228,213, 91,209,250,183,178,150,184,185,185,181,108,215,202, 15, 3, 70, 77,135, 94,149,137,231, + 33,191, 33, 39, 45, 1,151,174,153,227,113, 86,214,135, 0, 76,182,104, 93,141, 50, 4, 0, 64,115,111, 73,180, 5,180,206,159, +118,235, 14, 25,209,128,215,102,129,168, 82, 16, 25,171,203,236,179,238,181, 17, 0,148, 50, 34, 50,163,153,150,166,240,250,123, +217,249, 40, 89, 3,182,158, 9, 3,207,231,109,223,196,243, 88,187,245,143,200,209,223,127, 82, 31,254,158, 54,117, 9, 33,164, + 34, 38,127, 66,209,226,214,238,239,106,106,206,205, 2,120, 61, 46,143,183,173,217, 98, 69, 90,139,202, 90,198, 30,198,210, 88, + 0,163,107,185,146,245,227, 87,156,156,213,240, 76,120,243, 73,159,247,176, 4, 21, 54, 96, 23, 32, 64,192,223,143,156,156,156, + 81,195,134, 13, 91, 47, 22,139, 29, 0, 16,158,231,193,243,188,104,241,226,197, 98,163,209,200, 48, 12, 99,100, 89,150, 59,126, +252,184,193,104, 52, 38,107, 52,154, 81,229,113,114, 28, 23, 57,118,236,216,234,229,173, 80,220,181,107, 23, 68, 34,145,158,227, +184, 72, 33, 39,202, 23, 89, 69,191,139, 90,185, 74,111, 60, 40,190,107,246,201,156, 57, 0, 8, 40,230, 22, 19, 89, 0,128, 7, +169, 52, 46,192,145, 76, 12,104,212,106, 78,193, 61, 21, 13,156,198,104,236,219,168,182,239, 46, 0,208, 82,227, 39,149,137, 96, +150, 86,221,191, 94,163, 15,119,243,148,138, 56, 74, 55, 49, 60,246,107, 56, 60, 50,101,165, 93,105,136, 75,202,184, 83,176, 81, + 52, 15,250,191,225,194,124, 55, 14,148, 82, 90, 56, 92,184, 68,142,148, 76,109,185,126,160, 46,191,208,118,104,228, 41, 25,121, +250,202,189, 81, 70, 35,117,102, 89,146,160,214,113,235,223, 86,100, 1, 64, 76, 76,204, 5,127, 71,114,250, 65, 93,167,142,246, +202,124, 43,151, 10, 72, 81,225,116, 76, 82,246,133,202,112,166,231, 26,122,124,187,252,240, 17,169,152, 21,129,210, 60,135,162, +148, 66,163, 55,166, 21,136,177, 58,118,196,245,155, 67,220, 46,150, 37, 81,229,241,221,120, 18,191,108,192,130,179,147,195, 94, +165,111,122,153, 78, 67, 1,224,101, 58, 13,173, 97, 71,102, 69, 38,100, 79, 14,141, 74, 95, 82,209,121, 21,148,224, 82,163, 1, +115,254,116,238,109,211,243, 81, 28,189, 15,160, 87,128, 35,233, 48, 96,210, 47,147, 8,129,176,253,132, 0, 1,255,143, 80, 96, +213, 98, 24,102,222, 59,228, 60, 78, 8,233, 10,224, 89, 5,238,185, 1,160,246, 59,142, 91, 42,128, 84, 33,151,223,105,154, 86, +220, 97,105, 88, 18, 93, 11, 19, 54,141, 54,245,186, 82,239,143,163,103, 1,216,189, 77, 4,243, 57,108,223,101,162, 61, 72,164, +179,254,138,204,200, 23, 85,127,201, 92,159,240, 36,218, 9, 0,124,124,124,232,179,103,207, 64, 41,125,171, 73,133,143,146,233, +125, 20,219,202,161, 36,177, 13,160,133, 41,124, 17, 41,244,123,224,207, 67,195,207, 82,233, 15, 0,126,168, 84,156, 43,233,249, +221,228,178,149, 68,207, 0,229,123,231, 23, 32, 64,192,251, 41,182,254, 2,206,227, 66,202,190,127, 40,203, 97, 41, 35, 36,207, +251,135,167, 79,159,146,183, 21, 89, 2, 4, 8, 16,240, 30,195,248,150,159, 18, 53,212, 91,126, 4,188, 39,130,171,248, 57, 65, +104, 9, 16, 32, 64,128, 0, 1, 2, 4,188, 35,145, 85, 92,108, 17, 0,237, 75,148,230, 21, 88, 77, 64, 8,105, 95,209, 0,149, +199, 47,112, 10,156, 2,167,192, 41,112, 10,156, 2,231,251,199, 89, 30,247,123,183,154,145, 22,153,228,252,174, 63, 0,218, 11, +156, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,190,207, 31, 0, 35, 75, 59, 22,134, 14, 5, 8, 16, 32, 64,128, 0, 1, 2, +254, 34, 8,190,129, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 14,229,110, 42, 45, 64,128, 0, 1, 2, 4, 8, 16, 32,160, 18, 40, +119, 83,105, 1, 2, 4, 8, 16, 32, 64,128, 0, 1,149, 67,165, 54,149, 22, 32, 64,128, 0, 1, 2, 4, 8, 16, 80, 62,202,242, + 12, 79, 42,184,227,137, 0, 1, 2, 4, 8, 16, 32, 64,128,128, 50,240, 39,207,240,193,193,193,180,232,183, 0, 1, 2, 4, 8, + 16, 32, 64,192,223,137,247, 85,139, 8, 67,135, 2, 4, 8, 16, 32, 64,128, 0, 1,111,129,146,230,104, 9, 66, 75,128, 0, 1, + 2, 4, 8, 16, 32,224, 29,160,172, 57, 90, 5, 14, 75, 91,231,155,234, 90, 11,201, 37, 64,128, 0, 1, 2, 4, 8,248, 7,240, + 94,106,145,194,201,240,193,193,193, 52, 40, 40,136, 8,249, 44, 64,128, 0, 1, 2, 4, 8,248, 39,240, 62,106, 17, 97,213,161, + 0, 1, 2, 4, 8, 16, 32, 64,192,219,136,169, 34,171, 12,139, 31, 11,123, 29, 10, 16, 32, 64,128, 0, 1, 2, 4,188, 35,193, + 85,252, 28,243, 23, 63,176,189,192, 41,112, 10,156, 2,167,192, 41,112, 10,156, 2,231,255, 23,145, 85, 92,108, 9,171, 14, 5, + 8, 16, 32, 64,128, 0, 1, 2,222, 2,166,172, 58, 20, 32, 64,128, 0, 1, 2, 4, 8, 16, 80, 9, 16, 66, 70, 18, 66,186,229, +255,238, 86,212,170, 37, 88,180, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 2,148,210, 13,132, 16,151,124,129, 21, 76, 41,141, 23, +132,150, 0, 1, 2, 4, 8, 16, 32, 64,192, 59, 64,177,121, 89, 65,132,144,194,225, 68, 65,104, 9, 16, 32, 64,128, 0, 1, 2, + 4,188, 5,202,154,163, 69, 0,180, 47,229,166,179, 21, 80,114,237, 43, 17,168,179, 2,167,192, 41,112, 10,156, 2,167,192, 41, +112,254,255,226, 44,143,187, 34,250,227,223,130,146,220, 58, 20,138, 47, 74,233, 95,246, 1,208, 94,224, 20, 56, 5, 78,129, 83, +224, 20, 56, 5, 78,129,243,255,235,231,157,175, 58,108, 64,136, 66, 48, 34,190,127, 32,132, 56, 17, 66,156,132,148, 16, 32, 64, +128, 0, 1, 2, 76,183,112,189,211, 57, 90,254,132,124,254,121,160,195,186,218,132, 88, 62,164, 84, 85,214,181,142,142,142,235, +149, 74,229, 96,149, 74,149, 75, 8,225,139,152,218, 0,160,232,190, 64,207,147,146,146, 90,148,247,108,153, 76,182,220,201,201, +233,243,156,156, 28, 21, 33,132, 18, 66, 64, 8, 41,136,240, 27,223, 70,163, 49, 38, 37, 37,165,225,127, 58, 19, 1,214,222,201, +233,166,152,101,221, 42,122,175,145,231, 95, 38, 38, 36,124, 88,129, 2, 51,159, 16, 76,201,255,189,136, 82, 58,253, 61,124, 43, + 88, 83, 46, 11, 4, 44, 34,128, 1, 70,134,249, 82, 12,172,214,242,252,186,252,130,107,172,236,163,117, 55, 73,117, 66, 81,151, + 16, 88, 81,138, 76, 74,112, 95,218,152, 70,254, 67,149, 67,111,177, 88,220,195,210,210,210, 60, 53, 53,245, 2,128, 93, 0, 6, +218,217,217,181,202,202,202,202, 49, 24, 12,135, 41,165, 7, 42,195,221,178, 30,153, 42,149,136, 63,211,232, 13, 11, 47,223,163, +191,181,110, 64,236, 56, 30, 11,228, 18, 81, 11,173,142, 91,116,233, 62,221, 84,193,176,146,188, 87,161,160,234,168,248,126, 98, +251, 76,204,119, 0, 56,100, 99,227, 43,115,176, 60, 39,150,178, 47, 51, 18,115, 6,247, 77, 74,122,221,247, 45,242,253,223, 8, + 7, 7,135,161, 12,195,252, 72, 41,133,209,104,156,145,154,154,186,249, 29,149,171, 25, 0,172,243, 15, 51, 40,165, 63,190, 37, + 95, 20, 0,207,252,195,104, 74,169,151,208,180, 87, 58, 45,215, 30, 60,120,112,116,155, 54,109,176,108,217, 50,172, 93,187,246, + 85,114,114,242, 2, 0, 91, 40,165,186,191,155,231,125,196, 59, 19, 90, 1,132,116, 29,218,169,201,250,113,253,187,146, 9, 67, +103,170,202,121,153,127,237,220,185,243, 39, 91,182,108, 17, 71, 68, 68, 40,188,189,189,193, 48, 76,161, 16, 42, 90, 95, 86,169, + 82,133, 47,239,217, 44,203,174,232,213,171,215,176,125,251,246, 41,239,220,185,163,172, 85,171, 86, 33, 31,207,243, 40, 94,255, +122,123,123,151,201,103,101,101,117,155,101, 89,247,146, 68, 90,105,191,141, 70, 99, 76,106,106,106, 67, 19, 10, 99, 39, 0,211, + 76, 72,210, 5,148,210, 83,101, 93, 32,102, 89,183,184,184, 56,199,138,230,149,135,135,135,190, 2, 47,143, 19, 33,152,194,243, +148, 1, 0,134, 33, 83,229,114,249, 58,141, 70, 19, 93,240,127,126,158, 37, 86, 36, 12,110,110,110,125, 40,165,163, 0, 80, 66, +200,134,216,216,216,253, 21,185,223,210,210,242,182, 84, 42,117, 23,137, 68,164,164,124, 41,126,108, 52, 26,169, 94,175,143, 73, + 75, 75,171,176,192,190, 0,144,206, 64, 75,142,101, 39,216,217,219,183,184,115,250,180, 89, 96, 96, 32,195,178,236,116, 0,235, +222,230,189,209,221, 36,213,141, 6,244, 83, 27,100,221,100, 94,115,125,181, 81,115, 35, 20, 98,237, 49,221, 77,178,247,239, 22, + 91,132,144, 33, 67,134, 12,153,176,112,225, 66,123,169, 84,202,236,217,179,199,119,226,196,137,189,151, 45, 91,102,223,191,127, +127, 11,157, 78,199, 79,157, 58,213,159, 16,226, 72, 41, 93, 83, 17,238,166,245,200, 7,126,222, 46,179,199, 13,110,139,201,243, +119,141,107, 94,155,164, 40,204, 36,107,251,180,168,110, 29, 80,213, 6,223,173,191,250, 21,128, 77, 21, 8, 43, 17,137, 68, 31, +186,186,186,250,104, 52, 26, 46,191,243, 70,139,212, 9,121,233,171,211,233,210,210,210,246,190,109,218, 76,150,203,155, 52,177, + 54, 63, 51,103,208, 16, 69, 86,122,154,211,138,224, 35, 15,246,193,177, 78, 95,224,213,251,212, 32, 48, 12,243, 99,108,108,172, + 11,165, 20, 46, 46, 46, 63, 2,216,252,142,168,173, 11,234, 97, 66,136,245, 59,224,243, 44,194,231,249, 14,202,190, 92,196, 48, + 99,165, 98,113, 71,163,209, 88, 59,191, 12, 61,212, 25, 12,103, 56,158, 95, 77, 41,213,188,199, 58, 96,202,232,209,163, 59,124, +251,237,183,222, 83,166, 76,193,148, 41, 83,170,108,220,184,113,253, 79, 63,253, 52,149, 16, 82,135, 82,154,243, 55,243,252,231, + 45, 88,127,137,208,242, 39,164, 97,187,186, 53,246,143, 31, 58, 0,252,190,229, 4, 67,103,150, 41,178, 62,108,216,240,179, 45, + 91,182, 0, 0, 6,247,232,129,142,141, 27,195,194,220, 12, 82,105, 94,112, 8, 37,144,136, 37,232, 57,241,107, 83, 34,183,168, +119,239,222, 31,239,219,183,207, 28, 0,214,174, 93,139,222,189,123,195,214,214, 22, 74,165, 18, 18,137, 4, 98,177,248,141,111, + 19,132,155,123,108,108,172,163, 92, 46, 47, 20,126, 60,207,191,241, 41, 50, 78, 13,142,227,224,227,227, 99,106,114, 77,203,204, +204,108,153,155,155, 91,230,152,110,213,170, 85, 1,224,148, 41,132, 63,254,240, 61,120, 46, 23, 34, 17,192,113,128, 86,207,128, + 47,161,111,239,234,234,138,177, 99,199,226,109, 54, 18, 15, 10,234, 70, 8, 33,251, 92, 93, 93,247, 39, 37, 37,121, 19,130, 17, +149,180,116,125,241,244,233, 83,115, 0,240,245,245, 29, 11,160, 66, 66, 75, 36, 18,185, 63,120,240,192, 81, 38,147,149,106,185, + 44, 34,130,161,215,235, 81,191,126,125,174, 34,207,112, 2, 60,211, 24,102, 68,189, 6, 13, 70,206,233,217, 83,126,243,230, 77, + 57,195, 48,224, 56, 14,139, 23, 47,230, 40,165,214,254,128,101, 56,144, 85, 70,249,252, 22,192,208,124, 43,237, 38, 74,233,226, + 55,254,167,168,171, 54,200,186, 61,207,233,217,184, 73,149,169, 8, 15,123,216,184,154,249, 33, 88,136,180,145, 0,254, 86,161, +101,105,105,217, 99,217,178,101, 14,155, 54,109,202,122,242,228,137,126,221,186,117, 14,163, 70,141,178,208,235,245, 24, 61,122, +116,178,159,159,159,100,217,178,101, 14, 7, 14, 28,104, 11,160, 66, 66, 75, 68,240,253,192, 30, 29,161, 49, 48, 48, 24, 56, 7, + 23, 7,139,109,227,135,180, 22, 83,170,195,214,195,119, 96,224,248,223, 42,104,201,250,176,111,223,190,213,118,238,220, 41,122, +252,248,177,168,102,205,154,224,121, 30, 70,163, 17, 6,131, 1, 0,192,243, 60,106,212,168,241,214,233,242, 25,224,107,239,100, +123,230,195,174, 93, 20, 46,114, 25,108,211,147, 49, 92, 34,178,216,172,212,110, 7,208,244,125,106, 44, 40,165, 16,137, 68,120, +253,250, 53, 28, 29, 29, 21,182,182,182,241, 0,230,166,165,165,109,120,143, 27,200,198, 82,145,104,255,214,223, 86, 56, 55,105, +218,148,117,114,113, 68,196,211,104,136,136,177,253,131, 91,119, 90,127, 54,102,210,120, 66, 72, 31, 74,233,205,247, 45,238, 46, +205,190,232,229,210,252,203,181,132,242,248,110,213,145,236,249,139,150, 43, 71,143, 24,194, 78,156, 56, 17, 30, 30, 30,222,189, +122,245, 90, 4, 96, 76,185, 60, 31,124,209,203,185,233,184,181,160, 20,115,126, 57,146,253,211,162,229,202, 49,149,224,249,143, +191, 59, 27,254, 50,161,229, 79, 72,181, 0, 15,199,211,243,167,140, 17,211, 19,191, 51,170,212, 36,148, 38,101, 28, 29, 29,215, +119,233,210,101,240,230,205,255,235, 36,125, 24, 24,136, 94,109,155,195,209,206, 10, 74, 51,105, 94,115,196, 19,220,127,242,210, + 36, 65,224,225,225, 49,122,255,254,253,230, 69,197,132, 68, 34, 41,252, 20, 21, 89, 5,159,226,150,143,146, 32,151,203,113,246, +236, 89,136, 68, 34,176, 44, 11,145, 72, 84,248, 41,122,204,178, 44,156,156, 42, 52,117,105,129,149,149, 85,157,236,236,108,203, +140,140, 12,120,122,122,102, 1,120, 80,228,255, 58,201,201,201,150, 21, 33,228,185, 92, 76, 28, 94, 11, 98,221,117,232,196,141, +161, 22, 53,195,213, 91,143,112,236,212, 5,196,198, 37,160,249, 7,245,240,233,160,190, 56,115,230, 12,140, 70, 99, 69, 11, 79, + 34, 33,100, 81,247,238,221,166, 2,132,180,111,223, 62, 99,220,184,113,204,227,199,143, 63,238,213,171,103,224,211,167,207,242, +123,194,100, 10, 33,100, 69, 5, 44, 91, 82, 0,184,120,241, 34, 0,200, 42, 83,246,100, 50, 25,174, 93,187,134,130, 97, 98,134, + 97,192, 48, 12, 88,150,197,209,103,246,200,213, 49, 80, 37,134,226,203,110,158,168, 90,181, 42, 24,166,252, 41,137,173, 1,249, + 85,160, 23, 17,139, 39,186,184,186,122,183,170, 86, 77,121,246,236, 89, 22, 0,188,188,188,104,124,124,124,198,225,195,135,179, + 69,192, 90, 47, 74,183,148, 37,178, 60, 61, 61,155, 49, 12,243, 99, 65,154, 19, 66, 22,121,123,123,207, 46,204, 55,158,199,160, + 14,182,226,241,227, 39, 72,154,180,206,235,156, 52,233,190, 19, 89,207,231,215, 34,105,223, 90,253,221, 21, 69, 86, 86,214,238, + 26, 53,106,176,169,169,169, 87, 1, 68, 25, 12,134,105,219,182,109,115, 28, 62,124,120,210,246,237,219, 23, 0,112, 93,184,112, + 97,235,220,220,220, 61, 21,225,109, 81,151,116,109, 88, 47,240, 3, 79, 15, 15, 92,184,122, 19, 18,169,216,122,236,208,110, 48, + 55, 23, 97,201,166, 96, 62, 42, 38,109,220,165,251,116, 75, 5, 68, 86,227,190,125,251,122,239,220,185, 83, 10, 0, 15, 30, 60, + 64, 66, 66, 2, 28, 28, 28,160, 80, 40, 32, 22,139,193,178, 44,196, 98,241, 59, 17, 89, 86, 30,118, 55, 14, 29, 58,172,176,181, +181,198,170,175,199,227,211,164, 68, 88, 91,152,195,144,147,235,253,158, 9, 14,223, 62,125,250,200,141, 70, 35,114,115,115, 17, + 18, 18, 98,165, 80, 40,172,220,221,221,231, 0, 48, 89,104, 41, 20,138, 68,141, 70,227,152, 95,143, 38,169,213,106, 39, 0, 89, + 50,153,172,160,158,206,201,127,158, 73,195,137,165, 12, 19, 70, 23,177,100, 69,191, 69,156, 27, 53,110, 84,231,236,129,125, 59, +204, 51,179, 19, 96,109,147, 4, 6,153,216,176, 97, 53, 20, 10, 75,204,153,243,173,232,101,251,182,110,157,186,246, 57, 75, 8, +105,255,222,137, 45, 74, 54,180,239, 62,216, 86,161,180,200,111, 75, 12,216,188,113, 60, 24,134,193,236,217,179, 17, 16, 16, 48, +146, 16, 50,147, 82,154, 86, 54, 13, 54,212,110,217,223, 86, 42,207,203, 98,222,104,192,186, 93,147,243,120,166,143,194,192,238, + 85, 71,222,223, 78, 78, 6, 84, 67,118, 94,187, 2,181,152, 65, 52, 26,211,164, 2,142,224,224,224, 86, 65, 65, 65, 23, 74, 59, +254, 15,188, 63, 46, 0,130, 74, 18, 95,162,224,224, 96, 26, 20, 20, 68,138, 68,238,141,227,178, 80,143, 16,123, 39, 43,229,217, +181,115,199,155,139,174, 7,179,234,232,103,136,211, 24, 11,223,156,226, 75, 52,149, 74,229,224,205,155, 55,191,161,195, 60,157, + 28, 33,145,136, 33,150, 16, 88,183,232,150,247,198, 93, 58, 6, 66,104,105, 13,255, 27,156,185,185,185,154,123,247,238,153,111, +218,180, 9,142,142,142,240,246,246,134, 82,169,132, 92, 46,127, 67, 92, 21, 21, 92,197,133, 86,113,206,130,255, 69, 34, 17, 24, +134,193,153, 51,103,192,113, 28,250,246,237,251, 39,145, 37, 18,137, 74, 20,110,165, 45, 79,165,148,158, 34,132, 60,160,148,182, +204,111,128, 31, 80, 74, 91, 21,121,118, 39, 7, 7,135,105, 0, 22,152,202,201,178, 20,172,230, 42,120,247,229, 16,189, 30, 15, +157,184, 46,206, 95,190,131,205,235,151, 1, 0,188,107, 54, 66,191, 94,221, 10,173,113,166,112, 22,133,155,155,219,174,228,228, +148, 46,109,219,182, 69,122,122,186, 97,238,220,185,168, 83,167, 14,124,125,125, 77,202,163,210, 4,220,131, 7, 15, 60,212,106, +181, 73,195,142, 37,113, 18, 66,176,109,219, 54,104, 52,127,182,234,219,180,250, 9,147,123,123, 97,216,151, 91,176,232,201, 30, +172, 89,179,166,204,184, 43,129, 58, 26,171, 26, 43,164, 44, 87,103,193,183, 95,200, 62,253,244, 83,118,216,176, 97,136,142,142, +198,240,225,195, 53,103,206,156,209, 37,196,199, 31,150,242,252, 42,253,155,194,184, 84, 78,153, 76,182,245,212,169, 83,216,179, + 39, 79,151, 68, 68, 68,192,199,199,199,236, 13,145,156,182, 23,217, 81,171,112,227,232, 99, 52,233,190, 19, 55,142, 14,130, 49, + 35, 88,220,208, 7,153, 21, 73,207, 74,244,190,206,150,112,110, 15,128, 61, 69,210, 87,177,125,251,246,158, 0,142,228,255, 7, + 0, 63, 87,132, 51,143, 8,195,250,247,238, 9,145,196, 2,143,159,197,160,213,135,245,225,228,232,136, 7,143, 34, 17, 21,155, +150, 72, 8,134,118,110, 38, 91,160, 86,235,102, 94,188, 71,127, 45,135,147,184,187,187,251,238,221,187, 87, 82,196, 2, 93,248, +142,179, 44, 91,120, 92, 32,188, 43, 83, 62, 11, 68,150,133,187,249,141,239, 87, 55, 51,187,241,112, 59,124,188,186,194,166,107, + 55,252,122,250, 52,158,134,133,107,116, 42,174,221,223,157, 71,127, 21, 39, 33,196,183,119,239,222, 87,119,236,216, 97,253,250, +245,107, 92,188,120, 17,222,222,222, 80,169, 84,229,118,120,139,115,106, 52, 26,199, 34,195,122, 5, 83, 27,126,212,233,116, 5, +153, 81,240, 34,150, 58,156, 88,140,243, 79,195,132,149,153,147, 85, 66, 61, 47,149, 75, 36,123, 15, 29,216,101, 30,254,248, 34, +234,213,253, 0,230, 86,254,224,141, 9, 72, 77,203, 65,250,179, 56,252,240,195, 34,204,153, 59, 3, 71, 14,238, 51,247,171, 85, +119, 63, 33,164, 70,209, 97,196,255,122,190,131,208,145,103,143,110, 95, 75, 40, 15,117,226, 99,153, 56,247,133,114,240,160, 62, +236,128, 1, 3,112,228,200, 17,132,133,133,173, 45, 77,100, 21,229, 36, 20, 35, 67, 47,238, 89, 11, 74,161, 78,122, 44,147,168, + 95, 40,135,124,220,143,253,116, 96, 71, 92,255, 99, 5, 58,214,123, 17,234,234,136, 94,233,249,131,135, 34, 22,169, 50, 57,174, + 40,110,146,235, 69,196, 86, 8, 0, 82, 68, 96,133,224,127,115, 48,255, 11, 8,202,247, 14, 63,178,184,117, 75, 84, 25,129, 5, + 0,190,132,152, 43,165,146, 27,155,231,124,225,170,140, 14, 19,105, 67,175, 33, 78,203,211,117,175, 56,254, 6, 33,138, 59,148, +170,139,223,163, 82,169,114, 35, 35, 35, 21, 67,123,245, 66,211,192, 64,184,216,217,161,134,187, 59, 20, 50, 41,164, 18,113,145, +122,185, 66, 42,146,250,249,249,161,123,247,238, 16,139,197, 80, 42,149, 48, 55, 55,135, 84, 42, 45,209,154,101,106, 47,151, 82, + 10,150,101, 17, 26, 26,138,168,168, 40, 88, 91, 91,227,202,149, 43,104,215,174,221,159,172, 90, 69,197, 89, 69, 76,244,197, 27, +254, 2, 33, 6, 19,135, 12, 11, 96, 52, 18,228,208,186,144,191, 26, 7, 21,169, 15,173,150,131, 86,171,197,175,151,245,184, 25, +153, 11,189, 94, 7,173, 86, 91,234, 51,203, 72, 91,198,213,213,117,176,143,143,207,216, 65,131, 6, 25,164, 82, 41,114,115,115, +161, 82,169, 16, 22, 22,102,232,210,165,107, 70,247,238,221,172,130,131,131, 41,165, 88, 84,193,121, 90,169,110,110,110, 30,249, +195,179,169,149,236, 65, 20,138,152,226, 24,250,115, 56, 68,108, 94,158,172, 93,187, 22, 70,163, 17,148,210, 82, 51, 73, 67,200, +185,185, 63, 45,181, 90,184,252, 55, 88,217, 58,225,194,133, 11,198,147, 39, 79,102, 19, 32,226,105, 88,216,207, 31, 1,199,247, + 2,250,138,132, 47, 61, 61, 93,225,237,237, 13,119,119,119,240, 60, 15,131,193, 80,104,125, 73, 77, 77,133, 90,173,134,173, 89, + 6,170,219,185,131,203, 14, 65,124,232,119,112, 49,127,140, 45,167,116,134, 6,190,184,255, 47, 48,133,255, 14,224,247,183, 39, +130,155,163,179, 7, 24,106, 64, 92, 82, 42,122, 6,117, 4, 43, 49,199,203,215, 41,168,235, 95,205,229,227,143,154,185,176,132, +195,148, 5, 59,199, 2,248,181, 60,186,156,156, 28,227,227,199,143,241,224, 65,158,222,181,180,180,132,153,153,217, 27,239, 56, +195, 48,111,101,209, 42, 16, 89, 63,173,109,103,198,136,115,145,101, 60,139, 77,219,238,160,174, 95, 55,172,187,113, 75, 99, 76, + 76,107,191, 68,163,137,248, 79, 15, 27,185,184,140,226,121,126, 14,165, 52,163,119,239,222, 78, 59,119,238,180,137,141,141,197, +157, 59,119, 48,123,246,236,100,163,209,200, 81, 74, 9,165,244,187,119, 80,150,248, 34, 2,235, 93, 90, 17,196, 74, 57,190,180, +183, 36, 61, 68,140,165, 55,151,149,243, 50, 69, 71, 15,171, 56,254, 23, 74,169,161,172,123, 25,134,249,124,223,238,181,174,246, + 14, 60, 90, 59,180, 69,124,162, 30, 63,125, 61, 4,169,169,217,248,117,227,124, 0, 82,232, 57, 22, 45, 91,247,129,163,163, 27, + 70,142, 24,233,188,118,253,186, 47, 0, 44,121, 95, 12, 90,241, 87, 86, 31, 36,132,156,117,112,112, 8,251, 98,228, 72, 7,111, +239, 79, 32,151,203,177,107,215, 46,236, 92,181,202,184, 28,232,183,158,144,243,163, 40, 61, 88, 38,207,245,255,241,140, 31, 61, +218,161, 86,173,209,144,201,100,248,227,228,239,208, 36,108,203, 14,106, 10,189, 74,131,160, 42,221,169,237,171,163, 36, 77, 44, +198, 51, 0, 16,203, 17, 47, 6,146,138,209,253,215, 4, 86,161,140, 42,152,167, 85,240,253,214,158,225,169, 88,250,112,227,132, +129, 94, 78,208, 18,221,229,163,136,213,242,198,133, 79,245,236,221, 76, 58, 57,188, 4,145,149, 95,176,121, 79, 79, 79,180,109, +216, 16,189, 90,180,128, 72, 36,130, 92, 42,129,133, 92, 1,106,204,179,100, 21, 12, 29,150,209, 38,162, 36,235,147,157,157, 29, + 36, 18, 73,161,192, 50,213,154, 85, 26, 39,207,243, 16,137, 68,120,240,224, 1,154, 55,111, 14, 15, 15, 15,236,217,179, 7,157, + 58,117,250,211, 80, 98, 69, 69, 86,129,208, 42, 58,140, 87,100,146,124,185,147,224,255, 36, 18,116, 4, 41,186,186, 32, 36, 16, + 28, 7, 24, 41,160,213,104, 64, 41, 64, 41, 96,208,235,160,209,104, 10,159,105,202,144,172,139,139,139,103,213,170, 85,231, 77, +157, 58,165, 86,221,186,245,144,156,156, 12,158,231, 97,102,102, 6,149, 74, 5, 75, 75, 75, 52,109,218,244,229,188,121,243,226, + 41,197,200,138, 78,134,127, 7, 21, 44, 0,224,244,233,211,111, 12, 27, 22,124,114,227, 99, 48,236,171,237,144,138,242,134,150, + 10,230,240,148, 85,239,182,105,217, 12, 87,239, 70,112,159, 79, 89,161, 21,167,222, 89,224,204,243,155, 99,128,196,183,104, 92, +144,146,146,130,196,196, 68,244,232,217, 19, 59,119,236,192,171, 87,175,224,239,239,143, 54,109,218,192,209,209, 17,175, 94,189, +194,205, 75, 90,104,211,211,144,166,187, 3,165, 69, 19, 28,186, 16,169,157,181, 70, 23,249, 79,213, 22,132,144, 30, 0,134, 88, + 90, 90, 86, 85,169, 84,241, 28,199,237, 5,176, 23, 64, 63,145, 72,212, 79,169, 84,186,100,101,101,189, 64,222,106,162,195,229, + 14, 37,201,229,118, 50,185, 37,120, 78, 11,145, 72, 4, 15, 15,111, 80,163, 14,233, 89,106, 12, 29,208, 29,119, 31, 60,194,201, +243,215, 57,131,129, 95,105, 74,178,178, 44, 75,125,125,125,145,148,148, 4,177, 88, 12,133, 66, 1,115,115,115, 76,159, 62, 29, +171, 86,173, 42, 20, 89,149, 21, 90,159, 1,190,150,158,230,215,127, 92,157, 39,178, 18,226,226,145, 24, 35,134,131,157, 19, 86, +174, 90,158,155,254, 42,161,201,111,192,127, 90,100, 1, 0,207,243,223,197,198,198, 58,138, 68, 34,103,142,227,240,250,245,107, +220,190,125, 27,227,198,141, 75, 76, 77, 77,109, 77, 41,173, 84, 28,229,114,121, 82,129, 37, 75, 46,151, 39, 1,165, 14, 39,102, + 20,177,100,101,148, 65, 89,226, 48, 33, 33,164,154,183,187,197,153,141,203, 38,122, 54,106,210,148, 81,138, 44,211,115,158, 37, + 52,191,124,241, 66,211,113,203,126,253,130, 16,210,145, 82,250,188, 52, 82,153, 88,220,229,131,102,205, 68,160,137, 16, 73,155, + 99,209,194, 1, 72, 78,201, 66,122, 90, 54, 36, 18, 51,232, 12, 44,140, 60, 65,211,230, 45,240,251,150,221, 8, 24, 49,156,149, +138,197, 29,222, 39,161,149,143,249,191,252,242,139,167,159,159, 31, 54,111,222,140,243, 91,183,226,211,204, 76, 92, 96, 24,214, + 32, 22,219, 31, 55, 24, 54, 0, 56,104, 42, 79, 64, 64, 0,126,251,237, 55,108,219,182, 45,122,112,187,164,253, 19, 7,195, 81, +175, 71,231, 59, 79, 96, 91,165, 59,112,231, 9,108, 27,248,161, 6, 39,194, 51, 66,240,134, 59,168,224,224,224, 86, 69,191,255, + 75,200,223,219,176,196, 33,118, 17,128,214,193,193,193,180,232,119,121,132, 74, 71,223,209,219, 6,180,245, 10,172,238, 73, 12, +123, 86,224,117, 46,167,155,249, 68, 47,125,154, 67, 39,134, 83,186,188,140, 30, 4,101, 89, 22, 22, 10, 5, 28,172,173,243,204, +252, 12, 3,240, 0,111, 0,136, 49, 79, 0, 80,158,160, 34,139,166,121,158,135, 84, 42, 45,113,226,123, 69,231,102, 21,229,204, +206,206,198,203,151, 47, 49,114,228, 72, 40,149, 74, 0, 64, 66, 66, 2,188,188,188, 32, 18,137, 16, 27, 27,139, 63,254,248, 3, + 85,171, 86,133, 76, 38, 35, 21,204,148,130,134,191, 14, 33,228, 2,128, 58,241,241,241,150, 46, 46, 46,168,176, 69,139,167, 80, +105, 9,116, 58, 35,158, 62,125,138,184,184, 56,188,124,241, 12,141,114,179, 64,193,130, 82, 90, 33,139,150,187,187,123,160,143, +143,207,186, 5, 11, 22, 72,220,221,221, 65, 41,133,141,141, 53, 84, 42, 21, 82, 82, 82,225,239,239, 15, 15, 15, 15, 44, 90,180, + 8, 0,118,254,221, 34,171, 88,153, 42, 20, 90, 69, 5,215, 87, 31,121, 34, 45,205, 28, 44,251,191,213,167,229,204,209,146, 0, + 64,235,142,189, 69,103, 78, 30, 55,227,128,121, 9, 44, 59, 79, 84,126, 62, 26,140, 60,175, 44,237,255,215,175, 95, 67, 44, 22, + 99,223,222,189, 72, 75, 76, 68,221,186,117,209,184,113, 99, 60,123,246, 12,119,239,222,133,157,157, 29, 28,220, 63,196,133, 23, +122,132,199,169, 97,101,101,133,200, 24,230, 31,115, 25, 64, 8, 25,209,190,125,251,217, 63,255,252,179,163,179,179,179, 56, 57, + 57,217,111,245,234,213,117, 87,175, 94, 61,254,139, 47,190,112,250,226,139, 47,108, 28, 28, 28, 68, 9, 9, 9,190, 95,127,253, +117, 3, 66, 72, 85, 74,233,210,178, 56,205,204, 44,108, 89,137, 25, 8, 17,193,218,202, 6, 34,169, 25,120, 78, 4, 35, 15, 88, + 90, 57,224,234,221,125,184,242, 48,123, 84, 82, 42,246,154,240,222, 80, 59, 59, 59, 48, 12, 3, 59, 59,187, 63, 89,170,199,141, + 27,135,141, 27, 55, 22, 14, 35, 86, 86,100,253,180,186,157, 57,201, 23, 89, 9,175, 69, 32,218,170, 56,122,240, 90, 70,250,171, +132,230,239,131,200, 42,168,227, 40,165,120,241,226, 5, 84, 42, 21, 46, 93,186,132,239,190,251, 46,185,184,200,114,114,114, 26, + 97,105,105, 57, 55, 39, 39,103, 81,124,124,252,138,242,120,243, 69,212,155,157,193, 18,134, 19, 77,117,241, 80,210, 48, 33, 33, + 68,236,225, 34, 63,117,247,210,118, 47, 43,122,159, 32,106, 36,240, 52, 43,204,226,134, 99,203,174,141,130,152,250,107,190,175, +210,120,212,244, 83,132, 16,191,210, 44, 91,188,209, 88,223,204,220, 2, 64, 18,238,220, 14, 41, 20, 89,169,105,153,208,234, 89, +104,117, 4, 26, 61,131,182,237, 59, 99,213,186,109,136, 77, 74, 67,193,138,196,247, 5,132, 16,219,192,192,192,209,253,250,245, +195,188,121,243,112,246,231,159,117, 99, 8,201, 18, 1, 52,216,104, 4, 79, 41, 97, 76,152,196, 94,156,103,201,146, 37, 7, 1, + 12, 92, 48, 14, 31,166,231, 96,168,107,119,106, 91,165,123,222,181,125,167, 82, 0,176, 77, 62,251,102,147, 25, 20, 20, 68, 10, + 70,214, 42, 58,194,246,111,135, 40, 40, 40,232, 66,112,112, 48,138,126,151,117,131,165,115,205,174,211,191, 25,183,176, 81,167, + 22, 36,126, 82, 7,164,101,105,184,111,195,245,210, 24,117,217, 34,171, 40,190, 89,189, 26,119, 35,242,222, 99,119, 71, 71, 76, +249,248, 99, 80, 14,184, 18, 22,142,221,103,207, 98, 64,251,246, 48,203, 95,241,103,170,245,169, 36, 43, 86, 81,107, 86, 69,173, + 78, 25, 25, 25,216,187,119, 47, 26, 55,110, 12,165, 82, 9,145, 72,132, 58,117,234,224,209,163, 71,168, 86,173, 26, 8, 33, 56, +116,232, 16,122,245,234,133,231,207,159,227,195, 15, 63, 52,175,140,208, 10, 15, 15,183,164,148,182, 44,176,126, 84, 22, 90,173, + 22,143, 31, 63, 70,247,238,221, 97, 99, 99, 3, 55,183,157, 56,123,106, 59,148,129,159,130, 16, 84, 72,104, 25,141,198,207,130, +130,130, 36,132, 16,168,213, 42,200,229, 10,152,153,153,195,194,194, 18,190,190,126,136,139,139, 67,167, 78,157,116,145,145,145, +107,226,227,227,247, 84, 52,172,254,254,254,102,153,153,153,159, 86,169, 82, 69,154,223,219,245,175, 94,189,250,228,200,200,200, +236,138, 90,181, 10, 4, 22, 33, 4, 44,203, 22, 10, 45, 17,195,192,197,217,177,240, 56,127,126, 26, 41,131, 43, 43, 54, 85, 43, + 3, 0, 79, 79, 79,172, 90,127,132, 9, 10, 10,194,248,241,227, 97, 48, 24,176,102, 77,222, 34,187, 65,131, 6, 65,175,215, 99, +255,254,188, 69,146, 34,145,168, 76,179,201,237,219,183,113,231,206, 29, 24, 12, 6,100,102,102,226,196,137, 19,184,112,241, 34, +118, 29, 58,135, 87, 47,158,161,142,159, 23,134, 15,255, 12, 98,177, 24, 91,182,108, 65,243,230,205,255,209, 10, 65, 44, 22, 15, +222,184,113,163,203,230,205,155, 51, 14, 29, 58,148,251,193, 7, 31,200,150, 47, 95,238,184,106,213, 42, 7,157, 78,135, 9, 19, + 38, 36, 93,191,126, 93,219,179,103, 79,179, 13, 27, 54,184, 84,175, 94,189, 3,128,165, 37,164,167, 25,128, 1, 0, 62,105,221, +216, 74,148,145,173, 6,207,233,240,226,213, 75,100,230,232,192, 27,245,136,142,137, 67,142,198,136,212,180,108,212,169,223,241, +151,144,144,144, 25,132,144,111, 41,165,199,202, 11,103, 88, 88, 24,174, 95,191,142, 87,175, 94,225,197,139, 23,111,252, 55, 98, +196, 8,108,219,182,173,194, 22,173,146, 69, 22, 11,162,173,134, 99,135,110,100, 36, 61,139,127,111, 68, 86,126, 29, 52,199,197, +197,101,142,139,139,139,252,244,233,211, 86, 85,170, 84, 1,199,113,186,226,150,172,214,173, 91,207,220,184,113,163, 75,181,106, +213,198, 1, 88,241,111, 8, 59,195, 96,196,162,181,163,237, 45,164,209,113,120,186, 52,223,151, 32, 11,168,178,128,144, 29, 16, + 53,155,245,114, 92,207,169, 54,211, 54,207, 27,129, 50, 86,200, 70, 62,127,141,181,107, 87, 97,226,132,161,248,253,215, 69,224, +121, 17,180, 6, 22,158,222, 31, 64,171,231, 65, 24, 17,234,214,111,136,243, 33,151, 32,102,128,189,155,215,190, 87,166, 44, 74, +105, 26, 33,100,205,161, 67,135,190, 28, 63,126, 60,120,158,151,206, 93,187, 86,157,156,156, 60, 31, 21,240,127, 85, 2, 79,175, +181,107,215, 70, 76, 91,149,124,112,226, 96,176,175,142,146,180, 59, 79, 96,219,119, 42,197,190,133, 4, 13,252,144,166, 44,185, +137,191, 88,236,251,253, 16, 90, 5, 74,178,232,119, 73,104,224, 91,237,123, 43, 91,155,207, 26,215,241,181,159, 50,126,140,232, +121,130, 6,251,171,124,156,243,199,214,149,102, 9,156,236,151,103, 84,189,188, 34, 15,222,253,199, 31,133,191, 23,239,220, 89, +226,127,241,125,251,154,220, 51, 43,205,138, 85, 81, 75, 22, 0, 40,149, 74,235, 14, 29, 58,160, 93,187,118,232,211,167, 79,225, +156,172,122,245,234, 97,215,174, 93,232,221,187, 55,238,221,187, 7, 23, 23, 23,212,172, 89, 19, 53,107,214,196,241,227,199, 43, + 90,192, 97, 52, 26, 17, 24, 24, 88,176,234,176, 78, 76, 76,140,101,101, 51, 82,171,213, 34, 53, 53, 21,182,182,182,144, 74,165, +104,210,164, 49,190,252,170, 9,236, 93,126, 67, 96, 45, 63,228,230,230, 22, 46,127, 55,161,177, 13,172, 81,163, 6,146,147,147, +145,156,156, 12, 7, 7, 7,184,186,186,194,217,217, 25, 75,151, 46,165, 43, 86,172, 56,169,215,235,215, 36, 39, 39, 87,216,146, +229,226,226,210,194,214,214,118,166, 90,173,150, 22,233,225, 74, 29, 28, 28, 14,187,186,186,206,143,139,139,171,200, 30,155,208, +235,245, 32,132, 32,248,133, 43,114,117, 4, 89, 49,119, 48,254, 35,175, 55,132,151, 88, 44, 54,101, 66,111,238,192,129, 3, 29, + 61, 60,220,241, 58, 50, 12,251,246, 81,252,252,243,207, 5,171, 34, 17,145,223, 49, 40, 56,110,211,166, 13,188,189,189, 81, 17, + 39,153, 60,207,227,193,131, 7,216,121,248, 2, 92,188,106, 33,250,233, 99,220, 61,126, 20, 85, 28,108, 17, 80,191, 33, 12, 6, +195, 91,185,222,120, 23, 48, 24, 12,155,124,124,124,168, 78,167,187, 0, 96,213,195,135, 15,135,198,199,199, 79, 56,114,228,136, +107,191,126,253,226,142, 30, 61,186, 28,192,230,135, 15, 31,142,254,225,135, 31,218,113, 28, 87,226,106, 65,150,101,127,255,250, +235,175, 91,247,235,215,143, 72, 24,131,238,244,169, 45, 34,142, 51,144,111,190,221,100, 12,185,124,129,225, 56, 3,233, 51,240, +107,254,248, 31, 15,153, 81, 95, 45, 54,214,251, 32, 8,161,161,161,206,221,186,117,251, 1, 64,153, 66,171,192, 82, 85,154,133, +146,101, 89, 12, 29, 58, 20,187,118,237, 50, 57,222,195,129,106,150, 94,230,215,127, 90,221,222,156,136,114,138,136,172,234, 56, +118,232, 70, 70,226,211,184,247, 74,100, 1, 64, 74, 74,202,122, 0,235,109,109,109, 19,205,204,204,144,157,157,253,167,242, 71, + 8,145,251,249,249,201,165, 82, 41, 58,118,236,104,235,226,226, 18,193, 48,204,138,216,216,216, 82, 21, 71, 73,195,132, 37, 13, + 39,190,205,170, 67, 27, 7,116,107,210,162,190,197, 19,171,121, 22,114,145,230, 94,149, 8,185, 37, 1,144,169,117,122,113, 53, +106, 64, 22, 73,146,213,107,216,166, 1, 44, 69,102,221, 74, 19, 90, 12,203,222,205, 76,207,232,146,149,173,195,229, 43,161, 24, + 56,160, 6,180,122, 2,158,103,144,147,171, 5, 88, 49, 24, 0,131, 62, 30, 2, 74, 68, 72, 75,140, 3,203,178, 15,241,254, 97, +250,232,209,163,187,124,251,237,183, 85,243,253, 95,121,229,251,191,154, 66, 8,169, 77,203,113, 62, 94, 6, 79,149,163,187,102, + 77, 58,124,105, 93,102, 80, 83,245,211, 6,126, 0, 0,219, 6,126, 72, 19,139,241, 76,196, 34,149, 82,168,139, 89,181, 90, 21, +253,254,143, 89, 7,223,152, 4, 95,244,216,164, 57, 90, 62,213,220, 59,183,106,212,240,171, 25,223,206,176,120,116, 53, 4,211, +190, 95, 69,125, 26,118,200, 94,127,233,174, 46,199,204,187, 75,118,242,211, 43,166,234, 11, 0,232,220,182, 55,234,248, 55,254, +211,159,205,219,228,249,146,188,124,254, 54, 18,147, 99, 77,110,108,243,197, 65,137,115,178, 76, 89,210, 95,130,233, 59, 35, 52, + 52,212, 49, 38, 38,230,141,137,239,222,222,222, 32,132,224,198,141, 27,184,126,253, 58, 6, 14, 28, 8,145, 72, 4,177, 88,140, + 11, 23, 46, 84,200, 26, 83,196,186,244,128, 82,218,138, 16,210,201,221,221,189,196,213,134,166,112,169,213,106,100,102,102,226, +212,169, 83,168, 81,163, 6,126,250,233, 39,184,186, 56, 97,198,140, 73,224,121, 30, 89, 89, 89, 48, 26,141,166, 90,180,248, 2, +107, 17,207,243, 72, 78, 78, 70,213,170, 85,177,122,245,106, 44, 95,190,252,135,184,184,184, 35, 21, 13,163,167,167,167,181,209, +104,252,166,123,247,238, 29,122,246,236,137, 78,157, 58,189,241,255,142, 29, 59, 44,246,239,223, 63,223,195,195,163,179, 94,175, + 95,144,152,152,152,108, 10,239,111,191,229,185, 95, 82,126, 48, 7,211,250, 85,193, 39, 99,183, 96,233,210, 3,144,201,100,111, + 52,188,243,230,205, 43, 83,196,240,148,250, 72, 82,174,198, 77,154,186,196,113,254,252,179, 56,123, 54, 9, 12,195,192,197,197, + 5, 12,195,224,229,203,151, 96, 24, 6, 94, 94, 94, 96, 24, 6,177,177,177, 5,115, 2,211,161, 49,205,151, 33,195, 48,208,104, + 52,120, 29,253, 10, 49,145, 17, 48,207, 74,128,131,165, 18,233, 97, 15, 80,103,248,136, 66,255, 79,255,112, 15,119, 27,128,109, + 69, 78, 45, 33,132,232, 8, 33,125, 0, 28,164,148, 22, 88, 52,126,200,255,148,136, 15, 62,248,160,222,183,223,126, 43, 46,112, +183,225,234,249, 35,167,215,235,121, 0,240,171,211,242, 13,181,255,236,217, 51, 44, 93,186, 20,185,185,185,144,152,226,232, 46, + 95,180, 22,172, 48, 44, 73,132, 85, 68,100, 1,128,157,151,251, 47, 55,238, 92, 48,222,143, 92,167,126,248,228,132, 34, 62,154, + 1,163,123,127, 69, 86,113,203,150,187,187,251, 28,158,231, 41,165,116, 86,145,186, 85,230,233,233,121,233,244,233,211,118, 28, +199, 97,229,202,149,214, 9, 9, 9,214, 45, 91,182,156, 6,160, 84,161, 85,210, 48, 97, 73,195,137, 40,178,234, 80, 38,147,217, +150, 85,125, 20, 95,117,104, 52,194,215,210,194, 26,233,136,129,214,222, 80, 47,195,142, 75, 59, 19, 63,226,158,107, 84,125,127, + 51,163,161, 42,147,165,131,155,210, 26, 60,165,190,165,118, 78, 13,134, 19,247,238,220,237,232,233, 81,131, 61,114,236, 34,122, +244,234, 7,173,150,129,198, 64, 64, 88, 49, 8, 43, 65,237, 58,245, 81, 51,160, 14, 40,128,219, 55,175,114, 58,131,225,204,251, +148,247,174,205,191, 26,232,218,252,203, 21,160, 60, 45,193,143, 86,213, 94,189,122,205, 7,240, 85,121, 60, 78, 31,126, 53,208, +185,105, 30, 79, 81, 63, 90, 95,127, 57, 26, 97, 55,197, 86, 23,239, 44,148,116,250, 0,193,201,103, 9,148,242,255,173, 58, 20, + 51,149,119,205,241, 95, 17, 92, 38, 9, 45, 79, 79, 79,107, 71,115,229,111, 95, 12,255,204, 34,234,254, 53, 36,132,223,192,149, +139, 17,233,187,247, 31, 72,203, 77, 77, 26, 94, 1,145, 85, 56,204,103,231, 92, 5,222,181,254, 44,180,228,230, 14, 0, 0,239, + 90,141,193,154, 89, 85,116,200,227, 79,214,172,202,136,172,162, 21,118, 73, 62,180, 70,141, 26,133,141, 27, 55,162, 89,179,102, +240,241,241, 41,172,236, 43,106, 53, 43,110, 93,170,204,106,195,162,200,206,206,134,151,151, 23, 54,108,216,128,135, 15, 31,194, +194,194, 2, 3, 7, 14, 68,118,118,118,161,192, 50,117, 50, 60,165,244,217,233,211,167, 27,245,239,223,159,138,197, 98,146,145, +145, 1,107,107,107,172, 94,189, 58, 55, 62, 62, 62,184, 18, 34,171,159, 68, 34,153, 52, 96,192, 0,214,207,207, 15,137,137,137, +176,180,180, 52, 16, 66,196, 0, 96,109,109,109, 80, 40, 20, 24, 61,122, 52,234,214,173,219, 98,202,148, 41,205,220,220,220, 86, +199,198,198,110, 41,171, 44, 17, 66, 10, 27,212,225, 43, 30, 67,167,203, 19, 42,107,214,172, 65,254, 92,183,255, 13, 17, 68, 70, + 2, 38,172,100, 49, 55, 55,135,143,143, 79,137,121,223,162, 69, 11,220,190,125, 59,111,104, 82, 36,130,163,163, 35,174, 92,185, + 98,210, 74,170, 2, 71,144,161,161,161,168,229,109,143,135,103, 79,195, 94, 41, 70, 93, 87,103,184,183,104,133,136,136,136,127, +204,154,149,239,155,106, 12,128,246,249,101,112, 19,128, 81, 69,142, 87, 83, 74,127,169, 8, 39,199,113,148, 97, 24,242,250,245, +107,189, 82,169, 36,182,182,182, 34,153, 76, 6,173, 86, 91, 40,184,158, 61,123,134, 99,199,142, 33, 38, 38, 6,182,182,182,140, +149,149, 21,244,122,125,186, 41,252,190,190,190,112,118,118,126, 99,226,251,240,225,195, 43, 37,178,134, 2,129, 27,127, 92, 80, + 69,198,176, 86,181,236, 59,227,197,227,151, 26, 70, 7,249,255, 7,145, 5, 0,233,233,233,235, 1,172, 47, 56,118,112,112, 24, +198,178,236, 12, 43, 43, 43,171, 11, 23, 46, 88, 59, 56, 56,144, 45, 91,182, 24,102,205,154,149,193,178,108, 58, 33,100,217, 63, + 47, 14, 17,158,146, 25,233, 37,182,113,229,239,107,232,213, 9,175,167,213, 76, 23,215,112, 32, 1,129,232,149,244,232,242, 48, + 46,178,105, 98,124, 2, 67,193,135,151, 81, 7,111,154,246,237,188,111, 34, 30,223,245,148, 91,202, 49,106,244,183, 8, 62,121, + 30,132, 17,227,210,213, 27,208,233,141, 72, 73,203,196,128, 65,131,225,238, 98,143,240,235,167,146, 57,158, 95,253,126,137,108, +126, 85,199, 30,195,108,100, 10,101,126,154, 24,177,237,215, 73, 96,152, 21,152, 61,123, 54, 2, 3, 3,199, 18, 66,190, 43,207, +143, 22, 33,252,170,218,173, 6,217, 72,100,121, 60,148, 55, 98,195,222,105,249,126,180, 38, 98,245,250,253,181, 3,188, 95,204, + 45,203,143,214,251, 34,178,138,126,151, 43,180,170, 84,169, 34, 51, 19, 99,164,173, 66, 50,229,139,143,123, 58, 36, 69,134, 33, +230,209,221,188,225, 5,189, 90, 31, 31, 17,238, 99,194, 67,219, 23,243,223, 65,203, 26,186,210,104, 12,168, 40,103, 65,131, 91, +220,154, 85, 17,145, 85, 18,103, 81,177, 85,212,111,150,135,135, 7,230,207,159, 95,174, 31,173, 18,226, 94,112,190, 19,128, 58, + 5, 98, 11,121,147,225, 59,153,178,210,176, 52, 78, 7, 7, 7,164,166,230,121, 72,104,221,186, 53, 90,183,254,223,122, 6,189, + 94, 95,104,197,178,176,176,248,147, 69,171, 36, 78,133, 66, 49,237,192,129, 3,159, 93,189,122,181,255,228,201,147,197,237,218, +181, 43, 16,115, 42,106,194,222,110,197, 57,141, 70,227,232, 83,167, 78,177, 60,207, 99,195,134, 13,184,125,251, 54, 85, 42,149, + 51,149, 74,229, 42,133, 66, 97, 84,171,213,163, 70,140, 24, 49,120,238,220,185, 76,139, 22, 45,112,237,218, 53,166,106,213,170, + 67, 0,108, 41, 47,238, 55,110,220, 0,195, 48,224,210,162, 49,118,218,110,152, 41, 68,120,252,248, 49,210,210,210,254,228,196, +212,148,244, 44,106, 41, 41,248,180,104,209,162,112, 24,178, 73,147, 38, 96, 89, 22,247,238,221, 43,113, 24,182, 24, 39,181,179, +179, 43, 44, 31, 18,137, 4,231,207,159,199,247,223,127, 15, 79, 91,107,164, 63,122, 8,231,214,109,209,225,179, 17, 24, 56,112, + 32, 88,150,133,173,173,109,161,229,183,188,184,191,101,133, 80,148,243,179, 90,181,106, 13, 9, 15, 15,119,175, 93,187,182, 75, +104,104,104,155,192,192, 64,175,135, 15, 31, 22, 28,203, 96,194,220,156,162,156,183,110,221,218,183,106,213,170,209, 67,135, 14, +149,240, 60,111,140,138,138, 50, 0, 32,206,206,206,236,173, 91,183,248, 35, 71,142, 64,173, 86,195,221,221,157,113,115,115, 35, +103,206,156,225, 31, 61,122,116,131, 82,250,173, 41,113, 55, 26,141,111,184,113, 40,248,189, 99,199,142, 10,191,239, 85,106,250, +254,212,174,165,159, 71, 74,220, 61,196,199, 70,194,152,233,160, 63,118,232,168,182, 34, 34,235,111,200,163,191,147,115,222,211, +167, 79,221,180, 90, 45,164, 82, 41,214,172, 89,163,159, 63,127,126,120, 74, 74, 74,115, 90,194,138,242,226,156,149, 92,117,152, + 86, 6,231,159, 86, 29,102,166, 34,248,208,225, 91,141,204,123,109,194,216,184,228,194,137,141,148, 16,219, 3, 78,254,205,149, +141,107,199, 50,199,231, 48,217, 70, 85,112,105,225,164,148,234, 8, 33,253,122,245, 30,116,110,215,174,157,230,179,230,204,193, +149, 27, 15,145,154,145, 3,158,178,224, 9,193,140, 25,179,224,108,111,139,172,184,167, 42,173, 94,223,171,248, 86, 60,255,245, +124, 39,132, 25,119,230,200,150, 21, 12, 1,159,155,248, 68,198,102, 71, 42, 63, 25,216, 75,212,175, 95, 63, 28, 56,112, 0,161, +161,161,235, 74, 19, 89, 69, 57, 41,101,198, 61,188,176,123, 5, 1,120,117,242, 19,153, 40,231,133,114,200,199,189, 68, 3, 7, + 14,196,193, 99, 87,177,235,232,139,181, 59,143,208,163,239,115,135,165, 82,158,225, 45, 68, 8,109,238, 95,205,173, 69,253, 0, +185,200,168, 70,204,163, 72,164,229,106,112, 38, 44, 42,131,161, 76,165,125,235,228, 85,144, 18, 68, 71, 63,253,211,127, 25, 25, +242,252, 6,189, 98,219, 74, 49, 12,243,134, 53,235,109, 44, 89, 69,195,233,228,228,244,198,118, 46, 69, 27,238,130, 57, 64,149, +112,237, 48, 45, 58, 58,218, 50, 58, 58, 26,148, 82,220,184,113,195,178, 73,147, 38,211,222,198,154, 53,105,210,164, 66,171, 85, +241,239,146,206,149,135,252, 73,233,203,237,237,237,247, 78,153, 50,101,108,147, 38, 77, 58,206,153, 51,135, 0, 96, 43, 89, 0, + 57,158,231, 17, 18, 18,130, 3, 7, 14, 24,245,122,253,200,184,184,184,162,115, 29, 86,186,186,186,158,233,221,187,247,150, 39, + 79,158,176,225,225,225, 48, 69,208,169,213,106,248,248,248,128,227, 56, 44, 28,235,129,236,236,218,224, 56, 14, 70,163, 17,102, +102,102,111,236,115,105, 74, 62, 49, 12, 3,163,209,248, 39,161,117,227,198, 13,176, 44,139,230,205,155,227,238,221,187,133, 22, +173,242, 44, 80,122,189, 62,218,201,201,201,105,222,188,121,133,225, 74, 78, 78,198,233,211,167,241,193,135, 77,225, 63,114, 20, +226,226,226,176,108,217, 50,184,186,186,226,167,159,126, 66, 90, 90, 26, 56,142,251,187,205,233, 93,194,195,195,221, 63,254,248, +227,164,135, 15, 31,186, 31, 59,118,204,186, 91,183,110,102,131, 6, 13, 74,122,248,240,161, 59, 33,164, 41, 42, 56, 9,218,104, + 52, 78, 39,132,156,252,233,167,159,166,125,245,213, 87, 77,134, 14, 29, 42, 22,139,197,124,108,108, 44,183,115,231, 78,226,227, +227,195, 72, 36, 18,114,234,212, 41,254,230,205,155,215, 57,142, 91, 72, 41,189, 84, 17,139,115, 81,145,197,178,172, 73, 34,171, + 56, 38, 56,202,134, 88, 48,201,205, 87,173,153,207,248,121,187,235,183,238, 60,253,250,210,181,167,207, 89, 45, 55,225, 55,224, + 57,254, 31,130,101,217, 61,181,106,213, 26, 54,110,220, 56, 69,167, 78,157,100,115,231,206,205,204,206,206, 46, 81,100,149,242, + 94,254,229,171, 14, 1,252, 58,125,242,177, 9, 95,215, 30, 86,237,115,231, 42, 56,155,155,132,116, 17,203, 88, 90, 51,168,239, +197, 34, 59,229,153,195,209,115,155, 95,162, 28,191,108,148,210, 91,132,144,246, 1,181,235,237, 95,248,211, 66,199,153, 83,167, +136,247, 31, 59, 1,202,233,113,227,194, 5,152, 75,140,244,209,157,179,137, 90,189,174,231,251,184, 5, 79,220,229,149,187, 8, + 33,135,109,109,109,239,127, 54,116,168, 79,173, 90,131,160, 84, 42,177,111,223, 62,108, 91,185,210,184, 28,232,191,158,144,187, +163,242,124,234,149,138,196,107,133, 60,247, 70,124,246,153,111,253,250,159, 67,169, 84, 98,239,222,189,216,178,124,185,201, 60, +255,113,107, 86,129,103,248,224,252,111, 19,252,104, 49, 36,251,250,211,168,156, 27, 79,163,114,192, 83,202, 83,170,101, 24,188, +206,213,235,127,138,120, 30,115,170,146, 1, 1,207,243,248,225,199,113,239, 50,114,133,226,167,178, 75,186, 75,104, 36, 98,138, +238,145, 86,222,134,210, 0, 96, 48, 24, 98, 76,164, 95,224,233,249,167, 61, 80, 23, 84, 54,172, 5,195,129,166,138, 44, 83,253, +104, 1, 64, 74, 74, 74, 60,128,153, 46, 46, 46, 59, 58,118,236, 56, 2, 64,108, 37,243,104, 67,171, 86,173, 70, 2, 96, 9, 33, +235, 98, 99, 99,255, 52,161, 52, 46, 46, 46,194,205,205,109,177,183,183,119,225, 70,211,101,113,242, 60,255,162,118,237,218,250, +146,242,162,180, 99,158,231,203,205,163,140,140, 12, 52,110,220,248, 79,123, 90, 82, 74, 17, 21, 21, 85, 96,113, 42, 76,251,178, + 4, 92, 78, 78,206,168, 47,191,252,114,189, 88, 44,246, 4, 64, 10, 68,174,209,104,100,127,249,229, 23,185,209,104,100, 1, 16, +134, 97, 56,177, 88,172, 57,112,224, 0,199,113, 92,180, 86,171, 29,245, 55,215, 17,123, 73,222, 86, 12,185,225,225,225,126,249, +150,172,152,208,208,208,123,187,118,237,114, 0,176,187,146,101,243, 18,128, 75,132,144, 22,107,214,172,153, 62,106,212,168,198, + 3, 7, 14, 20,181,110,221, 26,193,193,193,198,144,144,144, 27,106,181,122, 65, 69, 4, 86,126, 94,102,122,120,120, 20, 10,174, +114,222,229, 50, 39,242,218,121,201, 86, 13, 30,227, 42,223,176,224,116, 78, 74,156,238,170, 33, 71,247,237,102, 32, 20,255,143, +145,144,144, 48,153, 16, 50,107,217,178,101,113,117,235,214,149, 73, 36, 18,157,169, 34,235,111,180, 30,112,132,144,174, 63,119, +232,123,184,213,140, 47,189, 59,180,105,174,244,168,226,232,246, 40, 50, 17,207,174, 5,231,222, 63,250,227, 43,170, 77,239, 65, + 41,229, 76,224,186, 73, 8,169, 49,105,202,164,130, 77,165,235,180, 59,115,136,254, 63,218, 84,250,135,197,139, 23,251,212,170, + 85, 11,251,246,237,195,153,237,219, 49, 32, 37, 5,231, 89,150,101, 36, 18,187,163,122,253, 18,152,230,184,248,135,165, 75,151, +250, 6, 6, 6, 98,207,158, 61, 56,181,101, 11,250, 87,142,167, 52, 52, 2,224, 80,208, 60, 1,120, 2,160, 1, 0, 5, 0, 45, +242,182,118,178, 47,114,125,106,254,127, 5,255, 95, 4,240, 87, 78,132, 45,223, 51,124,113, 60,124,250,178,193,187, 14,133, 90, +173, 78,243,241,241,169,208,154,107,131,193, 80,230, 24, 46,199,113, 49,213,170, 85, 51,217,106, 97,138, 40, 74, 77, 77,109,248, + 23, 86, 16,111, 53, 23,235,141, 70,132,231, 95,185,184,184,240, 5,141,126, 73, 34,172,164,115, 20,120, 89,145,231,196,199,199, + 63, 1,240,117,101,195, 25, 27, 27,187, 31, 38,108, 26,109,234,117, 0,144,150,150,246,206, 55,243, 37,148,198,206,157, 59,183, + 66, 2, 27,148,198,150,145,215, 15, 1, 52,249,183,215,178, 5, 91,239, 16, 66,152,208,208,208, 17,249,195,219,103, 1,172,203, +247,232,253,182,252,133,130,107,195,134, 13, 19, 40,165,200,202,202, 90, 94, 81,129, 85,216,123, 78, 76, 12,126, 87,113, 79, 75, +212,253,177,115, 93, 76, 91,117,134,126,194,198, 28,221, 22, 8, 40,200, 51,141,163,163,227,239,159,124,242,201, 7, 0, 54,191, + 45, 95, 73,195,137,239, 32,140, 47, 9, 33,117,207, 79,250,254,179,243,214, 22, 65, 48,138,252,160, 99,142, 66,151, 26, 12,224, + 55, 83,172,226, 69,227,139, 60, 55, 37, 75,255, 63,229,115,190,255,171, 9,195,134, 13,195,172, 89,179,112,106,201, 18,253, 24, + 66, 50,197, 0, 61,153,215,209,100, 8, 48,213, 84,158, 33, 67,134, 96,214,172, 89, 56,190,112, 97,165,120,202,129, 3, 33,228, + 24, 0, 76,155, 54,237,219,249,243,231,219, 76,159, 62,189,206,130, 5, 11,126,202, 63, 14, 43,248, 63, 63, 79,187, 77,159, 62, + 61,160,200,255,217, 0,110,253,197,233, 89,162,103,248, 55,122,236,239,250, 3,160,189,192, 41,112, 10,156, 2,167,192, 41,112, + 10,156, 2,231, 91,126,130,242, 36, 75,233,223,165,253, 46,114, 14,255,196, 71, 36,244,221, 4, 8, 16, 32, 64,128, 0, 1,255, + 81,171,220,177,183,249,255, 29,134,163, 96,142, 86, 81, 75,233, 6, 32,111,185,123,251, 82, 76,169, 21,113, 28,217,190, 18,102, +223,179, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,254,255,226, 44,143,187,148,251,131, 8, 33,199, 40,165,221, 74,251, 46, + 16, 86,197,127, 23, 57,247,206,166, 29,148, 16,151,145,165,205,209, 18,134, 14, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, +252, 79, 12, 29, 2,160,211,166, 77,155,254,111, 27, 58, 4,224, 2, 96,100,209,143, 9, 67,135,251,216,216, 88, 88, 74,165, 74, + 9, 0,232,116, 42,189,155, 27,178,128,190,255,216,134,183, 2,254,179,166, 93,167,124, 81,159,248, 46,175, 21, 32, 64,128, 0, + 1,255,111,144, 92, 96,169, 2,144, 12,128,228, 31,235,242,191,147,243,219,142,226,191,223,248,255,175, 2,165, 52, 30, 64,137, +171,229, 69,165,137,172,148, 20,165,189, 72,148,238,107, 52,106,106, 2,128, 72,196, 60, 78, 73,177,137,176,183,223,151, 82, 25, +177,229,224,228,116, 71,204,178,110,166, 92,107, 48, 26, 99, 83, 18, 19,223,112, 29, 79,129,255,188,192, 51, 85, 68,188,141,216, +248, 59,132,138,131,131,131,147,147,147,211, 71,150,150,150, 31,102,100,100,220, 76, 78, 78, 62, 88,218,190,135,132,144,249,132, + 96, 74,254,239, 69,148,210,233,101,132,221,228,107, 75,184,215, 71,169, 84,142, 37,132, 4,230,199, 63, 84,165, 82,173,161,148, + 62,253,127, 40,108, 21, 0,122,138, 68,162, 33,246,246,246,141, 19, 18, 18,230, 82, 74,151, 85,146, 75, 4, 96,146,181,181,245, + 64,107,107,235,170,105,105,105,207,179,178,178,246, 0, 88, 74, 41, 45,119,169,244,119,227, 93, 63,108,221,169,245,204,144, 83, + 33, 63,204, 89, 17,119,237, 79,255, 79,118,181,235,216,161,217,172,144,163, 87,231, 77, 95, 21,155, 86,193,176, 49, 0, 10,156, +230,241,249,189, 86,250,142,211, 82, 12,160, 59,128,214, 0, 66, 0, 28, 53, 37,222,165,112,125, 0,224,219,252, 48, 47,165,148, +158,255,151,151, 35, 51, 39, 39,167,133, 0,186,139, 68,162,240,216,216,216,145,148,210,152,127, 56, 76, 34,228, 45,243, 15, 68, +158, 27,142, 91,166,184,112, 48, 5,246,246,246,221, 68, 34,209,216,124,215, 46,107, 82, 82, 82,142,253, 91,243, 70, 38,147, 45, +119,118,118,254, 92,173, 86,171, 8, 33,180,168,191, 71,142,227, 98,146,147,147, 27,190,135, 85,219,173,127,249,251, 50,178, 4, +241, 85,186, 31,173,216, 88, 88,138, 68,233,190, 73, 9, 15, 7,196,197, 63,232, 15, 0,174, 46,117,246, 56, 58,215,222, 29, 27, + 43,213, 55,234,208,219, 92,172, 20,173, 97, 89,113, 61,141, 78,107, 47, 22,137, 83,244,156,225, 30,163,163, 99,227, 31, 31, 40, +209,217,162,152,101,221, 94, 69,156,119,228,244,105, 16,203, 93, 33, 86,120,150, 26, 96, 87, 87,215, 74, 69,212,214,182,186,133, + 94, 38,159, 32, 22,179, 29,120,202, 5, 82, 30, 96,136, 56,148, 51, 26,206, 73,180,218,159,211,210, 34,179, 43,155,136, 53,237, +137, 51, 5, 6,130,160, 3, 40,206, 16, 96,215,227, 20,154, 80,129, 76, 48, 73, 68,188,165,216, 40,122,239, 50, 74,233,228,119, + 93,152,220,221,221,109,250,244,233,179,252,251,239,191, 87,152,155,155,147,232,232,232, 78, 83,167, 78,109,233,238,238,254,117, + 76, 76, 76, 92,113,209, 71, 8,166,240, 60,101, 0,128, 97,200, 84, 39, 39, 39, 37,203,178,127,242,109,100, 52, 26,149,132, 96, + 28,207, 83,146,127,237, 20, 66,200, 10, 83, 4,163, 66,161, 24,212,184, 73,211,175, 23, 46, 94,106,238,228,232,104,198, 25,121, +253,203,168, 87,202,153,211, 38, 55, 81, 40, 20, 43,212,106,245,206, 74,188, 52,132,101,217, 1, 50,153,172, 27,128, 90,249,167, + 31,105,181,218, 99, 70,163,113,183,169, 13,186,179,179,243, 69,150,101,171, 84,228,217, 70,163, 49, 58, 33, 33,161,121, 37, 95, +246,126,158,158,158,191,181,106,213, 74,217,184,113, 99, 72,165, 82,204,154, 53,107, 18,128,101,166, 8, 42,165, 82, 57,192,204, +204,172, 90, 78, 78, 78,164, 90,173,222, 47,149, 74,219,175, 88,177,194,163, 89,179,102, 22,137,137,137,132,101, 89,167, 99,199, +142,125,186,114,229,202, 78,132,144,118,229, 53,114,153,145,116,166,172,123,173, 22,153,145,231,103, 2,232, 82,252,127, 78, 35, + 31, 66, 89,143,110,106,122,247, 53, 42,176,180,158, 16,194,136,197,226, 21,206,206,206,195, 52, 26,141, 6,121,190,215,168,147, +147, 83, 97,131, 3, 0, 58,157, 46, 61, 61, 61,221,175, 18,233,232, 7, 96,184,181,181,245,176,111,190,249,198,166, 75,151, 46, +216,190,125,251, 23, 27, 55,110, 76, 39,132,252, 14,224, 87, 74,233,147, 10,210, 78, 73, 72, 72,232, 42, 22,139,137,135,135, 7, + 11,224,124, 5,194,227, 11, 96, 70,126, 99,179,134, 82,106, 36,132,180, 1,242,222,119, 0,139, 10,132, 27,203,178,107,252,252, +252, 62,122,244,232,209, 90, 74,233, 15,149,125,215,157,157,157,215,175, 94,189,186,127,143, 30, 61,216,228,228,100,183,186,117, +235,238, 0,208,226, 29, 52, 72,159,201,100,178,137,117,234,212,241,127,242,228, 73, 68, 86, 86,214,210,252,244,164,101,220,227, + 14,160,189,181,181,117,187, 25, 51,102,152,119,235,214, 13, 27, 54,108,232,186,113,227,198, 28, 66,200, 57, 0,103,223, 86, 4, +138, 68,162,177, 49, 49, 49,246,148, 82,184,184,184,140, 69, 57,155,155,255, 83, 96, 89,118,197,128, 1, 3,134,237,216,177, 67, +249,234,213, 43,165,155,155, 91,161,243,108, 66, 72,165,219, 79, 1,111,109,209,218, 80, 32,184, 76,242,163, 37,149, 42, 37, 70, +163,166,102, 92,252,131,254, 45, 91,253, 98, 5, 0, 23, 47,124,217,223,209, 57, 32, 84, 42, 85, 70,200, 44,229, 7,122,119,111, + 95,175,111,183, 86,196,221,197, 17, 49,241, 73, 78,191,238, 58,213,249,216,169,243, 7,144,231, 64,172, 68,112,250, 52, 40,244, +103,241,228,242, 74,216,183,142,195,170,227, 49,184,118,255, 37, 84,153, 41,168,226,172,192,226, 9, 29,225,108,163,172, 84, 36, +205,157,124,219, 48,114,229,238,143, 7,125, 98,245, 81,207, 90, 98, 47,103,103, 80, 42, 67, 68,100, 78,211, 19,167,207, 55,218, +191,119,231, 88,115, 39,223, 1, 57,137, 17, 38, 87,110, 13, 92,137, 34, 87,143,158, 34,150,124,218,162, 73, 64,187, 65, 93, 91, + 48,254,181,106, 32, 60,236, 81,199,195,127,220, 88,236,239,196,156,227,140,116,171,153, 4,135,238,196,149,238,208,175, 36,193, +209,161, 67,135, 22, 50,153, 76, 95,244, 58,173, 86, 43, 33, 4, 31, 84, 70,108, 20, 60, 67,167,211, 50, 98,177, 20, 12, 67,190, +174, 83,167, 78,173,148,148,148,243,132,144,223, 98, 99, 43,102, 45,248,138, 16,105,186, 72,212,128,145,201, 92,140, 58,157, 29, + 0, 16,169, 52,221,221,198,166,246,140,111,191, 53,103, 89,150, 79, 77, 77,133, 74,165, 34, 35, 70,140,144, 71, 70, 70,246, 6, +176,178,156, 48, 98,227,198,141,190, 46, 46, 46,186,226,255,197,199,199, 75,123,244,248,168, 50,149,182,239, 7, 31, 54,155,120, +234,212,201, 90, 89,105,233,154,141,203,214,223, 49,200,149,218,170,181,252,196,107, 54,108,177, 26, 57,108,240,151,132,144,123, +148,210,136, 10,112,122, 42, 20,138, 3, 75,150, 44, 9,108,211,166,141,216,209,209, 17,137,137,137,120,244,232, 81,224, 31,127, +252,209,115,203,150, 45,147, 8, 33,189, 41,165,166,120,112,247, 57,183,245, 55, 71, 51, 91, 59, 24, 13, 6,184,214,169, 95,232, +223,236,217, 31,167,193,233,245,224, 13, 6,212,234,214, 51,207, 44,195,243,240,247,247,175,148,215, 93, 66,136,107, 64, 64,192, +182,159,126,250, 73,162,213,106,113,227,198, 13,156, 63,127,158,143,143,143, 95, 80,158,200, 34,132,156,158, 51,103,142,123,243, +230,205, 45, 82, 82, 82, 96, 52, 26,237, 15, 29, 58, 52,182,126,253,250,150, 30, 30, 30,210,173, 91,183, 34, 39, 39, 7, 28,199, +217, 86,171, 86,205,118,208,160, 65,186,173, 91,183, 78, 2,176,176, 52, 75, 86, 86, 36,157,153, 64,170,117,246,107, 48, 4, 9, +228,100,231,175,187,184,156,176,172, 78, 10, 45, 91, 93,170, 87,183,168, 86,211,108,170,185,101,109,219,172,216,179, 83,187, 84, +175,190,241, 68,100,249,157, 33, 66, 8,195, 48,204,138,222,189,123,127,188,107,215, 46,229,163, 71,143,148,181,106,213, 2,207, +243,133, 30,248, 11, 28,206,250,248,248, 84, 38, 29, 23,140, 30, 61,122,106,255,254,253, 81,167, 78,157, 66,167,168,179,103,207, +198,212,169, 83,109, 46, 94,188, 56,105,231,206,157,147, 8, 33, 11, 41,165,211, 42,210,150, 23,109, 47, 43, 24,172,239, 94,188, +120,209,239,192,129, 3,131,167, 76,153,226, 3, 96, 28,128, 89,169,169,169,173, 0,192,206,206, 78, 10,224, 60, 33,228,179,111, +190,249,102,204,180,105,211,208,181,107,215, 89,132,144, 31, 43, 99,229, 35,132,176,246,246,246, 93,123,244,232,193, 26, 12, 6, +152,153,153,193, 96, 48, 84,127, 75,129, 69, 0,172, 30, 53,106,212,152,209,163, 71,195,198,198, 6, 6,131,193,119,215,174, 93, + 27,103,205,154,245, 33, 33,100,120, 73, 97, 37,132, 12, 25, 51,102, 76,159, 79, 62,249, 4, 13, 27, 54,132, 72,148,151,140, 75, +150, 44,193,188,121,243,204, 79,159, 62,221,115,235,214,173, 61, 9, 33,251, 41,165,149,246,133,198,243, 60, 68, 34, 17, 94,191, +126, 13, 71, 71, 71,153,173,173,237, 41, 66,200,134,212,212,212,131,255, 34,171,201,162, 1, 3, 6,124,188, 99,199, 14,115, 0, + 88,188,120, 49, 38, 78,156, 8, 39, 39, 39,152,155,155, 11,106,231, 95, 98,209, 42,238, 71,171, 82,238, 29, 84, 42, 85,253,233, + 95,125, 10,134,201,235, 53,214,168,234,137,249,223,142, 36,135,143,157,170, 95,214,125, 98,185, 43,158, 92, 94, 9,153,199, 4, +104, 13, 28,174,223,127,129, 51,139, 59, 1, 0,124,187,204,128, 86,223,174, 64, 25,218, 74, 21,138, 69, 58,163,241, 10,156,157, +111, 32, 42, 42,185, 60,145,229,224,236,116,108,221,186,133,138,192,234,126,208,115, 6,196, 38,197,130, 16, 25,220,221, 44,240, +217,144, 46,226, 86,173, 92,237,191,251,110,125,176,153,131,111,175,220,228,136,114, 29,134,250, 57,144,205, 45,234,251,244, 31, + 20,212, 92, 86, 59, 48, 0, 18,153,226,127, 2,172, 97, 67, 52,104,216,144,153,150,147,221,225,230,173, 59, 29,246,157,190,174, +245,115, 32,123,158, 36,211,161,101,229, 67, 81,193, 49,126,252,120, 20,244,190, 11,144,152,152,136, 63,254, 56, 87,226, 61,166, +230,117,209,103,252,248,227,143, 22,233,233,233, 93, 54,109,218,212,214,197,197,229,199,248,248,248,203,166,144,124, 74, 72, 21, +200,100,237,134, 45, 93,202,215,251,232, 35,214,218,217,153,225,141, 70, 18,247,252,185,221,178,149, 43, 91,167, 61,123,166,200, +181,181, 77, 75, 87,171, 85, 17, 17, 17,144,203,229, 68, 36, 18, 53, 42, 65,225, 39, 18, 66, 22, 49, 12,153, 74, 8,129, 76, 38, +143, 24, 61,122,244,221,252,191,171, 28, 61,122, 84,217,189,123,119, 21,128, 87,121,230,112,185, 27,203, 50,190,121, 19, 8,177, +200, 20,129,105,102,102,246,213, 15, 63, 45, 52,203, 74,203, 80,235,115,115, 13, 14,150,230,132,152, 91,176, 89,153,217,217,177, +241,201,218, 25,115,231,177,163, 62,251,228, 43, 0, 99, 77, 21, 89,117,235,214,189,121,224,192, 1, 71, 59, 59, 59,100,100,100, + 32, 53, 53, 21, 55,111,222, 4,207,243,232,221,187,183,172,105,147,198,245,191,157, 49,243, 26, 33,228, 67, 83,196,150,153,173, + 61, 22, 55,175,151,215, 88,191, 74, 45,204,159, 13,253,186, 21, 94, 51, 47, 38, 19, 0, 32,151,203,223,102, 11,169, 15,219,181, +107, 39, 1,128,225,195,135,103,101,103,103,207, 7,176,131,150,225, 84, 53, 31,147,102,206,156,233, 86,181,106, 85,175, 29, 59, +118, 32, 39, 39, 7, 0, 28,171, 86,173, 10, 63, 63, 63, 99, 72, 72, 8,124,125,125, 97, 97, 97,129,139, 23, 47,226,250,245,235, +104,208,160,129,133, 68, 34,233, 95,154,208,106,221,169,245, 76, 89,247, 90, 45,252, 26, 12,129,185,165, 11, 54,238,220,141, 39, +119,182,180,208,234, 31,205,156, 63,206,237, 19, 53,149, 13,117,247,177,152, 86,165, 97, 43,187, 26, 1, 31,193,171,193, 93,123, +141,241,210,139, 89, 95, 84, 91, 32,146,107,182,204, 89, 18,151, 90,154,200, 2,176,184,119,239,222,253,118,237,218,101, 13, 0, + 15, 31, 62, 68, 98, 98, 34, 28, 28, 28, 32,151,203, 33, 22,139, 11,247, 39,173, 36,134,174, 89,179,166, 80,180,113, 28, 87,184, + 11,128, 82,169, 68,203,150, 45, 81,175, 94, 61, 28, 60,120,112, 40,128,105, 37,132,177,121,147, 38, 77,182,123,121,121,121, 20, + 61, 31, 20, 20,132,129, 3, 7, 2, 0, 90,181,106,213,174,111,223,190,180, 64, 16,198,199,199,231,220,186,117,171, 3,165,244, + 70, 73, 1, 98, 24, 70, 29, 27, 27,139,111,190,249, 6, 47, 95,190,252,130, 16, 18, 5, 64, 46,149, 74, 11,251,199,132, 16,223, +128,128,128, 21, 19, 39, 78, 68,100,100, 36,194,195,195,111, 86,118, 40,149, 82,106,244,246,246,126,102, 48, 24, 26,114, 28, 7, +181, 90,141, 94,189,122,201,109,109,109, 19, 89,150,125,156,146,146, 50, 56,127, 78,138,169,141,144, 28,192,210,209,163, 71,143, +153, 50,101, 10,206,157, 59,135,195,135, 15,227,147, 79, 62,193,132, 9, 19, 96,110,110, 62,108,194,132, 9,215,144,183,161,121, +113,180, 91,179,102, 13,140, 70,227,159,222, 13,185, 92,142,230,205,155,195,223,223, 31,135, 15, 31,110,135, 34,251,163, 86,176, +145,244,234,221,187,183,148,231,121,228,230,230, 34, 36, 36,196, 92,161, 80,152,187,187,187,143, 0,240,175, 17, 90, 94, 94, 94, +163,119,237,218,101, 94,116,244, 71, 38,147,161, 72, 57, 16,240, 15, 91,180,202,235, 97, 21, 66,167, 83,233, 69, 34,230,177,171, + 75,157, 61, 23, 47,124, 89, 56,116, 8, 48,143,117, 58,149, 30, 0,140, 60, 69,150,138,131, 66,198,224, 85, 66, 54,194,158,167, +148,244,224, 55,150,104,138, 21,158,144, 53,126, 5, 74, 41,116,122, 35,180,153, 9,152, 31,172,194,163, 24, 13,116,185,233,208, +233,243,166, 97,217,219,219,139, 78,157, 58, 49,241,236,217, 63,198,252,254,251,239,108,140,149, 85, 56, 50, 51,235,151,196,105, +107, 91,221, 66,100,166,216,179,118,221, 44, 5,101,159, 35, 34, 58, 23, 53,220, 27,195,222,218, 3, 9, 41,185,184, 18,126, 28, +143,159, 30, 67, 85, 23, 47, 76,248,170,179,252,135,159,118,236,182,177,169,234,153,158,254, 34,171,180,112,230, 99,200,250,147, + 17,224,210,158,195,152, 26, 9, 99,118,220,159, 5,158,131, 39, 26,180,113,131,131, 71,117,217,208, 9,243,134, 0, 24, 90, 18, + 39,165, 52,145,101,217,181, 12, 67,198, 16, 66, 80,167, 78,221,152,165, 75,151,234, 75,120,166,190, 78,157,186, 49, 44,203,184, +231, 85,236,204, 26,158, 55, 38,150, 19,206, 55, 68,141, 84, 42,155,146,103,246,119,121, 29, 28, 28,172,239,215,175, 31,150, 44, + 89, 34,157, 58,117,234, 12,119,119,247,225,197,135,247,138,115,246, 38,196,211,173,122,245,142, 63, 94,185, 66,197, 6, 3, 73, +187,121, 51, 43, 35, 62,158, 75,200,206,150,238,125,252,184,235,231,147, 39, 75, 61, 60, 60,112,249,216, 49,187,228,220, 92,154, +161,213,170, 51, 50, 50, 40,199,113, 55, 75,137,251,116, 39, 39, 39,229,198,141, 27,125, 71,143, 30,125, 55, 46, 46,110,122,126, + 5, 49, 31,128, 63,128, 87, 69,206, 97,221,186,221,177, 35, 70,140,136, 72, 76, 76,156, 94, 86, 56,139, 32,192,209,193, 81,185, +115,253,214, 7,182, 22, 10,198,193,221,149, 17, 91, 91,139, 56,169, 66,194, 3,234,170, 30,213,205, 0, 4,148,146,102,103,139, +247,184, 21, 10,197,129, 35, 71,142, 56,138,197, 98, 24,141, 70, 56, 56, 56,224,229,203,151,200,200,200, 64,118,118, 54, 94, 60, +126, 4,111, 15, 15,124, 55,109,170,203,184,169,211, 14, 16, 66, 26, 22,109,204, 74,220, 0,217,160,255,147,101,175,148,141,200, +223,248, 54, 37,223,139,225,101,116,116, 52,204,205,205, 17, 24, 24,104,126,229,202,149, 75,165,137,172, 98,155, 0,247,111,214, +172,153,197,206,157, 59,209,160, 65, 3, 88, 89, 89, 33, 36, 36, 4, 15, 31, 62,132, 94,175,103,114,114,114, 96, 97, 97,129, 5, + 11, 22,192,203,203, 11, 89, 89, 89,136,142,142,182, 19,139,197,246,165,113,134,156, 10,249, 33, 51,242,252,204, 4,114,178,243, +198,157,187, 49, 98,208, 0, 56,211,231,151,172,170,147, 31, 58,118,111, 54,155,178, 30,221,204, 44,234,216,248, 4,118,135, 68, +106,142,113, 83,230, 33, 34,244,168,141, 42,251,193, 23,196,248,218, 3,192,248,226,156,249, 22, 17,198,195,195,227,243,189,123, +247, 90, 20, 25, 74, 41,220,243,176,232, 38,240,165,109,248,110, 74,122, 18, 66,240,242,229, 75, 56, 58, 58,194,220,220,188,112, + 3,241, 71,143, 30,225,250,245,235, 40,216,141,162, 20,206,193,103,207,158,245, 48, 51, 51, 43,126, 13, 82, 82, 82,192,113, 28, +148, 74, 37,140, 70, 35,244,122, 61, 12, 6, 3, 52, 26,141,185,191,191,255, 88, 0, 55, 74,226,228,121,254,235,254,253,251, 55, +187,113,227, 70,181,149, 43, 87, 66,167,211, 45, 78, 72, 72, 64,159, 62,125,192,243, 60,218,181,107,247, 1,165,244,201,140, 25, + 51, 0, 0, 19, 39, 78, 52,228,230,230,142,174, 76,220,243,227,239,223,183,111,223,106,231,206,157, 67,139, 22, 45,160,213,106, +177,100,201, 18,203,117,235,214, 89,110,221,186,213, 97,202,148, 41,191, 1,232, 84, 22,103,126,126, 45,118,118,118, 30, 51,104, +208, 32, 69,254, 30,166,216,178,101, 11,190,251,238,187, 93, 0,102,156, 56,113, 98,206,225,195,135,135,124,254,249,231,248,238, +187,239, 38, 20, 8,173,146, 56, 95,188,120, 1, 7, 7, 7, 88, 90, 90,230, 85,150,122, 61,238,221,187,135, 51,103,206,160,102, +205,154,166, 52,132,103,203, 16, 89,191,237,220,185,211,226,245,235,215,184,120,241, 34,188,189,189,161, 82,169,202,221, 27,246, + 93,111,254, 92, 30,167, 90,173,214, 68, 71, 71,155, 47, 92,184, 16, 46, 46, 46,240,242,242,130, 92, 46, 7, 33, 4, 6,131,161, +212,237,213, 76, 9,103,235,214, 68,148, 18,107,211,195,202,218,230, 11, 74,169, 40, 51, 51,125,189, 30, 25,251, 34, 35,169,238, +239,138,251,127,220,162, 85,159, 82,122,183,232,158,135, 5,157, 17, 17, 0, 4, 7, 7,211,160,160, 32, 82,240,237,230,134,172, +148, 20,155, 8, 71,231,218,187, 29,157, 3,242,247,253, 98, 30,179,172, 77,132,147,147, 42, 11, 0,244, 28,197,213,199, 25,120, +240, 44, 1, 15,159, 37,192, 76,102,154,241, 69,171,231,242,214,103, 82, 10, 77,206,255, 58,173,122, 85, 58,180,250,188,233, 30, + 58,173, 10,153,201,225,164, 95,175, 14,242, 49, 99, 70,193,197,197,205,161, 52, 62,189, 76, 62, 97,220,196,174,214,182,214, 98, + 28,187,114, 18, 31,212,236, 5,185, 76,140,212, 76, 13, 64,128,167,207,207, 0,188, 5, 66, 35,162,209, 36, 64,137, 78, 29,255, +143,189,171, 14,143,234,120,187,103,214,119,147,141,187,144, 32, 33, 64,112,119, 66,144, 34, 1,138,123,209, 66,113, 47,193,138, +147,180,184, 22, 43,238,197,138, 59, 65,130, 67, 4, 2, 1, 66, 60, 33,238,235,247,222,249,254,136, 52,132,200, 6,232,247,179, + 61,207,179,207,238,221,123,247,221,185, 51,115,103,206,156,119,230, 29, 15,249,233, 63,223,204, 6,176, 72,159,244, 50,177,143, + 33,114,239, 6, 33,171,131, 46,229, 13,184,140, 40,192,216, 30, 74, 34, 71,106, 66, 20, 94,223, 61,153,183,224,180, 28,176, 44, + 59,201,198,198, 38, 99,193,130, 5,237,171, 87,175,174,157, 56,113, 98, 96,100,100,228, 39,219,218, 84,174, 92,121,221,182,109, +219,240,238,221,187,184,149, 43, 87,222, 78, 78, 78, 94, 88,193, 7,212,135, 16,178, 33,223, 21,151,114,230,204,153,198,254,254, +254,211, 55,108,216, 96, 55,101,202, 20,241,148, 41, 83, 70, 3, 88, 94,150,187,208, 88, 34,233,180,242,206, 29,202,196,198,170, + 15,110,222, 44,222, 26, 16,176, 64,203,113,142,214,182,182,164, 85,243,230,185, 70, 60, 94, 74,106, 98, 34, 99, 83,173, 26, 63, +226,218, 53, 43, 42,147,197, 95,186,116, 41, 43, 39, 39,167,212,173,115,248,124,190,162, 36,119, 97, 73,112,112,112,208,148, 52, +135,171,140,202,157,197, 81,170, 53,175, 90,149,126,215,177,101,245,119,111,194,195,165,230,230,124,247,234, 85,106,190,124, 29, +241,152,178,172,138, 16,146,165,143, 45, 62,159, 63,104,195,134, 13,245, 76, 77, 77,193,113, 28,204,204,204,144,156,156, 12,141, + 70,131,172,172, 44,104,178, 51,161,201,204, 68,112, 84, 4, 90,183,111,143, 1, 93,191,243, 56,112,230,175, 65, 0,142,150,101, +215,177,126,163, 66, 37,107, 89,101,171,191,125, 65, 49, 25,133,164,235,215, 70,238, 16,201,229,232, 60,211,231,107, 26,232,231, + 98,177,248, 98,223,190,125,187,207,158, 61,155,151,144,144,112,153, 16,210,154, 82,250,170, 76, 69, 88, 46,119, 75, 73, 73, 65, +118,118, 54,204,204,204,176, 97,195, 6,216,217,217, 65,161, 80,224,201,147, 39,212,217,217,153,220,186,117, 11,206,206,206, 72, + 73, 73,129, 86,171, 69,110,110,238, 71,141, 70, 83,170,187, 60,223, 61,216,109,102, 55,135, 75,111,158,237,111,235, 68, 62, 60, + 25, 56,203,243,221,155,224,215,209, 87,175,221, 95,206,168,164, 49, 25,177,215,231, 86,109,250,220,122,210,156,165,216,178,122, + 49,222, 60,186,147,102,231,146,181, 85, 70,212,251,154,119, 46, 61,189,185,185,185,170,215,175, 95,155, 4, 6, 6,130, 16, 2, + 51, 51, 51, 24, 25, 25,149, 72,182,190,160,177,228, 21,249, 31,228,230,230, 66, 36, 18,193,202,202, 10,187,119,239, 46,236,120, +171, 84,169, 82,150,153, 29,157, 59,119, 30,228,226,226, 98, 82,244,203,166, 77,155, 98,252,248,241,248,253,247,223, 17, 16, 16, +240,201,126,154, 31, 63,126, 76,208,233,116,251,202, 40,219, 12, 66, 72,215, 62,125,250, 60,187,123,247,174,233,238,221,187,193, + 48, 76,137,175, 93,187,118,225,225,195,135,139, 40,165,175,191,176,195,168,213,175, 95,191, 59,135, 14, 29, 50, 79, 78, 78, 70, + 74, 74, 10,114,114,114,144,155,155, 11,150,101, 81,179,102, 77,194, 48, 76,205,242,242,145,207,231,159,217,188,121,115,207, 31, +127,252, 17, 2,129, 0, 26,141, 6,155, 55,111,198,220,185,115, 19, 1,140,164,148,106, 9, 33, 11,246,237,219, 55,162, 87,175, + 94,104,208,160,129, 71, 89, 54,115,114,114,144,147,147, 3,161, 80, 8,123,123,123,172, 88,177, 2, 26, 77, 94,179, 82,163, 70, +141, 66,151, 39,128, 29, 53,106,212,232, 25, 22, 22,182,134, 82,250, 91, 41,237, 76, 31, 74,233, 56,150,101,179,251,246,237,107, +117,228,200, 17,147,184,184, 56, 60,123,246, 12,139, 22, 45, 74,231, 56,142,229, 56,142, 40,149,202, 15,118,118,118,207, 36, 18, +137, 76,161, 80,164,165,166,166,174,162,148, 94,254, 23,118,230, 68, 40, 20, 98,204,152, 49, 16, 8, 4,144,201,100, 80,169, 84, +208,233,116,133,100, 30, 21,116, 75,187,187,155, 88, 9, 32,250,177, 70,141,118,211, 7, 76,235, 97,227,224,232, 4,115, 83, 9, + 66, 67, 95,181,190,121,227,218,230,218, 53,109,182,115, 26,221,246,215, 17, 25,255,248,102,247,197,185,200,127, 24,215,106, 4, +224, 57,138,236,121,136,252, 85,136,165,180, 68,253, 89,107,235, 63, 83,226,226,196, 90,177,216, 40,172, 64,229,202, 35, 89,253, + 89,224, 8, 24,173, 46,191,161,160,249, 47, 61,137,150,142,197,187, 55, 33,184,123,245, 47, 88, 43,226,144,242,161, 33, 32,170, + 7,141, 50, 19, 42,141, 54,127,244,198, 34,240,217, 13,100,101,166,161,110,147, 30, 0,143,247,176, 52,123,102, 86,164, 71,171, +198,245,249,239,162, 67,208,180, 70,127, 84,115,110,139,168,132, 44,100,228,168,145,158,165, 66,195,186, 62, 72, 78, 87, 34, 75, +161,194,171,119, 7,224,228, 88,141, 71, 4,225, 29,245, 37, 90,234, 87,167,160,126,125, 22, 34,215,214, 16,215,236, 5,190,107, + 27, 68, 7,221, 66,224,165,245,136,125,121, 15,148, 99,225, 80,163,153,190, 15,201,230,203,151, 47, 55,107,221,186,181,160, 83, +167, 78, 13, 28, 29, 29, 27,196,199,199, 7,230,171, 57, 13,186,119,239,222,192,198,198, 6, 27, 55,110, 84, 18, 66, 54,127, 97, +103, 91,212,221,246,216,206,206,110,229,169, 83,167, 54,143, 31, 63, 30,182,182,182,245,202,250,109,178, 80,216, 96,228,170, 85, + 84,200,231,211,163, 91,182,136,150, 94,190,188,118,239,190,125,162, 14, 94, 94,132, 82,138, 23, 47, 94, 24,253,186,101,139,209, +208,239,191,143,140, 74, 74, 98,252, 3, 2,180, 9,177,177,217, 73,185,185, 75,227,227,227, 63,254, 43,106,182, 78,167,123,240, + 33,226,131, 83,147,230, 13,109,158,135,126,120,217,165, 67,171, 86, 60, 30,143,247, 38, 60, 42,192,198,198,212,232,218,213,107, + 90,157, 78,247, 64, 31, 91, 18,137,164, 71,135, 14, 29, 4,233,233,233,112,116,116, 68,114,114, 50,226,226,226,242, 20,135,204, +116,104, 51, 51,161,203,202, 0,155,155,131, 15, 79, 30,163, 97,181,170,146, 19,121,147,229,143,150, 83, 38, 37, 42, 85, 69,149, + 45,177,137, 9,196,114, 57, 72, 5,221,134,132,144,239,205,205,205,231,102,100,100, 92,164,148,174,208,106,181,147,231,206,157, +219,116,211,166, 77,214, 43, 87,174, 52, 29, 55,110,220, 9, 66, 72, 67, 74,169,186,140, 14,236, 61,195, 48,214, 0,108,111,220, +184, 1, 91, 91, 91,100,102,102, 22, 40, 45, 26,133, 66, 33, 77, 77, 77,133, 90,173,134, 70,163,129,169,169, 41,158, 62,125,154, +206, 48,204, 95,229,165,207,212,141,172, 80,107, 67, 23, 90,121, 24,199,107, 25, 11,207,164, 52, 46,125,241,154,248,101, 0,214, +118,115,115,219,165,229,238,124,120, 27,114,206, 34,226,201,237,180,248,183,185,213,118, 93, 8,207, 46, 35, 31, 41, 33,132, 35, +132,208, 26, 53,106, 32, 57, 57, 25,124, 62, 31, 70, 70, 70,144,203,229,152, 55,111, 30, 54,111,222, 92, 97,162, 69, 8,145, 26, + 27, 27,175,226,241,120,131,204,204,204,108, 88,150,133,143,143, 15,122,246,236, 9,177, 88, 12,173, 86, 91,168,104, 22,168, 84, +101, 41, 29,148,210, 23, 0, 76,139,253,135,151,181,181,245, 77,181, 90,141,240,240,112,156, 57,115,166, 61,165,212,191,130,207, +118, 56, 33,164,107,155, 54,109,246, 55,110,220,216,141, 82,138,122,245,234, 97,240,224,193, 56,112,224, 0, 2, 3, 3,145,153, +153,201, 93,187,118,109, 47,128, 53, 21,237,192,243,243,183,102,191,126,253,238, 29, 62,124,216, 34, 53, 53, 21, 74,165, 18,185, +185,185, 56,113,226, 4, 90,183,110, 13,107,107,107, 28, 58,116,136,161,148,158, 43,139,100,241,120,188,221,219,183,111,239, 57, +118,236, 88,108,221,186, 21, 71,143, 30, 69,175, 94,189, 48,104,208, 32, 36, 39, 39,219,173, 94,189,122, 4, 33,100, 55,128,197, +131, 7, 15, 70, 78, 78, 14,158, 60,121, 18,170,231, 51,143,140,140, 12,100,100,100, 64, 38,147, 21,125,198, 8,128, 3,235,215, +175, 31, 50,125,250,116, 84,171, 86,109,113,254,162,160,207, 86,137,114, 28,247, 83, 92, 92,156,133, 64, 32,176, 98, 24, 6, 49, + 49, 49,120,250,244, 41, 38, 77,154,148,150,150,150, 54,158, 82, 26, 69, 8, 89, 48,102,204,152, 21, 51,103,206, 44,172, 75, 51, +103,206, 60, 79, 8,233,250,255,173,230,212,172,105, 81, 71,204,151, 76, 19,137,132, 86,233,233,233,133,109,135, 70,163,129, 90, +173,254, 68,201, 18,137,132, 86,205, 26,185, 94, 80, 42,178,231,191, 12, 75, 47,117,131,244,218,213,205,235, 27, 25,155, 77,247, +238, 58, 96,216,119, 93,123,243, 25,157, 14, 87,174,156,195, 31,127,108,131, 87,155, 26,168, 86,189, 30,166, 76,157,102,166,214, + 48, 62,215,174, 93,158,219,170, 89,213,203,217, 89, 25,243,202,178,249, 63,142, 11,249,228,234, 66,137,174,195,146, 25,100,127, +214,201, 9,233,249, 15,142,181,133,133,197, 22,150,101,189,128, 31, 33,148,219,227,213,211, 71, 72, 75, 23, 66,173,100,193,209, + 60,178,165, 23,113, 81,107,112,231,202, 89,108, 88,191, 22,169,169,169,104,211,174, 61,114, 4,149,224, 82,201, 5, 42,165, 34, +255,161, 1,180, 26, 29,108,236, 92,241,252,121,160, 46, 43, 55,183,212, 6, 73, 36,213,122,184,216,213,128, 90,219, 18, 82,177, + 24,153,217, 26,164,231,147,172, 67,127, 14,132, 90,161, 4,163,209,130,209,232, 96,227,210, 15,181,236, 58,128, 99,207,213,169, + 80,246,113, 44,180, 17,119,160,141,184, 3, 89,203,169,248,203,119, 72,177, 6, 80,191,125,119,147,146,146,146, 28, 29, 29,207, +189,120,241,162,207,192,129, 3,113,235,214,173,113, 0, 38,228,187,111,198, 13, 28, 56, 16, 47, 94,188,192,203,151, 47,207, 37, + 37, 37,125,147,141, 87,197, 98,177, 82,173,206,235, 99,141,140,140,164,229, 92,235,212,180,111, 95, 94,230,243,231, 89,235,239, +223, 95,188,107,247,110, 81,167,142, 29,137,142, 97,192,177, 44,170,187,187,147,239,190,251,206,248,192,241,227, 86,124,157,238, +225,156,201,147,111,252, 62,124,120,246,163,156, 28,125, 39,154, 87,206,119, 25, 2, 64,229, 50,190,211, 27,106,181,122,211, 79, + 63,142,234,228,127,231, 94, 37,151, 74, 78,166, 87,174,249, 7, 74,100, 98, 94,181, 42,110,252,244,204, 52,193,178,197,243,101, +106,181, 90, 95,210,234, 97,109,109,141,143, 31, 63,226,221,187,119, 80,171,213,208,233,116,224, 20,185,208,164,103, 64,147,153, + 6,162, 82, 66,194,178, 80,165, 36,162,114,181,170,192,223, 43, 18,203,117, 69,149, 68,180, 10,222,165,166,166, 16, 25,203,193, + 19, 10,245,222, 28,157, 16,210,184, 89,179,102,199, 79,158, 60, 41, 26, 61,122,116,115, 66,200,150,252, 14,162,227,162, 69,139, + 30,111,217,178, 69, 50,126,252,248,154,107,214,172, 25, 1, 96, 71,105,118, 84, 42,213,241, 11, 23, 46, 12,117,117,117,181, 13, + 14, 14,134, 74,165, 2,199,113,232,214,173, 27, 0, 20,214,153, 55,111,222, 40, 85, 42, 85, 82, 72, 72, 72, 86, 84, 84,148, 6, +122,172, 18, 92,188, 49,254,193,204, 1,206,125,237,236,157, 30, 74,101,149,171,208,156,231,125,102, 14,112, 94,189,238, 68,172, +234,210,251,247,217,139, 38, 85,243,203,205, 14,154,100,238,156,179,245,210,185,112,125, 86, 5,211,130,229,236, 86, 86, 86, 16, + 8, 4, 16, 10,133, 16,137, 68, 32,132, 96,234,212,169,216,185,115,103,153,174,195,226, 36,203,196,196,228,229,210,165, 75,157, +199,143, 31, 47,146, 74,165, 72, 79, 79,199,161, 67,135, 48,102,204, 24,252,241,199, 31, 37,206,127, 41,207,165, 84,130, 90, 58, +125,248,240,225,208,104, 52, 24, 60,120, 48,118,237,218, 53, 29,128,127, 69,235, 59,165,244, 33, 33,196, 61, 48, 48,208, 20, 64, +175, 65,131, 6,237,235,215,175, 31,252,253,253,113,238,220,185,246, 0,194, 0, 40, 1,248,230,111,226,236, 91,214, 66,144,252, + 16, 14,219,108,108,108,122,213,169, 83, 39,176, 95,191,126,117, 15, 31, 62,108,158,148,148, 84,176,248, 1, 17, 17, 17,216,179, +103, 79,194,238,221,187,179, 88,150,181,226,241,120, 23, 50, 50, 50,230,149,225, 46,220,189,126,253,250, 81,249,238, 64,156, 60, +121,146,174, 93,187,150, 44, 90,180, 8,233,233,233,240,242,242,194,246,237,219,167,229,228,228, 52, 88,187,118,237,143, 3, 6, + 12,192,178,101,203,144,155,155,187,190,188,193, 74, 25,228,139, 0,104,181,126,253,122,215,233,211,167,227,228,201,147,104,220, +184,177,236,195,135, 15,191, 3, 24, 91, 82,249, 81, 74,241,225,195, 7, 40, 20, 10,220,187,119, 15,139, 23, 47, 78, 47, 66,178, +166, 77,152, 48, 97,197,180,105,211,176,106,213, 42, 26, 28, 28,156,212,175, 95, 63,187,157, 59,119,242,171, 87,175, 62, 13,121, +155,174,255,191,160,150,187,149, 95,179,166,158,115, 29,156,170,227,208,225, 35, 72, 75, 75, 43,204,147,130,124,161,148, 34, 59, + 59, 27, 31, 63,126,132,153,169, 9, 86,175, 89,209,125,226,184, 81,149,144, 23, 6,227,243,134,206,205,114, 77,255,193, 99,103, + 13, 30, 58, 10,193,129,207,112, 96,223, 14,132, 4,191, 40,180,199,232,180, 8, 11,125,138,176,208,167,176,179,119,197,119,157, +218,147, 33, 67,134,116, 27, 62,116,144, 13,128,127, 44,116,196,127,176,154,245, 89, 28,173,162,115,182, 4,229,201,117,249, 36, +235,229,177, 99,199,172,218,180,105,195,103, 24, 6,151,175, 92,193,164, 9, 63, 96,196,112, 31,104, 97, 1, 70, 35, 2, 39,146, +234,149, 24,165, 82, 1, 10,138,220,220, 92, 4, 4, 4,128,114, 12, 14,236, 92, 11, 74,185, 66,162, 5, 80,104,180, 90, 56,185, +212,196,182, 93, 43, 25, 8,133,143, 75,179,151,149,202,103,117, 12, 69, 92, 82, 52,162, 19, 66, 96,102,226, 2,129,208, 5,169, + 25, 10, 8,120,246,208,169,222,128,205,151, 85, 21,185,177, 80,106,191,174,252,216,204,207,213, 83, 90,129, 70, 87,169, 84, 30, + 60,120,240, 96,247,117,235,214,137,189,189,189,107, 56, 58, 58,182, 2,128,254,253,251,215, 48, 53, 53,197,193,131, 7, 53, 74, +165,242,224, 55, 84,124, 58, 52,107,214, 12,233,233,233,136,136,136, 8, 44,243,222, 52, 26, 43,185,173, 45, 63,233,214, 45, 93, +114,122,122,165, 14, 29, 58, 16, 29,195,128, 71, 8,210, 50, 51, 17, 21, 25, 9,115,115,115,242,242,205, 27,249,230, 41, 83, 78, +215,168, 91, 87, 80,176, 34, 81, 31,156, 59,119,206, 8,121,243,178,202,252,174,130,149, 59,151, 16, 50,106,242,228,201,167, 15, + 30, 60,100,150,152,148, 24, 38, 17,139, 25,185, 92,234, 56,124,216, 68, 65, 70, 70,198, 80, 74,105,142,190,246,210,211,211,241, +225,195, 7,200,100, 50,136,132, 66,112, 74, 5,216,220, 28,168,210,146,193,215,106, 32,102, 89, 88, 26, 73, 80,201,206, 14, 46, + 54,214,122,217,124,119,243,106,225,196,247,162,238,194,213,205, 60, 32, 54,150, 67,108, 34,199,196,243,183,243, 71,163, 34, 96, +209,114,125, 72,150,181,147,147,211, 95,135, 15, 31, 22, 37, 39, 39,227,197,139, 23,129,148,210, 76, 66,136, 9, 0, 46, 52, 52, +244,122, 72, 72, 72,143,252, 85,119,229,173, 22, 91,123,234,212,169,206,109,218,180, 97,170, 84,169, 98,156,152,152,232,146,154, +154, 74, 18, 18, 62,157,235,124,241,226, 69,169, 82,169,204,229, 56,238, 52,242,226, 64,149, 27,191,104,230, 0,103,105,192,115, + 76,245,236, 82,185,158,169,117,125,164, 49,207,235, 61, 12, 76,152, 58,115,128,243,166,117, 39, 98, 85, 50,162,222, 71,216,152, + 74, 2,169,106,191,158,229, 77,173,173,173, 17, 26, 26,138,128,128, 0, 68, 69, 69,225,195,135, 15,159, 16,170,113,227,198,225, +192,129, 3,122, 41, 90,198,198,198,171,150, 44, 89,226, 60,125,250,116, 81, 17, 82,132,201,147, 39, 35, 51, 51, 19,187,118,237, +194,228,201,147, 43,220,241, 23, 43,171,170,157, 59,119,246,118,112,112, 64,106,106, 42,236,237,237,209,166, 77,155,158,132,144, + 42,148,210,136, 47,172,250, 19,187,116,233,178, 98,233,210,165,208,233,116, 24, 51,102, 12,222,190,125,123,252,237,219,183, 27, + 92, 92, 92,166,254,252,243,207,118,118,118,118, 24, 56,112,160, 49,128,190,165, 25,177,180,180,244,221,177, 99,199, 80,111,111, +111,158, 86,171,109,119,243,230, 77, 68, 70, 70, 66,163,209,128, 97, 24,188,127,255, 30,147, 39, 79, 78, 72, 77, 77,245,164,148, +190,215, 35, 93,163, 23, 44, 88, 48,106,234,212,169,248,245,215, 95,177,100,201,146,189,102,102,102,117, 27, 54,108,216,104,201, +146, 37,152, 51,103, 14, 92, 93, 93, 97,101,101, 85,107,209,162, 69, 30, 51,103,206,196,166, 77,155,176,120,241,226,189, 0,246, +124, 73, 70,112, 28, 71,252,252,252, 26,172, 95,191,222,161,128,100,241,120, 60, 28, 59,118, 12,207,159, 63,239, 89,202,111,182, +219,219,219,143,115,112,112, 16, 95,187,118, 77,238,234,234, 10,134, 97,116,249, 36,107,179,139,139,203,164,247,239,223,195,219, +219, 27,225,225,225, 7, 41,165, 35, 60, 61, 61,115,103,206,156,105, 36,147,201,204,254, 63, 59,112, 62,143,140, 92,181,108, 14, +158, 60,127,131, 83,167, 68,120,242,228, 9,236,236,236, 32,145, 72, 64, 41,133, 90,173, 70,114,114, 50,116, 90, 53,234,213,169, +138,253,187,253,144,148,148, 12,240, 72,169, 83,110, 8,143, 12, 27,245, 67, 31,220,189,119, 5,191,255,190, 3, 57, 57,185,165, + 12,190,165,168, 94,195, 3, 78,142,182,136,137,141, 1,225,193,250,159,188,215,255,112,215, 97,193,243,174, 95,120,135,162, 48, + 55, 55,223,112,244,232, 81, 43, 47, 47, 47,126,110,110, 46, 56,142, 67,219, 54,109, 48,117,250,116,156, 59,124, 24,238,205, 7, +131,104,228, 96,140,244, 91,245,160, 82, 42, 80,187, 81, 43, 12, 24, 56, 8,209, 81, 81,232,210,163, 31, 84, 42, 69,225, 8,163, + 64,209,210,104,180,176,182,173,132,171, 87,175,242, 49,102, 76,169,115, 76, 88,173, 56, 40,236,189,170,117,134,242, 57, 2,158, + 28,128, 86,173, 69,189,122,139,160,229,172, 96,235, 60, 14, 58,221, 25,100, 37,223,204,115, 99, 88,121, 33, 54, 58, 26, 60,190, +232,229,151,102, 34,151,155,252, 85,141,110, 70, 70, 70,166,163,163,227,159, 1, 1, 1,195,250,246,237,139,171, 87,175,254, 8, + 0,125,251,246, 69, 64, 64, 0, 62,124,248,240,103, 70, 70, 70,230,183, 40,112, 71, 71,199, 94, 94, 94, 94,131,155, 54,109,138, +243,231,207,131, 82,122, 87,175, 7, 91, 40,164, 60, 30, 15, 28,199,129, 0, 72,205,200,192,219,183,111,145,154,146, 2,157, 78, +135,220,156, 28,206,163, 70,141, 28,202,113, 38, 21, 73, 79,209, 21,134, 40, 97,213, 97,193,119, 95, 64,182,162,228,114,121,116, +118, 78,142,141,133,185, 69,182, 88, 44,102,211, 51, 50, 50, 95,189, 12,214,232,217, 57, 20, 32, 52, 36, 36,164,110,124,124, 60, +162,163,163,193,228,102,131,175,214,128,167, 86,160, 99,171,150,144,129, 66, 10, 14, 66, 78, 7, 33, 95,136,236,188,213,121,229, +186, 59, 10,136,126, 81,101,139, 16,146,231, 46, 52, 54,134, 88,110,242,137,194,165, 79,125,146, 72, 36,135, 79,156, 56,225,224, +228,228,132,101,203,150,193,217,217,185, 86,189,122,245, 20,109,219,182,149,217,217,217,161,118,237,218,104,213,170, 21, 46, 93, +186, 4, 0,239,203,201, 63,134, 16,242,221,221,187,119,103,221,191,127,127, 0, 33,132,248,248,248,160,107,215,174,144, 74,165, + 80, 40, 20, 72, 79, 79,199,206,157, 59, 9,165,180, 81,126, 90, 93,165, 82,233, 17, 66, 72,172, 82,169, 28, 88,220,230,129,245, +245, 29,147,210,184, 49,118,246, 78,125, 60,187, 84,174,215,161, 75, 39, 84,117,239,128, 14, 93,162, 1,192,207, 82, 16, 57,120, +245,194,186,167,173, 43, 89,238,185,122,249,218,226, 54,158, 29, 22,248,140,183, 88,225,183, 35, 61, 75,143,134, 12, 28,199,125, + 18, 59,168,248,249, 17, 35, 70,224,216,177, 99,229,230, 35,143,199, 27, 52,126,252,120, 81,209,239, 10, 92,198, 61,122,244, 64, +223,190,125, 63, 33, 90,214,214,214,176,183,183, 71,100,100, 36, 0,164,234, 89,175,166,142, 30, 61,154, 40,149, 74,140, 29, 59, + 22,187,118,237,194,224,193,131,137,191,191,255, 84, 0,211, 43, 90,223,121, 60,222,234,159,127,254,121,214,228,201,147,145,150, +150,134,139, 23, 47,162, 91,183,110, 56,118,236,152,205,197,139, 23, 87,121,121,121,129,207,231,227,252,249,243, 96, 24,166,204, + 88, 95, 34,145,168,151,183,183, 55, 47, 38, 38, 6, 34,145, 8, 77,154, 52, 65,108,108, 44, 20, 10, 5,226,226,226, 48,109,218, +180,143,169,169,169,237,245,125,142, 68, 34,209,244,169, 83,167,226,232,209,163,240,241,241,217, 7, 96,108,102,102,230,128,251, +247,239, 31,253,254,251,239, 17, 23, 23,135,211,167, 79, 99,241,226,197,100,196,136, 17,216,186,117, 43,166, 77,155,182, 23,192, +216, 50, 86, 72,102, 39, 37, 37,153,185,185,185, 33, 49, 49, 17, 57, 57, 57, 56,125,250,180,237,165, 75,151,170, 56, 57, 57,153, +126,248,240,129, 93,190,124,185,120,250,244,233,216,176, 97, 3, 94,188,120,129, 3, 7, 14,160, 67,135, 14, 76,120,120,120,137, + 42, 89,126,200,134,211,150,150,150,215,140,141,141,145,157,157, 93,176,178,116,182,143,143,207,100, 95,223, 60,145, 61, 62, 62, + 30, 35, 71,142, 28, 78, 8,225,150, 46, 93,106, 36, 18,137,160, 82,169,114,255, 63, 59,110,142,229, 0,112,168, 82, 73,142, 43, +231,118,227, 89, 96, 56,158, 5,134, 64, 44,201,155, 4,175, 84, 42,208,168, 94,117, 52,111,210, 12,241, 9,113, 56,120, 96, 55, + 44,173,157,202,108, 71, 40,165, 16, 9, 88,120,212,176,199,225, 3, 59,112,254,226, 13, 28, 56,120,164,112,206,155, 64, 32, 68, +195, 70,205,209,164, 73, 27,132,127,120,143,221,187,127,135,141,109, 37,131,115,240, 11, 81,232, 58, 44,250, 94,140,249,119,104, +211,166, 13, 63, 39, 39, 7, 42,149, 10, 31, 63,126, 68,100,100, 36,204, 45,204, 17, 30, 31,129,246, 70, 90,124,228,178, 16, 26, +248,146, 37,124,225,139,114,165, 65,207,134,128,103, 67, 76, 26, 61,184,244, 74, 0, 10, 99, 83,235, 60,215, 13,195,188,195,166, + 77,165,142,156, 25, 86,119,253,202,181,155,205, 70,143,232, 37,188,122,115, 23,116, 26, 14, 74,157, 25,114, 85, 26,228,106,133, +224,153,117, 3, 82,252,193, 23, 72,208,162, 65,117,156, 62,117, 73, 75, 25,221, 13,189, 51,200,174, 46,152,196,144, 34, 68,235, + 83,143,158,212,196, 82,111,215, 97, 97,199,203,178,199, 14, 29, 58,212,187,101,203,150, 70, 94, 94, 94,110,249, 29,167,246,208, +161, 67, 10,150,101,143, 85,180, 16,139, 71,131,119,112,112,104, 36, 18,137, 6,247,234,213,171,209,168, 81,163,240,234,213, 43, + 28, 60,120, 48,172,122,245,234,101,198, 16,227,139,197,169, 57, 73, 73,230,242, 42, 85, 4, 22, 38, 38,241,151, 46, 94,116,237, +212,185, 51,137,142,142, 70,106,106, 42, 84, 42, 21, 94, 4, 6, 82, 33,159, 31, 75, 76, 77,121,111,158, 63,231,241,197,226,212, + 10, 36, 53,178,156, 85,135,190, 95,170,110, 85,114,176,112, 91,236,243, 83, 85,149, 90, 85, 55, 43, 43,139, 17, 8,133, 66,103, +123,243,168, 10,186, 33,207, 95,191,126,189,119,167, 78,157, 36, 97, 65, 47,192,100,102, 66,147,153, 14, 17,199,194,178, 81, 3, +240,181,106, 64,163,131,147, 7,133, 42,195, 8,254,143,222,232,212,106,117,185, 65, 13, 11,136, 22,175, 24, 49, 16,203,229,144, +152,152, 66, 34,151, 23, 39, 12,164,156,242, 54,234,213,171, 87,199, 22, 45, 90,128, 82,138,157, 59,119, 66,171,213,138,181, 90, + 45, 52, 26, 13,180, 90, 45,178,178,178,112,224,192, 1,108,219,182,237, 62,128,189,122,144, 85, 70, 40, 20, 78,102, 24,198, 86, + 34,145,104,109,108,108, 68,199,143, 31, 47, 12, 55,209,176, 97, 67, 24, 27, 27,171, 9, 33, 90, 0,176,183,183,215,237,219,183, + 79,240,253,247,223,139, 74,178, 87,179, 94,173, 57, 85, 25, 11, 79,169,172,114, 21, 83,235,250,168,234,222, 1, 0,208,185,199, +104, 84,173,238,130,172,148,160, 42, 42,101,100, 31,145, 32,221,226,229,166,184, 87, 50,239,186,163,114,147,110,191, 69,201,203, +251, 75,236, 40,120, 60, 94,169,238, 88,125, 72, 22, 33,132,103,102,102,102, 83, 48,207, 39,191, 3, 70, 66, 66, 2, 66, 67, 67, + 81,179,102, 77,164,165,165,193,201,201, 9, 26,141, 6, 77,155, 54,133, 82,169,196,250,245,235,113,239,222,189,251,200, 95, 25, + 89,206,127,200,220,221,221, 71, 54,106,212, 8, 23, 47, 94,196,147, 39, 79,226,174, 92,185,226,212,166, 77, 27, 84,169, 82,101, + 20, 33,100, 62,165,165,199,224, 43,201,213,215,174, 93,187, 41,147, 39, 79, 70, 72, 72, 8,126,250,233,167,212,152,152,152,211, +199,143, 31, 31,187,120,241, 98, 94,151, 46, 93,144,144,144,128,213,171, 87,179,247,238,221, 91, 3, 96, 89, 57,249,248, 58, 38, + 38,198, 89,165, 82, 33, 45, 45, 13, 12,195, 64,161, 80,224,210,165, 75, 56,112,224, 64, 98, 62,201,122,167,111,250, 26, 52,104, + 80,155,199,227,225,232,209,163, 0,176,144, 82,202, 17, 66, 78,247,233,211, 39,110,249,242,229, 78,243,230,205,195,143, 63,254, + 8,173, 86,139, 95,127,253, 21,243,230,205,187,144, 79,178,202,106, 68,215,217,219,219,143,251,233,167,159,106,205,156, 57, 19, + 1, 1, 1,182, 79,159, 62,109,242,226,197, 11, 84,170, 84, 9,169,169,169, 2, 43, 43, 43,108,216,176, 1, 51,102,204, 56, 9, + 32,229,193,131, 7,131, 62,124,248,224, 75, 41, 93, 93, 78,126,110,119,114,114, 26, 71, 41,165, 10,133, 34,210,199,199,103,245, +202,149, 43, 49, 99,198, 12,188,124,249, 18,153,153,153, 48, 49, 49, 33, 63,255,252,243,200,133, 11, 23, 98,204,152, 49, 52, 55, + 55,119,219,255,191, 91,138,133, 34, 61, 4,172,218, 2, 13,235,213, 68,195,186,149,113,229,230, 51, 0, 64,199,126,109,160,200, +205,198,190,125, 59,241,238,221, 91, 8,132, 66,152, 91,218,235,163, 4, 66,147,245, 26, 25,218, 4,116,242,106,130,110, 93,218, + 99,239,254, 99, 96,116, 90,140, 29, 61, 20,233, 25, 25,216,191,127, 55,194, 63,188,135, 64, 40,132,149,245, 63, 31, 8,181, 44, + 46,242, 31, 79,180,244,112, 63,129,227, 56,196,197,197,225,233,211,167,136,136,136,128,145,145, 17,148, 12,203,253,126,253, 30, + 71,136, 40,150,163,244, 62,101, 10,163, 20,127,110,131,101,227,138, 68,172, 53,179,176,176, 16,171,213, 74, 48,140,174, 72,175, + 66, 0, 2,136, 4,128,131, 99, 85,196, 68,199, 80,149, 74,117,187,204, 17,148, 90,181,225,236,233, 19,147, 91,181,110, 99,221, +173,227, 82,156, 62,179, 8,233, 89, 89, 80,105,133,200, 85,105,161, 80, 1,230,150, 53,208,180, 94,125,196,199,167, 34,232,137, +127,142, 64,173,208,103,162,232,219,205, 11, 70,187,143,158, 52, 7, 50,215,214, 80,135,158, 6,151,147, 88,168,104, 73,229, 22, +176,116,241, 64, 70,174, 26, 39,110, 60, 3, 0,189,183,122, 73, 76, 76, 84, 56, 58, 58, 30,154, 60,121,242,175,207,158, 61,117, + 6,128,103,207,158,197, 38, 36, 36,204, 77, 76, 76, 84, 84,164, 0,139, 68,131, 39, 70, 70, 70,207,170, 87,175, 30,239,237,237, +109,214,167, 79, 31, 88, 91, 91,227,197,139, 23,240,245,245,125,173,213,106,231,220,190,125,187, 76, 87,143, 70,163,137,123,118, +230,140,105,251, 31,126, 48,159,211,179,231,234,201,147, 39,111, 88,182,108,153,208,221,221,157,232,180, 90, 4, 7, 7,211,195, +135, 14,233,182,205,155,183, 94,108,108, 44,120,124,246,172,144, 81,171,227,254,213,149,216,217,217,217,179,123, 87, 79,143, 53, +235, 54, 65,165,204,193,163,128, 11, 72, 79, 79,198,142,157,167, 60,156,157,157, 61, 99, 99, 99,253,245, 37,192,123,246,236,153, +213,188, 81,163, 70,213, 42, 85, 66,112, 84, 4,196, 28, 11, 17,195,128,175, 85,131,199,168, 80,169, 46, 5,225,153, 32,225, 99, + 22, 86, 30,253, 51, 68, 31, 98, 92,171,123, 47, 44,139,205, 4, 33, 4,107, 91,214,133,216, 68, 14,145,177, 28, 19,255,186, 89, + 72, 12,206, 47,155, 7,177, 92, 14,183,230,109,244,104,116,169,194,196,196,228,105,112,112,112,211,186,117,235, 98,214,172, 89, +136,140,140, 4,199,113, 72, 76, 76, 84, 37, 36, 36,196, 37, 39, 39, 71, 34, 47,254,207, 46,170,231, 72,128, 97, 24,219,103,207, +158, 1,128, 8, 0,110,220,184, 1, 71, 71, 71,152,153,153, 33, 43, 43, 11,115,230,204,145,252,242,203, 47, 0,128,167, 79,159, + 10,139, 18,148,226, 8,126, 22,186, 38, 35,155,166,211,156,231,125,210,152,231,245, 58,116,137, 65,231, 30,163,112,237,252, 94, +220,188,114, 29,150,130,200, 8, 24,103, 95, 74,137, 72,201,138,205,117,223,238,209,120, 44, 63, 33,247,202,246,169,223, 91,240, + 29, 28,184, 19, 62,219, 50, 51,202, 74,171,187,187, 59,236,236,236, 10,231,104, 9, 4, 2,140, 25, 51, 6,148, 82,189, 72, 86, +126, 62,114,166,166,166,201, 42,149,202, 78, 42,149,226,227,199,143,120,255,254, 61,194,195,195, 11, 67, 7,112, 28,167,155, 61, +123,182,112,202,148, 41,248,253,247,223,113,251,246,237,251, 0,150, 82, 74,245, 29,172, 13, 29, 56,112,160,137, 70,163,193,145, + 35, 71, 24, 0, 61, 78,156, 56,241,180,105,211,166,130,174, 93,187,154,108,221,186,117, 40,128, 93, 21,168,238,198,166,166,166, + 34,173, 86,139,173, 91,183, 34, 38, 38,198,147, 82, 26, 74, 8,217, 62,112,224,192,109,117,235,214,173, 30, 18, 18,242, 54, 39, + 39,103, 34,165, 52, 72,143,182,104,116,147, 38, 77, 78,112, 28,231,218,169, 83, 39,227,117,235,214,153,190,121,243, 6,206,206, +206,224, 56, 46,184,162, 91, 88,189,125,251, 54, 52, 33, 33,193,163,125,251,246,184,116,233,146, 31, 33,100, 21,128, 95, 39, 76, +152,224, 20, 21, 21,133, 70,141, 26,193,210,210, 18,111,222,188,201, 78, 72, 72,216, 6, 96,126,121,177,190, 40,165, 31, 0,204, + 37,132,212,223,190,125,251, 96, 75, 75,203, 22, 47, 94,188,192,221,187,119,177,102,205, 26,252,242,203, 47,104,219,182, 45,102, +205,154,149, 2, 96,112,190, 75, 91,175,184,121, 5,202, 22, 0, 52,105,210, 36,222,215,215, 23, 99,199,142,165,127,252,241,199, +198, 67,135, 14, 77, 31, 58,116,104, 97, 31, 56,114,228, 72,122,240,224,193,145,101, 45, 4,248,135,160,211,106, 53, 48,181,172, +138,156,140,104, 36,199, 4,192,200,196, 30, 93, 58, 52,128, 66,169,193,185,179, 39, 17, 20, 28, 8, 30,143, 7, 59,251, 74, 48, +183,176, 70, 88,216, 91, 0,120, 85,182, 77, 45, 76, 44, 42, 35, 39, 51, 6,154,164,103,144,201,109, 49,234,135, 62, 80, 40,181, + 56,117,250, 36, 66, 66,130,192,231,243, 97,239, 80, 9,102,230,121, 54, 9, 45,211,166, 1, 40, 57,158, 86,185, 68,139,207,231, +223,186,124,249,114,255,230,205,155, 11,222,189,123,135,119,239,242, 6, 55,233,233,233, 12, 1,251,103, 98,208,153, 33,101,144, +128, 78, 5,171, 51,138,238, 93, 40, 55, 49,137,123,243, 58,212, 46, 61, 45, 17,129,207,239,225, 93, 88, 48, 34,194, 67,161,213, +170,192,231,241,192,227,243, 80,185,106, 29,220,187, 31,160, 81, 49, 76, 64,105, 54, 1, 32, 45,237,125,182,220,174,198,160, 21, +203,230,159,159, 49,103,137,108, 64,255,223, 17,244,230, 21,114, 24,123, 80, 10,216, 91, 25,163, 97,181,159, 17, 23,159,140,163, +123,183, 42, 56,173,118, 88,209, 24, 90, 37,217, 4, 0,187, 20,212,222,182,115,239,152, 93, 7, 14, 47,153, 51,101,188,221,247, +125,135, 65,156,246, 10,186,248,103,168,218,180, 27,136,196, 28, 23,175,222,132,255,211, 87,137, 28, 75,151,216,165,226,143,242, +108, 22,115, 33, 62,248,248, 49,193,185, 72, 20,120,103,137, 68,250,160, 28, 82,213,169, 88, 92,161, 79, 34,206,243,249,188,198, + 43, 86,172,208,217,217,217,105, 67, 66, 66,240,251,239,191,115,207,158, 61,187,202,227,241, 54,199,199,199,171,202,179,105,163, +211, 5, 30,246,241,169,221,172,111, 95, 58,100,202, 20, 5, 36,146,169,171,215,174,245, 73, 78, 79,119,164, 28, 7, 27, 75,203, +216,213,243,230,249,246, 31, 56, 48,253,229,189,123,178,128, 51,103,100, 98,134,121, 86, 94, 58,191,145,223,187, 84,155,177,177, +177,254,238,110, 46,216,183,107, 29,180, 90, 53, 18,226,242,132,172,148,212, 76,148, 69,178,138,219,204, 95,117,213,119,225, 47, +191, 60, 92, 56, 99,186,125,187,142,157, 16, 29,248, 2,218,180,100, 16, 29, 3, 33, 17, 32, 55,201, 8, 73,137, 57,152,123,240, +120, 82,142, 66,209,183,120, 39, 81, 90, 58, 11, 20, 43,137,169, 9, 68,198,114,136,229, 38,159,168, 88, 82, 83, 83,136,141,229, + 16,136,197, 37,169, 52,159,217,204,201,201,233,215,191,127,255,160,199,143, 31, 91,140, 29, 59, 22,173, 90,181,122,174, 84, 42, +189, 40,165,217, 95,154,159, 2,129, 32,169,113,227,198,182, 66,161,144, 25, 51,102,140, 32, 37, 37,165, 48,178,122, 78, 78, 14, + 46, 93,186,132,154, 53,243, 86,245,191,124,249, 18,117,234,212, 41,213,230,216,159,131,227, 0, 44,155, 57,192,121,245,195,192, +132,169, 0,252,170, 86,175,132,155, 87,174,227,238,205, 0,159, 22,117,185, 77,221,135, 53, 93,110,228, 53,112,142, 71,227,177, +124,185,169, 3,246,159, 58,201, 15,125,182,123,165, 66, 17,236, 6, 96,118,105,233, 36,132,128, 82,250, 89, 40, 7, 62,159,143, + 67,135, 14, 85,244,222,143,239,218,181,107,194, 79, 63,253, 36, 74, 72, 72,192,235,215,175,145,155,155, 11,169, 84,138, 43, 87, +174, 48, 0,182, 30, 58,116,232,202,161, 67,135,186, 34, 47, 46,206,141,138,212, 79, 99, 99,227,201, 93,186,116,193,235,215,175, +241,228,201,147,147,148,210, 32, 66,200,201,119,239,222, 13,106,219,182, 45,246,238,221, 59,185, 52,162, 85,154, 77,142,227,138, +198, 76, 74,203,175,187,129, 0, 90, 84,180,220,243, 39,240,182, 6, 0, 43, 43,171, 24, 59, 59, 59,211,192,192, 64,184,184,184, + 64,171,213, 54,175,104, 93,202,204,204, 92,183,121,243,230, 63, 70,143, 30,141,229,203,151, 15, 59,126,252,248,176,238,221,187, +195,219,219, 27,123,246,236, 65, 80, 80,144,159, 62,219,138,149,116,239,249,196, 49,168,118,237,218,147, 42, 85,170,132, 53,107, +214, 32, 56, 56,216,119,217,178,101,243,130,130,130, 80,179,102, 77,201,171, 87,175,152, 47,105, 67, 0,192,212,212,212, 84,167, +211,225,204,153, 51,143, 40,165, 51, 8, 33,182, 27, 54,108, 24, 44,151,203,145,150,150,166, 12, 9, 9, 25, 74, 41, 61,251,255, +221,214, 81, 66, 22,140,253,113,234,246, 31,199, 14,149, 54,105,220, 16,138,172, 88, 40,115, 18,161,200,254,136,205,187,174,130, + 16, 30,108,108, 28, 96,107,239,140,168,168,104,220,191,112, 81,147,171, 80,110, 16,235, 56,191,178,109, 78,201,179,217, 40,207, +166, 34, 55, 9,202,156,164, 66,155,182,182,142,249, 54,163,112, 47,224,162, 74,153,155,187, 78, 67,201,111,255,228,189,255, 39, +163,194,123, 29, 22, 69,122,122,250,180,241,227,199,123,205,157, 59,215,138, 97, 24,190,165,165, 37,162,162,162,152, 63,255,252, + 51, 45, 39, 39,103,218,151, 36, 72, 32, 20, 6,185,215,168,233,245,253,247,223, 51,189,122,245, 20, 13, 31,221, 85, 96, 99,107, +139,204,140, 84,132,189,126,129, 55,175,158,193,189,102, 3, 44, 94,182, 30, 48, 55, 47,119, 35,201,156,196,176, 91,114,187, 26, + 61,150, 46,156,125,172,181,231,119,166, 53,235, 52, 16, 53,116, 51,131, 86,199, 32, 54, 54, 22,103,207, 4,106, 67,158,222,205, +226, 24,205,160,220,100,253,182,224,185,157, 55, 42,218, 81,207,142, 28, 90,181,122,243,172,173, 59,246,205,153, 59,117,172,113, +219, 54,157, 17,124,125, 47, 78,158, 63,150,171, 82,107, 86,139,248, 88, 27,156, 66, 21, 21,205, 3,149, 74,165, 45,190, 32, 74, +165, 82,105,191,182,176,247,236,217,131,196,196, 68, 77,100,100,228,101,134, 97,142,151,182,217,115, 73,216, 68,169,166, 47, 33, +215, 23,182,105,211,117,225,149, 43,210,145, 63,255,172, 25, 54,124,248,108,168,213, 90,136,197, 84, 96,108,204,131, 68, 34,124, +121,239,158,108,227,132, 9,150, 68,163,185,182,183,140,176, 1, 37,224,155,175, 58, 44,162,104, 97,228,216, 25, 80, 22, 81,180, + 30, 60, 9, 67, 69, 20,173,252, 7, 35,154, 16,210, 98,234,130,133,167, 6,117,233,232, 81,215,181,178,196,166, 74,101,200,237, +237,145,154,156,140,123, 79,222,232,150, 29, 59, 21,146, 79,178,244,138, 43,195,113, 92,222, 36,119, 0, 29,167,205, 5,225,243, +129,252, 48, 14, 5, 43,135,170, 52,109, 5, 34, 16,128,165, 28,212,106, 53,213, 35,157,177,132,144,126,195,134, 13,187,113,254, +252,121, 94,151, 46, 93, 26,158, 62,125,154,251,154,186,163,211,233,156,243, 9, 87,150,145,145,145, 96,212,168, 81,208,233,116, + 80, 40, 20,200,204,204, 68,104,104,168,122,192,128, 1,146,124, 2,161, 27, 52,104, 80,185,237,199,186, 19,177,170,153, 3,156, + 55, 89, 10, 34, 7,103,165, 4, 85,177, 20, 68, 70,180,168,203,109, 90,119, 34, 86,181,116,134,249,138,148, 72,255,176,132,220, + 43,219,247,159, 58,201, 31,209,167, 31,235, 44,127,235, 35,181,165,127,118,232, 89,110,163,246, 89,112, 82,125, 72, 86,113,100, +103,103,207, 91,180,104,145,119,122,122,186,115,215,174, 93, 69, 30, 30, 30,120,248,240, 33,206,159, 63,207, 60,120,240, 32, 38, + 55, 55,119, 62,165, 84, 5,224,234,151,228,105,141, 26, 53,170, 8, 4,130, 2, 87,218,150,252,175,183,156, 62,125,122,208,216, +177, 99, 81,185,114,229,218,132, 16, 9,173,192,115, 68, 41, 45,244, 50,124,227,142, 34,124,227,198,141, 78,246,246,246,228,210, +165, 75, 12,159,207,175,176,114, 67, 41,221, 67, 8,105,174,211,233,126, 28, 55,110, 28, 60, 61, 61,193, 48, 12, 14, 30, 60,136, +221,187,119,251, 85,100,239,214,210, 16, 22, 22,246, 44, 38, 38,166,221,236,217,179,177,102,205,154,121,179,103,207, 70, 76, 76, + 12,194,194,194, 94,124,141,221,172,172, 44,101,116,116,180, 81,203,150, 45,155,184,184,184,132,140, 28, 57,178,206,216,177, 99, +225,231,231, 71,111,223,190,221,159, 82,122,233, 95,209,129,191,126,155,122,160, 94, 53,187, 43,203, 86,172,251,197,173, 90,149, +159,198,140, 26,200,175,225, 94, 7,185,153,177,176,178,182,131,115,165,170, 72, 78, 74,193,229,203,151,216,148,148,140, 61, 44, +143, 44,125,251, 54, 53,254,107,108, 58, 57, 87, 69, 82, 82, 18, 46, 94,188,200,102,164,103,237,132,142,183,236, 85,100,122, 34, + 12, 40, 87,201, 42,105, 50, 60,209,103,226,109,254,202,195,141,121,225, 29,242, 84,174,244,244,244,105,148,210, 20,125,153, 57, + 41, 30, 68,109,192, 0, 17, 46, 92,168, 15,157,174,133,185,137, 73, 71,202,113, 77, 27, 52,104, 32, 31, 56,112, 32,215,166, 77, + 43,177,169,169, 41,169, 93,187,110, 86,102, 70,134, 37, 0, 80,128, 45,143, 69, 23,108, 42, 45,224, 11, 59,177,172,182, 94, 94, + 90,203,223, 84, 90, 31,102, 94,205,142,216, 8, 56, 44,230, 17, 50,138,163,116, 47,195,195,210,240, 68,154,252,165,163,167, 98, +110,191,130, 45,103,230, 85,116,148, 87,212,117,200,227,241, 15, 56, 56, 56,204,143,141,141, 77,162,148,178, 95,170,108, 20,108, +193,211, 99,250,116, 93,227,239,190, 99, 44, 43, 85,226, 40,165,108,196,179,103,228,193,217,179,194, 7,103,207, 74,117,106,245, +173, 19,148,134,235, 99,211,209,209,209,247,220,185,115,122,207,189,234,217,179,231,171,130,121, 91,250,230,167, 91, 53,231, 43, +213,170, 56,125, 87,173, 74,158,123, 58, 60, 34, 30,225, 17,113, 87,223,135,199,118,249,146, 50, 42,186,169, 52,201, 15,225, 64, +245,216, 84,186,184, 77,107,107,235,167, 2,129,192,185, 34, 15, 44,203,178,241,201,201,201,141,244, 76,231,144, 42, 85,170,248, + 69, 69, 69,157, 98, 89,118,198,183, 80, 8, 9, 33,173,248,124,254, 69,150,101,101,197, 21,175, 2, 50, 70, 8,113,149, 72, 36, +159, 76,134, 47,203,230,234,133,117,127,105,217,182,109,159, 7,119,239,158,158,179, 34,228,147,121, 67, 83,251, 88,142, 30, 50, +105,218,111, 71,182,110,252,121,211,233,180, 61,229,170,205,118,118,183, 1,184, 23, 16, 46, 61,242,178, 73, 57,202,176,212,196, +196,196, 23,192, 32,142,227,172, 9, 33, 41,148,210,163, 69, 72,214, 23,231, 39,159,207,247,171, 85,171,214,180, 55,111,222, 28, + 97, 24,102, 76,145,235,215,184,185,185, 77,138,140,140,220,162,211,233,230, 84,224,121, 55,109,219,182,109,250,198,141, 27,121, + 51,102,204,128,191,191,191, 37,165, 52,253, 27,149,187,189,133,133,197, 31, 44,203,122, 80, 74,207,101,103,103,207,163,148,230, + 86,212,102,126,136,135, 65, 78, 78, 78,115,220,221,221,221,223,190,125, 27, 20, 23, 23,183,186,184, 26,244, 21,233,244,238,221, +187,247,185, 13, 27, 54,144, 74,149, 42, 33, 38, 38, 6,211,167, 79,167,103,206,156,233, 73, 41,189,240,165,109, 50, 33,100,193, +132, 9, 19, 86, 12, 31, 62,188,144,208,250,250,250,210, 11, 23, 46,140,164,148, 30,248,210,118,254, 91,170,247,181,171,217, 84, +163,124,118,101,131,186, 30,253,127, 24,214,135, 60,120,242, 22, 15, 31, 4, 32, 54, 62,254, 52,199,227,205, 15, 11, 75,121,251, +181, 54, 3,158,132,225, 97, 64, 0, 77,136, 79, 56, 1,202, 95,248, 42, 60, 57,252,255,235,222,255, 27, 84,173,146, 92,135,228, + 11,183,194,170,112,133, 33,250, 68,171,117,116,116, 68,106,106,115,169, 64,208, 70, 34,145,120,241,248,252, 91,105,201,201,211, +245, 37, 90,255, 68,197,254,172, 67,119, 35,226,210,182, 36,248, 18,155,197, 39,178,127,137,205,138,216,208,215,102,105,155, 74, +115,106,117,188, 21,195, 60,221, 68, 75,207,131,226, 54,157,157,157,127,228, 56,174,138,190,105,226,241,120, 17,177,177,177,187, +190, 36, 63,221,221,221,233,187,119,239, 64, 41, 37,223,178,220,255,137,186,244,191,100,243,192,250,250,142, 53,235,213,154, 19, +252, 44,116, 77,190, 91,177, 16, 75,167, 90,154,180,233,208,126,209,189,155,183,151, 47,222,148,150,253,175, 76, 39, 33,132, 71, + 43,186,186,229, 11,109, 22, 4, 9,173,168, 77,145, 72,180,189, 89,179,102, 63, 62,124,248,240, 15,134, 97,198,253, 47,214, 79, + 66,136, 55,159,207,159, 93,163, 70,141,134, 97, 97, 97, 47, 88,150, 93, 83, 22,201,170,192,224,119,126,149, 42, 85, 38,138, 68, + 34, 73, 78, 78, 78,122,124,124,252, 34, 74,233,241,127,183,252,172,237,110,213,132,210,194,160,219, 43, 67,223,165, 62,254,102, + 54, 41,199,114,148,191,226, 77,120,202,243,255,239,114,255, 79, 39, 89,165,169, 92,130,255,175, 68, 20, 16,165, 50, 17, 31, 31, + 3, 32, 6,192,137,127,215,204,212,135,100, 85, 80,110, 76,252,119,176, 81, 28,249, 68, 42,224, 91,216, 42, 78,154,254, 73,188, +125,251,150, 24, 30,249,127, 63,252, 48, 35, 40, 30,192,244, 38, 94,159,159,203, 39, 87,115,188,122,253,235,211,249, 37, 36,235, + 75,109,126,233,134,207, 90,173,246, 39, 66,200,204,138,172, 86,252,111, 67, 62,169,186,240, 15,216, 93, 5, 96,213,191,251,253, +191,122,155,250, 20, 64,207,127,119,155,255, 99,117,178, 98,155, 74, 27, 96,128, 1, 6, 24,240,111,221,168, 43, 13,185, 96,128, + 1,255, 94, 40,170,106, 21, 37, 94, 4, 64,167, 82, 30,228,235, 21, 48,222,233, 11, 26,138,235, 6,155, 6,155, 6,155, 6,155, + 6,155, 6,155, 6,155,255, 91, 54,255, 91, 73,214, 39,228,170,232,113,193,170,167,127,226, 5,160,147,193,166,193,166,193,166, +193,166,193,166,193,166,193,166,193,230,127,243, 11,192,184,210,142, 13,174, 67, 3,254,113,108,238, 75,156, 0, 96,202, 41, 26, +247, 79, 92,111,128, 1, 6, 24, 96,128, 1,255, 74, 80, 74,119,150,230, 58,252,151, 19, 45, 66,136, 35,242, 2,237,185, 1,120, + 3,224,110, 69,150, 43,151, 96,207, 26,192, 64, 66,200,128,252,155, 61, 1,224,120,121,161, 40, 10, 32,147,201, 18, 85, 42,149, + 45, 0, 72,165,210, 36,149, 74, 85,116, 47, 3,130,207,183, 71,161,121,127, 83,250,196,214,170, 85,171, 38,170,213,106, 91, 61, +254, 62,147, 82, 26,196,227,241,130,229,114,249,205, 55,111,222,156,175,200,189,119,232,208, 97, 36,159,207, 95, 9, 0, 44,203, + 46,184,121,243,230,190,127,176,220,154, 87,114,180,223,171,213,105,153,196,228,180, 69,165, 45,221,222,214,147,248, 10, 8,230, +228,127, 94, 61,241, 92,217, 33, 44, 42,122,125, 25,233,107, 34, 20, 10, 39,219,217,217,117,139,141,141,125, 10,224,103, 74,105, +185, 81,141, 93, 92, 92,126, 16, 8, 4,195, 88,150,173,198,231,243,195, 25,134, 57, 20, 29, 29,125,192,208,140, 24, 96,128, 1, + 6, 24, 80, 30,217, 42,233,251, 10, 17,173, 90,214,196,158, 2,131, 65,208, 25, 20,215, 8,112,244,117, 10,253,168,239,239,189, +107, 17,157,142,201,251, 79, 17, 15,236,165,247,188,157,222,222,222,206, 83,166, 76, 65,171, 86,173,240,240,225,195,150,123,246, +236, 25,205,231,243,131, 56,142,187, 5,224, 33,165,122,133, 82, 48, 6,240, 61,128,161,221,186,117,235,180,114,229, 74,126,157, + 58,117,160, 84, 42,113,251,246,237, 54,171, 87,175,222, 64, 8,185, 14,224, 48,128,179,101,197,134, 81,169, 84,182, 5,156,137, + 16, 98,219,191,127,255,199, 69,201, 85,254,254,106,132, 82,250,128, 16, 18,192,178,236,195, 19, 39, 78,196,212, 34,164,249,248, + 42,162, 63,167,125,208,124, 22, 51, 73,173, 86,219,158,249,109, 21, 4, 18, 9,212,217, 89,104, 57,234,239, 85,160,215,126,153, + 3,194, 49,224,131,166,123,173,216, 16, 4, 32, 56, 62, 62, 62,200,211,211, 51,162,162,133,204,231,243, 87, 94,190,124,217,129, + 82,138, 46, 93,186,172, 4,240,143, 16, 45, 66,136,164, 69,147, 6,183,206,157, 60, 34,205, 73, 75, 68,215,239, 7, 29, 34,132, +140,164,148,158,252,132, 52,117, 39,118, 68,128, 57, 19, 86, 29,230, 3,192,182,249, 67,127,222,208,133,108,154,126,133,126, 36, +132,120, 1,133, 91, 54,253, 70, 41,189,181,173, 59,177, 3, 31,115, 39,172, 58, 76, 0,224,247,249, 67,231,108,235, 78, 54, 78, +188, 88,177, 85,149,132,144,137, 35, 71,142,220,180,114,229, 74,190,131,131, 3,226,226,226,186,214,174, 93,187, 6, 33,164,118, + 89,147,136,171, 84,169,114,172,125,231,222, 85,251, 14, 24,108,100, 99,109,129,248,132, 20,211, 99, 71,254, 24, 95,165, 74,149, +110, 17, 17, 17,131, 12,205,136, 1, 6, 24, 96,128, 1,165,244, 59, 95, 30,222,161,177, 35,145,229,106,209, 91,192, 39, 63,180, +109, 94,167,227,144,238,109,121,181, 61,170,227,213,203,208,239,206,222,124,180,186,182, 29,239, 6,195,210, 3,198, 34,156,121, + 22, 95,246, 74, 24, 29, 3,193,213, 51,135, 1, 0, 19, 71, 15,229, 63,126,252,184,122,227,198,141, 11, 3, 2,118,236,216, 17, + 29, 59,118, 36,219,182,109,107,112,245,234,213, 6,187,119,239,214, 18, 66,246,150, 19,132,110,178,155,155,219,234, 77,155, 54, + 73, 60, 61, 61, 33,145, 72, 10,207,201,229,114,244,236,217, 19, 61,123,246,228,199,199,199,119, 57,119,238, 92,151,223,126,251, + 77, 67, 8,153, 77, 41,221,162, 79,230, 45, 90,180,168, 73, 9, 95, 95, 38,132,188,103, 24,230, 69,253,250,245, 99,106, 18, 82, +253,167,238,173,174, 77,108,237,110, 92,154, 29,129, 88,140,253, 35,243,250,234,162, 68, 43,226,230, 37,200, 77, 77, 82,141, 76, + 76,130, 0, 4, 3, 8,162,148, 6,191,127,255, 62,212,131,144, 6, 45, 44,120,123,119,167,177,245, 43, 64,182, 16, 19, 19, 3, + 51, 51, 51, 89,251,246,237, 19, 8, 33, 75,110,221,186,181,243, 27,215,169,230, 75,230, 76, 20,165, 71, 6,225,227,235, 7,152, + 57,160,141,209,244,205,127, 45, 7,112,178,236,138,200,227,253, 22,192,249, 76,207,219,140,119, 81,106,106,170, 39, 0, 88, 89, + 89,137, 1,220, 90,255, 8,221,103,180, 38,228, 43, 42,186,136,207,231,111,221,191,127,255,216, 31,126,248, 33,111,235,136,123, +247, 32,151,203,177,108,217,178,202,179,102,205,242, 69, 41, 27, 1,187,184,184,252,208,190,115,239,170, 27,215, 44,175,157,157, +150,169,222,177,245,248, 19,199,186, 53,121, 19, 38,207, 50,217,168, 85,219,187,184,184,252, 96, 80,182, 12, 48,192, 0, 3, 12, +168,136,154, 85, 46,209,170,105, 67,246,181,109,228, 62,112,136,119, 27, 73,189,186,117, 32,146,252, 29, 40,186,113,147, 38,104, +220,164, 9,207, 39, 39,187,243,227, 39,207, 58,255,121,245,161,186,166, 13, 57,254, 38,153,142,212, 55, 97, 5,155,210,174,252, +222,174, 67,110, 70,146, 20, 0,140,205,109, 85,243,207,124,188,217,186,117,107, 56, 59, 59,139,110,220,184, 49, 6,101,199, 75, +153,255,230,205, 27, 9,159, 95,118, 60, 84, 71, 71, 71,244,239,223, 31, 53,107,214, 20,183,111,223,126, 62,254,222, 14,227, 19, + 72,165,210, 36, 66,136, 45, 0, 88, 90, 90,178, 75,150, 44,121, 65,105,161,103,144, 82, 74, 31,240,120,188,135, 28,199, 61, 58, +123,246,108,108, 29, 66,108,123, 52,174,121,119,226,240,254, 70,244,207, 13,165,146, 4, 85, 86, 86,137,223, 27,201,141,147,101, +198,198, 65, 18, 35,105, 48,128, 32, 0,193, 78, 78, 78,161,117, 8,113,110, 81,179,202,213,109, 51,134,154,232,147,151,141, 27, + 55,174,225,229,229, 37,101, 89, 22,185,185,185,248,253,247,223,205,100, 50,153, 89,183,110,221, 22, 3, 40,172, 0,181, 9,169, +215,207,145, 63,110, 73, 28, 51,233, 11,136,140,121,219,150, 77, 34, 55,251, 45, 54,109,210,162, 45,222,222, 58,136,180,180,108, +100,102,228,128,227,184,207,118, 24,158,120,145, 38,110,235, 73, 86,111,155, 55,116, 46,225,241, 72,131, 62, 63,163,151,125,230, + 84, 66,200, 75, 0, 66,177, 88, 92, 88, 15, 9, 33,142,117,235,214, 93, 93,253,187,182,248,125,193,112, 80,142,163, 0, 86,235, +171,102, 17, 66,108, 77, 76, 76,206, 94,189,122,181,121,211,166, 77,241,240,225, 67,124,248,240, 1, 19, 39, 78,212, 76,154, 52, + 73, 52, 98,196, 8, 50,115,230,204, 41,132,144, 63, 41,165,247, 63,123, 16, 4,130, 97,223,247, 29, 36,206,201,200, 82,105,212, + 90,141,165,181, 57,167,206, 85, 41, 82,210,179, 84,131,134,254,168,121,249,252,209, 48, 0,159, 17,173,175,201, 79, 3, 12, 48, +192, 0, 3,244, 70, 83, 0, 54, 0,146, 1, 60, 41,118,140,252,207, 40,225, 56, 5,121, 94, 41,171, 34,182, 82,144, 55,237,199, + 6,121, 49, 62, 31, 3, 72,255,154,196,149, 22, 21, 30,200,143, 12,159, 31,160,184, 32, 80, 49, 41, 66,180,232,155,100, 10, 38, + 45, 28,108,234,123,176,217,159,111,159, 68,164,230,200, 84,178,136, 9, 15,197,200,233,203,240, 38,185,244,136,220,222,181,136, +206, 76, 12,129,137, 8, 16, 25,153,171,135,248, 93, 9,104,210,164,137,106,190, 39,207,219,119, 91,158,210, 53,115,220, 80,180, +156,241,231,149,240,240,112,198,209,209, 17, 63,252,240, 3, 40,165, 61,202,184,185,196,236, 39, 1,182,175,123,180, 66,179,196, +146,167, 73,133,133,133,225,206,157, 59,136,142,142, 70,181,106,213, 48,102,204,152, 36, 74,169, 93,105, 54,187,118,237,122,251, +183,223,126,243, 92,187,118,109,224,254,253,251, 91,151,230,110,170, 77,136,113,131,202,246, 79,118,251,206,173, 70, 46,237, 21, + 42,162,223,193,220, 95, 73, 74, 32,121, 52, 62,254,239,188,251,181,134, 3,140,205, 76, 96,108, 42, 79, 28,113,245,105,161,146, +149,255,254,166, 49, 33,166,206, 14, 86, 79,143,174, 95,228,196,187,121, 76, 42,218,241,128,148, 71,178,218,183,111, 31,176,114, +229, 74,139,248,248,120, 92,191,126, 29,149, 43, 87,134, 66,161,192,186,117,235, 18,238,222,189,235,152,159, 94,187,102, 53, 93, +131,126,159, 53,202, 76, 52,230, 23, 73, 69, 43,146, 72, 32,216, 18,112,249,216, 36, 51, 9, 69, 70,252, 7,188, 15,125,137,199, +175, 34,116, 7,174, 5,177, 89, 74,181, 55,165,244,102, 73,191,155,220,134, 84,191, 21,111,115,238,242,237, 39,238, 14, 14, 14, + 24, 63,126, 60, 62,126,252, 8, 74, 41, 56,142, 43, 92,165, 49,127,254,124,212,168, 81, 3, 35, 7,247, 82, 72,210,158,181, 63, +247,138, 62,213,179,130,215,117,117,117,189,122,235,214, 45, 59, 39, 39, 39,220,189,123, 23, 31, 63,126,132,189,189, 61,110,220, +184, 1, 63, 63,191,253, 19, 38, 76, 24,176,114,229, 74,233,144, 33, 67,226,174, 92,185, 82,169,248,156,186,202,149, 43,135,158, +187,114, 87,126,243,244,213,247, 22, 38, 70, 48,182,181, 2, 95,110,170,162, 32, 10,123, 91, 11,209,160,222, 29,171, 71, 70, 70, +122, 20, 43,255,175,202, 79, 3, 12, 48,192, 0, 3,254,198,133, 11, 23,168,183,183, 55, 41,120, 47, 78, 33, 8, 33,231,243,249, +128, 6,128,184,200, 49, 8, 33,231,243,213,144, 79,142,125,124,124,230,251,250,250,190, 44, 56, 46,184,102,222,188,121,117,252, +252,252, 86,181,108,217,242,104, 64, 64,192, 18, 0,239,190,150,104,149,166,114,233, 53, 71,139,137,125, 12,145,123, 55, 8, 89, + 29,116, 41,111,192,101, 68, 1,198,246, 80, 18, 57, 82, 19,162,240,250,238,201, 60,110, 88, 94, 38,190,166, 66, 66,200,141,208, +208, 80,188,126,253, 26, 49, 49, 49, 48, 50, 50,250,236,186,123,247,238, 65, 38,147,193,193,193, 65, 63,201, 78,243,233,126,172, + 65,141, 93, 33,111,233,137,148, 33, 63,225,198,141, 27, 72, 74, 74,130, 72, 36,130, 88, 44, 6,195, 48,229,218,227,241,242,118, +252, 45, 80,177, 74,186,166, 61, 33, 2,103, 75,249,185,109,139,167, 85,225, 61, 56, 47, 84, 70,191, 67,188,138,133,185, 62, 74, +158,220, 24, 70,198, 70, 9, 50,153, 81,113,146,245,182, 49, 33, 66, 99,185,244,220,222, 21, 51,237,249,207,111, 72,149,239,130, + 32, 42,193, 70,231,206,157,199, 3, 88, 76, 41,205,104,223,190,189,221,202,149, 43, 45,226,226,226,240,234,213, 43, 28, 63,126, + 60,153,201,187, 81, 66, 41, 93, 10, 0, 45, 9,145,186,216,152, 95,217,242,203, 52, 19,220, 58, 38,198,152, 95, 42, 92,145,204, + 60,122, 94,232, 55, 98,194,164, 77,211,122, 34, 55, 91,137,195,215,158,227,242,179,247,189, 0,220, 43,107,222,219,150,123,244, + 29, 33,164, 99,223,190,125, 95,220,185,115,199,122,247,238,221, 96, 24,166,196,215,238,221,187,113,253,238,179,169,148,234, 77, +178, 28,171, 84,169,114,253,209,163, 71, 54, 70, 70, 70,184,118,237, 26, 50, 50, 50, 10,149,172,145, 35, 71,146,140,140,140,193, +191,255,254,123,191,200,200,200, 53,119,239,222, 77, 69,222,118, 80,159, 84, 4, 62,159,255,158, 97,180,181, 28, 60,170, 11, 6, +244,108,219, 54, 39, 53, 8,114,171,250,120, 16,248,254, 92, 70,122,170,146,207,231,191, 47,122,253,183,200, 79, 3, 12, 48,192, + 0, 3, 42, 76,104,206, 83, 74,123, 20, 37, 78,197, 9, 87,193,231,130,235,124,125,125,123, 20, 37, 97, 0,224,231,231,183,170, +200,177,226, 91,164,173,188,201,240,237, 9, 33, 20, 64,251,146, 46, 82,191, 58, 5,245,235,179, 16,185,182,134,184,102, 47,240, + 93,219, 32, 58,232, 22, 2, 47,173, 71,236,203,123,160, 28, 11,135, 26,205,244, 77,139,170, 86,173, 90, 80,169,242,166,102,169, +213,106,136,140, 45, 84, 51,199, 13,149, 2, 0, 39,144,170,139, 36, 90, 47,131, 38,173,189,208, 44,145,226,177, 93, 30, 1, 46, + 80,182, 86,140, 26, 5,145, 72, 4,145, 72, 84,184,249,172, 62, 68, 43,127, 83, 84,112,121,238, 43, 90,210,249, 38, 18,225,225, +163,139, 39, 55,147, 68, 6,139,213, 33, 15, 16,175,230,232,185, 68,246,130, 62, 59, 39, 27, 25, 27,197,201,140,140,130,101,114, +227,162, 68,235, 61, 0, 80,161,240,192,193,165,147,235, 27, 39,134, 27,171,158,220, 64,130,138,211,154,150,108,102,233,165, 75, +151,108, 5, 2,129, 61,203,178,136,142,142,198,203,151, 47,177,113,227,198,196,236,236,236,246,207,158, 61, 11, 43,146, 94, 94, + 83,153,248,248,129,101,211,170, 10,130,252,165,234,247, 33, 37,146,183,178, 96, 83,175, 79,151, 94,237, 27, 92, 24, 63,124, 1, +122,119,255, 14, 35,218,215,166, 17,241,105, 42, 0,215,244,217,192,154, 82, 26, 71, 8,233,220,174, 93,187, 67, 13, 27, 54,244, +160,148,162, 94,189,122, 24, 60,120, 48, 14, 28, 56,128,192,192, 64,100,101,101,105,175, 94,189,186,129, 82,186, 71,207, 7,206, +200,194,194,226,242,205,155, 55,109,140,140,140,112,245,234, 85, 40,149, 74, 56, 56, 56, 96,210,164, 73, 98, 63, 63,191,253, 89, + 89, 89, 3,124,125,125,165, 17, 17, 17, 91,174, 92,185, 82, 25, 0,143, 82,250, 89, 37,208,104, 52, 59, 15, 31,216,183,105,210, +228, 41, 78, 55, 31,190,186,161,206,201, 54,115,117,141,201,178,177,144,155,108,248,117,169,139, 70,163, 25, 95,114,126,222,254, +162,252, 52,192, 0, 3, 12, 48,224,115, 13,227,194,133, 11,165,114,145,162,228,169, 56,217,170, 8, 73, 3,160,244,241,241,153, + 79, 8, 57,159,175,120, 41, 1,196,255, 19, 36,171,144,104, 81, 74,253, 9, 33,160,148,250,151,106,133, 99,161,141,184, 3,109, +196, 29,200, 90, 78,197, 95,190, 67,138,253,201,151,111, 17,214,115,217,181,155,106,181, 90,176,111,223,190,194,121, 91, 0,192, +178,236, 55, 47,197,138, 16,173,124,162,247, 89, 34,170, 72,228,254, 59,103, 12,104, 97,197, 42,132,154,123,231, 16,167,230,152, + 53,239,180,138, 39, 25,244,183,249,165,216, 60, 51,125, 60, 98,238, 94,135,145, 92, 30, 51,246, 78,112, 81, 21, 43, 8,192, 7, + 0,168, 34, 53,189,113,124,230,144, 54,246, 34,136, 52, 23, 78, 32, 94,205,169,183, 71,234,246,108, 44,185, 80, 65, 41,197,135, + 15, 31,160, 80, 40, 16, 16, 16,128,147, 39, 79, 38, 23, 39, 89,249,233,189,253,199,207,195,154,155,102,127, 20,105,158, 92, 71, +188,154, 83,215,208,135, 92,213,239,211, 90,196, 35, 87, 9,143, 47,235,222,182, 54,166,255,216, 7,235,255,248,139,209,216,182, +237,177,233,236,197,129, 57,106,237,124,125, 72, 86,145, 52, 7, 1,168, 77, 8,145, 0,240, 26, 60,120,240,197,126,253,250,193, +223,223, 31,231,206,157,115, 7,144,144,159,255,203, 0,216, 33,111, 53, 98,105, 59,199,243, 68, 34,209,209,235,215,175,215,113, +116,116,196,245,235,215,161, 84, 42, 49, 97,194, 4,205,228,201,147, 69, 35, 71,142, 36,153,153,153,133, 74, 86, 64, 64, 64,106, +105, 36, 11, 0, 98, 99, 99, 47,185,186,186,182,106,215,174, 93,159,170,238, 53, 77,195,179,179,146,140,140,164,178,187,254,183, + 68, 79, 30,221,223, 18, 27, 27,251,184,228,252,188,161,119,126, 26, 96,128, 1, 6, 24, 80, 58,188,189,189,253, 47, 92,184, 0, +111,111,111,255,114,250,146, 30, 95, 72,134, 10,126, 39,244,245,245,125,233,235,235,251,137,226,245,149, 74, 91,113,215,225, 5, + 74,105, 66, 81, 69,171, 66, 96, 51,163, 63,191, 1,142,171,200,205,126,246,157,133,133, 5, 35,147,201, 62, 33, 90,156,158, 54, +211, 78, 31, 65,248,196,161,133, 74, 86,129,178,133,174, 35,191,138,104,113, 28, 23, 0,224,147, 68, 24,219,213, 28,114,116,120, +231,214,181,171, 58,241,116,199, 55, 34, 86,193,168, 22,191,209,170, 94,103,211, 94,175, 74,152,100, 93,104,147,209, 65,106, 44, +139,146,201,141,139,147,172, 72, 0,144,219,215,232,183,127,136, 87,251, 6, 53,221,120,204,177,117,136, 83,232,114,124, 66,181, +218,240, 92,122,170,148, 60, 92,252,221,119,223, 45,182,178,178,146,110,218,180,201,204,213,213, 21, 12,195,104,138,147, 44, 99, +187,154, 67,142,141,236,218,186,134,189, 5, 79,247,231,102,196, 40, 89,197,198,112,221,254,237,122,144, 44,107, 51,249,149,237, +171, 38,202,140, 36, 66,168, 84, 42,248,109,251, 19, 87,239,135,244, 72, 14, 62,125, 5,192,149,175,168,147, 99,123,244,232,177, +126,217,178,101,208,233,116, 24, 51,102, 12,222,191,127,127,245,205,155, 55, 27, 93, 92, 92,102,255,252,243,207,142,246,246,246, + 24, 56,112,160, 8,192,200, 82,108,252,122,248,240,225, 30, 13, 26, 52,128,191,191, 63, 50, 50, 50,224,224,224,128,201,147, 39, +139,125,125,125,247,103,101,101, 13, 88,181,106,149,244,195,135, 15,101, 42, 89,159,212,107,150, 93,177, 99,253,196,217, 77, 91, +180,225,189,123, 23,198, 68, 55,243,228,221,186,126,238,142,149,149,213,254, 79,242,115, 84,183, 10,231,167, 1, 6, 24, 96,128, + 1,223, 12, 23, 0,120, 23, 87,185,138,147,176, 2,197,170,232,113,241,235,243,207,171,191, 54, 65,197, 21,173,124,226,245,233, + 28,173,162,147,224,203, 3,151,155,172, 23,121,250,140,173,214, 34,186,241, 77, 33,152,239,201,131,200,216, 66,213,115,217,181, +155,165, 93,107,108,108,172,183,162,197,169, 85,229, 17,167, 10, 17,173,252, 57, 90,151, 41,165,159, 16, 45,115,251,154,158, 11, +231, 78,219,208,166, 95, 87, 94,226,143, 45,145,145,163, 86,255,252,138,225, 98, 21,101,147,172,188, 94, 92, 23, 97,100, 44, 15, +150, 26,127, 50, 47, 43, 26, 0,100,118,213,155,249,204,152,178,173,195,144,158, 36,121, 66, 27,164,103, 40,213,179, 95, 50, 36, + 78, 73, 7,188,162,244, 86, 73,230,110,220,184,177, 3,192,142,246,237,219, 39, 26, 27, 27, 35, 39, 39,231,179, 50, 40, 72,111, +235,126, 93,121,137, 99,155, 35, 45, 87,171,254,249, 37,131,120, 37,119,180, 60,146,101, 99,110,114,101,251,202,137, 70,241,177, +145, 16,137, 68,144,203,229,184,118, 47, 24,201, 33,103,190,134, 96,129,207,231, 47,153, 63,127,254,226, 73,147, 38, 33, 53, 53, + 21,231,206,157, 67,247,238,221,113,228,200, 17,215,139, 23, 47,174,247,242,242, 2,159,207,199,249,243,231,161,211,233,222,150, + 82,158,125,198,141, 27, 55,187, 95,191,126,120,252,248, 49, 18, 18, 18, 62, 81,178, 50, 50, 50, 6,111,219,182,173, 95, 68, 68, + 68,185, 74, 86, 49, 52,171,226,214, 72, 52,111,209, 90,168, 21, 73,130,228,184,135,254, 55,174,241, 30,164,165,165, 25, 1,200, +252,210,252, 52,192, 0, 3, 12, 48, 64,111, 85,171, 52, 46,146,156, 79,162,146, 75, 58, 46, 66,176, 74, 58, 38,197, 84, 48, 77, +177,243,129,255,228, 61,233,165,104, 9,236,234,130, 73, 12, 41, 66,180,146, 62, 57, 47, 53,177,212,203,117,168, 99, 32,216,190, +167, 48,142,150, 52, 53, 53, 85,106,109,109,173, 42, 74, 16,140,140,140,224,232,232,136,244,244,116,236,220,185, 19, 0,202,155, + 20,205,152,246, 27,142,102, 67,198,224,137,179, 24, 84,167, 45, 84,182,182,143, 26,245, 9,217, 18,137, 68, 5,115,195,202,235, +116, 31, 17, 66, 34, 1, 60,160,148,210,198, 53,170, 45,151, 26, 27,143,106, 82,223,205,122,250,196,177,194,136, 36, 53,110,182, +153,151,241,231,175,115,229, 49, 84, 62, 41,138,102,220, 47,199, 94,248,247,191, 31, 44,174,100,197, 54,170, 81,109,129,212, 72, +250, 99,139,186, 53,236,125,102, 78, 20, 70, 36,170,201,205,102, 63,103,157,252,237,103,163, 15, 48,153, 29, 67,211,111,233, 81, + 60,139,187,119,239,190,152, 82, 74, 57,142, 91, 4, 0, 69,211, 59,115,242,143,194,240,143, 42,220,104,179, 32,253,228,175,115, + 77, 98, 80,118,122,109,234,247,105,109,103, 97,122,101,251,170, 73, 70, 9,113, 81,144, 72, 36, 48, 49, 49, 65, 76, 98, 38,132, + 2,190,242,107, 42, 27, 33, 68,226,233,233, 57,119,226,196,137, 8, 14, 14,198,132, 9, 19, 18,162,163,163, 79, 29, 59,118,108, +194, 47,191,252, 34,232,210,165, 11, 18, 18, 18,176,122,245,106,221,189,123,247, 86, 1, 88, 93, 98,125, 20, 8,198, 46, 95,190, +156,198,199,199,147, 15, 31, 62,192,193,193, 1, 83,166, 76, 17,175, 90,181,170,112, 78, 86, 69,148,172, 2,196,198,198,250,187, +187,185,160,215,165, 13, 96,116,106,255,140,212,232, 59,175,195,211,253, 45,197,226, 89,109, 26,215,255,162,252, 52,192, 0, 3, + 12, 48,224,155,224, 73, 57,199,255, 82,148,228, 58,212,151,104,189,221,188, 96,180,251,232, 73,115, 32,115,109, 13,117,232,105, +112, 57,137,133,138,150, 84,110, 1, 75, 23, 15,100,228,170,113,226,198, 51, 0,120, 91,145,132,101,103,103,163,113,227,198,216, + 58,178, 70, 7, 85,118,170, 84, 6, 64, 45, 49, 85,157, 17,183,189,121,241,226, 69, 5,199,113, 71, 1, 92, 44,199,204,146, 58, +117,234,108, 89,187,118,173,216, 99,200,104,228, 60,188, 91, 92,157,130, 76, 38,131, 68, 34, 65, 80, 80, 16,110,222,188,169, 1, +176,164,156, 12,123,196, 48, 76,224,209,163, 71, 99,221,171, 57,119,109,223,180,217,212,249,243,124, 76, 94,221,189,138, 69,171, +182,112,213,155,116,201,244, 59,114, 38, 59, 83,238,210, 81, 17,255,250,133, 30,183, 26, 88,140,100,197,123, 84,117,233,208,178, + 81,195, 57,139, 22, 45, 48,125,121,247, 26,126,249,109, 59,117,111,208, 41,243,183,147,103,179, 82,140, 42,127,167, 76, 12,125, +172, 79, 30,222,190,125,123, 7,128, 29, 5,199,197,211,235,179,108, 35, 87,163,105,215,116,191, 35, 39,115,179, 76, 92, 58,149, +149, 94,219,218,125, 91, 85,114,176,188,178,121,197, 79, 70, 31,227,162, 33,145, 72, 32,151,203, 17,157,144,129,197, 27,142,231, +106, 57,174,235, 87,214, 69,137,137,137,137, 68,171,213, 98,235,214,173,136,142,142,110, 73, 41,141, 38,132,108, 31, 52,104,208, +166,122,245,234,213,122,249,242,229,219,156,156,156, 73,148,210,215,165, 25, 49, 55, 55,111,105, 99, 99, 67, 30, 60,120,128,159, +126,250, 73, 51,101,202, 20,209,136, 17, 35, 72,122,122,250,151, 42, 89, 0, 0,103,103,103,207,239,189, 91,161,117,231, 9,254, + 26, 85,198,157,136,215,251,253,121,244,190,180,113,195,250, 95,148,159, 6, 24, 96,128, 1, 6,252,111,160,172,201,240,101,238, + 70,237, 9, 8,106, 88, 97,124, 29, 39,209,199, 3,191, 78,161,217,225, 1, 84,249,120, 7,205, 58,253, 35,189,176,122, 4,189, +184,121, 58,157,224, 93,135,214,178, 37, 31,107, 88, 97,188, 39, 32, 40,107,119,239,238, 53,161,235,236, 6,218,217, 13,212,187, + 6,116, 0,230, 55,106,212,232,204,228,102,160,244,213, 97, 74, 95, 29,166,147,155,129, 2,248, 9,128, 92,223, 29,195, 1, 56, + 0,216,217,184,113, 99,230,214,173, 91,244,205,128, 78,244,121, 45,107, 58,105,210, 36,250,203, 47,191,208,161, 67,135, 82, 27, + 27, 27, 6,121,254, 82,135,242,108,246,234,213,203,153, 82,138, 74,149, 42,153, 55,241,168,254, 49,232,198, 57,122,231,192, 38, +250,199,228,190,180,121, 61,143, 20,251, 90,237, 2,101, 14, 53, 27,234,187,179,185,189,189,253, 60, 74,105, 87, 74,169, 3,165, + 20,238,238, 86,242, 70,181,170,199, 7, 94, 63, 71,239, 30,220, 66,255,152,220,151,182,168, 95, 59,213,217,195,235,181,212,182, + 86,179, 47,221, 45,189,196,244,214,173,149, 98, 87,189,213,139,210,210, 91,212,102,213,102, 3,207,198,198, 39,210, 71,143, 30, +209,139, 23, 47,210,187,119,239,210, 3,199,206, 82,151,166, 3,114,172,235,245,110,253,181,187,186, 3, 48,243,246,246,166,111, +223,190,165,221,186,117,163, 0,204,190,196, 38,128, 51, 17, 17, 17, 52, 36, 36,132,206,159, 63,159, 2,216, 55,113,226, 68,101, +102,102, 38,237,212,169, 83, 52, 0, 30,138,213, 69,125,211, 89,173,138,147, 95,159,158,109,151, 76,254,169,159,231,215,230,231, + 55,220, 21,222, 96,211, 96,211, 96,211, 96,243,191,222,230,127,242, 43,159,135,140, 43,242,222,168,224, 92,153,138,214,237, 60, + 53, 96, 71, 61, 59,114,104,213,234,205,179,182,238,216, 55,103,238,212,177,198,109,219,116, 70,240,245,189, 56,121,254, 88,174, + 74,173, 89, 45,226, 99,109,112, 10, 45, 55, 14,197,133,215, 84, 88,130,122,100,100,233,134,194, 24, 76,239,210, 1, 74,233,246, + 10, 50,201, 4, 0,227, 8, 33,107,189,188,188, 86,254,216,186, 89,223,201,173, 58, 64,167,211,225,192,129, 3,136,138,138, 58, + 5, 96, 1,165, 84, 47,197, 45, 56, 56, 56,165, 78,245,202,211, 44,101,162, 57,147,134,246,177, 73,126,255, 10,177,161,207, 1, + 0,106,181, 82,151, 16,230,223,160, 34,233,147,201,100,143,108,108,108,222,216,216,216,164,179,234,156,113, 82,129,233,162, 9, +131,191,183, 77,141,120,141,152,151,121,158, 81,181, 74,161,141, 9,187, 89,235, 75,152,116,229,202,149, 37,198, 66,140, 47, 49, +189, 26,149,238,227,219,208,134,250,216, 81,168, 53,171,150,174, 63,240,221,138, 57,163, 36,166,166,166,120, 22,242, 14,139,214, + 29,201, 85,106,116, 93,147,131, 78,223,255, 70,172, 31, 58,157, 78,239,133, 14,165, 96,110,131, 6, 13,106,174, 92,185,210,125, +228,200,145,248, 90, 37,171, 40,222,127,136,245,105,223,190,125,237,119,111,158,121, 89,202, 68,135,190, 38, 63, 13, 48,192, 0, + 3, 12,248,159,129, 55,165,116,103, 65,132,248,124, 87,226,115,125, 92,135,121,196, 35,145, 42, 0, 44,171,102, 71,182,207, 91, +185,126, 49,143,108, 24,197, 81,186,151,225, 97,105,120, 10, 77,254,202,142, 87,225, 93,139, 48,223,245, 30, 42, 0, 0,161, 0, +204, 87,216,122, 11,160, 31, 33,164,233,174,251,143, 23,230,127,189,130, 82, 90, 33, 95,174,137, 0, 33,109,106, 87,115,106,219, +168,142,148,207, 42, 17, 27,250, 30,105,185, 42, 92,123, 25,149,193,163,188,189, 21, 77, 87,120,120,248,109, 0,168, 91,189,114, +104,219,218,110, 46,237, 26,215, 49, 18, 18, 13, 98, 95, 61, 67,166, 82,131,171, 47,163, 50, 65,200, 23, 79,168,254, 86,233,253, + 24,116,230,137, 77,253, 62,157, 8, 33,215,231, 79, 30, 34, 89,188,238,232, 55, 37, 89, 0, 20,113,113,113,169, 10,133,194, 42, + 62, 62, 94,131, 47, 12, 18, 71, 41,125, 71, 8,169, 55,125,250,244,101,179,103,207,158,243,235,175,191,138,190,100, 78, 86,105, + 72,143,139, 58,221,174,206,183, 43,127, 3, 12, 48,192, 0, 3,254,251, 81, 48, 79,171,248,124,173, 10,133,119, 8, 79,164,201, + 0, 38,185,185,145,153,239,223, 83,205,183, 74, 92, 73, 74,215, 87,146,183, 39, 0,122,126,177, 1, 30,201,126,248, 54, 42,231, +209,219,168, 28,112,148,114,148,170,121, 60,196,228,106,181,171,194,194, 99,175,124, 69, 41,176, 79,222, 69, 43,159,190,143, 81, + 81,142,163, 28,165, 26, 66,240, 81,167,227, 86,133,132, 71,158,253,119, 72,111,114,208,233,251,246,181,251,182,189,255, 40,100, +102,110,174,118, 75,242,171,211, 1,223,176, 92,116,132,144, 97, 45, 91,182, 28,205,178,236,118, 74,169,238, 43,108,105, 0,204, + 37,132,156, 10, 14, 14, 62, 30, 16, 16,144,240, 45, 72,214, 63, 90,254, 6, 24, 96,128, 1, 6,252, 87,226,139, 55,149, 46, 13, +223,146,100,253, 59, 34,248,109, 68,227,127,194,110,200,219,136,186,255, 9,233,253,248,234,212, 83, 0,131,255,161,202,120, 21, +192,213,111, 73,170, 9, 33, 85, 0,240,191, 9,201,250, 7,203,223, 0, 3, 12, 48,192,128,255, 78,124,245, 94,135, 6, 24,240, +111, 62,146,160, 0, 24, 67, 78, 24, 96,128, 1, 6, 24,240, 47,234,135, 74, 85,180, 8,128, 78,165,252,232,122, 5,152, 92,167, + 47, 72,212,117,131, 77,131, 77,131, 77,131, 77,131, 77,131, 77,131,205,255, 45,155,255,141, 32,132, 56, 32, 47, 90,125, 97,212, +250, 66,242,245, 15, 47,119, 52, 44,125, 53,216, 52,216, 52,216, 52,216, 52,216, 52,216, 52,216,252,111, 15,239, 48,174,232,123, +209, 23,207, 32,248, 25, 96,128, 1, 6, 24,240, 15,142,244, 37,249, 27,201,127,209,121, 3, 12,248, 15,170,235,133,171, 14,139, +206,217, 18,124,129,161,234,249, 74,216,187,127, 48,177,147, 29, 28, 28,198,213,175, 95,223, 67, 36, 18,241,178,179,179,151,222, +188,121,115, 73,241,235,218,213, 17, 62,229,243,224, 92,228,151, 0,225, 3, 60, 30, 88,138,216, 59,129,138, 38,134,162,255,183, +174,148,174, 50, 83,155,191, 8,143, 47,102, 25, 45, 88,157, 22,192,223,219, 49,113, 28, 19,197,104, 84, 93, 74,251,189, 67,195, +190, 46, 12, 75,253, 0,110, 27, 1,111, 2, 5,247, 59,161,188, 9,148,135,109,132,195, 79, 16,232, 86,131, 17,206, 22,136, 4, + 11,226,159,157,136,249,111,200,179, 63,255,252,147,255, 53,191,239,223,191,127,137, 27,136, 58, 57, 57,157, 55, 50, 50,114, 43, +237,119,185,185,185, 9,241,241,241, 94,255,229,245,177, 29,128,205, 0,234, 20, 59,245, 26,192, 52, 74,233,141,175,253,143,246, +132, 8,236,128,241, 34,224,103, 0,208, 2,191, 37, 2, 59,110,127,163,133, 28,223, 2,182,182,182,119, 4, 2,129,123,110,110, +110,110, 86, 86, 86, 53, 83, 83,211,112, 99, 99, 99, 99,134, 97,222, 38, 37, 37,181,171, 96,158, 78, 68,254, 86, 90,132,144, 57, +148,210,109, 21, 57,111,128, 1,255, 41,248,170, 85,135,132,144, 26, 0, 60,243, 95,237,154, 54,109,106,151,155,155, 11, 66, 72, + 34,128, 59, 0,252, 1,248, 83, 74,195,190, 69, 98,249,124,254,154,141, 27, 55,206,154, 50,101, 74,225,102,208, 65, 65, 65, 37, + 95,203,131,243,173,115,215,109,159, 4,135,161,105,167,254,249, 68,139, 7,228, 38,192,171,115,179, 47,109,108, 77, 44, 44, 44, +150, 18, 66, 6,240,120,188,114, 59, 53,142,227, 88, 74,233,137,244,244,244,197,148,210,236,138,252,151,220, 88,170, 99, 88,182, +196,255, 16,240,249,108, 78,174,170,212,176, 23, 86, 86, 86, 1, 60, 30,175,106,209, 13,179,243,211, 95,226,231,162,199, 12,195, +196, 38, 39, 39, 55,209, 35, 47,164, 60,129,104, 26, 33,162,206,224,113, 53, 0, 2, 2, 94, 24,199,106,174,113,140,118, 35,165, + 84,245, 53, 36,203,161, 82,181,187, 51, 22,248, 57,135,132,190,198,252,201, 67,241,235,230,125,152, 55,109, 52, 54,238, 60,130, +105,227,134,160,118,237, 58,101,218, 96, 41, 89,186,104,218, 48,175,149, 27, 15, 55, 93, 48,109,168,241,202,141,135,155, 46,152, + 62, 84,190,114,211,225, 38, 11,166, 15,147,175,216,116,168,201,194,233,195, 76, 87,110, 58,172, 5, 48,230, 75,210, 57,180,134, + 83, 46, 97,152, 18, 71,219, 84, 32, 80, 31, 14,139, 51,254, 87, 60,212, 35, 71,142,172,175, 84, 42,159, 13,237,220,200,175, 97, + 13,167,184,146,174, 73,253, 24,231, 20,254,230,185,143, 80, 36,107,252,189,207,190,160,178,236, 73, 36,146,170,175, 95,191,118, +231, 56, 14, 44,203,130, 97,152,194,119,141, 70,131,118,237,218,125,147,133, 51,132,144,158, 0,150,230, 61,172,240,165,148, 30, +255, 10, 91,114,129, 64, 48, 67, 44, 22,123, 50, 12,227, 1, 0, 66,161, 48, 84,173, 86,251, 51, 12,179,158, 82,154, 83, 65,147, + 27,226,226,226,106,203,229,114,104,181,218,194, 13,232,249,124,126, 45, 23, 23,151,173, 0,220,191,246,254,237,128,241,173,218, +180,217, 56, 98,214, 44,190,242,206, 29,108,220,179,103, 3,178,178, 0, 96,107,121,191,149, 72, 36, 87,120, 60,158,107, 69,254, +143,227,184, 40,181, 90,221,165, 34,191, 17, 8, 4,238,241,241,241,182,142,142,142, 0, 0, 99, 99, 99,227,162,199, 21, 81,178, + 0,172,166,148,202, 0,128,199,227,109,108,213,170, 85, 75, 66, 8, 3,128,114, 28,199, 35,132, 12,225, 56, 78,144,127,253,106, + 66,200, 30, 74,169,218,208,109, 27,240,159,168,102,149, 70,182, 4,101,252,232, 34, 0,207,166, 77,155,202, 6, 15, 30, 12, 79, + 79, 79,184,187,187, 67, 42,149,230, 53,226,169,169,118, 47, 94,188, 24,120,231,206,157,129,231,206,157, 3, 33, 68, 9,224, 30, +165,180,196,135,186, 83,207,182, 83,164,114,201, 38, 0, 72,142, 77, 77,136,253,144,180, 41, 33, 33, 97, 53, 45,178, 27, 53, 33, +164,218,136, 17, 35,102, 78,157, 58, 21,231,207,159,199,145, 35, 71,160, 86,171,145,157,157,141,155, 55,111,150,156, 80, 69, 18, +210,111,250, 1,198, 17, 64,180, 63, 96,100, 11, 24,219,125,113,102, 89, 88, 88, 44,157, 54,109,218,244,218,181,107, 23, 70, 49, +215,233,116, 96, 24, 6, 58,157, 14,233,233,233,152, 57,115,102, 1,131, 5,199,113,184,116,233,210,148,113,227,198, 1,192,140, +146,108,182,108,226,242,148, 71,120,206, 5, 90, 13,101,217,216, 7,207, 99,154, 48, 44,203, 87,169,180, 37,238, 84, 46,149,138, +202, 36,121, 66,161,208,249,213, 95,127,217,242,196, 98, 80,150, 5, 56, 14,148,227, 0, 20,121,209,188,239, 40,203,129,234, 88, +112, 12, 7, 70,169, 70,179,137, 19,245,169, 52,173,132, 98,217,145, 97, 63,206,178,111,222,162,133,176,114, 37, 71, 48, 44,135, +247, 17,177,246,207,158, 62,108,125, 98,255,214, 9,132,144, 33,148,210, 47,138,179, 37, 54, 50,189,186,229,247, 93,206, 79, 94, +132,224,198,173, 59,184,126,211, 31, 0,112,229, 86,158, 57, 30,143, 87, 94,250, 44,172,220,189,234, 79, 25,221,219,120,197,218, +221,146, 41,163,123, 11,254,126,223, 37,153, 50,250,123,193,202,245,187, 36, 83, 70,127, 47, 92,254,219,150,134,132, 16, 11, 74, +105,122,105,246, 74, 43, 35,194, 48,146, 67,225,137,124, 0, 72,222,190, 29,186,164, 36, 56, 46, 94, 12, 0, 24, 86,205, 78,111, +119,135,141,141,205, 83,161, 80,232, 92,222,117, 58,157,174, 92, 18, 60,114,228,200, 6, 74,165,242, 41,195, 48, 84, 32, 16,248, + 12,237,243,221,153,174,109, 27,164, 22,189, 38, 40, 40,208,106,213,170,191,122, 31,127,150, 77, 7, 54, 54,121,118,126,205,200, + 38, 61,102,239, 11, 44,163, 67,230,169,213,106,188,125,251, 22, 69, 55,121, 47,202,107,191,176,241,225, 1,216,104,101,101,213, + 60, 53, 53,117, 24,128,249, 89, 89, 89,245,249,124, 62, 44, 45, 45,231, 19, 66,222,155,153,153,237,206,204,204, 12,200, 87,141, + 56, 61,237,182, 51, 53, 53, 61,112,250,244,105,139, 70,141, 26,241, 82, 82, 82, 80,165, 74, 21,164,165,165, 53,187,115,231, 78, +227, 49, 99,198,140, 33,132,252, 64, 41,189, 83,129,228,214, 52, 50, 50,162, 35, 70,140, 32, 44,251,247,237,254,241,199, 31,232, + 82,151,113,251,169,171,177, 66,165,161,153, 55,222,154,253, 36, 18,137,238, 69, 70, 70,102, 86, 52, 63, 68,192,207, 35,102,205, +226,203, 35, 35, 33, 15, 12,196,176,172, 44,193,175,121,234, 86,185, 68,139,199,227,185, 30, 56,178,215, 93, 44, 22,131, 97,152, + 66, 50, 88,208, 70,233,116, 58,104,181, 90,232,116, 58,176, 44, 11,157, 86, 7,223, 21,191,125,113, 91,104,100,100,100,228,232, +232,152,104,100,100,100,244, 45, 58, 34,137, 68, 34,216,191,127,255, 16,177, 88, 12, 0,208,104, 52,168, 91,183, 46, 49,116,209, + 6,252, 55,145,173,146, 84,174,178, 70,169,221,178,178,178,192,178, 44, 76, 76, 76,192,231,243,139, 43, 42,232,220,185, 51,218, +181,107,135,193,131, 7,227,213,171, 87,178,193,131, 7,119, 46, 85, 25,152,213, 3,149,220,237,242, 59, 19,206,225,254,133, 23, +126,127, 44,255,211, 6,192,172, 34,151,141, 25, 63,126, 60, 73, 77, 77,197,128, 1, 3,238,168,213,234, 94,148,210,172, 82, 21, + 13, 14,177, 94,131,135,129,163, 68,182,254,209, 46,162, 81, 41, 41,143,199, 83, 22,184, 14,191, 48,163, 6, 56, 58, 58,226,232, +209,163,208,104, 62, 15, 23,102,106,106,138,151, 47, 95, 22, 85,224,208,162, 69, 11, 62, 33,100, 64,105, 68,139, 16,158,243,253, + 39,145,182, 5,199, 61, 58,215, 17,181,108,226,154,104, 99,101, 66, 1,144, 5, 11, 22, 20, 18, 55, 0, 88,186,116,169, 62,233, + 4, 79, 40, 68,178,191,255,223, 13,177,128, 7,158,136,128, 8, 1,158, 32,207,139, 10, 10, 80, 22,224, 24,128,211, 1, 82,135, + 74,250,216,110,230,228,226,126,126,213,186,109,230,106, 29,197,209,179, 55, 16, 17,241, 1,124, 30, 15,213,220,220,241, 93,251, +182,194,198, 77, 91, 86,250,109,201,172,115,132,144,110,148,210,199, 21,206,104,142, 74,221, 92,172,177,251,143,103,176,177,144, + 99, 64,239,238,144, 73, 37,248,117,243, 94,172,152, 55, 25,238,213, 92,177, 99,195,202, 82,127,110,102,102,182,172, 81,189, 90, +213,246, 30,191, 12,207,118,173, 4,251,142, 95, 65,251,118,173, 5,123,143, 95, 70,123,207,182,130,125,199, 47,163,125,187, 54, +194,125,199, 47,163, 69,147,122,110, 1,169, 65,203, 0, 76, 46,253,158,139,149,209,119,121,101,228, 46, 16, 21,118, 4,145, 19, + 38, 0, 64, 33,209,170, 8,132, 66,161,115,124,124,188,109,121,215,149,167, 26,228, 43, 89, 79, 25,134, 65, 82, 82, 18,201,200, +200,160,230,230,230,189, 47,239,152,127,186, 75,155, 6,105, 0, 16, 24, 24,104,233,235,187,170,247,177,167, 89, 80, 62,220, 66, + 14,253,229,207, 13,235,229,249,244,172,223,200,198,253,251,247,127, 94,146, 93,181, 90, 29,209,176, 97, 67,154,255,217, 73, 34, +145,136,138,213, 9, 71,119,119,247,207, 84,107, 61, 92,138, 27, 31, 60,120, 48,185,118,237,218,168, 85,171, 86, 64,243,230,205, + 77,141,141,141,113,249,242,101,120,120,120,212, 49, 53, 53,125,116,226,196, 9,225,220,185,115, 27,236,217,179, 7, 0,166,232, + 81, 63, 59,121,121,121, 29, 61,127,254,188, 84, 36, 18, 65,169, 84,226,229,203,151, 48, 51, 51,131, 88, 44,198,247,223,127,207, +111,221,186,181, 85,251,246,237, 79,230, 15, 6,244, 94, 1,165, 82,169,232,252,249,243, 97,100,100, 4, 35, 35, 35, 24, 27, 27, +195,216,216, 24,114, 41,200,246,105, 46,178,169, 59, 51,100, 51, 22,111,247, 59,176,109,201, 45, 23, 23,151, 95,162,163,163, 51, + 42, 90, 23,148,119,238, 64, 30, 24, 8, 20,121,118,245,133,153,177, 37,124,124,124,202, 83,164, 32, 18,137,208,170, 85,171,114, +237, 89, 89, 89,157, 18, 8, 4,118,197, 58, 7,169,143,143, 15, 27, 22, 22,102,204,227,241,140, 57,142,131,143,143, 15,203, 48, +140,212,206,206, 46,128,227,184,196,228,228,228,190,229,217,166,148,170, 9, 33,115,120, 60,222, 70,137, 68, 34,168, 92,185,114, +212,162, 69,139, 30,228,171,153,160,148,242, 42, 87,174,220, 76, 38,147,185,170,213,106, 6,192, 28,131,154,101, 64, 25,104,156, + 39, 10, 23, 66, 3, 64, 92, 32,224,231,245,118,176, 46,246, 61, 0,164,228, 15, 20,237, 74, 57, 78, 5,240, 10, 64, 77, 0,182, +249,231,158, 0, 72,171,104, 2,203, 84,180, 8, 33,180,200,133,133, 29,139,137,137, 9,158, 60,121, 2, 66, 8, 76, 76, 76, 96, +106,106, 10, 51, 51, 51,100,101,101,225,213,171, 87,120,253,250, 53, 34, 35, 35, 65, 8, 65,181,106,213, 80,240, 0, 21,177, 85, +216,192, 29, 94,123, 30, 82,185, 4,132, 0,141, 58,212, 71,253,118,117,209,244,113,248, 52, 71, 71,199,157,241,241,241,111, 9, + 33,130,186,117,235,142,105,209,162, 5,214,173, 91, 7,181, 90,189,174, 36,146, 85,212,230,157,151,186, 38,249,157,211,236,131, +151,223, 27, 13,239,234,166,136,143,143, 95,243, 5,153,243, 73, 67,156,146,146,162,247, 94,124, 28,199, 33, 61, 61,189, 76,155, +197, 21,130,245, 27,183,152,103,103, 38, 98,249,175, 7,161,211,233, 48,107,214, 44,112, 28, 87,248,202,200,200,208, 43,157,148, + 45, 38, 50,240,242, 94,132, 7, 16, 1,224, 50, 40,143, 87, 68, 31,221, 2, 66, 1,194, 2, 40,118, 95,197,109, 18, 66,164,124, +145,236,216,146, 95, 55,153, 63,127, 29,139,179, 55,158, 67,155, 21,135,132,192,211, 0,128,106,173,134,224,184,154,143,230,245, +221, 48,125,193,111, 22, 11,167,255,112,140, 16, 82,171,168, 27, 81,159,142,141, 82, 22,203,151, 45,195,206, 77,235,240,219,186, + 77,200,202,204,128, 80,104, 13, 0, 96, 24, 22,108,177,123,251,236,222, 41,237,186,112,246,120,178,113,215, 73,212,173,110,143, +115,215, 2,208,164,142, 43, 46,221,124,140, 22,245,170,224,138,255, 51,180,168, 95, 21,254, 15, 95, 98,214,164, 17,228,254,165, +125, 93, 43, 82, 70, 27, 54,108, 49,207,206, 74,196,249,149,251,145,180,117, 43,162, 38, 79, 70,179,252,107, 30, 19, 2,145,179, + 51, 32, 42,191,140,138, 35, 52, 52, 20,106,181,186,164,209, 62, 60, 60, 60,202, 45,119,165, 82,249,140, 97, 24,154,152,152, 72, + 18, 19, 19, 97,108,108, 76, 94,190, 12, 97,235,212,169,219,135,190,254,115, 23, 0,248,250,174,234,115,252, 89, 22, 20, 1,155, +160,124,176, 25,162, 42, 65,188,157, 75,199,107,199, 45,222,241,172, 72, 39,247, 73, 58, 19, 18, 18,186, 21,124,174, 86,173,218, +235,176,176,176,154, 5,174,230,124, 23,162,136, 97, 24,247, 2,119, 34,195, 48, 80,171,213,232,212,169, 19,191,172,123,183,176, +176,104,225,225,225,129,231,207,159, 99,211,166, 77,150, 94, 94, 94,120,247,238, 29, 8, 33, 88,181,106, 21,169, 93,187,182, 48, + 37, 37, 5, 93,186,116,193,169, 83,167, 90,149,151,159,132, 16, 19, 99, 99,227, 61,231,206,157,147,242,120, 60,100,103,103,131, +227, 56,180,110,221, 26, 60, 30, 15, 33, 33, 33, 88,176, 96, 1, 78,157, 58,133, 51,103,206,200, 26, 55,110,188,135, 16,226, 81, +212,173, 95, 70, 25, 81,149, 74, 69, 37, 18, 9, 36, 18, 9,164, 82, 41,164, 82, 41,196, 98, 49,114, 84,192,184,245, 81,106,190, +212,154,171,211,176,141,219,168,169,171,120,107, 22,141,190, 9,224,172,190,117, 30,200,155,147,181,113,239,222, 77,195, 50, 51, +121, 0,176,155, 16, 78, 75,233,111,250, 60,239, 0,144,163,202,132,107, 53,103,156, 60,118, 6,253, 6,245, 46,145,100, 9,133, + 34,136,132, 66,152, 90, 26,151,107, 83, 36, 18,217,189,126,253,218, 74, 40, 20,130, 82, 10,150,101,161,213,106, 19, 23, 46, 92, +104,227,237,237,109,114,233,210, 37,158,183,183, 55,103, 97, 97,145,251,248,241,227, 36,134, 97,172,218,182,109,171,119,157,167, +148,110,107,216,176, 97,163,211,167, 79,143,246,241,241,121, 58,123,246,236,229, 69,207,175, 94,189,122,217,197,139, 23, 93,251, +244,233,115,224,197,139, 23,219, 42,210,134,124,109, 59,111,176,249,239,103,243,194,133, 11,133, 13,177,183,183,119,113,181,211, +142, 16,114,190,200,255,247, 40, 56,246,241,241,153,239,235,235,251,146, 16,114,190,232,247, 5,215,229,183, 29,231, 75, 58,206, +255,173,229,188,121,243,234,250,249,249,173,106,217,178,229,209,128,128,128, 15, 21, 37, 90,229,206,209, 42, 32, 87, 69, 9, 87, + 49, 3,200,202,202, 66, 86, 86, 22, 98, 98, 98,176,125,251,246,252, 7, 90, 8,129, 64, 0,129, 64, 80, 56,159,161, 52, 92, 63, +119,119, 51,128,205,141, 27, 55, 22, 6, 63, 56,113,233,231,157, 83, 59, 54,233,212,136,255,236, 70,112,127, 0, 43, 0,116, 27, + 49, 98,132, 53, 0,236,223,191, 63, 5,192,165,127, 5,101,166,148,158,120,251,246,237,116, 7, 7,135,194, 57, 42, 69,221,135, + 12,195, 64, 42,149,162, 96, 46,139, 74,165,194,246,237,219, 25, 74,233,137, 50,108, 34,236,229, 77,188,125,121, 43,239,119, 28, + 7,142,253,251,247, 75,150, 44, 41,186, 68, 20, 19,242,149,147,114, 73, 94, 73,121, 78,139,189, 23,251,254, 51,114,246,153,123, + 66, 52,181,255, 15,147, 29, 56, 34,192, 95, 55, 95, 64, 40, 20,130, 43,162,102, 10,249,121,163,229,151,239,226,225,104, 87, 7, +189,134,140,183, 63,125, 96,203, 84, 0,191, 86, 52,175,107,213,111,137,105,211,167, 99,215,206,157, 88,176,120, 89, 33, 75,103, + 88, 22, 76,185,233,228,241, 90, 55,169,141,156,212, 88,240,249,124,180,106,232, 6, 62,159,143,182, 77,106,128,207,231,163, 77, +211,154, 16, 8, 4,104,223,162, 54,170, 87,175, 14,129, 64,192, 43,167,220, 17,246,242, 6,222,190,188, 93,132,244, 82, 80, 0, +218,132,132,207,174,215, 37, 36,128,186, 88, 85,180,110, 97,204,152, 49, 25, 49, 49, 49,218,226,231, 42, 85,170, 36,186,115,231, +142,121, 41,110,187, 66,200,100,178,198, 2,129,224, 89, 90, 90, 26,103,100,100,196,227, 56,150,171, 83,167, 46,255,242,142,249, +167, 11,174,153, 55,111,254,233,129,141, 77,251, 28, 60,113,158,138, 42,183, 33, 68, 40, 97,126, 92,188, 67, 36, 20,201,244,138, +120, 95,224, 70,124,243,230, 13,202, 75, 79,209,129, 89, 73, 72, 79, 79, 31,225,225,225,113,103,243,230,205,150,132, 16,220,189, +123, 23,124, 62,191,240, 21, 30, 30, 14, 30,143,135,159,127,254, 89,155,149,149, 53,182,188,180, 9, 4,130,233, 39, 79,158, 52, + 19,139,197,200,206,206, 46,124,110,248,124, 62, 94,191,126,141, 53,107,214, 96,196,136, 17,136,142,142,134,163,163, 35,102,205, +154, 37,247,243,243,155, 14, 96,153, 30,183, 30,164,209,104,154, 24, 25, 25, 65, 42,149,162,128,112, 1,192,213,151,194, 16,133, + 66, 81,207,218,218,218,222,198,255,252, 95,173,188,122, 53,176,178,113,104, 89, 64,180,244,197,123, 96,103, 4,203, 46,236,118, +250,180,237,253,211,167,185,135,231,206,197, 74,178,179,119,232, 93,135,116, 60, 68,133,199,162,113,227,198,120,246,236, 25, 26, + 55,110, 92,148, 52, 65, 44, 22, 67, 36, 18, 65, 36, 18,193,218, 66,175, 41, 20,148,199,227,225,254,253,251, 96, 89, 22, 26,141, + 6, 26,141, 6,181,107,215, 78,187,117,235,150, 28, 0,194,195,195,233,240,225,195, 51, 30, 61,122,132,134, 13,203,222, 79,221, +222,222,254, 14,159,207,175, 92,236, 89,181,232,219,183, 47,210,211,211,187,247,237,219,183, 77,254,119,113,127,254,249,231,112, + 0, 16,139,197,224,241,120, 44, 12,248,159, 71, 1,185, 42, 74,184, 74,104,115,122, 20, 63, 38,132,156,247,245,245,237, 81,252, +187,162,164,170,164,207, 69,127,235,231,231,183,170,136,109,229, 23,120,195,202,159,163, 69, 8,161,229, 53,154,101,161, 60,162, + 85,128,103,207,158,233,156,156,156,118,189,125, 17,217,209,173,126, 53,200,140, 37,223, 17, 66, 54, 75, 36,146,153, 63,252,240, + 3, 30, 62,124,136,144,144,144, 63,190,118, 59,149,122,245,234, 93,145, 72, 36,174,165,184, 73,162,130,131,131,187,148,210, 49, + 44,206,159,115, 86,234,100,248,162,243,197,138, 78,134, 47,181, 98,112, 20, 58,173, 14,185, 10,229,223,157,120, 62,209,202,205, +205,197,160, 65,131, 62, 81,180,146,146,146,244, 41, 84,172, 57,123, 22,215, 78,156, 64,247, 6, 13,112,234,241, 99,248,253, 48, + 20,181, 92,157, 64, 89, 2, 74,128,232, 35, 91,144,154,149,131,195, 55,238, 35, 45, 91,129, 97,109,219,194,221,212,186,108,187, + 66, 81,231,102, 45, 90,138,174, 7,188,130, 80, 40, 0, 15, 28,168, 78, 1, 71,143,246,224,243,120, 48,179,171, 2,145, 80, 8, +161, 80,128,240,152, 20,120,212,109, 42, 62, 47,150,118,254, 18,162, 85,201,181, 10, 88,150,197,136, 17, 35,112,244,232, 81, 88, +217,187,194,172, 82, 93,172, 88,183, 19,221, 59,181, 45,247,254, 11, 70,240, 2,129, 0,124, 62,255,179,247,130,207,250,168,147, +148,163,208, 22, 47, 35,142, 2,148,194,121,229, 74, 56,175, 92,137,199,249,255, 89, 59, 55, 23, 74,165, 18,104, 94,167, 66, 36, + 75,163,209, 32, 38, 38, 70,155,144,144, 96, 87, 66, 7,149,168,209,104,202, 37, 54,251,246,237, 11, 26, 57,114,100, 19, 75, 75, +203,167, 65,129,129,186,250, 13, 26, 8, 47,109,159,127,166,192,109, 8, 0, 13, 26, 52, 72,155, 63,127,254,153,225, 3,122,244, +222,230, 51,152,157,184,236,128, 64, 34,147, 53,233, 49,187,236, 9,241, 69,158,143,136,250,245,235, 83,125,174, 85, 40, 20, 31, +203, 40,163,158, 0,150, 54,106,212,200,212,203,203, 11,119,238,220, 65,191,126,253,212, 90,173,246,109,126,163, 90,227,240,225, +195,226, 87,175, 94,193,198,198, 70, 24, 21, 21,181,135, 16, 82,230, 4,121,177, 88,220,190,105,211,166, 60,181, 90,253, 25,201, +242,243,243,195,144, 33, 67, 80,163, 70, 13,112, 28,135,156,156, 28,120,121,121, 9, 55,109,218,212, 94, 79,162, 53,173, 86,173, + 90,107,144,183,234,176,104, 91, 24, 10, 96, 78,190,218,253,177, 71,191, 17, 47,219,118,234,219,164,114,245,186, 14,229, 25,180, +179,179,155,199,227,241, 6,114, 28,199,207,202,202,138,209, 16, 82,189,182,171,171, 93,235,222,189,145, 41, 20,242, 55,222,184, +193, 75,204,206,150, 3,208,203, 5,169,210,229,194,181, 90,222, 84,191,126,131,122,227,217,179,103,232, 63,184, 15, 68, 34, 17, + 4, 2, 97,222,179, 41,202, 83,180,204,173, 77,245,170,155, 58,157,174,176, 13, 47,152,231,165,213,106, 81, 48, 53,203,200,200, +168,240,156, 90,173, 46,117, 64,158, 15,247,227,203, 22,217,202, 76,205,192,234,116,168,211,187,127, 97,157,126,180,123,155, 12, + 28, 39,203,136,138,192,148, 19,231,132, 48,192,128, 82, 84,173, 18,212,172,162,237,202,249,226,100,235, 75, 65, 8, 57,239,227, +227, 51, 31, 0,245,241,241,153, 95,112,236,235,235,171, 4, 16,247, 37,100,171, 36,149, 75,240, 45, 72, 86,129,123,161, 44,116, +232,208, 97,138,137,137,201, 38, 0,104,210,164, 9, 98, 30,198, 33,230, 97, 28, 60,106,214,105,221,168, 65,147,204, 33, 67,134, +192,202,202, 10,179,103,207,166, 0,254,168,232,255,135,135,189,148, 3,160,142,142,142,179, 1,192,209,209,177,193,227,199,143, +109,158, 60,121,130,166, 77,155,254, 45,221,107,181,104,211,166, 77, 89, 29, 98, 54,242,230, 90,205,248,118, 42, 25, 7,173, 86, + 11,133, 66, 9,141, 70, 11, 70,199,129, 97, 24, 52,174, 99,130, 3, 59,125,242,190, 99, 10,212,179, 60,213,204,217,222, 4,141, +235,217,235,120, 60,162,124, 18,152, 80, 98,139,169,209,104, 16, 20, 21,133,192,200, 72, 0, 64, 47,223,178, 39,190, 30,184,113, + 7,181,107,215, 46, 47,181,110,206,142,246,136,191, 22,148,215,120, 43, 99,240,228,222,113,152,152,200, 1, 0,117, 60,135, 65, + 36,202, 35, 90,185, 74, 45,172,107, 86, 2,161,180,212,176, 0,198,150, 14, 87, 4, 34,169, 43,101, 57, 80,202,129,114, 44, 40, +229, 32, 49,177, 50,154, 50, 97, 52, 56,142, 69,179,102,205, 64,248,124,176, 58, 53, 6,244,236,140,244,204,108, 88,153,235,215, + 73,136, 68, 34,120,122,122,202, 74, 59,255,238,221, 59,101, 81, 98, 86,118, 25,233,144,155,171,132, 90,173,134, 86,195, 64,171, + 99,192, 86, 21, 97,249,194,161, 96,180, 12, 20,131, 91, 66,171, 99,192, 77,239, 3,173, 70,135,104, 35, 30,175, 65,109, 27, 29, + 15, 68,249,252, 85,146,105,121, 68,171,128, 28,148,134,146,230, 4,150, 66,182, 2, 71,142, 28,217,184,126,131, 6,207, 6,118, +106,176, 54, 56,228,101,124,112,200,203,207,174,115,173,209, 32, 98,162,223,209, 89, 66,145,172,177,190, 36, 11,248,212,141,248, +149,152,159,157,157, 93, 95, 46,151, 35, 44, 44, 12,124, 62, 31,132,144,119,148,210,250, 0, 48,126,252,248,247, 2,129,160, 26, +159,207,199,214,173, 91,137, 64, 32,168,215,178,101,203,249, 0,142,151, 49,160,243, 48, 49, 49,249, 68,205, 18,137, 68,240,241, +241,193,240,225,195, 11, 73,150, 72, 36,194,190,125,251,208,164, 73, 19,104, 52, 26, 15, 61,201,240, 19, 0,109,245, 80,252, 72, + 62, 57, 47,151,140, 50, 12, 51, 50,117,224,192,234,240,247, 71,235,106,213,106, 55,110,220, 24, 90,237,223,130,102,181,106,213, + 42,101,103,103,127, 36,132, 28, 2,176,141, 82,250,162, 76, 82,164,226, 16, 21, 30, 91, 48,104, 69,179,102,205, 10, 21,172,162, +106,150, 72, 36,130, 76, 44,175, 16,209,226,184,188,118, 41, 59, 59,155,231,239,239,111, 93,171, 86, 45, 2, 0,181,106,213, 34, + 47, 94,188,176, 52, 50, 50, 74,113,115,115, 43,119, 0, 44, 51, 53,195,190,145,131, 0, 0,191,116,234, 90, 56, 48,186,188,116, + 62,132, 66, 33, 58,206,158,255, 89,189,231, 56,142, 15, 3, 12, 36,171, 28,146, 85,146,162,245,117,125,243,223,138,150,175,175, +239, 75, 95, 95,223,207,212,177, 10,218, 43, 95,209,210,199, 21, 80,222,195, 90, 26,214,173, 91,135,122,245,234,149,217, 17,109, +218,180, 9, 7, 15, 30, 92, 71, 41, 13,175,232,255,247,232,216,168, 14,214,159,126, 89,173, 70, 29, 2, 0,203,166,247,228,229, +230,230,226,254,253,251, 48, 51, 51,195,187,119,250,133,253, 34,132,152,152,153,153, 45,229,241,120, 3,248,197, 87, 0,148, 76, + 48, 89,142,227, 78,100,102,102,150, 26,222,129, 82, 64,171, 99,144,171, 80, 65,163,209, 96,250,207, 91,202, 77,135, 47, 64,180, +154,108,129,103,187,150,178,210, 20,157,102,245,218, 99,210, 15,242,207, 58,111, 62, 15,224,241,128,134,205,242, 20,151, 23,143, + 95,130,227, 0,150, 3,172,109, 45,240,199,145,181,101,102, 1,195,114,249,163, 99, 22, 57,106, 22, 30, 45,122, 32, 54,212,191, + 80, 65, 18,139,242, 92,198, 34,161, 16, 28, 37,121, 81, 31, 74, 35, 66, 98,153,107,122, 66,184,251,206,243,193, 24,215,163, 30, +254,188, 30,132,254,157,234,227,214,163, 87,240,106, 94, 27, 47,223, 70,162,142,123,101,108,221,115, 2,148, 34,251,247,245, 43, + 62,254,221,161, 49, 81,250, 40, 90, 15, 31, 62, 84, 22, 87,177,138,190,211,242,251, 67, 80,250,183,162,165, 84,169, 49,123,158, + 94,225,124,242,202,168,109, 11,153, 62, 23,151,165, 88,233, 67,196,138, 43, 91, 40, 39, 60, 75, 85, 0, 77,128,185,255,202,134, +147,101, 89, 92,184,112,161,176, 60, 74, 42,199,162,101,167, 7,201, 65, 84, 84, 20, 94,190,124,137, 22, 45, 90, 32, 51, 51, 19, + 66, 30, 15,179,130,131, 81,251,135, 31,160, 17,137,192,113, 28,196, 98, 49,198,143, 31,175,119,126, 86,176, 53,205,159,231,198, +210,114,218,146,181, 61,122,244,168, 30,150,155,139,151,175, 95,163,211,146, 37, 0,128,139, 23, 47,126, 82, 39,102,206,156, 41, +126,245,234,213,152,167, 79,159,142, 33,132,172,163,148,206, 42,181,157,165,234,194, 57, 90, 3,135,246, 67,245, 90, 85,113,112, +239,145,194,243, 51,231, 76,131, 80, 40,130, 80, 36,132,185,153,185, 94,119,163,211,233, 10, 73,171, 66,161,224, 93,188,120,209, +185,115,231,206,162,105,211,166, 17, 0, 56,120,240, 32,111,243,230,205,198,215,174, 93, 19, 57, 57, 57, 37,148, 75, 46,181,218, +207,202,152, 16, 2,161, 80, 8,145, 88, 4,112, 28, 8, 33,198,171, 87,175, 94,246,242,229,203,166,181,106,213,130, 90,173,254, +129, 16,242,220, 16, 71,203,128, 2,183, 97,105,132,171,164,185, 86,249,170, 84,105, 72, 46, 58,111,171, 52,162, 86,116,206, 22, + 0,117,197,155, 5, 61,231,104,149, 4, 62,159, 95,174, 90,197,227,241,202,117, 29,206,156, 57, 19, 38, 38, 38,165,117, 64, 52, + 56, 56,248, 85, 66, 66,194, 78, 74,233,150, 47, 41,156,243, 55,158,191, 92, 58,163, 79, 54,242,125,171,230,230,230, 41, 29, 58, +116,200, 1,160, 61,126,252,211, 1,178, 90,173, 46,181, 3, 55, 51, 51, 91,186,123,247,238,169,189,123,247,230, 21, 15, 49, 80, +212,189, 87,240,210,233,116, 56,126,252,248,212,185,115,231,162, 52, 21,172,160, 19, 87,228, 42,161,204,159, 8,253, 62,228, 79, +125, 75,175,212, 83,114,115, 7, 56, 87,173, 95,106,103,194, 19,229,205, 33,178,115,249,187, 3, 51, 49,145,130, 45,195, 38, 33, +188,240,200,232,120,167, 74,246,150,120, 31,147, 12,187,202,245,144, 30,247,119, 62, 8, 4,124, 8,243, 93,135,230,166,198, 72, + 78, 74, 2,143,199, 47,147, 24,175, 56,252, 28,143, 66, 34,113,242,250, 11,104, 85,185, 88,191,255, 50,180,234, 28,104, 85,185, +208,170,242,222, 87,205,253, 17,132,224,163, 86,149, 83,163, 34,229, 46, 16, 8,208,188,121,243, 82,137, 78, 92, 92,156,158,138, + 22, 45, 84,180,148,170, 10,150,145,126, 15, 97,153,138, 85,193,249, 47, 37, 6, 5, 33, 31,100, 50, 89,147,125,251, 74, 15,227, + 80, 18, 28, 28, 28, 46,201,229,242, 42,250, 94, 95,129,224,165,171,204,205,205,151,214,170, 85,203, 99,253,250,245, 66, 62,159, +143,142, 29, 59,214,248,241,199, 31,163, 0,160, 94,189,122,142, 5,109,204,196,137, 19,233,195,135, 15, 67,242,198, 24,165, 67, + 44, 22,191, 54, 51, 51,107,226,229,229,133,204,204, 76,196,196,196,192,216,216, 24,181,215,174, 69,240,196,137,104,176,125, 59, +120, 29, 58,128, 16, 2,177, 88,140,224,224, 96,200,100,178,215,101,144,161,230, 0,126, 3,208, 26,127,187, 11, 41,128,251, 0, +126,166,148, 62, 42,161,189,227, 1, 0,203,113,229, 21,214,208,217,179,103, 35, 67, 40, 4,188,189, 33, 10, 15,135, 86,171, 69, +139, 22, 45, 10, 85,246, 22, 45, 90, 64, 32, 16,160,126,253,250,112,116,116,196,214,173, 91,135,226,211,149,216,159, 64,149,163, + 69, 84,120, 44, 90,182,108, 89,168, 92,121,123,123, 23, 42, 90, 66,161,176, 80,217, 34,108,249,196,149, 16, 66,139, 14,146, 89, +150, 37, 2,129, 64, 48, 99,198, 12,210,175, 95, 63,170,209,104, 56,177, 88,204, 59,121,242, 36,185,117,235,150, 32, 55, 55,183, +220,129,120,221, 62, 3,240, 75,231, 60, 81,116, 69, 21, 27, 8, 69, 66,136, 69, 34,204,126, 29, 91, 88, 46,166,251,142,138,253, +252,252,250,215,170, 85, 43,207, 13, 15, 8, 12,113,180, 12, 40, 71,205, 74, 46, 70,146, 52, 69,142,147, 1,144,252,227,228, 34, +132, 42, 25,121, 43, 8,155, 22,187,182,224,188,166,216,123,193,249,192,138,166,189,200, 94,135,159,145,175,178, 70,196,111, 31, + 60,120,224,222,184,113, 99, 68, 71, 71,127,182, 18,174,160,227, 50, 54, 54,134, 76, 38, 67, 64, 64, 0, 0,188, 45,205,216,205, +155, 55, 55, 35, 47,234, 50, 0,192,209,209,177,165,215,192,246, 1,205,186, 54,197, 97,223, 35,153, 9, 9, 9,245, 11, 98,232, + 16, 66,136,163,163,227,112,161, 88, 48,168, 90, 93, 23, 79,112,220,111,215,255,186,183,164,172,155,172, 86,163, 78, 14, 0,101, +145, 85,135,107,190,164,160,121, 60,222,128,222,189,123,243, 94,189,122,133, 65,131, 6,225,224,193,131,165, 94, 59,124,248,112, + 28, 61,122, 20,189,123,247,230,205,155, 55,111, 64,121, 68, 43, 79, 45,209,124,179, 74, 25,246, 46, 16, 7,142,238, 46,117, 14, +146,173,109,222,124,172,164,164,148,194,239,154, 54, 46,219, 51,194, 49,154,107,207,159, 62,110,217,170, 93, 71, 81, 76, 98, 6, + 56, 70, 13, 85,246,223,191, 87,100, 36,130, 50, 42,136,140, 44, 97,111,109,134,103, 15,174,106,180, 26,213,181,178,108, 78,237, + 93, 7, 19,123,122, 0,148, 67,159, 89,127,224,252,150, 41,133, 35,232, 54,253,166,225,198,241,141,122,207,241, 43, 14,161, 80, +136,224,224, 96,101,105,106, 22,159,207, 47, 55, 38,215,223,170,163, 14, 10,133, 18, 10,165,234,155,149, 17, 33,196,198,206,206, +238,119, 75, 75, 75,105, 73, 68,138, 16, 98, 99, 99, 99,243,187,149,149,149, 84, 95,215, 97,105, 36, 43, 63,174,214,211,145, 35, + 71, 86,136,108, 73, 36,146, 42,111,223,190, 45, 12, 86, 90,214,187, 70,163,129,151,151,151, 94,193, 75, 41,165,231, 8, 33, 31, + 28, 28, 28,238,215,174, 93,219,236,253,251,247, 56,114,228,136, 72, 40, 20,186, 20,180, 31,217,217,217,224,243,249, 72, 74, 74, +210, 1, 24, 93,158,235, 76,173, 86,251,251,251,251, 55,236,217,179, 39,255,245,235,215,224,243,249,121,233,106,217, 18, 13,182, +111, 71,200,140, 25,240,140,140,132, 74,171,133, 84, 42,197,149, 43, 87,180, 10,133,194,191, 52,123, 50,153,108,103, 68, 68, 68, + 29,169, 84, 10,173, 86, 11,142,227,192,227,241,136, 64, 32,104, 99,110,110,190, 9, 64,211, 79,159, 41, 91,219,241, 51,127,173, +201, 50, 12,155, 16,253, 62,185,188, 60, 72, 77, 77,197,185,115,231,208,162, 69, 11,120,122,122, 34, 46, 46, 14,225,225,225,232, +222,189,123,225, 53,129,129,129,120,254,252, 57,220,220,220,202, 87,244,120, 58,184,213,172, 2,145, 72,148,167, 16, 9, 69,249, + 3, 31, 97,161,146, 37, 18,138, 32, 20, 8, 33,149, 73,245, 86,180, 8, 33,224,241,120, 32,132, 64, 38,147, 21, 12,178, 57,103, +103,231,132,180,180, 52, 7, 0,124,153, 76, 6,150,101,245, 26,180, 20,244, 17, 5, 36, 75, 36, 22, 21, 42, 91, 0,144,145,145, +161,234,221,187,247, 33,181, 90, 61, 10, 95,176, 67,137, 1,255,147,120,242, 47,250,173,222, 60,145, 82,186,179,164, 73,241,101, + 85,240,238,173, 90,181,218, 62,100,200,144,142, 27, 54,108,128, 92, 46, 71, 66, 66, 66, 97,135, 40, 22,139, 81,169, 82, 37,164, +165,165, 97,199,142, 29,136,141,141,189, 9, 96,188,190, 41, 74, 72, 72,120,248,238,197,219, 84,175,254,173,172,234,180,170,105, + 30,243, 54,182, 5,128,128,124,146,245,199,144,153,221, 71,121,245,109, 6,145, 88,136,152,119, 31,255,223, 74,146,207,231,243, + 9, 33, 24, 52,104,144, 94,215, 15, 30, 60, 24,254,254,254, 40,203,205,200, 21, 40, 90, 10, 21,114,149,223,110,176, 54,105,202, +112, 76,154, 50,188,144, 76,232,227,122,201, 35,185,199,202, 32, 90,218, 13,231,143,237, 24,215,168, 89, 75,215, 38,117,170,224, +209,211, 23, 56,188,253,111,145, 97,207,230,101,248,117,207, 77, 84,178,179,128, 86,157,139, 75,127,238,250,168, 85, 43, 54,124, +161, 40,151, 71,110, 9,129,158,113, 42, 63, 81, 81, 11,136, 86,221,186,117, 75, 85,180,210,210,210,148,229,117, 12,133,101,164, +209, 33, 39, 87, 9,165,226,219, 16, 45, 66, 72,131, 54,109,218, 92, 59,113,226,132,149,173,173, 45,226,227,227, 63, 33, 90,132, +144, 6,173, 91,183,190,118,226,196, 9, 43, 59, 59, 59,196,196,196,232, 29, 86,164, 4,146,133,228,228,100,146,158,158,206, 89, + 88, 88, 84,136,108,241,120, 60,168,213,106,132,134,134,234,251,183,122,175, 16, 51, 51, 51,219,119,244,232, 81,179,148,148, 20, +240,249,124,132,134,134,126,178,234,176,224,245,199, 31,127,136,250,244,233,179, 27, 64,153,203,218, 24,134, 89, 55,124,248,240, + 49,113,113,113, 22,182,182,182, 72, 72, 72,128, 88, 44, 6,165, 20,196,203, 11,109, 63,124,128,150,101, 33,147,201, 16, 22, 22, +134,157, 59,119,230,170,213,234,117,165,148,143,216,200,200,200, 93, 36, 18, 97,216,176, 97,159,156,219,191,127, 63,122, 53,225, + 55, 25,215, 89,146,195, 64,170, 78,148,117,187,196,231,243,201,248,217,191,213,104,222,206,187,238,155,144, 71,239,147, 19, 99, +239,151,115,251, 58,141, 70,131, 90,181,106,225,201,147, 39,184,126,253, 58, 58,116,232, 0, 79, 79, 79, 4, 5, 5,225,234,213, +171,120,254,252, 57, 8, 33,176,178,178, 42,152,126, 81,230, 28, 12,141,130, 65, 82,124,234,103,234, 85,241, 99,145, 72, 4,181, + 82,171, 87, 25,189,126,253, 26, 79,158, 60, 41, 12, 45,195,231,243,153, 31,126,248, 1,148, 82, 26, 17, 17, 1, 19, 19, 19, 58, +114,228, 72, 86, 32, 16, 48,113,113,113,250,214,253, 60,245, 42,159,100, 9, 68,194, 79, 8, 26,199,113,217,129,129,129,227, 8, + 33, 65,132,144,213,249, 95, 27,226,104, 25,240,159,140, 11, 69,247, 58,212, 75,209,162,148,126, 0,208,137, 16, 50,244,204,153, + 51,235, 54,109,218,100,211,163, 71, 15,164,167,167,195,213,213, 21, 14, 14, 14, 56,127,254, 60, 46, 94,188,152,194,178,236, 44, + 74,233,193, 18, 30,182, 78,165,197,218,160,148, 82, 71, 71,199, 19,234,156,156,137,141, 61, 61,112,243,248, 93, 95, 7, 7,135, +241, 78, 78, 78,211, 71,206,255,126, 84,251,222, 77, 17,246, 60, 2, 15,175, 6, 35, 49, 58, 5, 35,219,254, 92,166,205,226,147, +225,205,205,205,199, 24, 25, 25,137, 1,104, 75, 24, 21,127,178,234,176,168, 77,150,101, 89,141, 70,131, 99,199,142,233, 69,182, +142, 28, 57, 2,149, 74, 5,182,152,127,181,168, 77,202, 81, 34, 16, 74,224, 88,169, 22,180,218, 92,112,220,151,169, 55, 69,109, + 22,140, 64,223,139,197,176, 77, 73,193,163, 71,143,244,149,102,203, 44, 35, 74,169,138, 16, 50,108,227,202,217,231, 39,251,252, +102,222,161, 85, 67,252,178,118, 63,180,218, 61,224,241,121,144, 73, 68,104,220,172, 53,248, 80,227,119,191, 57, 25,138,172,244, + 97,197,183,226,249,204,102, 89, 30, 22, 10,176, 28,135,235,119, 30,235,125,239,133,189, 61,203, 66, 32, 16,224,221,187,119,202, +146, 86, 27,242,249,121,110,206,130,145,122, 89, 54, 41,199, 17,161, 72,138, 74,174,181,161, 81,231,124,147, 50,178,181,181,157, +115,250,244,105,171,130, 80, 9, 65, 65, 65, 32,132,132, 22, 81, 71,230,156, 62,125,218, 74,169, 84, 34, 36, 36,164, 96,171,169, +208,138, 60, 71, 5, 74, 86,114,114, 50, 73, 72, 72,128,145,145, 17, 47, 40, 40, 72, 93,191,126,253,167, 40,123,231,135, 66,155, + 42,149, 42,178,180,249,147, 42,149,202, 73, 42,149, 10,139,253,214,209,221,221, 61,172,184, 11,177,164,116,102,102,102, 62,154, + 59,119,110,227,174, 93,187, 98,206,156, 57,105, 22, 22, 22, 38,191,255,254,187,128,207,231,147,201,147, 39,179, 73, 73, 73, 57, +187,118,237, 50, 59,115,230, 12, 50, 50, 50, 2,202,187,119, 74,105, 54, 33,100, 92,171, 86,173,246, 95,190,124,217,200,221,221, + 29, 89, 89, 89,160,148, 98,223,190,125,152, 60,121, 50,164, 82, 41,194,194,194,208,171, 87, 47,133, 66,161, 24, 87,124,238,100, + 17,155,132, 16, 66, 57,142,195,162, 69,139, 10,131,147, 22, 4, 43, 53,145, 17,236,156, 89,213,120,218,174, 76,227,161,191,236, +250, 1, 0, 88,134, 97,223,132, 60,122,191,111,203, 47,183, 68, 34,209,157,114,202,104,193,180,105,211,126,247,246,246,150,201, +229,114,164,165,165,225,254,253,251,120,240,224, 1, 30, 62,124, 8,141, 70, 3, 43, 43, 43, 88, 88, 88, 32, 33, 33, 1,175, 95, +191, 86, 2, 88, 80,150, 77,177,145, 16,213,106, 20,172,252,205, 83,176,132, 69, 86, 27, 22, 85,183, 68, 66,161, 94,207, 81,187, +118,237,208,188,121,243, 2, 2,196, 70, 69, 69, 37,168,213,106, 82,132,244,199, 21, 16,114, 23, 23, 23,230,224,193,131,180, 44, +155, 15,119,110,197,229,229, 11, 32, 22,137, 48, 43, 52,166,144,116,237,239,208, 8, 66,177, 8, 30, 61,251, 21,237, 7,182, 17, + 66,246,228,127, 86,235, 83,231,191, 98,224, 99,176,249,111,110,243, 63, 25,148,210, 4, 0, 21,219,130,167,200,143, 15, 19, 66, + 46,253,248,227,143,126, 13, 26, 52,248,113,253,250,245, 68, 36, 18, 97,201,146, 37, 52, 62, 62,126,111,254, 40, 36,253, 11, 19, +182,247,246,169,128, 9, 35,124,122,147,153, 27, 70,182,121,122, 35,228,117,189, 86,238,168,215,202, 29, 79,111,190,194,150,249, + 71, 14,178, 58,118, 81, 66, 66, 66,116, 57,166,212,157, 90,215, 44, 62, 25,222,202,255,214, 13,171,138,174, 58,228, 56,238,196, +145, 35, 71,166,246,237,219,151,247,248,241,227,207,230,100, 21,108,187,195,113, 28,174, 93,187, 6,173, 86,139,189,123,247,114, + 28,199,149, 30, 71, 11,244,236,198, 13,126, 35,246, 30, 56, 43, 22,139, 8, 30,220, 57,137,204,244,178, 85, 58,145, 72,136, 63, +246,157,210,138, 68,194, 55, 37,157,215,106,181, 49, 55,110,220,176,235,194,178, 66, 30,143,247, 25,129, 42, 13, 39, 78,156,208, +113, 28, 23, 85, 78,185, 4, 16, 34,236,185, 98,206,232, 35,222, 3,127,180,107,213,170,141,208,218,214, 14,132, 16, 36, 37, 38, + 33, 44,228,177,238,210,201,221,137,185,138,108,189,182,224, 25,189,230,118,225,156, 44, 0,232, 49,121, 83,225,252, 44, 0,232, + 57,114, 46,188, 90,212, 1,209, 71,122,250,155,100,113, 12,195,192,216,216, 24, 12,195,148, 24,226,193,204,204, 76,166, 82,169, +148,249,129, 24,203,148,138, 40,240,205,203,136,101, 89,143,244,244,116,228,230,230,226,193,131, 7,116,229,202,149,201,201,201, +201,133,147, 54,117, 58,157, 71, 90, 90, 26,114,114,114, 16, 16, 16, 64,253,252,252,146, 83, 83, 83,231, 87,228, 25,146,201,100, + 77, 4, 2,193,211,244,244,116,206,200,200,136,167,211,233,116,245,235,215,151,200,100, 50,189, 55, 84,143,143,143,239, 90,218, + 57, 55, 55,183,183,111,223,190,173,206,178,108,209, 61, 16, 69, 42,149,202,189, 85,171, 86,250,184,124,166,237,217,179, 7,167, + 78,157,106,150,149,149, 53, 60, 42, 42,106, 63,128,102, 2,129, 0, 47, 94,188, 8, 85,169, 84, 67,250,246,237,187, 47, 61, 61, +253, 17,128,105,122,182, 27,151, 9, 33,195, 60, 60, 60,246, 44, 93,186, 84,238,233,233, 41,112,116,116, 68,211,166, 77, 17, 22, + 22,134, 11, 23, 46,232,182,109,219,150,171, 80, 40, 70, 83, 74,175,149, 93,236, 32, 12,195, 64, 44, 22, 23,190, 36, 18, 9, 68, + 34, 17,178,149, 20, 99,215,134, 43, 25,200,148,235,150,140,187, 64, 1,242, 49, 38, 60, 37,233, 99,204, 35, 66,200,157,248,248, +248,204, 82,242, 76,172, 82,169, 26, 58, 56, 56,240, 9, 33, 27,180, 90,237,200, 41, 83,166, 56,172, 90,181, 10, 53,107,214, 68, + 74, 74, 10,140,141,141,225,238,238,142,228,228,100, 60,126,252,152, 85, 40, 20,219, 1, 44,163,148,150,233,142,204, 72,201,130, +179,189,203, 39,202, 39,165, 20,148, 5,116,106, 22,172,150, 66, 67,116, 16, 10,117, 16,137, 68,250,116,150,148,227, 56,164, 59, + 56,128, 11, 9,193,195,135, 15, 65, 41, 45, 85, 85,171, 85,171,150, 30, 5,196, 65, 44, 17,127,226, 46, 36,132, 64, 36, 22, 67, + 40, 22,125,182,114,198,160, 98, 25,240,223, 14,125,231, 90,100, 0, 24, 79, 8,217,223,190,125,251,243,148, 82, 33,242,252,145, +119,191,230,207, 19, 18, 18,158, 57, 58, 58,206,179,115,182,240,235, 54,188, 13,106, 54,116, 5,203,176,184,127,241, 5,246,174, + 58,115, 52, 46, 38,110,164, 62,123,159,113, 28,119,171,117,147,154, 60, 20,137,213,237,232,232,200,125,201,170,195,204,204,204, +197,179,102,205,194,156, 57,115, 42,188,234,176,180,107,130, 66,147,198, 55,240,176,113,238,217,173,109, 23, 16, 30,213,104,212, +101, 52,124, 40,140, 92, 42, 18, 9,223, 60, 14,140,175, 95,210,117,201,201,201, 93, 70,141, 26,117, 77, 32, 16, 84,169, 72,158, +115, 28, 23,149,152,152,216,177,252, 50,215,221, 39,132,184,159, 59,186, 99,198,229, 83,123,186,112, 28,235, 70, 0,240, 5,162, +247, 58,173,246,138, 90,153,181, 94,223, 77,165, 87,143,111,137,105, 27,175, 98,235,156,158,152,226,119, 28,187, 23,141,197,188, +181, 71,240,219,156,105, 88,185,233, 16,126,153, 54, 12,253,135,142,226, 40,225,221,211,247, 62,248,124,254,229, 29, 59,118,140, + 24, 59,118,108,225,162, 5, 74,233, 39, 13,187, 78,167, 83,114, 28,135,237,219,183,115, 0, 46,151,101,239,211, 50, 34,180,172, +249, 82,250,150, 81, 86, 86,214,232,150, 45, 91,238, 3, 32,161,148,190, 75, 79, 79,255,137, 82, 90,184, 53, 84, 78, 78,206,232, + 86,173, 90,237,163,148, 74, 8, 33,159,157,215, 7,249,161, 30,154, 88, 88, 88, 60,205, 87,178, 36, 95, 50, 33,190,172,172, 46, +195,173,200,234,209,118,112, 40,178,173, 14, 33,100, 85,179,102,205,138,110, 42, 29, 10,160, 73, 69, 19, 69, 41,189, 70, 8,169, +179,104,209,162, 25, 82,169,212, 75,161, 80,212, 0, 0, 99, 99,227, 48,181, 90,125, 75,169, 84,174,207,111,183,202,178,161, 49, + 50, 50, 10, 99, 24,166,174,141,141, 77,222,138,218,124,178, 5, 0,127, 61,101,159, 82,202, 52,173,104,218, 46, 94,188, 88,217, +194,194,226, 59, 66, 72,127, 74,105,173,236,236,108,245,162, 69,139, 2, 78,156, 56,145, 89,165, 74,149,110,222,222,222,196,210, +210, 18, 79,158, 60,161,169,169,169, 39, 1,204,215,103,165, 53,199,113, 81,171, 87,175, 70, 69,159,247,178,206,107,181,218,143, + 23, 47, 94,180,238,154,148, 36,224, 56, 14, 61,123,246,252,132,192, 21,199,155, 55,111,160, 86,171,203, 12,230,168,206, 76, 71, +135, 25,115,129,252,213,159, 5,200, 83,178, 40,168,198,192,171, 12,248,223, 2,249, 71,150, 63, 87, 80, 90,116,116,116, 28, 36, + 53,150, 76,114,173,225, 80, 63, 62, 60,233, 85,118,166,226, 96, 66, 66,194, 14, 74, 41,251,165, 54, 43, 18,176,212, 32,255,254, +115, 54,255,142,163,197,130, 82, 22,148,163,160,148, 3,199,177,121, 27, 94, 83, 14,148,101, 9, 33,184,167, 86,100,142,213, 55, +157,132, 16, 11,107,107,235,101,148,210,174,124, 62,159, 87, 84, 12, 43,250, 57, 95,201,186,156,156,156,252, 75,113,229,245, 63, + 49, 63,255,252,243,207, 18,201,191,190,171, 14,251,247,239,207, 86,240,217,188,101,108,108, 92, 98, 96,206,220,220,220,232,248, +248,248,239,254, 29,242,179, 64, 13,165,122, 52,104,197, 92,240, 21, 94,117, 88,158,205,202,149, 43, 75,180, 90,109, 35, 0,238, +132, 16,115, 0,105, 90,173,246, 74,114,114,114, 34, 33,164, 9,128, 69,249, 63, 91, 78, 41,125,250,175,124,222, 9, 33, 50,107, +107,235, 61, 60, 30,207, 89,159,223, 51, 12,163, 73, 75, 75, 27, 81,116, 64, 80,212,166,181,181,245, 83,129, 64,224,172,135,157, +216,148,148,148, 38,134,246,211, 96,243,191,134, 76, 21,155, 4, 95,244,248,223, 98,181, 71,124,124,252, 49, 0,199,190,165,205, +210, 34,191, 27,240,255,139,220,180,132,127,164, 28,242, 73,211,228,255,181,252, 44, 32, 74, 37,124,255, 12, 0,249, 7,158, 77, +175,255,132,124,161, 95, 56, 98,204, 39, 82,109,191,101, 90, 34, 35, 35,213, 0, 2,242, 95,197,255,239, 41,128,158,255, 70,249, +166, 4, 48,232, 91,217, 43,139, 60, 25, 96,192,255, 42, 12,203,106, 13, 48,192, 0, 3, 12, 48,192, 0, 3,190, 14, 23,138,109, +193,115,161,224, 3, 1,208,169,148,145,142,222,146, 32, 33,164,211, 23,140,164,174, 27,108, 26,108, 26,108, 26,108, 26,108, 26, +108, 26,108,254,111,217,252,159, 67, 65,224,200,127,226, 5,160,147,193,166,193,166,193,166,193,166,193,166,193,166,193,166,193, +230,127,243, 11,192,184,210,142,121, 6,170,105,128, 1, 6, 24, 96,128, 1, 6, 24,240,207, 64,111,162, 37,183,247,240,176,169, +220, 96,159,101,165,250, 65,150,149,234, 7,217, 84,110,176, 79,110,239,225,241,191,152,105,132, 16, 25, 33,100,168, 80, 40,188, +230,224,224,144, 69, 8,153,241, 95,122,159,166,132,144,254,132,144,101,132,144, 62,132, 16,163,111,105,191, 61, 33,130,193,132, + 76, 26, 65, 72,244, 8, 66,162, 7, 19, 50,169, 61, 33,255,117,243, 6,151, 78,115,108,121,247,242,176, 75, 75,167, 57,182, 44, +241,252,108, 71,171, 71,215, 6,110,244,157,236,100,249,141,202,205,196,206,206,110,167,189,189,125,164,157,157, 93,148,157,157, +221, 30, 66,136,153,161,185, 51,192, 0, 3, 12,248,199,112,129, 16, 50,174,224,133, 34,115,180, 4, 0,112,225,194, 5, 79, 0, +183, 1,180,247,246,246,246, 47,254,107, 75,215,122, 99, 61,106,213,156,179, 98,201,124, 98,111,107,109,196,176,156, 54, 34, 50, +166,246,226, 21,126,127, 90,186,214, 91,151, 22, 21,188,251, 11, 58, 3,194,231,243, 7, 73, 36,146, 30, 0, 10, 8, 91,168, 90, +173, 62,207,178,236, 49,125, 87, 17,217,219,219,223,225,243,249,149, 43,242,223, 44,203, 70,127,252,248,177,205, 23,118, 98, 3, + 92, 92, 92,246,120,122,122, 26, 53,107,214, 12, 98,177, 24,139, 22, 45,154, 5, 96,189,190, 54, 44, 45,221, 76,180, 18,233,116, +129, 88,220,153,234, 52,117, 41, 40,192,147,132,112,140,250,134, 72,173, 94,151,150,246, 62, 91,207,180,204, 7, 48, 18,121,203, +209,119, 83, 74, 87,127, 77, 45, 25,217,136,232,116,108, 94,157, 16, 9,192,154,153,153,221, 94,176, 96,129,160, 71,143, 30,216, +189,123,119,155,157, 59,119,142, 35,132,220, 0,240, 23,165,244,253,215,214, 74, 59, 96,124,171, 54,109, 54,142,152, 53,139,175, +188,115, 7, 27,247,236,217,128,172, 44, 0,216, 90,209,186, 36, 18,161,191,181,181,176, 7,165,104, 68, 0, 66,128, 23,201,169, +220, 69,173,150, 61, 70, 43,186,191,207,167,182,135,226,211,229,248,135, 43,106, 35,243, 61, 93, 40,233,233,209, 54,243,253,173, +133, 0,186, 21, 63,207,168,164, 35, 40,191, 82, 15, 37,125, 30, 3, 96,237, 87,146, 44, 35, 27, 27,155,160,179,103,207, 58, 55, +107,214, 76, 0, 0, 79,159, 62,253,161, 71,143, 30, 29, 8, 33,117, 41,165, 89,255, 34,210, 46, 21,240,120,147,196, 66, 97,103, +150,101,235, 1, 0,159,207, 15,214,232,116,215, 24,142,219,170,111, 76, 54, 3, 12, 48,224,191,152,169,148,195, 69,254,157,161, + 79,100,248,219,222,222,222,228,194,133, 11, 20,197,150,136,203,237,106,213,174, 83,199, 99,214,229,211,251, 43,101,164,101,168, + 54,175,217,255, 44, 87, 32, 86,184,215,118, 23,109, 94,191,218, 98,210,180,153,211,229,118,181, 30,229, 36,190,126, 85,129, 70, +215, 69, 38,147,157, 90,179,102, 77, 93, 47, 47, 47,161,173,173, 45, 18, 19, 19, 17, 26, 26, 90,247,230,205,155,189,247,239,223, + 63,139, 16,210,151, 82, 26,173,135, 57,247, 27, 7,246,216, 26, 91, 90,129,213,233,224, 88,191, 81, 97,160,189,119, 55,175,130, +209,106,193,233,116,240,232,209, 27, 0,192,113, 28,106,215,174,205,255,146,140, 36,132, 56,214,169, 83,231,224,170, 85,171, 68, +106,181, 26,143, 30, 61,194,173, 91,183,184,132,132, 4, 63,125,109,200,237,106,120,241,100,198,199, 6, 13,251,209,236,251, 30, + 85,133, 46,118, 54, 0,140,240, 38,130,105,117,233,234,205,166,167,143,237,157, 40,183,171, 49, 40, 39, 49,236, 86,217,100,205, +178, 5, 33,100,101, 65,132,104, 66,200,111, 85,170, 84,249,165,232, 53,197,247,205,163,148, 66, 32, 16, 36,102,103,103, 15, 74, + 73, 73,121, 94,220,166,142,133,224,240,225, 60, 30,177,112,210, 80,254,189,123,247,140,107,215,174,173, 6,128,213,171, 87, 99, +217,178,101,226, 43, 87,174,116, 63,112,224, 64,119, 66,200, 6, 74,233, 95, 95, 83, 49, 69,192,207, 35,102,205,226,203, 35, 35, + 33, 15, 12,196,176,172, 44,193,175,192,207, 21, 33, 90,132,144,170,246,246,194, 63,103,205, 28,229, 81,205,173,133, 72, 36,178, +206,219,196, 91,147, 82, 35, 58,250,121,127,191, 95,119,250, 16, 66,250, 81, 74,223,233,105, 79, 0, 96, 41, 0, 41,128,133, 0, + 22, 37, 39, 39,187,179, 44, 11,123,123,251, 69,132,144, 51, 0, 86,216,216,216,208,228,228,228,185,148, 82,166, 44, 37, 43,235, + 61, 93,248,145, 84,235, 90,179,241, 8,124, 36,151,187,206,236,230,112,201,212,141,172, 88,188, 49,254, 1, 0,116,115,115, 51, +169, 86,203,120,174,220,180,158,101, 86,220,245,185,221,220,220,118, 93,122,175, 31,209, 46, 78, 54, 1,192,209,209,113,245,129, + 3, 7, 42, 53,111,222,188,176,142, 55,108,216,144,191,122,245,106,167, 25, 51,102,108, 0, 48, 74, 79,123, 53,108,108,108,174, +176, 44,171, 78, 77, 77,173, 81,240,189,109,131,190,173,172, 76,140, 59, 38,167,103,223, 73,121,121,198, 95, 79, 91,205,164, 34, +209,201,191, 14,110,116,104,216,188, 37, 79,110,109, 11, 85, 92, 60,114,116,218, 78,183,238, 63,108, 63,110,210,207,211,242,203, +232,177,161,171, 49,192,128,255,105,148,202, 69,254,147, 33, 40,194, 36, 75, 84,144, 36, 18,177,207,226, 5,115, 73, 70,106,134, + 82,149,149,173,209,169, 84, 42,158,136,170,130, 95,125, 72,226, 9,248, 25, 51,166, 77, 53,241,153,183,192, 7,192, 48,125, 73, + 86,131, 6, 13, 30,159, 58,117,202,214,210,210, 18,153,153,153, 72, 77, 77,197,227,199,143, 65, 41, 69,223,190,125, 37,205,155, + 54,109,180,112,209,162, 7,132,144,150,250,144, 45, 99, 75,107,172,110,147,183, 23,237, 47,145,169, 5,255,131,157, 3,122, 20, + 94,179, 44, 54, 19, 0, 32,149, 74, 11, 55, 36,254, 2,180,236,216,177,163, 8, 0,198,140, 25,147,149,157,157,237, 11,224, 48, +165, 84,175,157, 86,229,118, 53,188,172, 29, 28,207,255,190,125,181,172,158,155, 59,180, 58, 6, 81, 31,227, 33, 16,154,195,217, + 89,132, 81,195, 58, 11,219,181,178,180, 94,185,124,231, 5, 99,155, 26,125,114,147,195,174,148,102,203,220,220,124,255,177, 99, +199,112,252,248,113, 0, 64, 88, 88, 24,220,221,221,141,203, 75, 67, 72, 72, 72,181, 94,189,122, 29, 5, 80,189,188,107,139, 7, +198,151, 72, 36,104,211,166, 13,106,215,174,141,179,103,207,182, 7,240,215,215, 86, 64,229,157, 59,144, 7, 6, 2,254, 21, 31, +188, 16, 66,170, 54,110,236,250,240,226,133,131,214, 23, 46,134, 98,237,218, 61,120,255, 62, 79,104,171, 86,173, 26,134, 14, 25, + 32, 12, 14, 14,168,211,191,255,208, 0, 66, 72, 27, 74,105,152, 30,102,151,238,218,181,107,126,149, 42, 85,208,191,127,255, 1, +117,234,212,177, 55, 53, 53,197,142, 29, 59,224,224,224, 80, 77,163,209,188, 59,123,246,172,227,199,143, 31, 49,117,234, 84, 0, +152, 85,154,161,246, 93,218, 47,148,244,244,104, 91,179,241, 8,200, 77, 29,176,235,200, 49,188,121,182,191,173, 90, 27,186,208, +119,178,211,112, 37,149,140,116,118, 55,241,169,220,196,211,170,122,157, 94,112,109,252,220, 90,197,222,253,176,104, 82, 53, 63, +129, 84,181,127,241,154,248,212,207,238,121,192,159,252,186, 89,175, 45, 67,174, 33,149,210,197, 92, 62,193, 42,108,144, 88,138, + 94,237,218,181, 43, 44,184,200,200, 72,168,213,106,120,120,120,240, 52, 26,141,151,158,249, 90,227,187,239,190,187,119,241,226, + 69,171, 26, 53,106,124,178, 37,140,189,149,121, 23,255, 83, 27,166,174,220,120,168,150,109,237, 62, 25, 73,175, 78, 7,151, 71, +178, 90,183,104,124,253,210,169,131,114,146, 19, 3,177,121, 10,192,165, 34,252,232, 31, 32, 70,150, 24, 52, 97,166,192,171, 99, + 7,167,206,221,250, 93, 39,132,116,164,148, 62, 49,244, 53, 6, 24,240, 63,173,106,209,255,182,123, 42, 36, 90, 69, 88,228, 39, +224, 40, 87,223,206,214, 74,182, 97,205,190, 39,124,173, 70, 99,108,110,166, 17,154,153,114,196,196,140,175,213,232,114, 92,171, +185,138, 57,202,213, 47, 69, 74,187, 94,124,212, 45,147,201, 78,253,245,215, 95,182, 66,161, 16, 28,199,193,198,198, 6, 17, 17, + 17,200,200,200, 64,118,118, 54,222,135,134,162,138, 75, 37, 44,241,153,235, 48,117,174,207, 41, 66, 72,147,162,110,196,146,150, +141,178, 58,109,241,198,189,180, 77,132, 63,121, 47,203,102, 41,136,136,142,142,134, 92, 46, 71,221,186,117,229,247,239,223,191, + 91, 26,201, 42,110,211,210,210,205, 68, 32,151, 29,223,246,251, 34,153, 86, 23,130, 87,225,105,168, 89,165, 45,236,172, 92, 16, +159,166,193,195,199,127, 33, 36,232, 48,220,156, 92, 48,121, 66, 7,169,223,234, 63,143, 89, 88, 84,117, 73, 79,255,144, 85,146, +205,172,172, 44,121,213,170, 85,225,226,146,183,239, 25,203,178,120,245,234, 21, 88,150, 45, 60, 46,250,190,239,228, 77, 48, 89, + 81, 24,241,195, 15, 72, 77, 77,149,151,100, 83,200, 7, 51,115,220, 80,129, 76, 8,136,141, 45, 53, 57, 57, 57,133,234,160, 86, +171,197,139, 23, 47,208,178,101, 75,207, 19, 39, 78,248,151, 35,161,234,149,159, 90,224,183,141,123,247,110, 26,150,153,201, 3, +128,221,132,112, 90, 74,127,211,183, 46,217,218, 10, 79, 94,190,116,192,154,207,123, 13, 75,179, 95,241,248,113, 20,180,218,188, +244,166,166, 38, 97,202,164, 44,136,132, 38, 56,123,246,144,149,135, 71,155,147,249,174, 51,174,156,116, 74, 47, 93,186,132, 41, + 83,166,224,213,171, 87,142,124, 62, 31,143, 30, 61,130, 76, 38,195,154, 53,107,248, 30, 30, 30,142,198,198,198,184,124,249, 50, + 18, 19, 19, 73, 89,233,188,125,229,246,138,204,247,183, 22,126, 36,151,187,238, 58,114, 12, 63, 14, 25, 4,123, 26,126,215,204, +141,172,248,174,103,235, 95, 40,191, 82, 15, 99,147,250, 22,238,117,123, 66, 36,150, 99,242,207,203, 16, 22,114,206, 66,145, 29, + 52,137,176, 49,149,144,191,247,223, 39,155, 42,159,232,207,110, 58, 18,208,248,154,203, 19, 87,199,198,227, 31, 1, 8,250,155, +104, 85, 19, 16, 30,107, 86,160, 94,190,123,247, 14,239,223,191,135, 64, 32,128, 82,169, 4,195, 48, 37,166,211,201,201,105, 60, +195, 48,191,228,151,243, 62, 7, 7,135,209, 7, 15, 30,180, 42, 74,180, 11,148,172,180,140,172,244,128, 39, 47,223,204, 28,223, +191,253,157,135, 33, 49,230, 13,122, 71,103, 4,158,201, 44,165,140,164, 50,177,248,228,229,211,135,228,186, 15, 55, 97,236,209, + 30, 66,185, 59, 88, 93, 28, 20,233,185,200,126,159, 0,245,239, 91,208,112,210, 12,156, 59,243,167,188, 78,189, 38, 39, 8, 33, +238,148, 82,205, 23, 60,155, 21,145,248, 13, 54, 13, 54, 13, 54,255, 13,109,150,197, 69, 0, 52, 6, 96,151,255, 57, 21,121, 83, +102,172, 1,164, 32,111, 59, 48, 59, 0, 26, 0,226, 34,191, 41,126, 92,244,218,226,199, 69, 63,167,230,127,182,205,127,127, 2, + 32,173,156, 65,165, 3, 0,111,228,205,205,242,206,207, 35,253, 34,195, 19,194,203, 98, 89, 78, 34,178,177, 85,141, 25,216,177, +222,213,235, 79, 95, 24, 89,155, 10,186,180,111,228,249, 56,248,195, 3,194, 35, 58, 66,120,122,205,251,224,243,249,131, 54,108, +216, 80,207,212,212, 20, 28,199,193,204,204, 12,201,201,201,208,104, 52,200,204,204,132, 58, 59, 11,218,236, 44, 4,198, 68,162, +181,103,123,244,235,250,157,199,161, 51,127, 13, 2,112,180, 44,187,142,245, 27, 21, 42, 89,203, 42, 91,253, 45, 77,196,100, 20, +146,174, 95, 27,185, 67, 36,151,163,243, 76,159,175,169, 88,207,197, 98,241,165,190,125,251,118,155, 61,123, 54, 47, 33, 33,225, + 50, 33,164, 53,165,180, 92,183,169, 86, 34,157, 62,113,122, 15, 11, 11, 57,197,137,107,127,161, 93,163, 33, 48, 18,243,145,154, +165, 5, 33, 64,232,203, 83, 32,196, 18, 65, 97, 9,104,219,208, 20,223,117,241,144,159,249, 51,116, 54,254,158, 31,244, 89,209, +164,167,167, 35, 41, 41, 9, 58,157, 14, 58,157, 14,253, 7, 12,192,129,253,251,145,155,155, 11,165, 82, 9,141, 70, 3,150,101, +193,227,241,112,237,252, 9,196,124, 8, 69,171,150, 45, 81,154, 36,187,239, 57, 21, 18, 66, 30,190,121,243, 6,161,161,161,136, +141,141,133, 84, 42,133,189,189, 61,150, 45, 91, 6,181, 58,111,143,178, 1, 3, 6,120, 2, 8,254,218, 7,234, 61,176, 51,130, +101, 23,118, 59,125,218,246,254,233,211,220,195,115,231, 98, 37,217,217, 59,244,249,173, 72,132,254,171,127,155, 80,211,216,216, + 24,177,209, 27, 80,171,150, 8,179,102, 88,193,247,215, 20, 0,192,212, 41,206,104,218,196, 26, 89, 25,127,194,218,118, 62, 54, +109,154,230, 54,114,228,186, 31, 0,236, 43,199,244,194,191,254,250,171,159,187,187,187,211,243,231,207,137, 88, 44,134, 76, 38, +131, 76, 38,131, 84, 42, 69, 82, 82, 18, 34, 34, 34,232,234,213,171,227,144,231, 90, 44, 21,249,238,193,110, 51,187, 57, 92,122, +243,108,127, 91, 39,254,135,192,126,147,219, 68, 6, 61,124,158,125,245,218,253,229,140, 74, 26,147, 17,123,125,110,213,166,207, +173, 39,205, 89,138, 45,171, 23,227,205,163, 59,105,118, 46, 89, 91,101, 68,189,175,121,231, 18, 84,178,246, 75, 5,147, 22, 13, +100,198,143,236,103,126,206, 46, 96,252, 69, 1, 73,254,152,242,108, 13, 34,158, 43, 37,213, 27, 13,175, 81,141,167,185,121,243, +166,172, 93,187,118, 80,169, 84,133,202,228,193,131, 7, 57,134, 97, 74,116, 71,107,181,218, 95,226,226,226, 28,148, 74, 37,186, +118,237, 58,117,205,154, 53,198, 5,123,212,177, 44,251,137,146,181, 98,253,129, 43,211,127,217,122,235,202,209, 95, 29, 87,248, +140,110, 63,108,242,202, 91, 40,101, 31, 73, 1,143, 55,233,220,233, 61,246, 82, 11, 29,100,150,223, 65,149,168,196,155,157, 63, + 66,145,165, 66,211, 21, 75, 1,136,161,209,241,176,163,103,127, 8,173, 28,177,120,236,104,199, 5, 59,118, 77, 0,176,193, 48, +174, 55,192, 0, 3,138,193,142, 16,114, 30, 0,124,124,124,230,251,250,250,190, 36,132,156,167,148,246,200, 39, 58,231, 41,165, + 61, 10,174,201,239,179, 63, 59, 46,184,182,248,113,241,207,243,230,205,171,227,231,231,183,170,101,203,150, 71, 3, 2, 2, 62, +148, 71,180,144,183,255,243,206,226, 91,241, 0,249,171, 14,189,189,189, 73,209,247, 79, 20, 45,142,187,243,238, 67,164,226,187, + 78,205,157,207,251, 7, 63, 25, 53,202,187,227,160,158,237,186, 68, 68,167,134,186,185,218, 91,191,124, 25,108,202,113,220, 29, +125,114, 73, 34,145,244,232,208,161,131, 32, 61, 61, 29, 70, 70, 70, 72, 78, 78, 70, 92, 92, 28,180, 90, 45, 84,153, 25, 80,103, +102, 64,149,145, 14,109,102, 58,222, 63,125,140,250,110,213, 36,249,147,229,203, 35, 64, 37, 42, 85, 69,149, 45,177,137, 9, 36, + 38, 38, 32, 21,116, 27, 18, 66,190,183,176,176,120, 72, 8, 89,152,223, 41, 77,154, 59,119,110, 10,199,113, 88,185,114,165,169, + 92, 46, 63, 65, 8,145,148,103,199,196,134,223,163,101,195,186,188,215, 17, 65,104,211, 96, 4,106, 84,237,142,136, 68, 37, 82, +178,181, 72,202,208,162,105,187,205,168,220, 96, 41, 42, 53,244, 69,104, 84, 26, 28,157,220,121, 16, 72,202,220,252, 57, 38, 38, +230,147,227,163, 71,142, 64,161, 80,192,205,205, 13, 67,134, 12,193,220,185,115, 49,100,200, 16, 56, 58, 58, 98,216,192, 94, 88, +188,120, 49, 62,126,252, 88, 94, 82,213, 53,106,212, 80,187,186,186,170, 93, 93, 93,213, 90,173, 22, 57, 57, 57,200,200,200, 40, +158,223,211, 42,252,148,216,217,205,115,112,112, 8,178,179,179,123, 41,149, 74, 47,190, 32,228,181,202,213,213,174,117,239,222, +164,246,192,129,252, 40,153,140,248, 3,114,125,108, 89, 91, 10,189,189, 58,116, 19,103,164,239, 1,144, 39, 82,141, 30,101,131, +123,254,117,112,255,110, 19, 76,153,228, 6,194,147,130,240,196, 80,228,222, 68,243,102, 45, 69,230,230,164, 71, 57,101, 61, 20, +192,139,214,173, 91, 59, 78,158, 60,153, 72, 36, 18, 76,157, 58, 85, 59,118,236,216,183, 67,134, 12,121,123,227,198, 13,214,213, +213, 21,149, 42, 85, 34,149, 42, 85,114, 0,240, 34,255, 55,101,194,212,141,172, 80,107, 67,239,154,187, 27,127, 96, 97,221, 42, + 71, 39,233,191,120, 77,124,234,242,173,225,107, 35,222, 40,170,189,121,116, 39,245,109,200, 57, 46,226,201,237,148,248,183,217, +213,150,111, 13, 95, 59,111, 75, 92,137, 15,181,191, 63,184, 83,231,253,181,138, 92,133,160,119, 79, 47,197,248, 49,131,106, 88, +202,235, 28,132,211,119, 13, 42,187, 56, 15, 91,188,106,147,118,236,132,233,218,221,127,236,161,217,217,217,200,202,202,194,166, + 77,155,152,115,231,206,197,177, 44, 59,189,180, 49, 16, 0,232,116, 58,140, 31, 63,222,216,212,212, 20, 49, 49, 49,133,138, 40, + 0, 36, 36,167, 6,223,127, 18,242,122,230, 79, 3, 60,115,213,106,245,149,219, 79, 67,107,187,187, 58, 19, 66, 75, 93,136, 34, + 22, 10, 59, 55,105,222,156, 79,105, 6,136,192, 5,239,247,175, 70,214,199, 52,100, 37,165,129, 47, 52, 6, 3, 9,116,156, 24, +230,245,155, 33,236,201,115, 56,217,216, 9, 36, 66,161, 97,235, 44, 3, 12,248, 31, 69, 89, 92,164, 40, 89,242,243,243, 91, 85, +214,249, 34,239,154, 98,199,133, 68,170, 56, 9, 43,250, 25, 0,252,252,252, 86, 81, 74,123, 4, 4, 4, 28, 1,160,212,147, 47, +140, 43,120, 47, 26, 37,190, 92,214,193, 87,105,124,103,207, 93, 8, 11, 51,153, 89,179, 70,238,246,103, 47,251, 63,189, 19,240, + 52,180,114, 37,107, 27,170,211, 88,252,182,110,139, 51, 81, 40,245,157, 12,238, 97,109,109, 13,173, 86,139,119,239,222, 33, 54, + 54, 22, 90,173, 22, 76,110, 46,212, 25, 25, 80,165,167,131,205,205,134,136,101,161, 76, 78,130,149,145, 20,248,123, 69, 98,121, + 55, 88, 34,209, 42,120,151,154,154, 66, 98, 98, 10,158, 80, 88,162, 91,177, 20,155,141,155, 53,107,118, 60, 36, 36,164,121,167, + 78,157,150, 19, 66,204, 40,165, 81,113,113,113, 29, 23, 45, 90,164,182,179,179,195,248,241,227,107, 2, 24, 81, 46,201, 20,107, + 60, 92,237,107,162, 70,181, 17,168, 92,169, 3, 50,114,117, 72,206,210, 33, 41, 67,139, 29,155, 91,226,228,238,102,184,119,178, + 45, 66,174,116, 70,134,206, 30,114,199,239, 65, 89, 77,157,178,108, 94,187,118, 13,203,150, 45,195,242,229,203,177,114,229, 74, + 44, 95,190, 28,113,113,113,168, 91,183, 46,162,163,163,113,233,210, 37, 36, 36, 36,192,218,218, 26,143, 31, 63,198,250,245,235, +113,239,222, 61,125,148, 59,189,174, 33,132, 84,200,151,206, 48,204,200,132,222,189,235, 37, 90, 90,214,110,212,168, 81,183,169, + 83,167, 86,107,221,186,117,225,249,106,213,170,185,200,100,178,143,132,144,221,132,144,134,101,217,226,128, 70, 54, 54,117,161, + 81,191,206, 47, 43, 33, 8,145,162, 67,231, 80,180,110,251, 20, 90,157, 8, 60, 34, 1,143, 39, 5,195,164,194,194,194, 17,148, +146,186,229, 36,113, 81,114,114,178,251,245,235,215,121, 17, 17, 17,144, 74,165, 0, 16,185,100,201,146, 45,107,215,174,125,101, +101,101,197,158, 63,127, 30,103,206,156, 65,143, 30, 61,248, 99,199,142,117,175, 84,169,210,246,242,238,123,241,198,248, 7,135, +215, 93, 26, 44,212, 89, 52,148,202, 42, 87, 65,174,252,251, 73,237,109,140, 1,224,210,251,247,217,182, 46, 89,126,185,217, 65, +209,230,206, 57,191,150, 55, 17,158,210,197,220,179,183,175, 31, 30, 62,125, 57, 51, 41, 49, 93,216,168, 94, 29,165,239,178, 57, +162,202, 85,170,255,182,120,238, 79,246,113, 89,210,140,206, 83, 47,189, 62,117,249,113,206,240, 81, 63, 50, 99,198, 77, 86, 93, +186,124,237, 52,199,113,245, 74, 91,113,200,113, 28, 18, 18, 18,240,242,229, 75,132,135,135, 35, 57, 57, 25, 41, 41, 41,200,206, +206, 46,116, 55, 26,101,103, 93,216,178,247, 92,160,177, 76,102,212,188,158,187,203,163,231,175,146,140,101, 50, 35,247, 42, 46, + 53, 8, 89, 90, 98, 59,194,178,108, 61,169,145, 12, 0, 65, 70,200, 29,228,164,231, 32, 39, 35, 7,217,105, 57, 80,107,249, 80, +169,121, 80,106,120,112,245,252, 14, 57,185, 42,228,164,102,130, 99,217, 6,134,238,198, 0, 3, 12, 40,163, 95, 62,239,227,227, + 51, 95,207,203,245,118,111, 22, 39, 94, 62, 62, 62,243, 9, 33,231,231,205,155, 87, 7,122,204,105,166,148,238, 44,254, 42, 56, + 87,110,120,135,148,148,176, 28, 83,155,218,125,103,252,252,203,165, 35,127,108,182, 85,171, 21,209, 86, 22,114, 86,110, 36,182, + 30, 51,126, 37,178,115,210,251,228,164,233,191, 74, 42, 61, 61, 29, 31, 62,124,128, 76, 38,131, 72, 40, 4,171, 84,130, 85,230, + 66,153,158, 10,158, 86, 13, 17,203,194,210, 72, 6, 87, 71,123, 84,182,179,215,203,230,187,155, 87, 11, 39,190, 23,117, 23,174, +110,230, 1,177,177, 28, 98, 19, 57, 38,158,191, 13, 0, 16,137, 68,192,162,229,250, 20,166,181,147,147,211, 95,135, 15, 31, 22, + 37, 39, 39,227,197,139, 23,129,148,210, 76, 66,136, 9, 0, 46, 52, 52,244,122, 72, 72, 72, 15,119,119,119, 0,112, 43,207, 94, + 86, 10,143,213, 49, 20, 49, 31, 35, 17, 17,251, 28,150,102, 85, 33, 52,170,129,164, 12, 45, 36,178,170,208,169,255,246, 62,170, +178,162,160,212,234,183, 48, 82,163,209,128, 97, 24, 48, 12, 3,141, 70,131,113,227,198,225,126, 64, 0,142,158,185,129, 15,239, +195, 80,179,138, 61,126,248, 97, 56,154, 53,107,134,128,128,128, 50,109,141,108, 68,116, 11,218, 65,176,174, 27, 15, 98,185,149, +186,197,220, 43,143,244, 33, 91,148, 82,162, 71,126,174,237,209,163, 71,245,176,220, 92,188,124,253, 26,157,150, 44, 1, 0, 92, +188,120,241,147,123,153, 57,115,166,248,213,171, 87, 99,158, 62,125, 58,134, 16,178,142, 82, 90,242,100,115, 10, 92,184,240, 0, + 63,253,244, 10,201,201,121,243,181,143, 29,249,155,151, 70,124,208,162,171,119,158, 71,203,220,220, 28,235,214,213,213, 43, 63, + 89,150,197,206,157, 59, 11,221,133, 0, 32, 16, 8, 90,207,156, 57,179,111, 73,215, 87,175, 94, 93, 84,158,205,153, 3,156,165, + 47,162,100,147,204,170, 87,174, 99,106, 93, 31,169,186,231,117,159,199, 37, 76,153, 57,192,121,195,186, 19,177, 42, 25, 81,239, + 35,108, 76, 37,129, 84,181, 95,159, 52,190,191,180, 73, 99, 94,121,212,254,143,201, 89, 11, 38,255, 56,212,202,212,220, 54,119, +247, 22, 95, 11, 30,159, 71,255,122,170,205,168, 83,205,202,252,251, 22, 27,115,126,154,177,232,185,134,137,153,140,152,191,194, +202, 10,113,193,178, 44,226,227,227,145,156,156,140,232,232,104,164,164,164,228, 63,251, 41,159,173, 92,173, 96,131, 8,101,116, + 52,162, 78,239, 70,229,225,195,209,116,249, 50,176,156, 0, 74, 5,139,117,173, 58, 34, 61, 83, 9, 53, 71,224,216,184, 21,126, +188,120, 23, 60,202, 2, 59,182, 26,122, 18, 3, 12,248, 31,133, 62,225, 29, 10, 8,145,175,175,111,143,111,253,255, 69,201,150, +175,175,239, 75, 95, 95, 95,189,255,171,184,203,176,232,113,185,225, 29, 0, 32, 43,249, 85,184,149,107,253,248, 92,101,174,145, +157,173,141,218, 72, 42,225, 50,179,178,249,207,131, 3,181, 57, 9,239,222, 84,224, 62, 66, 67, 66, 66,234,198,199,199, 35, 58, + 42, 10,140, 50, 23, 60,181, 6, 84,165, 64,167, 54,173, 32, 5, 32,229, 17,136, 56, 45, 4,124, 49,178,115,178, 0, 32,180,220, +206, 81,167,251, 76,217, 34,132, 64,108, 98, 2,177,177, 49,196,114,147, 79, 20, 46,125, 20, 27,137, 68,114,248,196,137, 19, 14, + 78, 78, 78, 88,182,108, 25,156,157,157,107,213,171, 87, 79,209,182,109, 91,153,157,157, 29,106,215,174,141, 86,173, 90,225,210, +165, 75, 0, 80,110, 76, 41, 29, 35, 13,122, 19,137,214, 41,105, 1,184,123,251,119,104,148,106, 52,242,252, 29, 90, 65,101,216, +212, 89, 10,238,221, 65, 40, 62,158,205, 83, 15,236,123, 34, 54, 58, 18,132, 47,126,169,175,242, 84,240, 57, 48, 48, 16, 71,206, +250,195,193,213, 3,209,111, 95,227,245,173,235,184,111, 99, 5, 87,143,218,133,110,160, 82,211,200, 66,176, 98,107, 97,120, 7, + 73, 90, 90,154,196,210,210, 82, 93,144,119, 14, 14, 14, 95, 67,182,134,206,158, 61, 27, 25, 66, 33,224,237, 13, 81,120, 56,180, + 90, 45, 90,180,104,129,166, 77,155, 2, 0, 90,180,104, 1,129, 64,128,250,245,235,195,209,209, 17, 91,183,110, 29,138, 82, 86, +245,241, 8, 94, 48, 76,106,173,106,213,170, 21, 18,173,253, 7,146,241,252,105,103, 16,136,177,105,203,223,209, 28, 92, 92, 92, +240, 49, 33, 28,132,208,144,114,210,184,220,222,222,126,145,131,131, 67,181,181,107,215,242,165, 82, 41, 38, 76,152, 80, 53, 39, + 39,167,114,190,148,140,121,243,230,229,169, 84,139, 23, 99,201,146, 37, 80,171,213,138,210,140, 29, 88, 95,223, 49, 41,141, 27, + 99,103,239,212,199,203,186,114,189, 14, 93, 58,161,170,123, 7,116,232, 18, 13, 0,171, 44, 5,145, 3, 87, 47,172,123,218,186, +146,229,158,171,151,175, 45,110,227,217, 97,129,207,120,139, 21,126, 59,210,203,157,243,152, 25,181, 47,251,141,120,208,250,205, +219, 15,172,255,101,222, 52,105,116,178, 38, 61, 46,157,230,200, 37, 2,185,155, 29,145, 79,249,121,249,135,248,248,240, 89,136, +185, 92,238, 74, 75,142,227, 16, 30, 30, 94, 56,167, 79,165, 82, 33, 55, 55, 23, 49, 49, 49,133,117, 70,105,108,218,117,242,168, +158, 13,114,149, 74,197,163,224,183,209, 11,167, 14,107,153,171, 84, 42,222, 70, 68,135, 81,186,177, 68, 54,198,227,241,130, 21, +217,138, 78,138, 12, 21,146, 95,188,129,115, 71, 87,232, 24, 2, 13,195, 34, 57, 53, 27,106, 6, 96,121, 66,212, 25,248, 3, 88, + 34, 64, 74,124, 28,120,124,126,160,161,187, 49,192,128,255, 89,148, 27,222,129, 16,114,190,101,203,150, 71,139,170, 78, 5,159, + 1,168, 1,148, 53,149, 39,185, 40,153, 42,112, 39,150,246, 63,197,236,234, 59,192,252,108,142, 86,185,225, 29,242,127, 72, 26, +212,115,117, 92,189,120,152, 51,199, 48, 53,147, 82, 18, 25,129, 64, 34,172,100,166, 76,168, 72, 14,170,213,234,243,215,175, 95, +239,221,185,115,103,201,219,224, 64,104, 50, 51,161,201,204,128,144, 99, 96, 41,107, 2,158, 86, 13,162,209,192,169, 22, 7, 85, +182, 12,254,247, 67,116,106,181,250,188,190, 68,139,199,231,127, 58, 47, 75, 46,135,196,196, 20, 18,185,188,184,107,145,148,147, + 81, 70,189,122,245,234,216,162, 69, 11, 80, 74,177,115,231, 78,104,181, 90,177, 86,171,133, 70,163,129, 86,171, 69, 86, 86, 22, + 14, 28, 56,128,109,219,182,221, 7,176,183,220,206,140,209, 92,191,114,237,102,179,209,195,122, 8, 47,158, 95, 7, 70,195, 66, + 73,156,145,155,171, 67,142,198, 8,172,213,112, 32,241, 2,248, 2, 41, 90,214,175,138,179,127,158,210,130, 81,223,208,147,133, +127,162, 10,197, 68, 71, 34,246,125, 24,228, 89, 31, 97, 99,106, 4, 69,120, 24, 26,253, 48,226,139,212,137, 74,149, 42,129,227, + 56,120,121,121, 21, 78,174,254, 82,178,149,154,154,138,115,231,206,161, 69,139, 22,240,244,244, 68, 92, 92, 28,194,195,195,209, +189,123,247,194,107, 2, 3, 3,241,252,249,115,184,185,149, 45, 18,166,164,233, 46,198,198,188, 24,240,253,247,223,139, 30, 62, +124, 8, 74, 41,220,221, 77, 97,106, 98, 12,194,147,192,195,195, 22, 64,222, 24,160,125,251,246,200,202, 10,103,210,211,233,197, +114,242,241, 48, 33,228,140, 70,163,121,215,174, 93, 59,199,247,239,223, 99,198,140, 25,130, 99,199,142, 21, 72,201,240,241,249, +116, 49,133, 82, 89,186,235,190,102,189, 90,115,170, 50, 22,158, 82, 89,229, 42,166,214,245, 81,213,189, 3, 0,160,115,143,209, +168, 90,221, 5, 89, 41, 65, 85, 84,202,200, 62, 34, 65,186, 69,208,166,184, 87, 50,239,186,163, 84, 73,183,223, 2,208, 39, 0, + 48, 85,190, 61,150, 24, 45, 28,126,252,204, 95,151,198,119,239,209, 75,168, 99, 25,166,174,171,208,252,196,233, 11, 73,113, 81, +209, 27, 17,125, 57,228,111,253,175, 76, 21,143,205,202,202,130,177,177, 49, 66, 66, 66,212,222,222,222, 18, 30,143,135,119,239, +222, 21, 18, 45, 91,107,203,218,173,155,214,173,181, 98,253,129, 43,198, 18,137,164, 75,251, 38, 30,175,222, 70,197, 82, 74, 34, + 75, 85, 91,117,186,107,193, 47, 2,189,108, 28,171,243,195,111, 63,132, 85,219,238, 80,171,121, 80,106, 56,168, 25,128,225,139, +224,208,176, 57,204,221, 60, 64, 1, 60,121,120, 95,167,214,233,174, 24,250, 26, 3, 12,248,159, 86,181,104, 89, 36, 41,255,115, + 26,128, 72, 95, 95,223,148, 34,106, 83, 50,128, 64, 0, 13,242,175, 75, 46,246,187,100,228,173, 30,108, 90,196, 78,114, 17,194, + 85,244,179,166,216, 53,122, 13, 0,139,206,209, 42,145,104,149,177,164, 18,214,214,214,182,141, 26, 53,113,219,245,199,113, 80, + 74,241,230,249, 26,164, 39,189,198,162, 85, 15,220,156,157,157, 61, 99, 99, 99,253,245, 73, 4,203,178,199,246,236,217, 51,171, +121,227, 70,141,170, 56, 59, 35, 48, 50, 2, 34,202, 66,196,178,224,105,213, 16,176, 26, 56,215,101,193, 35,114,196,199,103,194, +239,240,241, 16,150,101,143,149,103,183, 86,247, 94, 88, 22,155, 9, 66, 8,214,182,172, 11,177,137, 28, 34, 99, 57, 38,254,117, +179,144, 92,157, 95, 54, 15, 98,185, 28,110,205,203, 15, 8, 79, 41, 85,152,152,152, 60, 13, 14, 14,110, 90,183,110, 93,204,154, + 53, 11,145,145,145,224, 56, 14,137,137,137,170,132,132,132,184,228,228,228, 72, 0,167, 1,236,210, 39,242,184, 72,173,218,112, +254,228,254,201, 45,219,120, 90,127,223,103, 27,206,252, 57, 19, 25,153, 89, 80, 48, 50,228,170, 24,228,170,249,176,180,170,135, +230,245,235, 35, 62, 46, 9, 47, 31, 94,201, 17,168, 21,107, 42, 82, 65, 9, 33,120,254,252, 57,170, 57,154, 32,236,174, 63,172, +141,132,104,224,104, 15,199,214,109, 10,227, 75,149, 5, 33, 31,204,208,161, 67, 11, 35,195,127,247,221,119, 17,195,135, 15,119, +152, 57,115, 38,254,248,227, 15,220,191,127,255,179, 9,218,158,158,158,184,115,231,206, 82, 0,139,203, 19,245, 52, 26, 13,106, +213,170,133, 39, 79,158,224,250,245,235,232,208,161, 3, 60, 61, 61, 17, 20, 20,132,171, 87,175,226,249,243,231, 32,132,192,202, +202, 10,186, 60,242,172, 43,205,152, 86,139, 19,191,254,182,103,254,250,245,219,234, 12, 27, 54, 12, 39, 79, 30,197,232, 81, 53, + 65,120, 18, 16, 34, 65,175,158, 53,177,108,249, 19, 52,111,222, 30,214,214, 66,172, 95,119,246,131, 82,201, 30,208, 35, 27, 87, + 92,189,122,213, 81,165, 82, 33, 35, 35,131,202,229,114,146,154,154,183,162,181, 36, 69, 75,161, 80, 72, 75, 51, 20,252, 44,116, + 77, 70, 54, 77,167, 57,207,251,164, 49,207,235,117,232, 18,131,206, 61, 70,225,218,249,189,184,121,229, 58, 44, 5,145, 17, 48, +206,190,148, 18,145,146,149,144,235,190,221,163,241, 88,126,108,238,149,237, 83,191,183,224, 59, 56,112, 39,124,182,101,102,148, + 81, 71, 41, 33,132,164,189, 58,248,215,105,138, 94,173, 90, 54,175, 94,215,197, 65,156,158,146, 68,255, 60,123, 41, 68, 27,113, +242, 92, 1,193, 42,111,151, 5, 74,233, 50, 31, 31,159, 95,242, 63,239, 91,184,112,225, 88, 63, 63, 63,155,143, 31, 63, 22,206, +209, 74, 74, 73,187,217,202,123, 10,155,154,145,169,217,179,254,231,254, 50,169, 68,188,208,111,207,109, 29, 31, 15, 75,179,203, +112,220,214,129, 51, 22, 77,123,251,230,185, 83,101,153, 24,103,127, 94,140,192,171,183,160,227,137,240,211,245, 71, 80,107, 89, +100,164,164,226,198,152, 73,144,219, 89, 96,219,237,147,137, 28,199,253,110,232,106, 12, 48,224,127, 23,101,112,145,146, 98,236, + 37,234,113,221, 19, 61,236,124, 53,138,171, 88, 69,161,215, 18,188,148,148,148,164, 59,119, 30,225,246,249, 21,240, 63,191, 2, + 47,159, 7, 34, 62, 78,131,184, 68, 21, 76, 77, 77, 31,148,209,241,119, 42,222, 57, 40, 20,138,190, 11, 23,253,242, 81, 42, 51, + 66,187,142, 29, 97,111, 99, 11, 35,145, 16,124,134, 3,159, 8,145,147,108,142,176, 32, 5,230,238, 57,152,148,163, 80,244, 45, +222, 73, 20,183, 89,148,100, 16, 66, 32, 49, 53,129, 88,110, 2,137,137,233, 39,110, 68,169,169, 41,164, 38,166, 16,136,197, 37, + 77,154,255,204,102, 78, 78, 78,191,254,253,251,167,103,102,102, 98,236,216,177,240,247,247,127,126,229,202, 21,211,192,192, 64, + 89, 82, 82, 82,117, 74,233,119,148,210, 29,165,145,172,226, 54,211,210,222,103, 83, 70, 61,200,247,151,233, 74, 21, 99,133, 1, + 35,142,193,152, 23, 3,134,229, 64, 1, 56, 90,138,209,186,211,114, 36,105, 90,225,216,246,149, 10, 78,171, 26, 86, 52,134, 86, +113,155,148, 82,106,103,103,247, 89, 30, 92,191,126, 29, 3,250,247, 67,151, 62,189, 97, 83,165, 26,108, 59,117, 71,151,177, 63, + 97,251,246,237,224,241,120,176,182,182,254, 68,225, 40,106,115,223,115, 42, 60, 28, 68,201,225, 32, 74,246, 62,163, 2, 0, 63, + 28, 60,120,240,215, 6, 13, 26,220,186,127,255,254, 26, 0,131,138,254, 87,145,180, 44, 41,170,102,149, 82, 70, 11,166, 77,155, +166,124,251,246, 45,140,141,141,193, 48, 12,238,223,191,143,109,219,182, 97,237,218,181,120,254,252, 57,172,172,172,224,230,230, + 6,181, 90,141, 39, 79,158, 40, 1, 44, 40,163, 46,113,201,201, 76,191, 77,155,252, 82,123,244,104,139, 61,123,182,192,222,190, + 21,132, 2,123, 8,132, 54, 48,150,215,194,238, 93,191,162, 91,183, 70,248,235,236,241,180,148, 84,166, 95,241, 40,238,165,164, + 83,245,232,209, 35,108,223,190, 29,253,251,247,143, 27, 48, 96, 0,155,153,153, 89,168,104, 21,236,198,190, 36,127,142,153, 90, +173,150,148,102,115,236,207,193,113,115, 86,132, 44, 75,252, 24,215,194,255,214,131,161, 55,175, 92,199,135,183, 55,113,243,202, +117,220,189, 25,224,147,248, 49,174, 69,163,102, 53, 68,125,199, 78,158,179,255,212, 73,190,220,212, 1,251, 79,157,228, 15,153, + 50,125,101,147, 46, 29, 22,148, 87,231,243,203,145,230, 36, 37,206, 91,181,102,115, 14,163, 85,241, 86,111,220, 26,175, 76, 78, + 88,128,130,165,152,165,168, 89, 69,109, 42, 20,138, 29, 74,165,210, 81,169, 84, 58,170, 84,170, 5,145,145,145,237,102,205,154, +149,204,178,108,161, 90,154,244,242,236,131,208,187,123, 87,217, 90, 91,200, 90, 53,173, 83,115,221,142, 63,111, 71,199, 36, 30, + 42,136,161, 85, 74, 25,169,114,148,170,126,189,251, 14,207,205, 72, 87,163,229,116, 31,112, 82, 57,212, 44,160,163,124, 48, 68, +128,224, 21,235, 32,179, 52,193,225,136,103,138, 76,157,182, 95,209, 24, 90,229,220,251, 23,195, 96,211, 96,211, 96,243,223,211, +230,127, 50, 8, 33, 14, 69,247, 58,204,143,171,245,183,162, 85,222,146, 74, 39, 39,167,118,223,247,234,132,246, 61, 22,130, 82, +138,215,207,126, 67,122,242, 27, 56,217, 75, 16, 30,157,213, 18,128,191,190,137,161,148, 70, 19, 66, 90, 76, 91,176,240,212,128, +239, 58,122,212,173, 82, 69, 82,185,178, 43,140,109,109,145,146,146,140,123, 15, 95,233, 86, 30, 57, 17,146, 79,178,244,217,130, + 7, 28,199,229, 77,114, 7,208,113,218, 92, 16, 62, 31,200, 15,227, 80,208, 49, 86,105,218, 10, 68, 32, 0, 75, 57,168,213,106, +170, 71, 58, 99, 9, 33,253,134, 13, 27,118,227,252,249,243,188, 46, 93,186, 52, 60,125,250, 52,247, 53, 5,145,147, 24,118, 75, +110, 87,163,199,202,121,227,143,181,232,208,219,212,189, 78, 19, 81,147,202,124,104,117, 4,241,113, 81, 56,127,234,177,246,213, +163, 43, 89,148, 81, 13,202, 77, 46,123, 11, 30,173, 86, 27, 93,189,122,117,187,237,219,183, 23, 78,134,103, 89, 22, 41, 41, 41, +120,240,224, 1,234, 53,109, 14,143, 81, 99,144,156,156,140, 77,155, 54,193,197,197, 5, 61,123,246, 68, 90, 90, 26, 24,134,137, +214,179,172, 88, 0, 87,242, 95,159, 16,218,124, 65,133,150,231, 54,116,115,115, 19,171, 84,170,134, 14, 14, 14,124, 66,200, 6, +141, 70, 51,114,222,188,121, 14,171, 86,173, 66,205,154, 53,145,146,146, 2, 99, 99, 99,184,187,187, 35, 57, 57, 25,143, 31, 63, +102, 21, 10,197,118, 0,203, 40,165,201,229,164,239, 29, 33,164,197,212,169, 19, 79,253,234, 55,222, 93,165,110, 47,182,180,108, + 3, 74, 25, 36, 39, 71, 34, 59,235,190,118,249,178,189,239, 19,147,116,125, 41,165,111,245, 44,166,197,147, 39, 79, 6,242,183, +224, 9, 15, 15,127,225,225,225,225, 94,154,162,165, 15,214,157,136, 85, 1, 56,178,122, 70,171, 25, 89, 41, 65,238,150,130,200, +136, 22,117,185, 77,235, 78,196,170,150,206, 48, 95,145, 18,233, 31,150,144,123,101,251,254, 83, 39,249, 35,250,244, 99,157,229, +111,125,164,182,244,207, 14, 61,203, 45, 31,218,176, 97,195, 74,132,164, 85, 77, 74,125,243,116,244,216,241, 3,205, 68,202,139, + 13,156, 83,221,120, 46,141,164,207,159, 63,143,208,119,207,208, 98,118,195, 8, 33,237,230,205,155,119,133, 82,250,201,220,132, +164,148,180,155, 45,123, 76,166, 25, 25,153, 47,146, 94,157, 13,214,195,214, 99, 66, 72,199,186,245, 26,157,252,117,149,159, 93, +251,105,179, 4, 97,183,110, 3,172, 14, 81,254,183,193, 74, 52,220,186,128,107,137,153, 90,109, 31, 67, 84,120, 3, 12, 48,168, + 89,101,113,145,127,247,228, 23,159, 12,143,252,189, 15, 5,250,252, 58, 54, 54,214,223,173,154,243,213,176,176,118,223,185, 56, +219, 0, 0,194, 35,226, 17,151,168,190,170,175,219,176, 4,178,213,228,224,185,139,131, 36, 18, 73, 15,146, 31,194,129,126,193, +166,210, 12,195,196, 86,169, 82,165,148,179, 37,135,122, 98, 89, 54, 81,207,116,222, 38,132, 12,119,115,115,243,139,138,138, 58, + 69, 41,205,253,218,146,200, 73, 12,187,101,105,233, 86, 45,224,250,201,233, 15,111,159,239, 68, 25, 77, 61, 0, 32, 2,113,133, + 54,149,206,201,201, 25, 63, 97,194,132, 29, 66,161,240,255,216,187,238,240,168,138,175,253,206,189,219,107, 54,189, 19, 32,144, + 66, 39,116,233, 69, 65,162, 52, 41, 34,189, 35, 22, 68, 65, 80, 80, 58,202, 15, 5, 17, 21,144,142,168, 84,165,119,233,210,145, + 26, 90, 32,144,222, 54,117,147,173,247,206,247, 7,217,117, 9, 41,187, 33, 40,248,237,121,158,155, 45,119,243,222,233,243,206, +153, 51,231, 84, 65,145,205,153,213, 6,139,227, 56,214,100, 50, 73, 57,142, 99, 1, 16,134, 97, 44, 66,161, 80,191,117,235, 86, +139,197, 98,121,104, 48, 24, 70, 63,133,122,212,169, 14,176,123,247,238,170,238,238,238,175, 16, 66,122, 83, 74, 35,243,242,242, + 12,211,166, 77, 59,181,105,211,166,220,106,213,170,117,137,142,142, 38, 30, 30, 30, 56,119,238, 28,205,204,204,220, 12,224, 83, + 74,105,172, 19,233,137, 37,132, 52, 24, 61,230,135, 55, 61, 60,150, 69, 83,138, 6,160, 32,132,193,149,156, 28,126,119, 65, 1, +247, 83, 17, 97,116, 20,207, 82, 76,147, 54,235,234,213,171,171, 1, 8, 75,178,209,114, 74,228,249,219,245,133,113,111, 16,101, +193,182,175,191, 73,208, 3,192,231, 11,179,115, 0,172,120,175,167, 7,127,227,194,138,249,129,234,219,147,190,217,166, 93,229, + 8, 92, 84, 84, 84, 40,195, 48,253, 0,212,245,145,100,215,244, 22,231,112,132,208,246,132, 48, 94, 0, 46,215,174, 93,123, 39, +128,132, 10,214,243, 45, 0, 33,197,191, 79,187,246,251,159, 0,254,116, 18,235, 44, 33,164,230, 7, 31, 77, 24, 39, 22, 10, 95, + 6,199,213,159,245,219, 38,234, 10, 42,237, 18,151,184,228, 63,166,213, 26, 85,210,247, 2, 71, 1,238,198, 38,116, 6,128,176, +176, 48,122,231,206, 29,167, 39,220,146, 86,227,120,228,241,253,151,167,193,201,200,200,104,252, 44, 11,142, 82,250, 51,128,159, + 43, 19,179,136, 72,205, 44,186, 42,154,174, 43, 0,154,253,155,141,202,170,213,194,163, 32,204, 37,202, 43,175,188,242,192,100, + 50, 29, 4, 16, 79, 8,209, 0,208,154, 76,166,125,102,179, 57,149, 16,210,248,235,175,191,182,122,190,159, 69, 41, 61, 95,193, +116,240, 0, 54, 20, 93,149,157,199, 13, 1, 1, 1, 19, 60, 61, 61,107,232,245,122,177, 94,175, 23,217,175, 1,100, 50, 89,186, +163, 88, 26, 21, 89, 35, 18,100,121,106, 84,228, 9, 34,229, 17,136, 45,133,186,171, 17, 30,129,216,226, 40,222,197,139, 23, 99, + 27, 54,108,184,158, 97,152,106,148, 82, 95,128,186, 81,138,116, 74,105,134, 64, 32, 72,188,126,253,122,226,243, 50, 0, 21, 17, +169, 5, 69,151, 75, 92,226, 18,151,252,167,164, 44, 27, 45,129,179, 96,183,111,223, 38,174, 34,117,137, 61,217, 42,235,126, 92, + 92,156, 1,192,169,162,171,248,255,158, 7,240,250,243,158,199,164,164,164,168,202,192, 25, 49,233, 74, 34,128,241,141, 75, 8, +237,252,249, 98,109, 30,128,137,237,187, 57,135,121,233,210,165,135, 0, 30,186, 90,162, 75, 92,226, 18,151,252,123, 82,146, 54, +203,225, 88,135, 46,113,137, 75, 92,226, 18,151,184,196, 37, 46, 41, 93,172,164,170, 36, 63, 90, 4, 64,167, 82,254,201, 97,215, +245, 21, 57,125, 80, 30,190, 11,211,133,233,194,116, 97,186, 48, 93,152, 46,204,255, 30,230,127, 85, 74, 34, 89, 0, 64, 42,112, + 40,201,153,135,118,170,236, 2,119, 97,186, 48, 93,152, 46, 76, 23,166, 11,211,133,249,223,195,124,209, 73, 86, 9,132,211,181, +117,232, 18,151,184,228,255,183,108,222,188,217,161,160,162,111, 78, 90,241,154, 82,233, 62, 45, 63, 55,231,139, 95, 22, 12,219, +102,253,190,119,239,222,156,171, 20, 93,226, 18,151, 84,200, 24, 62, 52, 52,184, 54,195,241, 45, 41,101, 88,202, 80, 51,201, 45, +252,245,174, 86,251,152,219,129, 42, 85,170,104,132, 12, 94, 39,148, 42, 8,225, 57,158,101, 78,198,198,198, 95,119,130, 1,138, +221,221,221,223, 17,137, 68,157,140, 70, 99, 16,195, 48, 9, 6,131,225, 96, 65, 65,193,146,226,142, 11,255, 77,137,136,136,232, +127,228,200, 17, 77,171, 86,173, 12, 50,153,204, 82, 88, 88, 40,216,187,119,175,228,213, 87, 95,205,190,115,231, 78,133, 78, 36, + 6, 6, 6,118, 88,177, 98, 69,245,206,157, 59,163,102,205,154,186,126,253,250,137, 90,180,104, 33, 26, 49, 98,196,189,196,196, +196,195, 78, 50,233,218,132,144,117,132, 16,150,231,249, 65, 69, 39, 18,159, 5, 99,103, 24,134, 25, 77, 8,233, 73, 41, 13, 37, +132,196, 82, 74,183,241, 60,191,204, 17,239,248, 37,224,189, 1,160, 43,195, 48, 81, 0,192,243,252, 69, 0,187, 41,165, 91,158, + 34,141,207, 12, 83, 46,151, 55, 4,128,130,130,130, 75,149,133, 73, 8,105, 88,212, 73, 43,132, 73, 8, 25, 42,147,201, 70, 2, + 64, 97, 97,225,143,148,210,213, 78, 39,102, 89, 45, 26, 53, 35, 6, 0,112,241,243, 72, 0,128, 83,159, 71,223, 32,206, 60,171, + 36, 60,167, 48,158, 44,131,174, 3, 6, 12,152,251,211, 79, 63,125, 78, 41,253,253, 89,180,125, 63,191,224, 37, 95,125,179, 60, + 96,252, 59,195,191,192,163,136, 16,101, 74, 29, 66, 94, 22,179,108, 55, 35,199, 29,191, 14,108, 2, 32,240,240,240,232, 47, 22, +139,219, 24,141, 70,127,129, 64,144,108, 52, 26,143,229,228,228,252, 76, 41, 53, 63,117, 2, 99,136,187,169, 0,126,132,255, 59, +206, 27,101, 96, 16,201,145,130, 72,154,245, 28,172,246, 25, 60,242,183, 99, 6,176,178, 34,238, 60, 88,150, 29, 31, 16, 16,208, + 51, 55, 55,183,128,101, 89,250, 8,150, 60,250, 3,128, 97, 24,194,243,124, 90,102,102,230,160,255, 71, 90,148,144,162,114,173, + 90,244,149, 16,128, 47,128,203, 0,198, 83, 74,243, 93, 20,232, 31,171,139,226, 26,173, 93,148,210,100, 27,209,178,115,119,223, + 46, 58, 58,250,104,104,104,112,237,222, 61,122,205, 29, 51,122, 44, 97, 89, 6, 87,175, 93, 19,188, 53,104,232, 43, 30, 30, 30, +129, 74,131,161, 22, 8,225, 11,164,210,171,102,179, 41,113,211,207, 63,169, 34, 35, 34, 56,142,227,177,116,217, 15,175,134,134, + 6,127,226, 8,217, 34,132,132,251,249,249,173,155, 60,121,178, 95,183,110,221, 88, 63, 63, 63,196,197,197,105,126,249,229,151, +136,111,191,253,182, 47, 33,100, 80,145, 47, 31,103, 51,219,218,207,131,121, 69, 37, 35, 29,145,199, 33,207,140, 67, 41,133,216, + 79, 41, 61, 94,209, 2, 44, 40, 40,120,183,160,160,160, 89,147, 38, 77,232,202,149, 43,201,144, 33, 67, 40, 33,132, 20, 22, 22, +174, 65, 5, 93, 63, 40, 20,138,239, 58,119,238, 28, 22, 22, 22, 22,123,247,238,221,174, 27, 55,110,220, 61,120,240,224, 80,133, + 66,113, 27, 64,184,147,112,171, 51, 51, 51, 27, 20, 22, 22, 34, 40, 40,104, 37,128, 70,207,160, 17, 17,150,101,183, 5, 6, 6, +210,249,243,231,255,222,160, 65, 3, 95,173, 86,107,153, 56,113, 98,167,211,167, 79,191, 74, 8,233,230, 40,217, 34,132,184, 19, + 66,150,249,249,249,121,125,241,197, 23,119, 26, 55,110,124, 89, 34,145,136,111,223,190, 45,159, 48, 97,194, 7, 12,195,244,165, +148,142,166,212,241, 9,194,138, 25, 24, 24,232, 53,119,238,220,184,168,168,168,171, 34,145, 72,116,251,246,109,197,199, 31,127, + 60,190,162,152, 12,195, 44,109,209,162,133,251,231,159,127,126, 35, 34, 34,226, 20,203,178,226,132,132, 4,102,250,244,233,239, +176, 44,219,135,231,249, 49, 21, 73,167,175,175,175,251,244,233,211,111,180,104,209,226,180, 72, 36, 18,221,188,121,147,153, 60, +121,242, 59,206,164,211,211,211,179,189,167,167,231,242,148,148, 20, 1, 0,248,251,251, 55,173, 81,163,198,183,246, 49, 45,173, +166, 1,102,179, 57, 79,175,215, 15,200,204,204, 44,209, 17,238,144, 41,139, 95, 7,128,111, 77,214,207,143, 94,203,251, 12, 44, +221,225, 72,190,163,252, 9, 5,128,254, 31, 46,232,241,232,245,209,247, 95,233, 0,129, 64,192,175,243, 39,244, 98,178,227, 46, + 99, 8, 33,221, 59,116,232, 48,253,240,225,195, 63,180,107,215,238,227,245,235,215,251,196,199,199,127, 73, 8, 9,126,243,205, + 55,135, 28, 58,116,104, 94,122,122,250,230,202,106,255, 98,145, 68, 66, 24, 2,153, 84,174,118,228,247, 66,134,121,237, 84,247, +238, 35,127,188,121, 51,234,219,152,152,234, 58,127,255,102,239,189,247,158,111,175, 94,189,152,224,224, 96,220,185,115,199,115, +253,250,245,181,126,252,241,199,158,132,144,247, 41,165, 15,158,134,100,233,178, 81,207, 96, 68, 20,165,208,252, 93, 70,200,150, +152,112, 81, 17, 67,174, 60, 7,100,235,179,213,171, 87,127,126,231,206, 29,204,155, 55, 15, 0,150, 56, 57,254, 76,232,217,179, +103,244,214,173, 91,101,155, 54,109,146, 53,105,210, 4,126,126,126, 40, 90, 76,217, 28, 83, 87,175, 94,253,255,213,228,238,233, +233,185,242,222,189,123,237, 21, 10,197, 99,223,199,198,198, 54, 12, 11, 11,203, 1,240,161,179,196,205,219,219,123, 3,207,243, +134,204,204,204,225, 0,160, 82,169,126, 82, 40, 20,238,201,201,201,159, 60,171,133,140,141,153, 20,227, 34, 47,178, 70,171, 68, +135,165,246, 17,179, 25,142,111, 57,102,244, 88,210,175,255,155, 41,119, 98,239,241, 2,161,184,255,222,125,251,228,181,107,215, +102, 12, 75,150,192,146,158, 14,243, 7, 31,188,116,240,224, 65,115,159,254, 3, 11,133, 44, 89, 29, 90,189,154,252,215,159,127, +241,219,186,101,115, 75, 0,215,203,211,100,249,249,249,173, 59,114,228, 72, 96,245,234,213,145,157,157,141,184,184, 56,232,116, + 58,244,237,219, 87,216,178,101,203,192,222,189,123,175, 35,132,180,114, 84,179, 69, 8,241,173, 25, 36,216,249,213,103,125,195, + 95,125,165,165, 34, 48,184, 6,104,138, 30,241,119, 99,154,236, 60,114,250,189, 48, 13,115,235, 78, 14,125,141, 82,154,234,108, + 1,102,100,100, 76,234,217,179,231,150,246,237,219,123, 75, 36, 18, 4, 4, 4,144,110,221,186,165, 37, 37, 37,205,120, 10,226, +130,162, 85, 24,103,255, 90, 60, 60,144,131, 18,228,238,238, 14,119,119,119, 0, 8,124,218,149,167, 70,163, 89,162, 82,169,122, +231,230,230, 22, 50, 12, 67, 9, 33, 84,161, 80,200,220,221,221,255,186, 17,115, 43,192, 96, 48,212, 92,176,232,199,111, 58,180, +110,160, 62,112,224, 0,122,245,234, 69,247,239,223, 63, 26,192, 15, 14, 62, 99, 89,207,158, 61, 11,166, 77,155,166,191, 19, 27, + 23,120,227, 86, 44, 81, 72,197,188,151,151,151,240,236,217,179,130,133, 11, 23, 74,167, 79,159,190, 12, 64,111, 39,210,189,236, +205, 55,223, 52,125,244,209, 71,201, 55,239,220,243,185,114,227, 14, 85, 74,133, 22, 47, 47, 79,246,244,233,211,124, 69, 48, 25, +134, 89, 58,105,210,164,220,209,163, 71,103,101,106,115,252,178,114,243,169, 68,200,154,253,252,252, 4,191,255,254,187, 97,195, +134, 13,204,200,145, 35,151, 2,232,227, 68, 17, 47,237,214,173, 91,222,228,201,147,179,111,199,222,247,187,114,253, 22,228, 18, +161,217,215,215,135, 61,119,238,156,105,193,130, 5,204,236,217,179, 29, 74,167, 66,161, 88,187,113,227, 70,193,239,191, 63, 26, +251,254,252,243, 79, 38, 52, 52, 84,110,255,155, 66,189, 1, 12, 1, 50, 50, 50,228, 45, 90,180, 88, 11, 32,232, 9, 18, 52, 35, + 6, 67,166, 0,239,190,251,110,178,179,237, 37,202,255, 61, 92, 44,199,253, 45,191,180, 22,237,255,225,130, 30, 2,129,128, 31, + 57,114,100, 74,241,251,122,189,158, 0,232, 22,229, 4,217,234,218,181,235,167,187,118,237,170,177,126,253,250,175, 55,108,216, + 96, 4, 0,169, 84,234,245,203, 47,191,204,235,219,183, 47,250,246,237, 59, 13, 64,165, 17, 45,142,114, 38, 0,144, 72, 37,146, +152,152, 24, 18, 25, 25, 89,166,113,171,137,231,207,255,120,243,102,227,183, 35, 35,155,104,121,190,166,232,213, 87,243, 39, 76, +152,144,145,155,155,139,184,184, 56,152, 76, 38, 12, 25, 50,132,109,215,174, 93, 64,223,190,125, 23, 19, 66,222,160,148,154, 28, +208,234, 44, 8, 12, 12, 28,149,147,147,147,111,213,234,212,170,166, 18,180,105,104,145,212,175,105, 22,139, 88,139,232,245, 15, +120,178,127, 9,209, 69, 86,199, 9, 0, 16, 21, 32, 93, 4, 60, 53,209,114, 11, 38,213, 57, 33,102,123, 87,149,191,156, 30, 91, +240,121,254, 3,186,164, 44,141,173, 66,161,232,161,211,233, 54, 23, 77,206,225,175,189,246, 26, 78,159, 62, 13, 0, 45, 1, 44, + 33,132,116, 96, 24,230, 45,158,231, 87, 80, 74,203, 10,229,246, 94,247,238,221, 95,222,186,117,171, 10, 0, 54,111,222, 12,179, +217,140,208,208, 80,136, 68, 34,136,197, 98, 8,133, 66, 91,116,144,255, 79,194, 48,140,228,242,229,203, 8, 8, 8, 40,222, 78, + 0,160, 77, 5, 32,167,197,198,198,182,184,112,225, 2,218,183,111, 63,173, 94,189,122, 93,142, 30, 61,234,151,153,153,137,246, +237,219, 47, 6,240,251,179,206,147, 61, 23,249,207,212, 83, 49, 38,217,238, 17, 51, 99, 88,150,101,112, 47, 54,206,220,190,125, +199,193, 15, 31, 62, 84, 54,107,214,140, 17, 10,133,208, 29, 62, 12,253,185,115, 80, 42,149,232,217,179,167,240,216,177, 99,106, +181, 82, 61,226,254,189,251,121, 44,203,128, 82,166, 92,155, 7,119,119,247,119, 62,249,228, 19,191,176,176, 48, 88, 44, 22,155, + 71,115,139,197,130,248,248,120, 40,149, 74, 12, 26, 52,200, 71, 46,151,191,227,224, 36, 91, 53, 60,212,231,226,145,221,203, 26, + 77, 24,211, 85, 17, 46, 63, 0, 69,252,251, 80,110,126, 27,181,146,246, 98,114,143,102,138,253,223, 77,139,170, 17,224,113,145, + 16, 82,213,217, 66,210,235,245, 39,174, 94,189, 58,226,232,209,163, 60, 0,252,241,199, 31,244,198,141, 27,163,159,102, 21,202, +243, 60,178,179,179,193,243, 60, 91,244,217,250,250,175,170,247,213,106,245,210, 46, 93,186,188,249,224,193, 3,217,158, 61,123, + 60, 31, 62,124,232,117,255,254,125,239,240,240,112,193,188,121,243,118,233, 13, 38,214,204, 81,163,133, 51,231, 37, 95,187, 22, +155,149,154,122,113,213,170, 85,133,132,144,158, 14, 62,227, 13,127,127,127,207, 41, 83,166,128, 8,229, 77, 35,106,213, 11, 99, +133, 50, 55, 70, 40,118, 43, 44,212,115,247,238,221,139,159, 50,101, 74,181, 6, 13, 26, 4, 20,109,175, 57,132, 25, 16, 16,224, +245,209, 71, 31, 65, 32, 81, 53,172,223, 32,170,134, 88,162, 80,177, 66,153,170, 89,179,102,237, 98, 99, 99,147, 38, 79,158,236, +223,164, 73, 19,167, 48,155, 52,105,226, 62,114,228, 72,139, 84,166,106, 81,189,122,104,173,250,117,106, 69,135,135,135,247, 16, + 8, 4,150,244,244,244, 7,131, 6, 13,242,127,253,245,215,125,157,193,244,241,241,113,159, 60,121,178, 37, 56, 36,180,115,231, +151, 95,105, 46,146,169,220, 4, 98,133,166,160, 64,207,221,188,121,243,193,212,169, 83,253, 27, 54,108,232,227, 8,102, 65, 65, +129,208,203,203, 11,117,235,214, 69,237,208, 80,228,228,228, 96,235,214,173, 88,189,122, 53, 86,172, 88,129,159,127,254, 25,141, + 91,189, 2,149, 74,133,164,164, 36,228,230,230, 10,255,233, 54,197, 47,173, 69,191, 53,142,234, 54,118,236,216,164,145, 35, 71, +166,200,100, 50,190,248,229,225,225,193, 13, 24, 48, 32,117,208,199,139,186, 89,183, 22,203,210,100,117,236,216,241,242,238,221, +187,239,174, 95,191, 30,181,107,215, 70,231,206,157,197, 0,240,206, 59,239,136,251,246,237,139,141, 27, 55, 98,243,230,205,215, +195,195,195, 79, 18, 66,186, 59,146,206, 65,131, 6,181,234,211,167,207,241, 62,125,250, 92,234,215,175,223,242,209,163, 71, 63, + 54,115, 37, 39, 37,156, 55, 26,141,104, 16,213, 68, 62,107,229,153, 1,229,225,221, 0,214, 47,143,137, 89,253,197,181,107, 15, +166,213,174,173, 9,185,127,223, 99,205,130, 5, 94,214, 32,221,102,179, 25,241,241,241,112,119,119,199,128, 1, 3,188, 36, 18, +201, 32, 7,218,207,194,238,221,187, 15,125,248,240,161,242,199, 31,127,244,191,116,233, 82, 64,114,114,178,255,161,131,251,188, + 39,126,248,142,202, 77, 41, 22, 39,165, 63, 34,170,247,147,160,136,185,135, 86,148, 66, 99,191,157, 88,161,113, 33,128,200,228, +193,228,219, 26,173, 52,183, 62,218,216,176,223,228,223, 26,186,123, 5, 75, 63, 41, 35,157,245,231,207,159,191,105,199,142, 29, +253, 91,181,106,181,133, 16, 34, 43,225, 55,210,198,141, 27,111,221,184,113,227,208,214,173, 91,159, 32,132,212, 45,117, 21, 25, + 20,212,243,183,223,126,243,180,126,246,242,242,130, 84, 42,125,130,100,137, 68, 34, 48, 12,131,255, 79,146,158,158,254, 86,155, + 54,109, 54,117,237,218,213,112,225,194, 5,164,167,167, 35, 48,208,182,214, 78,169, 0,164,135, 92, 46, 71,112,112, 48,194,194, +194,250, 31, 59,118,204,207,108, 54,227,254,253,251, 72, 75, 75,187,248, 79,228,201,158,139,188, 72, 82, 44,206,225, 40, 0,187, +158, 32, 90, 69,177,133,142, 0, 0, 37, 68,119,249,234, 85, 33, 43, 22, 15,252,105,195, 6,137, 72, 36,194,131, 7, 15,112,253, +250,117, 20, 28, 58,132,194, 83,167,144,154,154,138,252,252,124,248,250,250, 98,217,202,149, 10, 35, 71,135,221,188,117,139,165, +204,223,246, 6,165,157, 72,144, 72, 36,157,122,245,234, 85, 42, 33, 75, 74, 74, 66,215,174, 93,133, 44,203,118, 42, 65, 61,119, +176, 88,230, 72,128, 55,217,113,104,203, 44,127,127,241,117,224,206, 4, 32,239, 34, 64, 13,128,197, 8, 36, 94, 1,118,205, 64, + 72,126, 12,217, 55,107,176, 95,160, 92,176,131, 20, 83, 27, 57,112,188, 53, 52, 50, 50,114,197,192,129, 3, 25, 0,232,208,161, + 3,137,140,140, 92, 78, 8, 9, 45, 67,141,120,176,156, 73,242,116, 86, 86, 22,250,246,237,235, 89,163, 70,141,131,125,251,246, +245,180,126, 95, 81, 76,171, 54,185, 78,157, 58,153, 50,153,236,103, 66, 72,185, 3,172, 61,166, 70,163, 89,210,181,107,215,222, + 27, 54,108, 16, 1,192,145, 35, 71,176, 99,199, 14, 92,187,118, 13,183,111,223,230,163,162,162,188, 23,173,216,180,116,201, 15, +107, 23,246,104,217, 32,160, 93,211,168, 90,202,252,172,124, 95, 95,223,150,148,210, 80, 7,211,217,117,198,140, 25,215,111,220, +125,224,198, 8,132, 2,145, 80, 32, 81,171, 21,190,238, 42, 69,144,135, 92, 26, 40, 97,136,178,160,160, 32,229,231,159,127,230, + 1,116,117, 20,115,214,172, 89,247,110,220,121,160, 33,140, 64, 32, 20, 8, 69, 74,165, 92,243,106,231,246, 77, 0, 64, 4, 42, +202,205,205, 77, 93,189,122,181,201, 25,204,207, 63,255,252,170, 54, 59,223, 93, 32, 20, 10, 5, 2,214, 86,150, 10,153,204, 91, + 46,145,136, 13, 6, 67,226, 55,223,124, 83,232, 12,230,140, 25, 51,174,223,188,251,208,131, 33,132, 37,132, 17,168, 85, 10, 79, + 79, 55,185,183,183, 82,230, 37, 23,176,226,220,220,220,196,117,235,214, 57,132,105, 50,153, 68,169,169,169,184,113,227, 6,130, +155, 52,193,129, 3, 7, 80,165, 74, 21,244,237,219, 23,111,190,249, 38,100, 50, 25, 58,180,168,135, 41, 83,166,224,238,221,187, + 48,153, 76,146,146, 48,109,118, 82,197, 36, 32, 32,224, 66,121,237,199,254,127,139,167, 51,202,159,208,111,141,163,186,217, 19, +172,210,240, 61, 60, 60,184,146,180, 93,197, 49,187,118,237,250,233,161, 67,135,106,172, 91,183,174,219,160, 65,131, 78,172, 91, +183, 14,205,155, 55,199,141, 27, 55, 80,173, 90, 53,172, 89,179, 6,111,190,249,230,137,197,139, 23,119,187,112,225, 66,131,234, +213,171,127, 82, 30,102,191,126,253,198, 53,108,216,240,112, 74, 74, 74, 11,173, 86, 91,119,235,214,173,195,122,246,236,121,175, +127,255,254, 29,109, 26, 45,179,121,195,174,237, 91, 16,221,173, 23, 34,234,212, 93, 58,228,147,245,245,202,194,164,148,210,107, +192,242,213,201,201,233, 27,244,250,130,190, 66,161, 92,126,230,140,199,230, 31,126,240,178, 63,233,157,152,152,136,215, 95,127, + 93, 40, 18,137, 90,151,149, 78, 66,200,252, 30, 61,122,244,221,186,117,171,187, 85,171,115,234,212, 41, 92,185,114, 5,113,113, +113,200,206,206, 70,199,209,249, 24, 59,239, 17,246,216,121, 20,175,188, 67, 21, 21, 28, 67,108, 34, 15, 33,126,158,106,193,201, + 97,223, 68,188, 51,106,105,109,129,210, 67,136,159, 62,190,141,212, 59,250,205,165,164,147,180,104,209, 98,125,159, 62,125,136, +209,104,132,209,104, 52, 82, 74, 11, 75,194, 14, 12, 12,148,214,175, 95, 31,163, 71,143,102,212,106,245,226,210,210,169,211,233, + 12,187,119,239,198,160, 65,131,240,254,251,239,163,102,205,154,112,119,119,135, 80, 40,196,218,245,191,122,189, 57,108, 76,120, +163, 86,109, 26,212,110,212,188,126,158,129,109, 34,146,123,140, 36, 37,108, 13, 60,139, 19,114,207, 3,102,189,122,245, 90,157, + 61,123, 86,210,166, 77, 27, 60,120,240, 0, 66,161,109, 61,197, 61, 77, 58,103,204,152, 33,209,235,245,248,235,175,191, 48,120, +240,224, 68,147,201,244,193,179,206,123,113, 46,242, 34, 9,165,116,121,177, 43,185, 52,141,214, 12, 0, 48,243,216, 49,112,240, +176,130,157, 59,119,202,197, 98, 49, 30, 60,120,128,228,228,100,172, 93,189,154,235,224,227,147,215, 57, 48, 48,119,237,234,213, +212,104, 52,130, 82,138,200,200, 72,244,238,221, 91,246, 70,223,254,105, 36,183,240, 87, 7,152,159,191,117,127,125,216,176, 97, + 79,220,159, 56,113, 34,212,106, 53, 8, 33,126, 14,228,175,207,123, 51,122, 4,185, 87,215,164,210,148,181, 90,176, 82, 64,160, + 2, 4,106, 64,234, 6, 72, 84,128, 88, 14,195,133,195, 90,134,118,142,235,213,122,120,160,147, 91, 61, 8, 8, 8,152,118,248, +240, 97,239, 11, 23, 46,208,220,220, 92, 36, 39, 39,211,185,115,231,122, 7, 4, 4, 76,171,104,165, 36, 37, 37,205,138,142,142, + 78, 29, 60,120,176,219,222,189,123,131, 7, 15, 30,236, 22, 29, 29,157,154,148,148, 52,235,105, 42, 91, 36, 18,177,215,174, 93, +243,152, 61,123,246,155, 0,206,215,173, 91, 55, 51, 40, 40,232,124,145,209,100,153,162, 82,169,108, 36,203,170, 93, 19, 8, 4, + 16, 10,133, 8, 8, 8, 48,106,181, 90,174,117,163, 80, 89,164, 27, 99, 14,144,136,100, 30, 50,105,144, 74,237,214, 44, 51, 51, +243, 50, 33,196,161,248,132,132,144,134, 77,155, 54, 21,114, 84,200,143, 29,216, 33,224,157,161,237,125,190,159, 61,178,202, 55, +179, 70, 5,206,159, 62, 34,114,214,164, 1,237, 25,158,215, 87,171, 86,205,207,106,208,238,128,250, 60,170,113,227,198, 2, 30, + 66,220,184, 21,151,250, 32, 33, 49,239,229,118, 45,108,154,203,218, 13,163, 58,123,123,123,183,137,140,140,108,236,168, 79, 24, +153, 76,214, 48, 34, 34, 66,192,176, 66,226,233,174, 10, 86, 41,101,190,214,123,106,141,230, 37, 15,111,239, 62, 12,165, 57,254, +254,254, 62, 50,153,172,161, 19,121, 23,240, 16,193,215,199,195,205,219, 75,163,236,220,190,101,205, 22, 47,181, 8,175,215,172, +121,139, 58,141, 26,191, 65, 44,150,220,208,208, 80, 31,171,145,124, 89, 98, 48, 24,164, 27, 54,108,192,236,217,179, 81, 63, 36, + 4,129,129,129,240,241,241,193,169, 83,167,112,246,236, 89,184,187,187, 35, 45, 45, 13, 11, 22, 44,192,182,109,219, 96, 50,153, + 84,206,182, 39, 71,200, 86, 89, 98,177, 88,152,226, 4,171, 52,124,153, 76,198, 91,141,228, 75,147,221,187,119,175,183,106,178, +198,143, 31,223,106,209,162, 69, 39, 98, 98, 98,160, 84, 42,113,246,236, 89, 12, 27, 54,236,196,226,197,139, 91,141, 25, 51, 6, +171, 87,175,198,189,123,247, 86,150,133,215,175, 95,191,233, 35, 70,140,248,230,232,209,163,140,175,175, 47,220,221,221,209,163, + 71, 15,172, 92,185, 82, 96,177, 88, 86,245,233,211,231, 82,159, 62,125, 46,113,241,251, 63,221,180, 98,238,169,171,151, 47, 97, +220,123, 31,137,141, 22,243,100, 7, 6, 94, 90,168, 84,230, 89,218,180,209,110, 52,155, 11,250,137, 68,114,183, 75,151, 60,118, +172, 90,101, 35, 91, 83,166, 76,129,155,155, 27,240,200,128, 25,101,104,117, 70,109,219,182,205, 54, 30,122,122,122, 66, 44, 22, + 67, 36, 18, 65, 40, 20,130,101, 89, 28, 92,170,192, 15, 83, 30,241,139, 31,166, 16,236, 95, 66,158, 42, 54,171, 34,136,212,117, +247, 21, 95,122,123, 77,157, 6,117, 59,122,226,212, 47, 41,152, 27,125, 33,225,236,198,244, 9,250,180, 82, 67, 41, 53,154, 56, +113, 98,237,180,180, 52,156, 59,119, 14,231,206,157,155, 93, 74,217,232,183,111,223,254,101,126,126, 62,170, 87,175,142,238,221, +187,183, 33,132, 52, 41,165,223,160,113,227,198,120,253,245,215,209,190,125,123,212,175, 95, 31, 70,147, 69,216,103,224,168,136, +107,247,210, 3,231, 46,152, 43, 63,252,199, 86,230,196,137,163,236,250, 45,251,221, 90,180,127,229, 27,145,202,255, 52,145,123, +249,255,215, 53, 90, 82,169,116,209,209,163, 71,253, 76, 38, 19,174, 94,189,138,247,223,127,255,105, 99,134,218, 20, 32,193,193, +193, 56,114,228, 8, 6, 12, 24,160, 79, 77, 77,253,243,159,202,147, 61, 23,249,175,136,192,142, 65,218,228,225,195,135,217, 30, + 30, 30,129, 17, 17, 17,140,209,104,124,180, 37,177,121, 51,183, 98,213,170, 93,122,189,254, 61, 0,162, 37,223,127,191, 52, 48, + 40,168,253,192, 65,131,136,217,108, 70,116,116,180,120,231,206,157,158,119, 83, 83,203, 13,136, 92,124,181, 49,100,200, 16, 44, + 90,180, 8, 0,240,238,187,239,218, 84,235,196, 1,131, 37,165, 27,186,118,126,173,177, 58, 94,241,173,218,244,146, 57,191,234, + 93,213,105, 69,190,172, 49, 24,177, 0, 82, 22,188,201,108,185,157,214,243,252,221,219,181,106,203,180,153,213, 58,213,105,139, + 21, 7,214,117, 5,176,209,225, 85,157, 92,222, 84,169, 84,226,252,249,243,218,198,141, 27,103, 83, 74,221,102,205,154,229, 37, +151,203,155, 62, 5,251,189, 79, 8,105,211,178,101,203,119, 24,134,233,196,243,252,193,212,212,212, 37,148,210,251, 14, 78,218, + 99, 1,124, 14, 59, 59, 20,163,209, 8,134, 97, 64, 41, 69,191,126,253, 48,101,202,148,218, 87,174, 92,193,225,195,135, 61, 58, +117,234,116,154, 16,146, 13, 96, 56,165,180, 68,173, 89,110,110,110,225,217,179,103,101,135, 15, 31, 6,207,243,240,240,240,128, + 90,173,134, 68, 34, 65,143, 30, 61,148,147, 39, 79,238,184,111,223,190,180,220,170, 85, 88,105,114,162, 78,162, 84,170,224, 23, +216,122, 76,255,183, 98, 40,165,219,156, 24, 28,196, 50,129, 69, 79, 56, 3, 51,255,179,197,140, 92, 36, 34, 82,145, 0, 18,190, + 0,159,126, 57,135,136, 40, 39,128,147,251,243, 34,145, 72,164,146,192,200,138, 89,179,156,160, 82,156,195,177, 44, 43,150,138, + 96, 40,237,190,144, 97, 24,134, 97, 68, 0, 44,142, 98, 74, 36, 18,145, 74, 66, 75,197,148,177,132, 37,132,136,241,232,116,214, + 19, 18,229, 79,168,157, 22,201, 96, 79,138, 91,183,110,141, 93,135,207, 99,243,142,131,200,120,112, 25, 83, 63, 30,143, 38, 77, +154, 96,231,206,157,101,166,201,106,163, 85,154,118, 57, 32, 32,224, 66, 82, 82, 82,163,210,254,183, 36, 27, 45,126,105, 45, 58, +232,227, 69,221, 74,210, 82,149,136,255,153,219, 35,172, 50,108,180, 8, 33,221, 91,183,110, 61,110,195,134, 13,198, 46, 93,186, +136,251,245,235,135,186,117,235,182, 26, 58,116, 40, 0,160, 83,167, 78, 88,180,104, 81,171,161, 67,135,226,215, 95,127,197,214, +173, 91, 13,237,218,181,251,152, 16,146, 72, 41,221, 93, 18, 38,207,243,175, 47, 91,182,172,184,166, 16, 22,139, 5,102,179,217, +223, 98,177,248, 23,141, 69,248,230,155,197, 25,251,247,237,196,199,159,204,128,143,183, 95, 67, 7,219, 16, 25,242,209, 71, 25, +107, 22, 44,192,130, 95,127,197, 71,213,170,201,215, 93,191,142,253,122, 61, 54, 30, 62,156, 81,244,156,114,109, 51,117, 58, 93, +225,238,221,187,213, 27, 55,110,132, 70,163, 65,205,154, 53,225,225,225, 1,161, 80, 8,134,149,129, 21,185, 35,162, 78, 83, 0, +103, 1, 0,213, 2,160,139,172,142, 19,132, 32,155, 50,165,183,225, 82,251,104, 8,169,234, 27, 34, 61, 58,110,117, 93,141,218, + 71,132,189, 75, 30, 98,223,183,241,219,244, 25,248, 26, 22,220, 44,227,176, 70,227,234,213,171, 35, 45, 45, 13,187,119,239,214, + 1,248,170,180,103,240, 60,255,229,247,223,127, 63,241,147, 79, 62,145, 68, 70, 70, 2, 64, 67, 0,231, 74, 36,125, 10, 5, 2, + 3, 3,109,196,178,223,224, 49,161,163, 39,140,145,245,124,165, 61, 4, 2, 47,100,235,204,200,204, 51,195,221, 75,137,143, 39, +244,145, 30,108, 28,216,100,217,226,159,182, 19, 66,154,208,103,233, 44,242, 95, 22, 79, 79,207,134,153,153,153,184,127,255, 62, + 6, 15, 30,156,152,145,145,113, 64,167,211, 13, 75, 74, 74, 2, 0,109, 5, 32,109,100,190, 97,195,134,104,218,180, 41,250,246, +237, 43, 45, 40, 40,232, 19, 26, 26, 26, 8,224,165,103,153,159,226, 92,228, 63, 69,180, 74,156, 16,204,230, 8,195,210,165,208, + 29, 60, 8,241,254,253,216, 24, 16,144,175,215,235, 63,164,148,198, 23, 13,122,227, 87,175, 89,115,178,219,159,127,170,141, 49, + 49, 8,189,114, 5, 66,141,166,161,179, 9, 88,181,106, 21,114,115,115,145,147,147, 3, 0,248,246,219,111,145,155,155, 11,171, + 45, 67,185, 25, 16,161,149,159, 79, 53,164,224, 54,120, 1,163,140,139, 40,104,174,212,171,146, 2, 31,250,234,114,152, 64,196, + 60,104,166, 40,204, 52, 54, 39,172, 17,250,140, 2, 4,182,172, 9, 1, 4,173,156, 73,163,117,223, 95, 32, 16,104,111,221,186, +245,122,120,120,248, 14, 0, 94, 79,107, 15, 64, 41,189, 3,224,189, 10,146,128,207,239,221,187,231,179,114,229,202,119,102,205, +154, 69,237,137,150,245,189, 64, 32, 0,165, 20,110,110,110, 16, 10,133,190,167, 78,157,242,109,214,172,217,119, 69, 3, 90, 73, +249,164,117,235,214,197,189,123,247, 32, 16, 8,224,230,230, 6,222, 98,194,140, 9, 99,192,177, 18,193,164, 73,147, 26,246,234, +213,235,234,202,149, 43,205,234, 22, 45, 95,202,204,204,188, 54,110,192,192,171,191,255,254,187,145,231,249,101, 14,230,249,210, +237,219,183,217,160, 0, 95,150, 90, 10,120,133, 8,144, 94,254,134,138,149,126,144, 10, 88, 42, 34, 12, 36, 82,153,219,253,132, +132, 76,158,231,111, 56,130,201,243,252,197,123,247,238,201,124,125, 60, 5, 5,133,198,124,153,144,138,227, 46,158,143,173, 26, +213, 56, 20, 0,244, 23,207, 30,145, 68,212,146,197,165,166, 43,170, 85,171,230, 16,102, 97, 97,225,165,196,196, 68,214,215,215, + 87,240, 32, 62, 97,187, 70,169,240, 86,107, 52,205, 1,192,148,151,115,150, 49, 24,210, 89,161,192, 55, 61, 51, 83, 91, 88, 88, +120,207,209,188,223,189,123, 87,224,239,239,195,238,221,127,104,135,175, 92,226,163, 18, 11,212, 18, 66,136,156, 37,185, 34, 11, +159, 33,149,203,125,238, 39, 36,104, 41,165,165,106, 8,191,200, 30,216,243, 81,125,205,248,213, 14, 27,151, 47, 95,198,158, 19, + 55,160,160, 70, 16,125, 14,246,175,254, 17, 3, 38,125,242,212,118,127,229,145,173, 10,105,179,150,213,186, 80, 12, 31, 73,229, + 24,194, 15, 24, 48, 96,198,250,245,235,109, 6, 40, 55,110,220, 64,135, 14, 29,172,219, 28,232,220,185, 51,154, 53,107,134, 27, + 55,110, 32, 44, 44, 12,135, 15, 31,150,176, 44, 43, 25, 56,112,224, 92, 0,187,203, 75,239,242,229,203, 49,108,216,176,146, 12, +171,239, 2,208, 19,247,200,252, 41, 95,172,245,210,102,102, 32, 45, 61,229,146,163,229, 64, 8,193,144,143, 62,202, 88,102, 52, + 98,195,153, 51, 24,164, 80,200,215,220,185,131,232,102,205, 80,175, 67,135, 12, 71,198, 58,171, 86, 71,175,215, 67, 40, 20, 66, +173, 86,195,211,211, 19, 34,145, 8,172, 48, 0, 2,113, 3, 48, 34, 17,162, 90, 55,192,130, 15, 21, 5,131, 95,197, 98, 66,144, + 45, 17,227,162, 72, 94,178,173, 14, 33,132, 40,170,160, 7,165,200, 45,136,199, 31, 86, 66,162,169, 74,220,148,106,225,254, 17, +223, 69,106,212, 62, 34,236, 89,252, 0,251,191, 75,216,162, 79,193, 84, 0,119,203, 58, 93, 44,145, 72,234,105, 52, 26,196,199, +199,227,225,195,135,215,203, 50,240,167,148, 22,180,104,209, 34, 86, 34,145,212,246,246,246, 6,128,234,165,165,147,231,121,155, + 29,214,186, 13,155,188, 26,182, 9,149,190,220,170, 54,214,238,152,131,183,251, 44,134,144, 37,224, 56, 19,190, 94,244, 26, 56, + 67, 62,250,116, 27, 69,218,118, 10,107,112,112,135,113, 4,128, 31,255,171, 68, 43, 33, 33,225,189, 54,109,218,204,205,203,203, +203,210,233,116, 3, 0,160,122,245,234, 33, 12,195, 72, 0,204, 42,163, 61,133,160,100,183, 16,162, 43, 87,174, 64,165, 82, 33, + 49,241,239,152,244,241,241,241,224,121,222, 0,151,148,213, 71,163, 40,165, 23, 9, 33,254, 0,162, 97,231,222,129, 41, 82,213, +181,221,181,107, 23,221,181,107, 87, 91,219,228, 69, 41,111,209,106, 65, 13,143,202, 86, 40, 20, 82, 0,246, 39,154,228, 26,141, +134, 8,131,130, 64, 36,143, 76, 63,168,221,158,240,211,138,217,236,152,107, 25,158, 3, 11, 98, 2,181, 83, 98,232,164, 4,115, +188, 58,226, 61,241, 52,164,136, 53,246, 61, 27,176, 80,112,224, 89, 39,147, 67,117, 58, 29, 44, 22,139,123,141, 26, 53,118, 89, + 44, 22,119,235,214,192,191, 85,169, 28,199,197,178, 44,139,119,222,121, 7, 86,237,143,209,104, 68, 74, 74, 10, 12, 6, 3,140, + 70, 35,238,221,187,135,156,156, 28, 24,141, 70, 92,187,118, 13,213,171, 87, 7,203,178,254,101, 52, 20, 74, 41, 69,112,112, 48, +170, 86,173, 10,150, 80,172,152, 63, 29,159,190, 63, 6,111, 86,231,177,106,201,215,104,215,174, 93,173,106,213,170,181, 16, 8, + 4,156,159,159,159,104,235,214,173,219, 57,142,235,225,132, 31,173,221, 83,166, 76,169, 90,167, 78, 29, 31,141, 90,101,150,136, + 89,136,205, 58, 42, 49,100, 82, 65, 65, 6,130,131, 67, 44,144,201,195, 6, 13, 26,196, 57, 50, 57, 90, 49, 63,252,240, 67,255, +200,200, 72, 55,119,141, 74, 39, 22,178,105, 34,208,140,156,203,231, 78, 3,128,216,219, 71, 15,169,188,246,224,193,131, 45,206, + 96, 78,155, 54,173,186,183,183,183,134, 1,205,227, 76,166,191,247,219, 13,198, 76, 34, 20, 22, 66, 36,110,252,238,187,239, 18, +103, 48, 39, 78,156, 88,173,118,237,218, 26,141, 90,145, 47, 16,178,201, 34,158, 79,150,130, 79, 17, 26, 77, 89, 82,111,175, 2, +200,149, 81,131, 6, 13, 42, 21,211,170,205,154, 60,121,114,124, 49,226, 13,173, 86, 11,125,202, 85,136, 18, 99,208, 64, 41, 68, + 19,111,119, 72, 36, 18,219,209,247,210,154,107,105, 54, 90, 37,145, 45, 71,255,183,241,204, 50,182, 0,151,213,186, 80,220,111, + 86, 17,126,153,253,233,167,159,126,250,164,125,251,246,105,157, 59,119, 54,238,218,181, 11,132, 16, 28, 62,124, 24,137,137,137, +232,220,185, 51, 40,165,214, 83,109,184,116,233, 18, 58,117,234,100,108,211,166, 77,226, 79, 63,253,244,185, 35,149, 51,108,216, + 48,152,205,102,228,231,231, 67,171,213, 98,231,206,157,104,208,160, 1,149,203,229,189,216,224, 87,230,244, 25,241,201, 75,117, +235, 55,196,119,139, 23, 24,197, 2,225, 23, 78, 14,194, 24,252,225,135, 25, 57, 81, 81,218,117, 58, 93,193, 16,181, 90, 94, 35, + 62,222,227,252,190,125, 94, 38,147,201, 33, 12,171, 86, 39, 40, 40,200, 70,178, 68, 34, 17, 4, 98,111,176,138,122, 16,123,118, +134,220,175, 23,254,184, 40, 49,184, 41,176, 77,165,196, 94,133, 6,165,186,118,144, 7, 99,206, 75,253,252,183,182,124,211,255, +144,188, 10, 86, 18, 66, 24, 66, 8, 67, 5,100,235,208,175,195,107,120, 87,149,225,207, 77, 41,216,255, 93,194,111,250, 20, 76, + 7,112,167,188,126,110, 50,153,244, 28,199,129, 97, 24, 8, 4, 2,123, 27,209,147,191,253,246, 27,206,159, 63, 15, 0, 54,183, + 61,121,121,121, 28,203,178,144, 74,165, 0,160, 44, 99,188,131, 80, 40,132, 80, 40,196,145,211,199, 60,223,124,227, 53,114,234, +175, 3,104,217,160, 63, 50,243, 77, 72,205, 49, 33,187, 0,168,211,100, 42,234,118,218,134,203,247,242,208,176,126, 93,150, 21, + 43, 6,191,224,147,119,136,143,143,207, 41, 47, 47,175,195,132,144, 16, 66, 72,136, 90,173, 62, 25, 16, 16, 16, 67, 8,233, 78, + 41,253, 61, 41, 41, 41, 50, 63, 63,191, 37,165,244, 1,165,244, 65, 70, 70, 70,135,180,180,180,151,202, 58,172,229,233,233,185, + 50, 55, 55,119, 60,199,113,221,138,174, 87, 57,142,107,120,251,246,237,218, 13, 27, 54,188, 30, 26, 26,122, 41, 52, 52,116, 79, +104,104,232,246,208,208,208,237,237,219,183, 95,100,117,247,240, 44,165, 36, 46,242, 2,137,213,212, 37,186,200,213, 67,180,109, +206, 40,122, 61, 82,220, 0,205, 34,145, 92,179,140, 27, 7,205,246,237, 16,222,190,141,161,131, 7,171,229,114,249, 98, 66, 72, + 35, 66, 72, 75,165, 82,249,221,244,233,211, 85, 94,243,230, 33,224,216, 49,196,237,220, 9,179, 80,120,174, 34,169, 43, 44, 44, +132, 64, 32,176,105, 98, 20, 10, 5, 56,142, 43,226,110,229, 16, 14, 11,254, 76, 76,141,129, 24, 85,193,131,230,239,205,109,115, +166,127,236, 84,159,157,185,213,195,238,232, 68, 97, 51,189,155,251, 44, 14,105,117, 70, 71, 4,249, 98,141, 20, 15, 31,198,131, + 3,239,212,126,179, 94,175,207,209,233,116,104,216,176,161,231,249,243,231,107, 52,104,208,192,163,232,251,179, 79,217,137, 90, + 4, 6, 6,110, 10, 10, 10,186, 31, 24, 24,184,137, 16,210,194,137,127, 95,121,252,248,113,176, 44,139,233,211,167, 35, 47, 47, + 15, 38,147, 9,153,153,153,120,248,240, 33,140, 70, 35, 18, 18, 18,112,243,230, 77, 24,141, 70,196,197,197,193, 96, 40,127, 65, +194,243, 60,212,106, 53,244,133,249,248, 97,206,167,152, 54,121, 2,114,238, 94, 64, 66, 82, 42, 52,110, 10,188,247,222,123,172, +187,187, 59,207,113, 92, 85,139,197,210,137,227,184,165,142, 18,206, 34,167,133, 39,130,131,131,235,206,159, 63,191,246,167,115, +150,138,212,130,124, 42, 81, 73,121,177, 74, 66,197,181,154, 99,216,212,197,162,111, 22,126,117,235,207, 63,255, 76,116,196,121, +167, 21, 51, 42, 42, 42, 60, 49, 49,177, 65,100,100,100,132, 87, 72, 53,137,196, 63, 48, 91,228, 95, 37,151, 26,244,103, 72, 96, +149,214, 75,151, 46,189,122,242,228,201, 36,103, 48, 21, 10, 69,173,181,107,215,214,245,245,245,173, 43,148,201,164, 5, 57, 57, + 27, 45, 5,186, 77,172,198, 93,202,168, 53,175,110,219,182,237,194,150, 45, 91, 82,156,193, 12, 11, 11,139,156, 51,103, 78,157, +122,245,234,213,241,171, 94, 67, 34, 11, 12,206,148, 6,133,100,202,234, 53,144, 32,168,106,151,239,190,251,238,210,159,127,254, +233, 16, 38,203,178, 22,134, 97, 32, 20, 10, 33,151,203,177,119,239, 94,140, 27,209, 31,193,129,158,136,136,140, 68,199,183,199, + 99,203,150, 45, 54, 27, 30,150,101, 75,157,209,215,204,123,111, 71,148, 63,185,128,101,181, 46, 96, 89,173, 11, 81,254,228, 66, +169,100,171,232,126, 73,191,113,104, 52, 42,197, 14,171, 60,178, 69, 41,221,125,228,200,145, 47,135, 12, 25, 34,238,218,181, 43, +206,156, 57,131, 97,195,134,157,216,186,117, 43, 0,224,204,153, 51,248,224,131, 15, 78, 28, 58,116, 8, 99,198,140, 65,135, 14, + 29,196,199,143, 31,255,206, 17,223, 63, 22,139, 5,171, 86,173,130,197, 98,129, 82,169,132,135,135, 7, 94,123,237, 53, 92,189, +122,117,204,234,213,171, 99, 88,161,240,173,232,110,111, 96,215,246,173,184,121,237,234,152, 53,115, 7, 58,237, 20,152, 97, 24, +116, 29, 60, 56, 35,163, 78, 29,237,154,220,220,130,225,238,238,242,200,148, 20,143, 63, 54,109,242,114,160,253, 16,142,227,108, +228,202, 74, 58,172,151, 64,236, 13,129,162, 46, 4,170, 38,184,124, 71,100, 22, 54,165, 23, 69,141,233,141,178,252,103, 9,197, +204,176, 94,159, 86, 71,175, 79,171,163,251,164,106, 67,229, 85,176, 66, 81, 5, 99,187,190, 95,181,125,104, 19, 55,228,166,153, +176,243,235,184, 7,250, 76,204, 3,112,211,145,126,206,243,252,245,196,196, 68,136,197, 98, 84,169, 82, 37,156, 16, 98,181, 11, + 92, 57,114,228,200,119,103,206,156, 57, 1,192,204,162, 60, 41,219,183,111, 95, 39, 63, 63, 31,183,111,223, 6,128,243,101,212, +189,237,148,161, 54, 55, 78, 82, 45,160, 30, 26,212, 26, 13,119,247,250, 72,212, 26,145,164, 53, 98,197, 15, 61,112,225,248,108, +156,223, 63, 8, 15, 82, 82, 32,243,235, 9,206, 98,168,251,130, 43, 74,166,197,198,198,182,216,180,105, 83,123, 0,211,234,213, +171,247,231,195,135, 15, 95, 58,118,236, 88, 68, 80, 80,208,226,138,130, 90,221, 66,196,197,197, 61,118, 21,185,133, 48, 82, 74, +163, 40,165, 93, 41,165,221,139,174, 15,158,202,215,155,227,114,228, 69, 53,134, 7,176,171,248,105,195,226, 68,203,222, 81, 24, +106,120,120,168,204,102, 83,194,129, 3, 7, 76, 12,195, 64, 46,151, 99,200,176, 97,204, 15,223,127,223,186,127,139, 22,135, 71, +189,252,242,158,195,135, 14, 69, 53,107,214, 12,148, 82, 48, 12,131, 95,127,253,181, 80,175, 47,204,172, 82,165,138,198,145, 65, +195,190, 3,229,230,230,218,136, 86, 78, 78, 14,124,125,125, 29,222, 58,212,229,226,224,161,189, 23,178, 40,247,246,195,174,119, + 22,154,190, 72,233,209, 44,155,231, 4, 57,156, 25, 57,133, 20,121,122, 8,206, 48, 30,205,134,132,245, 52,221,235,212,236,230, +209,152, 83,153,122, 78,239,212,105,137,180,180,180, 79,251,244,233,147,233,239,239, 79,212,106, 53, 2, 3, 3,153,238,221,187, +103,196,199,199,207,172,104,141,120,121,121,189,217,190,125,251, 29,137,137,137,189,143, 30, 61, 90,245,216,177, 99,189,219,183, +111,191,195,203,203,235, 77, 7, 33, 54,126,242,201, 39, 58,177, 88,140,230,205,155, 35, 47, 47, 15, 69,167,124,202,188,202,155, + 8, 0, 64, 36, 18, 97,217,252,207, 49,109,242, 4,104, 99,206,224,242,137, 3, 56,146, 66, 48,117,206, 87, 16,137, 68, 21,242, +245, 21,230,163,168, 87, 47, 64,117,227,131, 97,253,146,166, 76,158,172,186,116,233,146,240,221,247, 63,160,113,201, 90,136,187, + 46, 96,209,246, 83,230, 47,157, 55,162, 95,237,136,233,211, 62,170, 71, 41, 29, 93, 30,102,109, 31, 69,189,186, 1,170,235, 31, +141,234, 31,251,254,251,239,203,190,248,226, 11,125,139, 22, 45, 10, 83, 83, 83,101, 10,119,143, 72,129,155,166,110, 92,114,138, +178, 69,139, 22,247,222,126,251,237,108,103, 49,167, 78,157, 42,223,183,111,159,160, 79,159, 62,150,172,172, 44,165, 80, 38,107, + 72, 36,210,166,233, 89, 89,110,189,251,244,185,211,187,119,239, 2,158,231,199, 56,131,249,217,103,159,201,111,222,188, 41,104, +209,162,133, 57, 37, 37, 69,165,240,244,106,192,106, 60,154,220, 79, 78, 85, 55,109,214,236,238,187,239,190,171, 43, 43,157,246, + 36, 69,165, 82, 37,182,108,217, 18, 95,127,253, 53,190,249,230, 27,116,233,210, 5, 87,175, 93, 69,244,187, 19, 80,123,236, 7, +216,126,234, 52, 18, 19, 19, 49,107,214, 44, 52,104,208, 0, 34,145,232,102,137,160,163,111,144,139,201,148, 92, 76,166, 4,163, +111, 16,235,231, 82,201,208,204, 28, 60,246,251, 18,228,252,103, 37,107,186,162,252,201,133,178,236,176,202, 35, 91,189,123,247, + 30,103,117,225, 48,124,248,240, 19,139, 23, 47,110, 53,124,248,163,133,118,243,230,205, 49,123,246,236, 86, 83,167, 78, 61, 49, +103,206, 28,116,236,216, 17,161,161,161,229, 30,124,225, 56, 14, 22,139, 5,253,251,247,135,197, 98, 65,122,122, 58,110,221,186, +133,229,203,151,131, 82, 42, 5, 0,255,128,160,198, 98,177, 24,127, 93, 60, 87, 48,109,120,179,159,156, 88, 76, 17,251, 69, 76, +126,126, 62,122,143, 29,155,145, 80,179,166,118,105, 70, 70,193, 8,119,119,121,181, 7, 15, 60, 84, 70, 99, 96, 89, 54,169,132, + 16,240, 60,111, 35, 86, 86,194, 85,252, 42,154, 40, 29, 18, 83, 1,191,251,216,250, 36, 0, 64,155,129, 1,232, 62,169,218, 80, +255, 48,249,183,173, 7, 60, 82,122,111,153, 29, 75,243,146,184, 47, 96,198,117, 39, 52,214,103,206,156, 57, 3,141, 70,131, 62, +125,250, 72, 24,134,153, 87, 52,206,235, 41,165, 75, 40,165, 11,173, 88, 18,137,100,193,160, 65,131,152,236,236,108, 92,190,124, + 25, 0, 14,149, 54, 46, 81, 74,109,121,207,215, 18,112,188, 24, 39, 47,238,197,254, 99,155,113, 63, 49, 29, 15,210,244,128,192, + 13,122, 93, 2, 76,133,137, 48,102, 95, 68,174, 65,254, 95,216,145,122, 38,238, 22,158,129, 91,136,202,212,106,189,144, 54,117, +148,210,100,251,211,134,246, 14, 76, 75,114, 88, 10,170,150,245,219,252,221, 15,110,125,250, 15,212, 53,104,208,192, 61, 48, 48, + 16,132, 16,244,232,217,147,180, 63,122, 84, 37, 12, 8,128,103,163, 70,182,237,136,131, 7, 14, 96,239,222,189,186, 93,191,109, + 11, 28, 54, 98,196,235, 0,214,150, 49, 96, 8,106,212,168, 97,123,110,114,114, 50, 36, 18,137,205, 38, 34, 55, 55, 23,222,222, +222, 72, 78, 78,134,131,138,146,117, 83, 38,159,158,156,214,236,211,234,205, 84, 66,178, 71,151, 2,142, 82, 8, 9, 7, 20, 82, +152, 57,192, 96,166,104, 92,141,245,216, 95,104,113,223,121,102,235, 61, 0,235,156,212,104,253, 65, 8, 25,205,243,252,102, 0, +204,209,163, 71,249,235,215,175,143,115,212,112,189, 68,181,189, 92, 62,233,240,225,195, 30,147, 38, 77,202,218,185,115,103,206, +107,175,189,230,182,124,249,114,143, 14, 29, 58, 76, 2,240,139, 3,149, 90, 72, 8, 89, 27, 31, 31, 63,174, 73,147, 38,208,106, +181, 48,153, 76,184,112,225, 2,194,194,194,112,254,252,121,132,135,135,227,220,185,115,136,136,136, 0,199,113,208,235,245,224, +121,158, 43,111, 48,215,102,164, 3,153, 15,145,116,102, 15,110, 93,185,128,195, 73, 4, 75,126,217,129, 42, 85,171, 87,200, 79, + 77,132,175,162, 78,160,143,231,254, 47,102,124,230, 19,247,199,175,216,186,106, 9,127,100,207,158,218, 98, 21, 70,183,237, 63, +254, 13,163, 25, 33, 0,196, 47, 53,107,130,174,238, 55, 57,121, 85,164, 28,186, 86,182, 39,235, 8, 95, 69,157, 0,111,207,125, +255,155, 55, 83,117,119,239, 26,108, 92,246, 53,221,178,254,231, 6,122,160, 89,157, 58,117,186, 50, 12,163, 1,160, 47,178,243, +114, 40,180, 77, 73,152, 7,119,236,136,210, 3,205,126,255,253,247,174,114,185,220, 15,128,185,160,160, 32,246,105, 48, 15,237, +220, 25,101, 77, 39, 33,196, 7,128,137, 82,122, 23, 78,134,224,233,219,183,239,236, 15, 62,248, 96, 50,199,113,222,214,239,204, +102, 51,187, 96,193, 2, 1,207,243, 44,165,212,196, 48,140,105,223,190,125,156,197, 98, 73,210,235,245, 99,159,102, 32,121,227, +141, 55,112,250,244,233, 25,120,116, 8,195, 81,109,245, 99,118, 90,101,109, 83, 58,130,127,244,232,209, 89,111,189,245,214,148, + 95,126,249,229,214,226,197,139,187,141, 25, 51, 6,191,254,250, 43,106,214,172,137,191,254,250, 11,159,126,250, 41, 0,180,154, + 58,117,234,246,149, 43, 87,134,198,197,197, 45, 40, 47,141,102,179, 25, 22,139, 5, 63,255,252, 51,122,244,232, 1,111,111,111, + 4, 4, 4,128, 16,242,199,136, 17, 35,190, 7, 0,150,176, 34, 0, 48,232, 13,134,200,200, 38, 14,107,112, 67, 67, 67,109, 99, + 93, 74, 74,138,237,164,224, 43,111,189,149,177,226,139, 47,240, 83, 97, 33, 70,184,187,203, 19,130,130,252,183,223,189, 59,138, + 16,178,188, 52,205,145, 85,171, 83, 30,201,114, 84,195, 92,152,140, 79,126,155,123,223, 15, 64,151, 54, 3, 3,208,102, 96, 0, +154,116,247, 33, 12, 75,112,101,127, 38,174, 30,212,110, 49,231,226, 15,103,194,229, 80, 74,175,123,122,122,110,111,219,182,109, +183, 90,181,106, 97,228,200,145,111,139, 68, 34,145,217,108,126,223,234,230,129, 16,226,198, 48,204,204,213,171, 87,143,242,240, +240,192,241,227,199,113,236,216,177, 63, 40,165, 15, 75, 27,151, 0,216,124,102, 85, 9, 14,215,223,140,203,151,167, 37,158,196, +137,227,191,161,102,131,241,144,249,189, 14,143,200, 57, 48,197,124, 3, 99,230,126,120, 4,191,134,132,184,187, 96, 5,146,171, +248,143,136,213,221,194,213,171, 87, 75,116,183,224,172,212,171, 87,175,213,177, 99,199, 36,122,189, 30, 71,142, 28, 65,211,166, +182,179, 93,255,106,252, 78,123, 46,242, 34, 73, 89, 65,165, 75,156, 53, 9, 79,132, 17,225,225,156,136,193,234, 30,175,191, 94, +112,233,210, 37,219,170, 79,127,246, 44,116,123,247,130,227, 56, 80, 74,113,236,232, 81, 12, 26, 56, 48, 95,200,146, 21,213,170, + 85,165,132,254,237,187,165,164,163,244, 34,145,168, 79,159, 62,125,108,131, 79,124,124, 60, 20, 10, 5,196, 98, 49,120,158,135, +197, 98, 1,203,178,112,115,115,131,197, 98, 49,150,144,153, 78,197, 50, 98,230,180,186,222, 43,163, 7, 36, 7,228,155,232,104, + 77, 53,132,136,100,182,206,233,167, 38,232,214, 64, 8, 47, 65, 26, 61,180,224,229, 36,222,144,217,187,120,108,177,242,142,252, + 19, 66,194,235,215,175,255,253,160, 65,131, 24, 0,232,212,169, 19, 83,191,126,253,111, 9, 33,225,101,252, 79,153,152, 82,169, + 84, 2, 0, 59,118,236,208,222,186,117,171,203,142, 29, 59,180,246,223, 59,136,185,124,254,252,249,144,203,229,176, 88, 44, 48, + 26,141, 54,251, 44,251, 87,147,201, 4, 47, 47, 47,236,218,181, 11, 28,199,237, 42, 47,157,193, 33, 85, 65,188,107, 96,237,142, +195, 56,150, 33,114,154,100,217, 99,214,244, 87, 70,248,121,121, 30,248,223,220, 89,222, 89,119, 46, 32, 33, 33,129,238,219,187, +235,207, 66, 74, 19,179,115,233,180,172,124, 26, 81, 96,160,210,166,161,120,120, 96,217,199,116,106, 27,152, 81,194,169, 65,123, +204, 58,254,202,136, 64,111,207,125, 95,253,111,174, 42,251,206, 5, 36,167,164, 96,247,174, 29,151, 10, 41, 77,164,148,110,161, +148, 14,229, 56,174, 46,199,113,117, 41,165, 67, 75, 35, 47,206, 98,234,116,186,122, 58,157,174, 94,101, 98,242, 60, 95,143,231, +121,135, 49,237,137,202,194,133, 11, 99,146,147,147, 7,165,165,165,117,182, 94, 89, 89, 89,157,242,243,243,219, 21, 20, 20,180, + 46, 92, 88,213, 77,167,211,249,228,229,229,249, 23, 22, 22, 54,166,148, 94,112,180,125,218,139,189,215,233,164,164,164,233, 73, + 73, 73,164,188,116, 50, 99,110,144, 13, 95,125,244,219,178,101,203,252,159, 6,191,120, 58,211,211,211, 55,255,252,243,207, 13, +171, 87,175, 30, 58,116,232, 80, 44, 93,186, 20,139, 23, 47, 54, 0,192,202,149, 43, 13,118,154,172,224,251,247,239, 55, 41,105, +219,240,177,116, 50,204,186, 87, 94,121,133, 30, 59,118, 12, 61,122,244,176, 57, 18,253,241,199, 31, 97,177, 88,114, 59,118,236, +200, 3, 64,161,190, 32,151,242, 20, 70, 83,201,251,239, 37,149,167, 88, 44,126,213,222, 95,160,213, 25,179, 88, 44, 6,165, 20, + 17,173, 90,101,100, 55,104,160, 93,149,147, 83, 48,189, 94, 61,245,168,200,200,161,181,128,129, 37, 97, 18, 66, 30,211,234, 20, +191, 28,213,100,217, 99, 82, 74,211, 10,147, 48,242,183,185,247,247, 90, 53, 91, 82,165, 0,250, 60, 11,182,125,113, 63, 93,159, +142, 31, 1, 60,116, 6, 19, 0,180, 90,237,187, 95,124,241,133,193,221,221, 29,111,188,241, 6,230,204,153, 51,162, 85,171, 86, + 57,190,190,190,167,195,194,194,174,244,235,215, 47,249,194,133, 11,239,182,111,223, 30,183,111,223,198, 87, 95,125,149,157,149, +149, 53,160, 44, 76, 66,136, 77,147,215, 61,186,147,246,135,111,191,230, 59,182, 29, 7,185, 76, 13,179, 48, 24,218,124, 51,178, +116, 20, 70, 73, 51,136, 69, 18,116,110, 81, 7,167,247,173, 41,224,140,186,181, 21,105,243, 78, 76,174,207, 26,179, 82,220, 45, + 20, 79,103,101,184,133,120, 22,121,127,145,165, 4, 63, 90,143,107,180,172, 71, 42,173,175,132,240, 28,199,241,168, 86,189,154, + 42,238,254,195, 37,125,251,246, 25,222,181,107,180, 60, 58, 58, 90, 90, 39,230,209,214,197,142, 29, 59,176,117,235,214,130,253, +251,247,231, 74,132,236,202,224, 42,193,190, 28,199,131, 16,190, 76, 54,172, 82,169,222,255,228,147, 79,100, 57, 57, 57, 88,188, +120, 49,223,176, 97, 67, 70,161, 80,192,100, 50, 97,229,202,149,230, 58,117,234, 8, 25,134, 65, 78, 78, 14, 24,134,185,233, 96, + 6, 47, 19, 66, 58,127,223,190,215,214, 38,239, 12,243,172,221,254, 37,247,118,193,129, 48, 55,162, 72,138,191,143, 91,135,246, +103, 93,219,183, 40, 19,250,212, 94,148,210,235,206, 22, 96, 64, 64,192,231,251,247,239,247,121,247,221,119,169, 94,175, 39, 15, + 31, 62,164,115,231,206,245, 25, 57,114,228,231, 0,222,172,104,127,202,206,206, 6, 33,132, 47,106,180,214, 85, 63,113,162, 98, +175, 18, 66,126,239,217,179,103,247,142, 29, 59, 34, 38, 38,198,182, 69,104, 79,180,172,167, 15,231,205,155,151, 13, 96, 74,121, +184, 66,161, 16,139,215,110, 70,118, 86, 6,124,125, 3, 32,149,201, 42,236,113, 89,204, 48,211,191,156,245,153, 79,198,141,211, +228,234,159,135,249, 77,151, 83,211, 44, 28, 45,217,227,127, 94, 18, 45, 98,255,101,175,102, 24,118,250,151,115,103,186, 89,183, + 53,127,185,152,156, 75, 56,250,238, 83,245,146, 23, 5,243, 31,150,128,128, 0, 36, 37, 37,145,128,128, 0,106,221,214, 43,141, +104, 61,209,192, 31,109,151,145,178,182, 13, 43,138,127,239,222,189,185,141, 26, 53,250,232,246,237,219,155,106,215,174, 61, 6, + 64, 21,131,193,144, 61,117,234,212,255,173, 92,185,114,184, 35,154, 44, 0,248,245,215, 95, 23, 13, 27, 54,108,239,235,175,191, +254, 49,207,243,245,237, 38,145,123, 62, 62, 62,182, 45,220,244,212,148,201,163,135,247,159,156,159,159,229,176,159, 59,165, 82, + 57,106,234,212,169, 82,157, 78,135,239,190,251,142,175, 83,167, 14, 99, 93, 20,173, 95,191,222, 18, 30, 30, 46,232, 51,110, 92, +198,194,148, 20,204, 62,126, 92, 55,185,110,221,134,171,110,221,106, 92,146,198,221,186,112, 44, 73,147,101, 53,187,168,224,228, +144, 68, 8, 25,249,219,220,251, 63, 2,232,242, 82, 95, 63,252, 62,255, 62,178,226,140,255,131, 5,119, 29, 9, 11, 84, 2,102, + 2, 33,164,115,106,106,234,239,159,125,246,153, 91,227,198,141, 81,183,110, 93,161, 82,169,108,102,117, 23,147,147,147,131,131, + 7, 15, 98,233,210,165,198,107,215,174,245,164,148,150,186, 93,197,113, 92, 90,120,120,184,181, 28, 40, 33, 36, 51,215, 64,220, + 54,214,106,166, 28, 58,122, 19, 57,113,238, 20,146, 76, 60, 12,102, 30,213,170, 71,161, 93,151,133,216,190,231, 10,151, 20,119, +253,186,185, 48,107,197, 11, 62,127, 63, 19,119, 11,207,192, 45, 68,165,105,179,236, 95,255, 43, 82, 98, 15,229, 89,230,228,210, +101, 63,188,250,235,207,191,248,177, 44,227,119, 55, 54,246, 92,183, 94,189, 19, 15, 28, 56,224, 33,114,115,107, 10,128, 55,142, + 25,243,167,201, 80,168,221,249,251,239, 33,213,170, 85,109, 80, 20, 84,154,242, 44,115,178,172, 7,230,231,231,235,142, 31, 63, + 94, 48,101,202, 20, 18, 31, 31,191,193,215,215,183,223,158, 61,123,148,189,122,245, 42,140,137,137,217,226,231,231,215,189,125, +251,246,170,143, 62,250,200,144,159,159,191,196,137,206,125,157, 16, 82,235,236,103, 11,222, 58, 59,255,135,151, 33, 96, 91,194, + 32, 4,120,243, 73,152,242, 14, 0,216, 64, 41,181, 84,164,144, 20, 10, 69, 3,185, 92,142, 75,151, 46,101, 53,107,214,204,168, +215,235, 69,115,230,204,241, 84, 40, 20, 13,158, 98,128,163, 89, 89, 89,224,121, 94, 0,128, 20,189,130,119,254, 44,254,155,221, +186,117,251,125,227,198,141,175, 68, 71, 71, 35, 52, 52, 20,102,179, 25,225,225,225, 48, 26,141, 8, 11, 11,131,193, 96,192,140, + 25, 51,144,147,147, 51,161,172, 96,197,132, 16, 88, 44, 22,155,177,109, 96, 80,200, 35, 63, 61, 79,225,198, 66, 33,100, 66,111, +238, 92,133,180,204, 12,126,227, 95,169,169, 5, 38,174,243,237, 52,221,181,226,191, 43,224,160,107, 63,244,189, 68, 0, 48,240, + 40, 51,226,188, 66,140,208, 91,187,126, 68,106, 90, 6,126,189,152,156,173, 51,241, 93,110,150,128,233, 84, 58, 95, 16,204,168, + 25, 49,232,253,158,227,191,189, 56,186,226,207,114,148, 80,149, 38, 23,147, 41,225,151,214,162, 88,182,170, 68, 31, 89, 79,131, + 95,164,169,250,189,168,221,198,247,239,223,127,242,253,251,247,103, 21,249,203, 90,230, 12,214,170, 85,171,110, 3, 24, 86,214, +111,126, 89, 48,108, 27,128,109,206,224,230,229,229,233, 47, 92,184,160,255,232,163,143, 72,124,124,252, 30, 63, 63,191, 87,246, +238,221, 43,239,213,171,151,225,234,213,171,135, 2, 2, 2,218,116,234,212, 73,185,251,204,153,196,130,187,119,119,238,188,127, + 63,200,204,243, 59,203,234,159,149, 73,178,138,147,173,109,179,239,127,249,251,151,247, 59,241, 6,108, 49,102,225, 79, 0, 9, + 79,129,121,140, 16, 82,123,224,192,129, 27, 95,123,237,181,151,106,215,174,141, 42, 85,170,224,214,173, 91, 72, 79, 79,199,229, +203,151,177, 99,199,142, 29,122,189,190,220,128,218,153,153,153, 79,132, 39, 34, 50,207,128, 53,223, 77,223,113,238, 68,211,240, +214,209, 67,100,117, 3,120, 24, 77, 20,241, 15,238, 98,198,180, 21, 5,201, 15,110, 95, 55, 89, 76, 61,255, 3, 62,180,142,197, +198,198, 70,177, 44, 91,169,238, 22, 42,234, 22,194, 37,149, 72,180, 98, 99,227,175,135,134, 6,127,178,117,203,230,150,148, 50, + 44, 37, 68,167,209,184,239,120,248,240, 97,182,253,239,106,120,120,168,134,141, 28,214,143,240, 68, 72, 8,207,241, 44,115, 50, + 54, 54,190, 76,141,145,209,104, 28,221,175, 95,191,197,114,185,124,170, 86,171,189,164,209,104,254,106,208,160,193, 44, 74,233, +180,194,194,194,223, 85, 42,213,153,151, 94,122,105, 78, 72, 72,200, 34, 74,233,121, 39, 59,183, 5,143,236,195,214, 86,178, 42, +119, 38,165,212, 77, 32, 16,228, 92,185,114,229,231,136,136,136,254,148, 82, 55, 66, 72, 78, 69, 49,245,122,253,187,217,217,217, + 94,163, 70,141, 50, 47, 95,190, 60, 98,200,144, 33,147,175, 93,187, 38,212,235,245,177, 78,230,217, 64, 8,233,222,183,111,223, + 21, 66,161,176, 35,195, 48,132,231,121,106,119, 31,148, 82,112, 28,183,189,188,114,225, 56, 46,177, 86,173, 90,143,173,160, 75, +178,207, 53,155,205,137, 14, 79, 54, 70,110,252, 15,135,175,205,211,155, 41,181,240,116,244,205, 84, 93,137, 71,206,206,222,164, +117, 28,198,212,243,227, 23,239,187, 62,207, 96,230,121, 11, 79,199,148,134,233,212,164,248,130, 96, 2,192,100,205,250,109, 88, +182,222,102, 24,111,221, 78, 44,254,185, 50,197,170,117,130,147, 30,155,153, 49,143,140,229,203, 35,124, 21,197, 47, 78,186,156, +149,222,189,123, 63, 51,123, 20,147,201,244,105,183,110,221,102,105, 52,154,255,165,167,167, 95,210,104, 52,215, 35, 35, 35,199, +243, 60,191,168,160,160, 96,135, 74,165,122,189, 73,147, 38, 19,170, 86,173,186, 38,142,210, 53,229,245, 77,171, 86, 7, 0,181, +246, 75, 43,145,176, 39, 20,102,179, 57,161, 2,101,152, 68, 8,249, 16, 64, 53, 60,114,192,123,135, 82,250, 84,101, 67, 41, 77, + 2,208,146, 16, 82, 29, 64, 71, 60,242,223,151, 13,224, 30,128,243,148,210,203, 21,198, 46,204, 76, 34,132, 52,186,113,241,248, +152, 91,215, 47,190,101, 61, 93,200,178,226,171,156,169, 96,173,185, 48,107,197,127,196, 81,233,244,176,176, 48, 55, 0,245, 1, +164,226,111, 71,198,113, 0,190,169,140,133,138,157,116,112, 81,162,167,226, 9,163,236,183, 11, 31,187,247, 44,219, 34, 33,164, + 83,101,199, 67,114, 97,186, 48, 93,152, 46, 76, 23,166, 11,211,133,249,223,195,124,209,137, 86, 9,132,118,121,169, 26, 45,151, +184,196, 37, 46,113,137, 75, 92,226, 18,151, 56, 46,165,106,180, 0,116, 42,229, 31, 28,102,170, 21, 57,125, 80, 30,190, 11,211, +133,233,194,116, 97,186, 48, 93,152, 46,204,255, 30,230,255, 55,113,109, 29,186, 48, 93,152, 46, 76, 23,166, 11,211,133,233,194, +252,215, 49, 95,104, 50,229,218, 58,116,137, 75, 92,226, 18,151,184,196, 37, 46,121, 54, 98, 37, 85, 37, 25,197,187,136,150,243, +172,149, 1,240, 54,128,222, 0,106, 0,184, 11, 96, 51,128,239,157, 8, 83, 97,143,167, 6, 48, 25, 64, 75, 60,138, 94,127, 15, +192,113, 0, 95, 80, 74,243, 93, 37, 94,178,120,123,123,127, 34, 20, 10, 53,192,163,208, 38,214, 87,251,247, 28,199,101,231,228, +228,204,125, 70,237,128,117,244, 84,150, 53,173,246,105,179,127, 53,155,205,207, 44,157, 46,121,110,199,145,112, 15, 15,143,159, +180, 90,237, 0, 74,233, 45, 87,137,184,228,191, 36, 62, 62, 62, 99, 76, 38,211, 84,145, 72, 52, 39, 45, 45,237,135,255, 71,253, +186,196,147,135, 54,162,181,107,215,174,163, 0, 16, 29, 29,221, 22, 0, 84, 42,213, 41,134, 97,170, 23,253, 51,128,191, 99,225, + 21, 63,250,111,125,229,121,254, 94,102,102,102,169, 14,212,228,114,249, 41,150,101,171, 19, 66,192, 48,140,237, 50,155,205, 42, +150,101,243, 74,193, 76,208,106,181,141,159,147, 66, 36, 0,118,186,187,187,235,103,205,154,245,125,187,118,237,130,147,146,146, + 44,147, 38, 77,106,243,215, 95,127, 69, 19, 66, 94,117,134,108, 17, 66, 90, 16, 66,214, 52,108,216,112,219,224,193,131, 55, 54, +107,214, 76,156,153,153,169,218,188,121,115,224,218,181,107, 47, 16, 66, 6, 56,235,226,226, 5,104,136,130,210,252,153,149,117, +175,184, 8,133, 66, 77, 66, 66,130,170,104, 37, 97, 37, 86, 48,155,205, 48,155,205,208,233,116,104,208,160, 65,165,167,223,223, +223, 63,138, 16,178, 36, 44, 44,172,113, 64, 64,192, 57, 0,227,146,146,146,254,114, 38,173, 22,139, 5,148, 82, 91, 58,107,215, +174,237, 26,153,157,107, 67, 35,196, 98,113,151,176,176,176,166, 6,131, 33,235,222,189,123,103, 57,142,251,172, 44,167,151, 78, +226,187, 1,248, 76, 34,145, 52,171, 81,163, 70,240,237,219,183,227, 77, 38,211, 25, 0, 51, 41,165, 57,149, 65,178,218,182,109, +123,226,187,239,190,243, 28, 59,118,236, 9, 66, 72, 43, 23,217,114,201,191, 37, 85,170, 84,209,232,116,186, 21, 0,162,132, 66, +161,159, 84, 42,133, 76, 38, 75,145, 72, 36,151,100, 50,217,240, 19, 39, 78,100, 59,139,201,113,220,103,113,113,113,126,205,155, + 55,159, 95,183,110,221, 25, 25, 25, 25,122,147,201,116, 40, 43, 43,107, 2,165, 52,183,172,255, 45,206, 69, 94, 36,146,101,255, + 90, 52,222,255,189,117, 88, 20, 87,168,221, 99, 12, 76, 32, 8,138,139,139,243, 81,169, 84,224, 56,206,166, 45,176, 78,106,246, +182, 93, 69,126,154, 16, 25, 25,105, 42,103,194, 9, 78, 72, 72,240, 81, 42,149,182,239, 76, 38, 19,252,252,252,248,196,196, 68, + 31,169, 84,250,216,239,141, 70, 35,130,130,130,158, 39, 95, 40,111,123,120,120,228, 60,124, 24,223, 64,111, 48,205, 28,249,238, +148, 79, 6,244,126,217,253,212,169, 83,252,171,175,190,106, 56,122,244,232,219, 0,150, 56, 88, 41,110,132,144,181,147, 38, 77, +154, 33,149,171, 61, 15,159,186,110, 88,187,121, 87, 98,195,240,106,100,194,132, 9,236,123,239,189,119, 44, 42, 42,234, 39, 66, + 72, 35,103, 52, 91, 42,149,106,175, 68, 34,169,202,178, 44, 76, 38,211, 67,173, 86,251,202,115,212, 16, 27, 2,184, 72, 8,137, +162,148, 94,114,244, 94, 89,146,153,153,137,194,194,194, 39,174,218,181,107,163,178,237, 15, 9, 33,130,224,224,224,223,231,205, +155, 23,152,146,156,140,175, 23, 46,108, 14,224,123, 0,205, 29,249,255,180,180,180, 39,210, 25, 25, 25, 9,151, 56, 85, 7,147, +103,204,152, 49,239,173,183,222, 2,199,113, 40, 44, 44, 12,184,115,231, 78,157,169, 83,167,246, 36,132, 52,165,148,198, 62, 37, +190,119, 88, 88, 88,204,248,241,227, 61,154, 54,109,138,162, 40, 21, 1,199,143, 31,111,190,114,229,202, 65,132,144, 72, 74,105, +250,211, 60,195,195,195,227,167, 31,127,252,209, 83, 46,151, 99,251,246,237,158, 29, 59,118, 60, 78, 8,105, 93, 81,178, 69, 8, + 97, 60, 61, 61,223, 3,208,129,231,121, 49,128, 51, 89, 89, 89,179, 43,226,213,221, 37,255,191,196,203,203,107, 68, 94, 94,222, +119, 18,137, 68,228,238,238, 14,185, 92, 14,129, 64, 0,129, 64, 80, 69, 34,145, 84,145, 72, 36, 93, 59,116,232, 48,238,240,225, +195,101,122,216,127, 41,202,111, 40, 24, 50,147, 37, 12, 11, 0,181,195, 60,213,110,110,110,152, 57,115,166,162,123,247,238, 10, + 0, 56,113,226,196,224, 33, 67,134,116, 36,132,212, 45,141,108,149,196, 69, 94, 20, 41,237,196,225, 99, 26,173,232,232,232,163, +197, 58, 47,100, 50, 25, 54,110,220, 8,150,101, 31,139, 26, 95,210,251, 42, 85,170,148,155, 16,171, 70,108,199,142, 29, 80,171, +213,112,115,115,179, 77, 52, 18,137, 4,135, 14, 29,130, 80, 40,132, 64, 32,128, 80, 40, 68,227,198,141, 81, 70, 64,251,103, 34, +125,234, 16, 10, 0,155,222,121,148,174, 62, 75, 30, 57,129,220,244, 78, 36, 90,215,144,161,247,123,211,251, 21,232, 77, 77, 0, +232,178,179,178,178,206,109,221,154,212, 48, 60, 92,244,211, 79, 63, 53, 13, 12, 12,236,237, 40,209, 2, 48,185, 81,163, 70, 91, + 88,153,155,215,224, 33, 67, 7, 15, 23, 48,166, 65,163, 63,154, 19,159,156,161, 27, 53,106,212,214,237,219,183, 15,254,242,203, + 47,111, 76,156, 56,113, 50,128, 79, 29, 77,191, 88, 44,174,122,231,206,157, 48,158,231, 81,175, 94,189,231, 38,140,129,149, 72, + 81, 74, 65, 8,121,140, 80,149,117,175, 60,177,106,176, 74,186, 42, 91, 2, 3, 3, 35, 7, 14, 28,232,165,205,200,192,215, 11, + 23, 90,191,110, 92,222, 54,162,117,139,208,104, 52,226,141, 55,222, 24,200,113,156,192, 74, 2, 13, 6,131, 49, 39, 39, 71,111, +119,178, 39,157, 82,250,178, 3,229, 89, 93,161, 80,252, 15, 64, 84, 97, 97, 97, 32, 0, 40, 20,138, 68,158,231,183,233,116,186, + 79,173, 1,124, 43, 80, 79,193, 0,234,160,244, 80, 80,116,222,188,121,183, 39, 79,158, 28,251, 79, 99, 18, 66,170,250,250,250, +206,237,211,167, 15,118,237,218,133,221,187,119,155,101, 50,153, 96,200,144, 33,100,220,184,113,238,227,199,143,239,138,167,112, +226, 88, 36, 93,103,204,152,225, 81,171, 86, 45,108,222,188, 25,151, 47, 95, 46, 12, 11, 11,147,181,107,215, 14, 2,129,192,227, +147, 79, 62,121, 21,192,154,167,121,128, 86,171,157,253,209, 71, 31,173,253,249,231,159, 85,247,238,221,195,146, 37, 75,188,250, +245,235,119,148, 16,210,214, 81,178, 69, 8,145, 0,120, 15, 64,123,150,101, 91, 15, 25, 50,196,242,238,187,239, 10, 25,134, 49, + 47, 92,184,208,123,229,202,149,253,188,188,188,162, 50, 50, 50, 92,230, 7,101, 8,203,178, 38,158,231,133, 0,164,148, 82, 67, +121,159,255, 75,121,247,244,244, 28,155,149,149,245,189,159,159, 31,124,125,125,159,152,107, 13, 6, 3,164, 82,169,200,207,207, +239,199, 30, 61,122, 8,127,251,237,183, 82,183, 0, 9, 75, 62,219,254,203,172, 64, 15,119, 21, 0, 96,209,210,125, 5, 0,240, +219,111,191, 33, 41, 41, 9,238,238,238,168, 91,183, 46, 59,107,214, 44,255, 9, 19, 38,124, 13, 96,120,105, 88,197,185,200,139, +164,209,178, 39, 91,246,159,203,180,209,226,121,222, 22,176,212, 74,168,172, 36,168,248,123, 43, 57, 43,198,240, 14, 22, 75, 8, +201,207,207,183,145, 44,181, 90,141,162,201, 21,102,179,249, 9, 92,142,227, 64, 8,161,101, 97,150,146,225,177, 0, 14, 81, 74, +239, 58,200, 68,109,152,155,222,137,196, 90,201,164,254, 86, 23,234, 93, 63,122,244,186, 22,192,169,251,195,151,124,215,182,109, +224,123,211, 22, 79, 47,204, 76,202,248,100,224,235, 85,195,252, 60,101,138,236,180, 28,143,136,136,206,120,228, 81,217,209,116, +182, 25, 60,120,240,186,253,167,227,136, 84, 42, 18, 9, 88, 86,216,170, 94,184,103,176, 27,235,166, 2,220,226, 99,111,159, 26, + 58,116,104,189,137, 19, 39,182,118, 38,239, 12,195, 64,173, 86, 99,221,186,117, 96, 28,136,157,243, 44, 78,141,148, 80,239, 2, + 43,145,210,106,181,216,181,107, 23,162,163,163, 47, 18, 66,162,138,126,114,145, 82,138,220,220, 92, 36, 39, 39,195,223,223,255, + 34, 33, 68,104,191,141, 88, 28,211,170, 85,181,146,170, 33, 67,134, 12,180, 88, 44, 2,187, 65,162, 56,129,121,130,196, 56,154, +247,128,128,128,253, 0, 94,102, 89, 22, 70,189,222,248,191,175,190,178,191,125,222,158,100,149,134,105, 77, 43,199,113,130,139, + 23, 47, 10,173,125, 6,128, 16,128, 2,128, 23,165, 20, 12,195, 92,113,160, 60, 35,229,114,249,169, 29, 59,118,168, 27, 55,110, + 76,196, 98, 49, 44, 22, 11,174, 94,189, 26,252,229,151, 95,142, 62,120,240,224,171,132,144,218,197,131,167, 59, 88,239,117,142, + 31, 63,174, 11, 13, 13, 45,145, 56,230,230,230, 10,194,195,195,219, 2,136,253, 23, 48, 19, 82, 83, 83,123,188,252,242,203, 99, + 82, 82, 82, 98, 44, 22,203,199, 0,234,122,121,121, 93,236,213,171, 23,100, 50, 89,123, 71,136, 86, 89,245,238,227,227,211,253, +165,151, 94,194,146, 37, 75,240,229,151, 95,118,162,148, 30, 34,132,116,204,205,205, 61,216,173, 91, 55,104, 52,154, 30, 37, 17, + 45, 71,219, 18, 33, 36,188, 77,155, 54, 63,206,156, 57, 83,181,107,215, 46,132,133,133, 33, 47, 47, 15, 31,126,248,161,207,231, +159,127,126,132, 16,210,206, 74,182, 74,195, 36,132,212,150, 72, 36,107,126,254,249,103,101,104,104,104,168, 72, 36, 98, 66, 67, + 67,161,213,106,161,215,235, 37,115,230,204,169, 39,147,201,254,250,230,155,111,214, 0,232,245, 79,247,247, 98,105,205, 1,160, + 6,160,113,102,219,181,140,188,231, 0,144,216, 58,143, 80, 8,169, 84, 10,169, 84, 10,137, 68,130,155, 55,111, 78,147, 74,165, + 11,237,199,226,178, 48,201,223,147, 86, 3, 66,200, 89,150,101,203,252, 92,220, 52,228,159, 46,207,162, 52, 7, 17, 66, 22, 1, +104,255,104,200,103,142,122,121,121,189,159,146,146,242,192, 81,204,128,128, 0,207,252,252,252,111,252,253,253,225,235,235,107, +155, 59, 2, 3, 3, 97, 54,155,145,154,154, 10, 74, 41,178,179,179, 33,151,203, 17, 16, 16,240,205,232,209,163, 55, 47, 91,182, + 44,179, 68, 76, 30, 95,118,235, 55,245, 51,150,101, 25, 0, 96, 5, 74,229,248, 41, 64,213,170, 85,209,170, 85, 43,232,245,122, +228,228,228,160, 78,157, 58, 2, 66,200, 96,134, 97,212,148,210, 31, 40,165,135,255,131, 90,247, 82,141,225,103, 20,223, 23, 37, +132,128,231,121, 8, 4,130,199,136, 86,241,203, 74,138,138,218, 43, 41, 79,197,109, 52, 26,109, 36,203,205,205,205, 70,210, 44, + 22, 75,105, 68,171, 34, 76,189, 62,207,243,213, 9, 33,203, 28, 37, 91,197,101,240,224,193, 79,216,123, 76,152, 48, 33, 33, 45, + 45,141,190,209,185,129, 34,102, 79, 82,114, 13,119,165,204, 91,165,170, 38,117,247,208,100,102,102,254, 9, 64,227,196, 35,106, + 54,106,212, 72,182,118,235,241,132,145, 31,204,155,213, 56,212, 83, 93, 63,200,203,221,207, 77, 38, 86, 50, 68, 39,181,152, 19, + 60, 60, 60,194, 42,176, 66, 3, 0,104, 52, 26, 8, 4,130,231, 66,163, 69, 41,181, 16, 66,162, 8, 33, 23,119,237,218,133,102, +205,154,217,200,150,149,132,228,228,228,224,234,213,171,104,211,166, 13, 0, 68, 57, 98,171,197,243, 60, 76, 38, 19, 76, 38,147, +141,192,136, 68,162, 39, 8,140,245,183, 44,203, 94,169, 96, 22,102,185,187,187,183,105,223,190,189,248,151,141, 27,197,148, 82, + 29, 30, 5,190,206,167,180,148, 0,217,197,196, 98,177,216,180,108, 66,161, 16, 15, 31, 62,180,105,133,173,154,225,226, 91,231, +165,137, 68, 34,249,232,215, 95,127, 85, 55,109,218,148,100,102,102,130,231,121,219, 32,249,253,247,223, 75,123,247,238, 29,120, +225,194,133, 79, 80,129,112, 54, 0, 72,105,132, 8, 0,212,106,181, 5, 0, 83, 25,152, 22,139,133,180,108,217,114, 98, 70, 70, + 70,189,194,194,194, 57,142,180, 35, 0,219,139, 46,235,152,242, 87, 76, 76, 76, 97,223,190,125,101,213,170, 85,107,246,180,109, + 53, 60, 60,188,133, 80, 40,196,153, 51,103, 12, 0,172, 43,235,163,151, 47, 95, 54,244,234,213, 75, 18, 28, 28,220,194,137, 1, + 55, 60, 50, 50,242,128,143,143,143,204,170,193,236,211,167,143,112,249,242,229,170,196,196, 68,152, 76, 38, 76,158, 60, 25,175, +189,246, 26,188,188,188, 48, 97,194, 4,223,249,243,231,255, 4,160, 81, 25,152, 82,177, 88,188,238,206,157, 59, 97,254,254,254, +178,211,167, 79,163,126,253,250,200,200,200, 64, 74, 74, 10,242,243,243,145,146,146,130,225,195,135,251,124,253,245,215, 1,207, +209,252,147, 45, 18,137, 32,151,203, 53,217,217,217, 57, 79,129, 35, 1, 32,182, 39, 89, 18,137, 4, 18,137, 4, 82,169,244,169, +226,178,190, 32,147,120, 32, 33,228,186, 72, 36,146,200,229,114, 17,195, 48,144, 72, 36,157, 61, 60, 60,174,189,242,202, 43,117, +247,239,223, 31,231, 8,142, 94,175, 95, 39,145, 72,132, 62, 62, 62, 0,128,176,176, 48,212,175, 95, 31, 58,157,142,207,201,201, +129, 70,163, 97, 30, 60,120,128,194,194, 66, 36, 39, 39, 35, 36, 36, 68,200, 48,204, 58, 0,175,150,132,119,242, 66,242, 82, 0, + 75,173,159,189,189,189, 83, 1,200,172,159,165, 82, 41, 2, 3, 3,145,152,152, 8,149, 74,197,126,254,249,231,189, 54,110,220, +216,147, 16, 50,152, 82,186,222, 14,106,198,139,106,163,101, 37, 89,246,175,143, 17,173,232,232,232,233,187,118,237,106, 91,210, + 68, 86,180, 95, 91,170, 38,203,122, 57, 66,136, 8, 33,224, 56, 14,190,190,190,144,203,229,144,203,229, 32,132,216,190, 47,142, + 95,180,194,119, 58,179, 10,133, 2,111,189,245, 22,253,225,135, 31,198, 20,145,173, 59,142,254,111,159, 37, 49, 54, 45, 86,113, +169, 93,187,246,169, 79, 62,249,164,251, 31,127,252,145,216, 56,180,154, 64,145,244, 32, 95,170,214,104, 16, 84, 37,122, 72,143, + 94,151,241,232,244,161,163,114, 39, 47, 47, 79, 86, 35, 72,110,100, 24, 61,169, 34, 17,168,252, 21, 34,137,159,187,123,160,200, +104, 72, 83,187,187,139, 13, 6, 67, 54,128,172,178, 64,212,106,245, 62,137, 68, 18,194,178, 44, 88,150,133,151,151,151, 27,165, + 20, 26,141, 6, 65, 65, 65,202,136,136,136, 91, 2,129, 0, 12,195, 32, 63, 63,255,193,253,251,247, 59,151,151, 48,119,119,247, +125, 18,137, 36,132, 97, 24, 16, 66,192,178,172,237,224,130,245, 61,203,178, 32,132,160,160,160,192, 33, 76, 74,233, 37, 66, 72, + 84,116,116,180,141,108,237,217,179, 7, 93,186,116, 65,118,118, 54,174, 93,187,102, 79,178, 28,218, 54,180, 55,126,167,148, 66, + 36, 18,225,230,205,155,143,109,105, 91, 47,149, 74, 85,225,206,227,225,225,113,162, 79,159, 62,248,241,199, 31, 41,165,148, 0, + 80, 16, 66,234,187,185,185,221,188,126,253,186, 67,118, 48,148, 82,152, 76,127,255,212,218,198,237,251,151, 19,100,186,115,163, + 70,141, 72, 78, 78,142,149, 64,218, 22, 68, 44,203,226,187,239,190,147, 53,109,218,116,170, 84, 42,157, 40, 18,137,114,205,102, +243, 47,122,189,126, 14,165, 52,251,121, 26,148, 90,183,110,253, 65,124,124,252,107, 33, 33, 33, 59,158,130,196,211, 38, 77,154, + 24, 1,200, 88,150, 21, 86,194, 64,201, 22,181, 45,189,149,236, 83, 74, 45,141, 26, 53,210, 23, 77,242,172,163, 88, 94, 94, 94, + 63,237,222,189, 59, 40, 36, 36, 4,102,179, 25, 22,139, 5,249,249,249, 56,122,244, 40, 12, 6, 3, 44, 22, 11,194,194,194,240, +217,103,159,233,223,127,255,125,233,178,101,203,210,242,243,243, 7,148, 3,251,254,230,205,155, 21,254,254,254,178,194,194, 66, +196,198,198,162, 81,163, 70,200,203,203,131, 78,167, 67, 65, 65, 1, 76, 38, 19,114,115,115, 53, 28,199, 25,159,151,186, 22, 8, + 4,144, 72, 36, 16,137, 68,217, 33, 33, 33, 32,132, 72,227,226,226, 42,178, 21,167, 6,144, 43, 20, 10,197,246, 4, 75, 34,145, +224,204,153, 51,159,136,197,226, 18,181, 89,101,181, 31,103, 62, 63, 7, 19,249, 34,145, 72, 36,241,240,240, 16,217,205,211, 34, +165, 82, 9, 31, 31,159, 37, 0,186, 58,152,239,134, 30, 30, 30,182,241,189, 65,131, 6,136,143,143,223,150,147,147, 51, 40, 45, + 45, 13, 12,195,172, 99, 24,166,167,149, 7,100,101,101, 33, 56, 56,184, 97,105,120, 45, 27,249,143, 1,161, 54,141, 86,237,154, + 30,202, 98,243, 20,212,106, 53,238,223,191, 15,157, 78, 71,111,223,190, 77,198,142, 29, 75,140, 70,227,106, 66,200,159,148,210, +123,101,113,145, 23, 65, 42,100,163,101, 45,224,210,136, 85,113,226,229, 8, 33, 50, 26,141,202, 70,141, 26,241,214, 9,220,122, + 1, 32,165, 17,173, 34,205,129,211, 34, 20, 10, 85, 99,199,142,205,251,225,135, 31, 70, 19, 66,150, 83, 74,111, 87,180, 0,119, +108,249,217,247,203,207, 38,127,230, 17, 80,173,198,196,137,211, 4,175,191,254,250,233,181,107,215,114, 30,181,186,118, 60,188, +111,189,239, 55, 31, 78,218,179,123,247,110,224,145, 97,180,163,114, 98,231,206,157,126, 19,222, 27,135,207, 62,122,127,175, 58, +204, 75,172, 36, 30, 10,169, 65,151,174, 4, 45,148,212,140,124,109,235,142, 29,201, 0, 46,148, 5, 34,147,201, 66,110,223,190, + 29,102, 79, 36, 76, 38, 19, 52, 26, 13,214,174, 93,235,173, 82,169,188,149, 74, 37, 4, 2, 1,234,215,175,239,168,198, 36,228, +214,173, 91, 97, 42,149, 10, 5, 5, 5, 48, 24, 12, 48,155,205,224,121, 30,132, 16, 8,133, 66,136,197, 98, 40, 20, 10,167, 78, +246,217,147,173, 61,123,246,160, 78,157, 58,200,202,202, 66, 76, 76,140,211, 36,203, 94, 75,100,111,143, 37, 16, 8,240, 83,104, + 40, 70, 38, 37,217, 8,204, 34, 55, 55,124,198,243, 21,170,251,122,245,234,209,147, 39, 79, 98,239,222,189,232,214,173, 27,249, +253,247,223, 77, 28,199,137, 18, 19, 19, 29,214,142,241, 60,111, 75,171,117,220,182, 39, 88,206, 18, 45,139,197,162, 18,139,197, +208,235,245,182,173,125,251,171,122,245,234,208,106,181,130,220,220, 92, 65, 82, 82,146,124,246,236,217,239, 30, 57,114,196, 31, + 64,255,127,115, 32,250,225,135, 31, 66, 70,142, 28,249, 80, 32, 16,208, 46, 93,186, 12,124,240,224, 65, 15,127,127,255, 67,127, +252,241,199, 87, 0,194,157,197,243,246,246, 62, 47, 16, 8,130,148, 74,165,104,211,166, 77,230,188,188, 60,145,143,143, 79,170, +149,216, 90,203,218,108, 54, 39,228,228,228, 52,118, 4,207,219,219, 91,244,237,183,223,154, 51, 51, 51, 69,126,126,126,169, 86, + 28,133, 66, 33,218,180,105,147, 57, 55, 55, 87,164,209,104,206,103,103,103,151,139,151,145,145, 49, 96,240,224,193,199, 15, 29, + 58,228,197,178, 44, 30, 60,120,128,204,204, 76,104, 52, 26,172, 91,183, 14, 33, 33, 33,216,188,121,179, 86,171,213,142,248,223, +255,254, 55, 53, 63, 63,223, 17, 87, 15,109,154, 53,107, 22,146,157,157, 13,141, 70, 3,157, 78,135,243,231,207,163,118,237,218, + 72, 74, 74, 2,195, 48,208,104, 52,248,254,251,239, 11, 8, 33,218,231, 97, 2, 98, 89,214,166,117,178, 35, 71,250, 22, 45, 90, +224,200,145, 35,147,156, 33, 71,148, 82,163, 80, 40,124,140, 96,217,189,183, 56,155, 54,142,227, 68, 69, 54,162,196,145,207,207, +129,180,149,201,100,162,226, 95, 22, 20, 20,136,252,253,253, 91, 59, 65,124, 61,101,178, 71, 10,167,144,144, 16,228,228,228,112, + 70,163,177,223,186,117,235,204, 0,208,168, 81,163,126, 28,199,233, 45, 22, 11, 43, 22,139,161,211,233,224,227,227,227, 89, 42, + 32,131,143,183,255, 50,219,175,184,141,150,191,191, 63,162,162,162, 96, 48, 24,144,156,156,140,163, 71,143,154, 57,142,219,240, +195, 15, 63,240,222,222,222,195,222,120,227, 13,246,194,133, 11,239, 0,248,160, 44, 46,242,162,104,179, 74, 35, 91,214, 83,135, +109, 1, 28, 1,208,206,154, 73,251,173,195,178, 52, 89,197, 52, 90,164,156, 14,151,157,144,144,160, 80, 40, 20,182,239,204,102, + 51, 2, 2, 2,120,158,231, 73,241,231, 88,211, 81, 81, 17, 10,133,170, 41, 83,166,100,127,255,253,247,131,224,160, 65,249,166, +119, 34,177,182, 24,201, 90,250,229,204, 37,223,126, 57,219,227,238,222,213, 88,177,120, 1,199,113,184, 80,175, 94,189,214,249, +249,249, 2, 55,133, 25, 25,217,216,131, 71,126,180,168,131, 21,194, 0, 88,117,246,236,217, 11, 93,187,118, 61,185,234,215,173, + 30, 73,177,177,127, 74,114, 51,146,213, 53,195, 4,162,192,144,158,121,122,189,168, 95,191,126,222, 0,222, 40, 11,139, 97, 24, +196,198,198, 34, 46, 46, 14, 74,165, 18, 42,149, 10, 74,165, 18,106,181, 26, 42,149, 10, 42,149,202,233, 50,100, 24, 6, 28,199, + 97,203,150, 45,144,203,229, 80, 40, 20,143, 93, 86,146,245, 52,117,211,165, 75, 23,104,181, 90, 40,149, 74,219,118,167, 51, 98, +181,209, 50, 26,141, 48, 26,141, 48,153, 76, 28, 0,161, 64, 32,192,240,132, 4,155,150,199, 25, 2, 83, 92,234,215,175, 79,255, +252,243, 79,156, 60,121, 18, 58,157, 14,223,126,251, 45,252,253,253, 59, 0,152,230, 44,150,157,145, 62,151,155,155, 43,204,205, +205,181,105, 7,133, 66,161, 77, 99,232,232,228, 32, 16, 8,108,171, 81,235,101,175,213, 98, 89, 22,190,190,190,240,243,243,195, +210,165, 75, 69,213,170, 85,123,237,223, 28,132,230,207,159, 95,115,209,162, 69, 43,215,174, 93,187,103,192,128, 1, 27,175, 94, +189, 58,212,205,205,237,202,225,195,135,103, 75, 36, 18,190,130,253, 59, 40, 41, 41,201,199,254, 43,158,231,229, 22,139,197, 70, +108, 11, 10, 10, 80,183,110, 93,135,241,174, 95,191, 46, 7,128,217,179,103, 11, 1,200,173,110, 67,172,152, 5, 5, 5,194,218, +181,107, 7, 57, 72, 10,110, 17, 66, 90,119,234,212,233,212,129, 3, 7,220, 67, 66, 66,144,152,152,136,196,196, 68,212,172, 89, + 19,115,231,206,213,229,230,230,182, 44, 34, 87,191, 59,152,237, 0,119,119,119,225,195,135, 15, 97,177, 88,208,176, 97, 67,124, +255,253,247,232,215,175, 31,234,214,173,139,220,220, 92, 92,191,126, 29,107,214,172,113, 23,137, 68,111,252,219,147, 79,209,214, + 86,169, 87, 69,196, 98,177,168,165, 82,105,174, 68, 34, 17, 91,237,179,142, 30, 61,234,180, 54,203,126, 1,232,204,231,231,129, +180, 22, 23,177, 88, 12, 63, 63, 63,135,113, 36, 18, 9,177,142,141, 22,139, 5, 57, 57, 57,156,191,191,191,109,123,255,226,197, +139, 92,213,170, 85, 57,150,101, 89,177, 88, 12, 66, 8,228,114,121,169, 3, 62,229,232,204,215,251, 77,179,157, 58,100,132, 10, +245,248, 41,143, 22,253, 23, 47, 94,132,201,100,194,209,163, 71,205,255,251,223,255,146,178,179,179,199, 3, 16,236,219,183,111, +240,164, 73,147, 88, 31, 31, 31,155, 29,109, 73, 92,228, 69, 35, 91, 37,105,185,172,179,208,145,232,232,104, 82,116,180,146, 88, + 9, 14,165,244, 9,114, 85, 26,241, 42,154, 36, 72,121,157,142,101, 89,236,221,187,215, 70, 8,172,167, 14, 41,165,168,108,162, +229,233,233,169,107,214,172,153, 58, 62, 62,254,231,138,106,178,150,126, 57,115,201,188, 89,159,123,104,111,156, 70, 66, 82, 50, +180,105,230, 11, 39,174,220,223, 6, 96, 27, 0, 96, 89,173, 35, 24,125,227, 59, 71, 49,107,121,203, 27,212, 11, 80,109,123,185, +235,107,193,125, 71,125,192,188,253,246,219,173, 6, 15, 30,156, 51, 96,192,128,247,148, 74,101,184,201,100,202,218,186,107, 87, + 92,223,190,125,171,113, 28, 55,184, 60,159, 35,102,179,249, 65,175, 94,189,108,101,235,231,231,167,254,229,151, 95,124, 85, 42, + 21, 6, 14, 28,152, 30, 23, 23,103,219, 46,202,203,203,123,224, 72, 26, 77, 38,211,131, 6, 13, 26,148,186, 93,104,213, 72, 58, +131, 89, 84,151,182,211,133,153,153,153,184,121,243, 38, 4, 2, 1,154, 55,111,142, 19, 39, 78,160, 85,171, 86, 78,157, 56,212, +235,245, 8, 9, 9,129, 94,175,135, 78,167, 43, 0, 32, 89, 87,173, 26, 0,224,157,204, 76,156,255,223,255,112,122,222,188, 10, +181,163, 6, 13, 26,208, 51,103,206,224,202,149, 43, 48, 24, 12, 24, 49, 98, 4,138,182, 13, 1,224, 21, 39,242, 28,234,231,231, +215,165,107,215,174, 1, 0,160,211,233,200,217,179,103, 33,149, 74, 65, 8, 65,114,114, 50,118,236,216,129,196,196, 68, 16, 66, +224,238,238, 30, 68, 8,169, 70, 41,189, 95,198,196, 64,238,223,191,143, 47,190,248, 2, 60,207, 99,210,164, 73, 8, 11, 11,179, + 17,172, 7, 15, 30, 96,246,236,217,224, 56, 14,159,127,254, 57,106,214,172, 9,179,217, 44,117,198, 79, 89,101,203,132, 9, 19, +238,110,219,182,109, 79,124,124,252,171, 95,126,249,101, 91, 66, 8, 63,113,226,196, 47,212,106, 53,247, 52,184, 89, 57,121,184, +121,231,129,141, 8, 21,191,188,189, 60,156,198,187, 29, 27,111,251,127,142,179,199,227,224,233,225,238,108, 18, 11,204,102,179, +174,103,207,158,154, 45, 91,182,144,154, 53,107,226,222,189,123,214,197,105, 65, 5, 92, 58, 36,106,181,218, 48,150,101, 69,119, +238,220, 65,213,170, 85,209,172, 89, 51,204,153, 51, 7, 25, 25, 25,176, 88, 44,240,241,241,225,205,102,243, 69,163,209,120,236, +223,158,120,236,181, 78,246,215,209,163, 71, 39,137,197, 98, 10,224, 12, 0,167,136, 54,165,212, 88,165, 74,149,226,216, 22, 60, + 39,242, 44, 79, 50,250,251,251, 31, 85,169, 84,175,101,101,101, 61,166,213,106,217,178,165,201,215,215,247,184,163, 56, 74,165, + 50,139,101, 89, 79, 0, 72, 76, 76,132, 66,161, 16,197,198,198,206, 35,132, 76, 6,128,106,213,170,205,211,106,181,162,106, 69, +227,169,159,159, 31,140, 70, 99,169,102, 44,167, 46,166,172, 6,176,218,110,238, 77,206,201,201,145, 45, 88,176, 32,127,222,188, +121,133, 28,199, 25, 0, 28,206,206,206,182,249,209,170, 90,181,106,142, 80, 40,244,208,104, 52,129,118, 80, 79,112,145, 23, 73, +202,212,104, 21, 49, 73, 90,194, 63,149,168,201, 42,137,108, 57,162,149, 32,132,160,176,176,240, 49,237,136,245,212, 97, 73, 68, +171,104, 66,175,208,214, 97, 17,201,146,253,242,203, 47, 27, 22, 47, 94,124,210,209,255,179,183,209, 90,246,213,172, 47,173, 36, +235,242,201, 3,248, 61, 38, 39, 99,210,188,133,139, 42, 90, 9,181,189, 21,245,253,124,189,142,252,111,238, 76,245,221,189,107, +176,113,217,215,244,242,185,115, 77,207,157, 59, 55,104,220,184,113, 85,138, 26,150, 22,192, 95, 0,250, 58,114, 74, 39, 61, 61, +253, 49,251,168,176,176,176, 91, 26,141,198, 87, 42,149, 34, 54, 54, 54,255,218,181,107, 78,111,201, 20,199,172, 36,166,255, 24, +201,186,118,237, 26,218,183,111, 15, 0, 56,113,226, 4, 90,182,108,233, 20,217, 50,155,205,217,181,106,213,178,105,183,114,114, +114,120, 0, 24,149,156,140,229,254,254, 16, 8, 4, 56, 61,111, 30, 62, 53,155, 49, 71,232,156,233, 78,195,134, 13,233,185,115, +231, 16, 23, 23, 7,139,197,130,238,221,187,219,147, 44,103,242, 92, 55, 50, 50,242,224,225,195,135,189,149, 74, 37,116, 58, 29, +242,243,243, 49,100,200, 16,244,235,215, 15, 6,131, 1,155, 54,109,194,246,237,219,161, 82,169,160,211,233,160,211,233,220,163, +163,163, 79, 17, 66,218,148,102, 91, 72, 41,165,157, 59,119,198,241,227,199,193,178, 44,154, 54,109,138,204, 76,219, 97, 32,248, +250,250,150,116,143, 45,234,239,255,202,132, 36, 16, 8,232,209,163, 71,191,108,219,182, 45,226,227,227, 95,109,212,168,209,183, + 67,135, 14, 77,124, 90, 92,119, 55, 21, 26,212, 14,133,193, 96,128,193, 96, 64, 64, 64, 0,242,242,242,112,247,238, 93, 24, 12, + 6,248,250,104,156,198,139,170, 91,211,134,231,227,227, 3,157, 78,135,251,247,239,195,104, 52,194,203,203,221,153,250, 15,238, +220,185,243, 31, 27, 54,108,240, 92,179,102,141,177, 93,187,118,226,111,191,253,150,168,213,106,164,165,165, 85, 52,203, 71, 79, +156, 56, 17,210,169, 83,167,136, 27, 55,110,224,232,209,163, 48, 26,141,136,138,138,194,237,219,183,209,162, 69, 11,228,231,231, +159, 57,119,238,220,246,231, 97,226,177,110,235,217,105,158, 62,213,104, 52, 38, 0,139,158,166, 45, 62,124,248, 80, 82,191,126, +125,131, 84, 42, 21, 23,145,182,133,255, 86,219, 46,161,222,159,234, 36, 99, 89,226,231,231, 55,222,203,203,171, 83,245,234,213, +145,154,154, 42, 18,139,197,104,217,178,165,169, 73,147, 38, 38, 63, 63,191,119,156,168,151, 27, 34,145,168,205,163,197, 4,135, +135, 15, 31,130, 82, 58,169,110,221,186,239,231,229,229, 33, 51, 51, 83,172, 86,171,109,139,234,136,136, 8, 24, 12,134, 27, 78, +144,205,153, 85,171, 86,157, 42, 18,137,230,164,167,167,255, 80, 66, 25,137, 27, 52,104,160, 22,137, 68, 48,153, 76,143,145,205, +146,184,200,139, 76,178, 30, 35, 90,118, 44,178,184, 58,189,220,109, 67, 71,109,180, 8, 33, 48, 26,141, 80, 40, 20,182, 45, 41, +123, 79,240, 37, 17,173,138, 72,112,112, 48,154, 53,107, 38,219,184,113,227, 79, 11, 22, 44, 56, 85, 17,140,205, 27,214,251,187, +241, 5,193, 73,103,118,227,214,149, 11,216,118, 61, 59, 99,210,188,133,239,189,254, 70,255,212,226,196,108,211,232,242,241,194, +125, 20,117, 3,125, 61,143,124, 53,127,158, 90,123,227, 52,146, 83, 82,176,251,204,185, 11, 70, 74,175, 3,152, 84, 89,149,109, +127,122,173,162, 36,245, 25, 12, 60, 54,247, 14, 25, 25, 25,184,126,253,186,149,100, 69, 1, 64,171, 86,173, 46, 90,201,214,133, + 11, 23,208,168, 81,163, 39,220, 59, 60,161,121,200,202,154, 91,236, 25,157, 0,120, 89, 9,191, 64, 32, 64,203,169, 83,157, 38, + 89,132, 16,202,113, 28,180, 90,173,117,165, 88, 33,146, 85, 52, 40,126,116,248,240, 97,239, 85,171, 86,229,174, 93,187, 54,147, +231,121, 97,131, 6, 13,130, 26, 55,110, 76,214,173, 91, 7, 0,232,219,183, 47, 38, 77,154,132,107,215,174, 65,161, 80,160, 85, +171, 86,220,244,233,211,125,198,143, 31,255, 14, 30,249, 73,122, 66, 56,142, 19, 85,171, 86,237, 16,128, 14, 55,110,220, 0,128, + 83,148,210,150,214,251,101,221,115, 64,248,188,188, 60,161, 74,165, 42,209, 53,132,232,209,177, 78,103,183,250,108,152, 39, 79, +158,252,226,171,175,190,218,246,225,135, 31,222,121, 74,204, 18, 53, 90,175,189,246, 26, 10, 13, 38, 36,164,230,128,227, 44, 40, + 52,165, 57,141,103,175,209,122,237,181,215, 80,160, 55,226, 97,178, 22, 22, 11,135,188, 66,139,163,237, 72,254,242,203, 47,239, +251,229,151, 95,252,254,252,243, 79,112, 28,199,223,190,125,251,126,207,158, 61,213, 19, 39, 78,244,180,179, 65,117, 86, 22,247, +239,223,191,247,201,147, 39,181, 17, 17, 17, 30,103,206,156, 65, 90, 90, 26, 44, 22, 11, 58,116,232, 0,177, 88,252,112,222,188, +121, 34, 0,139,159, 23,162, 37,145, 72,112,246,236,217, 74, 33, 88,246, 34, 22,139, 43,188,253,248,162,202,153, 51,103, 18,199, +141, 27, 87, 91,173, 86, 47,106,221,186,117,123, 79, 79, 79,198,221,221,253,104, 96, 96,224,251,245,235,215,119,120,119, 65, 40, + 20, 14, 85, 40, 20,119, 45, 22, 11,155,159,159, 15,157, 78, 7, 0,176, 88, 44, 98,134, 97, 80,173, 90, 53,155,242,164,105,211, +166,240,243,243,227, 98, 98, 98,134, 58,138,159,150,150,246,216, 41,196, 18,100,116,203,150, 45, 5, 6,131, 1,113,113,113, 39, +236,111,148,198, 69,158,119,169, 80, 80,105,134, 97, 64, 41,133,180,113, 99, 36, 31, 56,128, 45, 91,182,148,249,144,101,203,150, +161,184,170,175,120,116,111,235,233,194,145, 35, 71,218,126,115,225,194, 5,155, 81,124,247,238,221, 31,195, 60,123,246,236, 19, +100,203,145,136,225,105,105,105, 55, 54,109,218,116,110,254,252,249,103, 28, 44, 32, 27,166,213, 70,171,247, 91, 3,147,151,124, +241,217,213,181, 59, 14,215, 77, 46,164,201,147,230, 45,252,176, 56,201,114, 20,179,150,159,178, 86,144,143,231,209, 5,243,231, +185, 89,181, 99,191, 92, 76,201,129,133,142,118,178, 34,203,205,187,189,102,145, 16,194, 87, 6,102, 5, 26,220, 99,152,246,238, + 29,146,147,147,109, 36,203,206, 97,105, 84,171, 86,173, 46, 22,145, 44,235, 61, 75, 69,210, 41, 16, 8,240, 97,126, 62, 4, 2, + 1,218,205,152,129, 14,179,102, 57,157,119,142,227, 32, 16, 8, 16, 22, 22,230, 52,201,178,199, 36,132,180, 44, 40, 40,192,154, + 53,107,242,238,220,185, 19, 90,189,122,245,241,171, 87,175, 94, 40,151,203, 31,251,159,130,130, 2,188,254,250,235,248,225,135, + 31,208,185,115,103,243,208,161, 67, 37, 12,195,116, 42, 43,157,113,113,113,163, 59,118,236,184, 76,175,215, 11, 50, 51, 51, 71, + 59,122,175,188,188,111,218,180,233, 78, 88, 88, 88, 91,148,238,194,129, 7,240,231,211, 96, 46, 90,180, 8, 0, 34,158, 6,179, + 52,141,214,175,191,254, 10,158,231, 17,236,167,129,193, 96, 64,241,178, 46, 15,179,184, 70,107,227,198,141,224,121, 30, 85,252, + 61, 96, 52, 26, 97, 53, 32, 46, 15,211,211,211,243,235,181,107,215, 6,197,196,196, 32, 33, 33, 1, 11, 23, 46,124,144,157,157, +221, 53, 59, 59, 91, 50,125,250,244, 35,111,189,245,150, 47,207,243, 6,103,251, 38,165,212, 64, 8, 25,250,210, 75, 47,173,155, + 61,123,246,189,200,200,200, 42, 45, 91,182,212,100,102,102,166, 95,186,116,233,254,178,101,203,148, 22,139,101,104,105, 91, 82, +255, 68,127,183,151,196,196,196, 25, 69,218, 84,167, 8,150, 35,233, 60,123,246,236,148, 34,236,115,142, 96,255, 83,121,127,218, +147,140,229,165,243,187,239,190, 75, 64, 49,255,104,206,166,243,236,217,179,113,157, 58,117,154,229,235,235, 59, 93, 42,149, 34, + 61,253, 81,176, 3,171,230,209, 58, 95, 55,110,220, 24,157, 59,119,198,173, 91,183,102, 77,157, 58, 53,238,105,202,179,104,193, + 29, 10, 96, 80,199,142, 29, 39,246,238,221, 27,223,125,247, 29, 40,165, 43,255, 11, 36,184,220,160,210,209,209,209,196,254, 21, + 0,204,102,115,252,221,187,119,253,107,102,101,177, 1,132,160,105,211,166,176,143, 81,104,181,219,177, 26,212, 29, 59,118,204, +194,243,124,153, 62,171, 56,142,139, 63,121,242,164,239,129, 3, 7,132,214, 10, 45, 50,234,228,147,146,146,152, 35, 71,142,216, +180, 99, 2,129, 0, 71,143, 30,181,152, 76,166,135,206,102,248,214,173, 91,149,178,154, 59,118, 45,238,253,125,187,127,243,106, +222,172,117,182,218,195,163,196,142,108,245, 32, 95,102, 3, 19, 48,115,190,156, 59, 83, 99, 37, 89,191, 94, 76,201,214, 27,184, +246, 55,210, 11, 46, 87,118,101,231,229,229,197, 89, 79, 23,230,231,231, 63,124,142, 26,225, 37, 66, 72,148,191,191,255, 69, 20, + 59, 93,104,189,215,168, 81,163, 39,238, 57,165, 54,225,121,184,185,185,217, 6, 9,103,237,178, 8, 33,212,186,149, 93,148, 46, +242,148,121, 62,121,245,234,213,170, 67,134, 12, 81,133,133,133,197, 18, 66,132,195,135, 15, 55,249,249,249,137, 78,156, 56, 97, + 6, 64,218,182,109, 43, 72, 73, 73,161,137,137,137,218,110,221,186,229,141, 28, 57,210,243,175,191,254, 18,243, 60,127,176, 28, +236,123, 0, 58, 58,123,175, 60,233,221,187,119, 44, 74,112, 28,250, 52,242, 44, 48,173,162,205,206, 69,108, 92, 98, 81,172, 75, + 30,220,131, 84,155, 93,149,217,108,129, 54, 55,211,105,141,214,221,251,137, 69, 33,199, 56,112, 92, 82, 17,222, 35,131,120,154, + 85,224,136,182,160,213,162, 69,139,186, 50, 12,195,156, 62,125,218, 48,127,254,252,248,244,244,244,238,148,210,135, 69,237,172, +221,154, 53,107,126,114,192,149, 67,105,117,127,157, 16,210,226,227,143, 63,126, 15, 64, 43, 0, 85, 0, 60, 4,112, 2,192,226, +231,204,131,249,194, 23, 20,187,194,242,162,156,100, 60,120,240,224,140, 30, 61,122, 8, 66, 66, 66, 62, 9, 9, 9, 97,178,178, +178,144,159,159, 15,134, 97,224,231,231,135, 58,117,234,192,207,207,143,191,113,227,198,220,143, 63,254,184, 92,159,124,181,107, +215, 14, 53,155,205, 53, 24,134, 9, 5, 16, 74, 41, 13, 37,132,132, 2,240, 40,210,140,169,171, 86,173, 42,104,222,188, 57,154, + 53,107,134, 35, 71,142, 96,243,230,205,171, 41,165,251,236,181, 89,197,185,200,243, 32,215, 27,147,182,132,199, 17,202,160, 93, +237,243,244,232,141, 40, 66,107, 93,124,114,126, 40, 55,168,244, 19, 3, 78, 86, 86,231,174, 93,187, 30, 96, 89,182, 90, 73, 19, + 87, 9,193,159,227, 82, 83, 83, 95, 45,115, 16,203,202,234,252,254,251,239, 31, 96, 89,182,154, 85, 83,101,177, 88, 12, 90,173, +246,237,118,237,218,125, 47, 20, 10, 37,246,184, 60,207, 63, 72, 77, 77,253, 71, 99,245, 21,247,163,213,185,107,143,140,167,197, + 84,138,152, 26,183,118,253,136,212,180, 12,252,122, 49, 37, 43,207,200,181,187,149,174,187,250, 44,210, 31, 23, 23,215,229, 57, +102,252,151, 74,219, 18, 44,235,158,131,146,238,128, 67,210,244,114,210, 71,138,200, 86,165,116,242,148,148,148, 5, 83,167, 78, +125,101,238,220,185,222,123,246,236, 81, 23, 61, 3,189,122,245, 74,187,122,245,106,107, 0, 18,189, 94,127,112,238,220,185,222, + 51,103,206,244, 4,224, 89, 52,200,164,166,166,166, 46,129, 75,202, 20,179,217,156, 80,167, 86,132,181,238, 30,115,233, 96,255, +222, 98,177, 36, 56,131, 87, 18,142,253,103,142,227, 18,202,209, 42,127,216,172, 89, 51,246,195, 15, 63, 76,221,179,103,143, 53, +144,110,129, 93, 59,187,133, 50,156,146, 58,216,151, 12, 0,230, 23, 93, 46,121, 14,199, 58,103, 62,255, 91,242,219,111,191, 77, +235,215,175,223, 26, 15, 15,143,245,161,161,161, 17,190,190,190,106,153, 76, 6,131,193,144,103, 52, 26,111,222,186,117,107,192, +212,169, 83,239, 57,130,181,102,205, 26, 22,128,136,231,121, 41,195, 48, 10, 0,106, 66,136,187,149,104, 17, 66, 96, 50,153, 16, + 23, 23,135, 79, 63,253,148, 59,116,232,208,255, 0,124,238, 68,114,155, 0,240,182, 27,199,189, 1, 24,241,200,129,109,122,145, +102,243,153, 8,225,113,164,214, 69, 74,110, 68,145, 82,141,244,203, 13, 42, 93, 74, 67,209, 1,104, 81,201,141,175, 44,204,144, +231,165,147, 12, 54,204,255, 25,203,230, 63, 22,231,208, 74,194, 74,252, 92,206, 6, 96, 78,161,101,220,226,125,215, 22, 24, 44, +148, 55, 89,248, 97,183,210,116,215,255, 31, 15, 64,150,138,220,115, 0,247,229, 74, 74, 31,169,196,188, 94, 37,132,188, 52,110, +220,184,105,114,185,188, 41, 0, 20, 20, 20,156, 78, 74, 74,154,101, 61, 85, 88,222,125,151,148,193,154,211,211, 27, 63,143,120, + 70,163,241,253,151, 94,122,233, 27,142,227,190, 50,155,205, 39, 92, 53,229,146,231, 89,126,253,245,215,123,214,121,185, 79,159, + 62, 44, 0,108,218,180,201,233,211,192, 67,134, 12,225,138, 2,153,235, 1,232, 0,228,226,145,195,109, 2, 0, 58,157, 46, 43, + 41, 41,233, 6,199,113, 55, 0,252, 84,129, 19,183,222,132,144,157,148,210,215,138,198,206,157,148,210,215,236,191,123,214, 98, + 71,182, 74, 26,239,203, 55,134,119,201, 35,217,116,237,239,137,182, 56,129, 42,239,115,105,114, 51, 37,255,232,211,174, 96, 93, +242,194, 18,203, 88, 0,131, 43,122,223, 37, 47,100,157, 63, 4,208,221, 85, 18, 46,121,225,230,191, 10, 16, 44,171, 92,191,126, +253,153,153, 8,252,219, 98,191, 77, 88,210,150,161, 85, 74,210,102,185,136,150, 75, 92,226, 18,151,184,196, 37, 46,113, 73, 89, + 36,178,200, 70,203, 70,162,138,108,181,138,147, 44,123,114,101,255,153, 0,232, 84,202,170,204,153,211, 4,157, 42,176,234, 59, +232,194,116, 97,186, 48, 93,152, 46, 76, 23,166, 11,243,255, 23,102, 5, 37,186,156,173,195, 93,207,138,104, 89,141,223,175, 71, +145,233,181, 47,210,233, 37, 25,195,151, 69,180, 30, 51,246,172,236, 11, 64, 39, 23,166, 11,211,133,233,194,116, 97,186, 48, 93, +152, 46,204,167,188,218, 79,158, 60,121, 10, 30,197, 63,166,147, 39, 79,158, 66, 41,141,126, 68, 99,104,244,179,124,246,181, 70, +104,123,189, 33,168,245,186,214, 8,109, 75, 41,147, 81,214,203,254,123,215,214,161, 75, 92,226, 18,151,184,196, 37, 46,121,222, +229,212,188,121,243, 10,230,205,155,103, 53,124, 79, 7, 64,138,180, 89,233,207,242,193, 69,219,132,229, 30,148, 42, 55, 4,207, + 63, 45,132,144, 0, 70, 32, 26, 40, 20, 73,218,131,242,117, 0, 0, 12,123,141, 51,234,255,176, 88, 76,235, 41,165, 73, 21,197, +174, 69, 72,173,154, 26,217,118, 3,199,137,226,243,140,189,111, 80,122,182, 34, 56,125, 8,105, 41, 17,139,247, 75, 52,154, 18, +189, 20, 26,178,179, 11, 13, 70,227, 43,155, 40, 61,233,234, 3, 46,113,137, 75, 92,226,146, 23, 65, 8, 33, 10,119,119,247, 67, + 12,195,132,216,125,135,146,222, 3, 0,199,113,201, 90,173,246, 21, 74,105,198, 63,137, 89, 76,140, 0,206, 62, 15,229,231,236, +214,161, 0,120, 44,182, 80,185, 17,179, 35,253,149,173, 35, 66, 67, 54, 36,165,164, 94,204,213, 27,135,223, 76,204,211, 58,155, + 72,129, 72, 58, 82,227,229, 55,231,205,161,239,123,134,133, 71,144,224,224, 64,128, 2, 15,227, 19,124,239,222,185,221,113,227, +218,197, 19, 68, 82,233,167, 38,189,254, 71,167,153, 39, 33,138, 16,165,228,196,143,147,223,210, 8, 96, 65,255,217, 27,246,214, + 38, 36,248,250, 35,215, 18, 78,145, 44,141,167,231,190,121, 7, 15,202,220,139, 28,128,218,177,214, 71,241,245, 46, 95,150,125, +242,202, 43,251,250, 16,210,217, 69,182,254,147,131,145,159, 90,173, 30, 47, 20, 10,219,153, 76,166, 16,177, 88, 28,207,113,220, +209,172,172,172, 69,148,210, 68, 87, 9,185,196, 37,229,246,161, 82, 3,153,255,155, 65,206, 1, 64,165, 82,157,103, 24, 38,200, +158, 4, 88,253, 59, 22,247, 19,105,231, 47,242, 94,102,102,230, 75,101,228, 55,212,195,195,227,123, 0, 77,202,115,152, 92,180, +213,116, 78,171,213,190, 93,116,250,184, 36, 60,149,187,187,251, 12, 66, 72, 31,134, 97,202, 13, 40,204,243, 60, 71, 41,221,148, +149,149,245, 57,165, 52,175,180,223,185,187,187, 31,140,137,137,105,226,227,227, 83,174,150,198, 98,177,224,225,195,135,222, 77, +155, 54, 61, 6, 32,242, 89, 98, 58,195, 69,254, 77, 41,235,228, 97,137,156,199,250,198,209,136,217, 60,143,129,171,230,188, 29, +152,252,224, 78,224,232,185, 63,135, 71,122,201,219,197,100, 20,164, 56,250, 64,177, 76,181,189, 85,135,215,218,143,125,239, 67, +197,165,171, 55,177,255,200,159,200,213, 25,192, 50, 12, 52, 42, 57,194,195,107,144,133,203,183,120,173, 94,186,240, 43,153, 82, + 19, 93,152,159,221,205,153, 12, 41,228,130, 79, 39,245,108,170,240,244,224, 0,158,195, 71, 93, 27, 40, 62,217,121,241, 83, 0, + 83,156, 38, 89,135, 14,201,211, 82, 83, 49, 51, 32, 0, 2,139, 5, 82,134,129,148, 16, 72, 25, 6, 10,169, 20, 93, 86,174,196, +172, 61,123,228,211, 94,125,213, 69,182,254, 99,162, 82,169,134,134,135,135,207, 95,177, 98,133,103,245,234,213,161, 80, 40,160, +213,106,189,110,221,186,213,240,131, 15, 62, 24,236,230,230, 54, 53, 39, 39,103,153,171,164, 92,226,146, 82, 73, 71, 67, 0, 37, + 6,137, 47,235,222, 63, 37, 12,195, 4, 37, 38, 38,250,200,229,114,112, 28, 87, 20, 13,128,183, 45,164,237, 35,229, 20, 57,170, + 69,100,100,164,169,156,113,227,187,180,180,180, 78,246,161,208,202,138,184,147,152,152,216,169,118,237,218,223, 1,120,165, 20, +242, 50,227,189,247,222, 27, 95,183,110, 93,171, 22,168, 40, 10,194,163,215,140,140, 12,140, 27, 55,206,246, 12,158,231,113,224, +192,129,247,134, 14, 29, 10, 0, 31,148,145,247, 16, 31, 31, 31, 50,122,116,217, 62,138,166, 79,159,142,233,211,167, 99,241,226, +197, 68, 40, 20,106,202, 41,207, 74,193,116,148,139,252, 27, 26,172,226, 30,226,139,253,108, 87,177,120,135,187,158, 32, 90, 14, + 55, 78,202,239,158,189,104,197,240,153, 67, 90,145, 85, 31,116, 10, 27,179,248,224,159,181, 3,100,109,174, 39, 21,198, 59,160, +201, 26,214,188,205,171,237,198,141,159,164,248,249,183,195,184,117,227, 50, 98, 78,252,242,216,111, 26,191, 50, 20, 41, 25,121, + 24, 58,246, 35, 37, 97, 5,237, 68, 82,249, 48,147,190, 96,149,131,218, 44,223,218, 30,242,119,155, 55,173, 35, 76,148,221,130, +159,187, 12,173, 26,213, 20, 6,239,187,242,110,109, 66,190,185, 78,105,185,177, 10,139,147,172, 21,111,189,133,214,102, 51,124, + 88, 22, 44, 33, 96, 1, 48,132, 64,111, 48,224,220,192,129,104,186,110, 29, 62,223,177, 67, 62,227,245,215,157, 38, 91,114,185, +124,117, 97, 97,225,151, 21,112,220,246,111, 14,158,225, 42,149,234,211,220,220,220,129,207, 81,154,252, 1,164,151, 16, 31, 81, + 4, 64, 67, 41,117, 42,178,176, 84, 42, 29,217,191,127,255,133, 75,150, 44,145,167,166,166, 34, 41, 41, 9, 28,199, 65, 42,149, + 34, 44, 44,140, 28, 60,120,208,115,210,164, 73, 11,212,106,181, 36, 55, 55,247, 27, 39,210,201, 8,133,194, 33, 30, 30, 30, 61, +124,125,125,125,210,211,211,211,179,178,178,118, 24, 12,134, 85, 21, 93,217, 23, 97, 14,168, 90,181,106,143,128,128, 0,223,196, +196,196,140,132,132,132,237, 6,131, 97, 53,165,148,127,202, 50,173,143, 34,111,245, 0,146,171, 86,173,122,237,254,253,251,105, +149,136,153, 84,181,106,213,235,206, 98, 18, 66, 20, 0, 54, 2, 8, 40,231,167, 73, 0,250, 82, 39,181,217, 46,169, 60,146, 85, + 20,210,234, 49, 66, 85,214,189,127, 90,100, 50, 25,126,249,229, 23, 8,133, 66, 8,133, 66,100,101,101, 33, 40, 40,200,246, 89, + 36, 18,217,222, 87,169, 82,165, 92, 60,142,227,154,178, 44,139,252,252,124,112, 28,103,187,178,179,179, 65, 41,133, 68, 34, 1, +199, 61, 10,231,100,119,191,105, 25,229,216, 39, 32, 32, 0, 63,255,252, 51,140, 70,227, 19,247,213,106, 53,174, 94,253, 59,200, + 8,203,178,104,214,172, 25, 67, 8,233, 83, 22,209, 34,228,145,211,205, 81,163, 70,129,101, 89, 91, 72, 61,235,123,235,197,113, + 28,166, 79,159, 14,251,208,100,255, 36,230,115,215,174,203,240, 16, 79, 41, 77, 6, 80,162,141, 22, 83, 22,104,164,159,242,237, + 9,111,189, 92, 48,117,120, 52,253,100,240, 43,244,227,183,218,209, 87,219,212,251,141, 21, 8,200,153,235, 15, 17,228, 6,172, + 30,215, 36, 36,216, 75,113,181,174,167, 42,188, 4,213,168,125, 64,233, 0,185, 66,253,197,219,239,127,164,220,117,236, 10, 30, +198, 63,124,130,100, 1,192,249,253,171,145,156,148,136,139, 49, 9, 24, 48,236, 29,165, 90,173,249,130, 16, 18, 80, 18,102,113, +113, 83,137,254, 55,185,111, 43,105,190, 57, 9,121,238, 0, 27, 42,134, 80,174,195,164,215,234, 75,212, 42,209,252, 50, 84,184, + 54, 76,137, 88,188,127,222,193,131, 54,146,213,210, 96,128,132,227, 96,225, 56, 27,201, 50, 90, 44, 40, 52, 26,225,159,159,143, +187, 67,135,130,154,205,152,186,109,155, 92, 34, 22,239,119, 36,157,118, 43,128,174,106,181,250, 8, 33, 36,220,145, 74,126, 22, + 71,102,157,116,227, 17,174, 82,169,142, 16, 66, 94,125, 30,210, 73, 8, 97, 8, 33,179,135, 15, 31,126,161, 70,141, 26,135,139, +136,149,245,158,160, 70,141, 26, 7,135, 15, 31,126,137, 16, 50,157, 16,194, 56,136, 25, 24, 16, 16, 48,103,201,146, 37,242,219, +183,111, 35, 49, 49, 17,102,179, 25,253,251,247, 7,199,113, 40, 44, 44,132,209,104,196,151, 95,126,169,240,244,244,252,148, 16, + 18,226, 72,222, 9, 33,172,155,155,219,154,181,107,215,142,186,127,255,190,223, 31,127,252,193, 92,185,114,197,247,171,175,190, + 26,234,233,233,185,174, 40,224,170, 83,229, 73, 8, 97,252,253,253, 87,253,254,251,239,111, 95,189,122, 53,104,235,214,173,194, +211,167, 79,251, 47, 93,186,116,132,191,191,255, 58, 66, 8, 91,145, 58, 34,132, 52,148,203,229, 29, 39, 78,156,200,159, 58,117, + 42,241,212,169, 83,137, 11, 23, 46, 68,235,214,173, 91,206,154, 53, 43,170,130,152,141, 84, 42, 85,135,137, 19, 39,242,199,143, + 31, 79, 58,115,230, 76,194,130, 5, 11,152, 14, 29, 58,180,154, 59,119,110,125, 39, 49, 55,158, 58,117,170,109,124,124,124,245, +132,132,132,106, 9, 9, 9, 85, 19, 18, 18,170, 38, 38, 38,134, 36, 39, 39, 87, 73, 73, 73, 9, 78, 75, 75, 11, 62,122,244,104, + 43, 0, 27,158,183,126,244, 95,199, 44,106,203, 23, 41,165,208,106,181,216,181,107, 23,138,180, 87, 13,237, 73, 86,110,110, 46, +146,147,147,173,247, 4,255, 66, 58,193,113,156,141, 72, 29, 56,112, 0,195,135, 15,135, 86,171,181,125, 39, 16, 8,108,239,173, +255, 83, 30,166, 85,243,196,113, 28,206,156, 57,131,209,163, 71, 99,225,194,133,216,176, 97, 3,118,238,220, 9,173, 86,107, 35, + 91, 22,139,165, 92,204,140,140, 12,240, 60,239,104, 30,145,147,147,227,112,189,219, 19, 32,129, 64,240, 4, 41,178, 94,206,180, +165,167,193,124,158,165, 52,143,240,142,136,173,113, 23,169,234,218,217,223,140,168,234,247,233,252,241,125,100,224, 76,160,230, + 66,192, 84, 0,152,242,193, 27, 11, 64, 68, 50,192, 92, 8,111,137, 22, 27,199, 70,168, 63,254, 57,246, 70, 45,111,117,244,141, +244,220,189, 37,146, 10,129,104, 64,159, 33,239,121, 38,164,229, 34, 49, 53, 7, 44,243,247,188, 23,213,105, 8, 4, 44,131,179, +251, 30, 41,174, 24,150, 69,142,206,128,236,124, 19,122, 15, 25,239,241,227,194,207, 6, 0,248,178,172,140,212, 35, 36,172, 69, +128, 71,207,218,181,171, 48, 55, 36, 49,136,122,245, 4, 56, 30,160,199, 95, 71,195, 44, 31, 54,114,191,184,103, 61, 66,230, 92, +161,244,118, 89, 56, 18,141, 70,230, 94,191, 62,102, 6, 4,160,141,217, 12, 17,165,120, 57, 53, 21,151,199,143,135, 97,203, 22, + 48, 0, 68,111,188,129,246,139, 22,225, 88, 64, 0,252, 10, 11,145, 61, 97, 2,188,247,238,133, 72,173,150, 57, 83,248, 34,145, +200,180, 98,197,138,128, 17, 35, 70, 28, 33,132,180,123,158, 53, 91,132,144,112, 15, 15,143, 35, 95,124,241,133,239,180,105,211, +146, 43, 9,211, 87,161, 80,108,210,233,116,227,157, 93,209, 22, 17,167,217,203,150, 45, 27, 51,106,212, 40,205,136, 17, 35,232, +221,187,119, 53, 0,172,218, 17,239,214,173, 91,215, 88,177, 98,133, 95,147, 38, 77,222, 27, 61,122,180,136, 16, 50,181, 60, 45, +143, 82,169, 28,187, 98,197, 10,175,140,140, 12,228,231,231,219, 6,217,132,132, 4,200,100, 50, 91, 80,117,161, 80,136, 47,190, +248,194,115,236,216,177,227, 1,140, 47, 47,189, 18,137,100,200,247,223,127, 95,179,115,231,206,130,184,184, 56, 48, 12, 3,137, + 68,130,183,222,122, 75, 88, 80, 80, 16, 50,115,230,204, 81, 0,190,119,166, 12,132, 66,225,128,229,203,151,135,183,108,217, 82, + 16, 19, 19,131, 22, 45, 90,224,236,217,179,120,227,141, 55,132,121,121,121,213, 38, 77,154, 52,188,180, 21, 86, 89, 90, 39,185, + 92, 94,247,143, 63,254,136, 15, 14, 14,182, 13, 44,213,170, 85,227,162,163,163,181, 49, 49, 49, 17,127,254,249,103,102,139, 22, + 45, 30, 58,129, 25, 40,151,203, 35,119,239,222,157, 60,115,230,204,142,203,150, 45,235, 14, 0, 77,155, 54,221, 62,107,214,172, +195, 90,173,182,206,241,227,199,181,173, 91,183, 78,112, 16, 50,192,223,223,159, 27, 55,110,156,178,172, 31,173, 92,185, 50, 27, + 64, 21, 66, 72,245,162, 64,219, 46,249, 7,132, 82,106, 33,132, 68, 17, 66, 46,238,218,181, 11,205,154, 53,195,174, 93,187, 16, + 29, 29,125,209,158, 12, 92,189,122, 21,109,218,180, 1, 30, 5,146,255, 87,108,181, 56,142,131, 64, 32, 64, 66, 66, 2, 86,174, + 92,137,185,115,231, 34, 44, 44, 12,102,179,249, 9,178, 85, 68,136, 28, 82,193, 88, 44, 22,156, 59,119, 14,235,215,173,195,212, + 79, 63,133, 74,165, 2, 0,152, 76, 38,104,179,178, 32,149, 74,109,100,172,156,178,220,116,231,206,157,241, 65, 65, 65,143,109, + 25, 90, 95,139,198, 44,240, 60, 15,139,197, 2,189, 94,143,133, 11, 23, 90, 40,165,155,202,233,147, 54, 82, 52,126,252,120, 24, + 12,127,199, 33,175, 95,100,147, 92,181,106, 85, 52,104,208,192,246,153, 97, 24,234, 40,230,143, 47,213, 69,161,221,175, 35,166, + 47, 0, 0, 4, 5, 5, 33, 34, 34, 2,254,254,254,165, 98,150,196, 69,254,109, 41,110,147, 85, 33, 27,173,210, 34,101,223,184, +159,242,229,136, 73, 11, 22, 40,164,172,240,253, 30,245, 80, 69, 35, 2,100, 30, 16,181,249, 24, 68,243,104, 33, 79,181,247,128, +253, 31,227,171,158, 90,102,212, 79,250,223,106,120,120,120,223,213,106,159, 48,194, 19,138,164,237, 67,107,134,147,135,201, 90, + 8, 4, 2, 40,220,188,240, 82,143, 15,192,178, 12,148, 26, 47, 16,174,240,111, 70,204,176, 16,176, 2,104,243, 10, 81,181,122, + 77, 70, 34,149,181, 47,143,104,169,221,132,223, 79,236,247,146, 52,211,146, 0, 89, 21, 41, 56,235,116, 26, 32, 6,227,153,135, + 15,187,132,201, 70,109,191,242, 61,128, 14,142, 20, 12,107,177,192,135,101, 97,162, 20,151,199,143, 71,212,242,229,184,104, 37, +134,203,151,227,226,168, 81,240, 16, 10, 33, 97, 24, 80,179,249,137, 61,125, 7, 39, 32,244,232,209, 3, 25, 25, 25,190,159,126, +250,105,133,201,150, 76, 38, 91, 79, 8,233, 42, 20, 10, 77,132, 16, 48, 12, 99, 11, 2,110,125,111, 50,153, 68, 44,203,238,206, +200,200,112,122,203,143, 16, 18,238,238,238,126,228,212,169, 83,190, 10,133, 2,211,167, 79,175, 20,146,165, 82,169, 78, 15, 31, + 62,188,202,250,245,235,247, 18, 66,186, 56, 74,182,138,147,172,229,203,151,103,175, 92,185,242, 71,251, 45, 66, 74,105, 50, 33, +100, 85,147, 38, 77,222, 30, 53,106,148, 6,192,152,209,163, 71,163, 60,178, 37,145, 72,218,133,134,134, 62,182,170,149, 72, 36, + 0, 0,133, 66, 1, 55, 55, 55,136, 68, 34, 24, 12, 6, 68, 69, 69, 17,177, 88,220,202,145, 52,171, 84,170,174, 61,123,246, 20, +156, 60,121, 18, 41, 41, 41,112,115,115,131, 66,161, 0,199,113, 24, 57,114,164,104,209,162, 69,175, 58, 75,180,130,131,131,187, +119,236,216, 81,112,237,218, 53,220,191,127, 31, 6,131, 1,183,110,221,130, 90,173,198,160, 65,131, 68,243,231,207,127,221, 89, +162, 5,160,238,168, 81,163, 82,237, 73,150, 85, 20, 10, 5, 9, 15, 15,215,122,122,122, 54, 2,240,208, 25,204,119,222,121, 39, +109,222,188,121,109, 14, 30, 60,248,177,245,203,131, 7, 15, 78, 2,128,111,190,249,230,184,183,183,119, 35, 0,142, 18, 45, 80, + 74,249, 55,223,124,243,129, 88, 44,134, 80, 40,132, 88, 44,126,236, 18,137, 68, 96, 24, 70,101,237,206,255, 85, 82, 67, 8,105, + 2,224,107, 60, 58,145,245, 41,165,244,204,115, 66,182, 46, 17, 66,162,162,163,163,109,100,107,207,158, 61,232,210,165, 11,178, +179,179,113,237,218, 53,123,146,245,111,217,104,129,231,121, 8,133, 66, 44, 88,176, 0, 38,147, 9, 63,253,244, 19, 54,111,222, +252,216, 24,170, 86,171,177,120,241, 98,167,182,185, 56,142,195,154, 53,107,240,241,164, 73, 54,146, 85,180,184,134,159,175, 47, + 60,189,188, 16, 27, 27, 91, 46,209,202,202,202,250,124,199,142, 29, 40,203, 24,126,199,142, 29,182,247,246,198,240, 14,205,115, + 44, 11,131,193,128,151, 95,254, 59, 84,236, 59,239,188, 99,123,175,213,106,193,178,172,181, 44,136,163,152,133, 20,232, 33,253, +251,187,174, 31,126,248,152,134,174, 52,204,210,184,200,243,168,221, 42,225,212, 97, 20,165,244, 98,145,137, 68, 52,128, 93, 69, +219,137,101,219,104,221, 78,211, 45, 17,144,228, 6,243,198,189, 50,164,138,143, 27,104,126, 42, 68, 29, 62,199, 95,233, 50, 44, + 88,184, 27, 0,240,209, 91,141, 81,191,211,108, 24, 87,191,130,241, 45, 88,241,192, 4,195, 68, 0,211,158,236,120,124,100, 80, + 96, 0,254,186,123, 21, 2,150,133,216,205, 11,110, 30,190,224, 45, 70,228,164,221,199,145,173,223, 1, 0,150,173,217, 4,134, + 97, 32, 16,176, 48, 24, 57,132, 85, 9, 0,207,243,145,101,165,179, 54, 33, 47,245, 10,247,111, 22, 28,162, 33,215,220,239, 35, +220,199,243,241, 31, 52,148, 32, 44, 73, 73, 90, 40,101, 77,107, 19,242,210,117, 74, 79,149,171,129, 96, 24, 48,132, 64, 46, 18, +193,176,101, 11, 46, 22, 17, 44, 0,184, 56,106, 20,152,223,126,131, 74, 34, 1, 75, 8, 4, 69, 42,232,138,116,116, 0,136,136, +136,192,178,101,203,124,199,142, 29, 91, 33,178,165,215,235,231,168,213,234,142,171, 86,173,242,237,217,179,231, 19,247,239,222, +189,139, 54,109,218,164,166,164,164,204,121, 26,146,165,209,104, 16, 31, 31,255,212,251,234, 86,146,117,224,192,129,144,160,160, + 32, 68, 69, 69,121,127,244,209, 71,206,144,173,105,246, 36,107,244,232,209, 87, 0,248, 16, 66,138, 19, 21, 82,116,175,158, 29, +217,202, 1, 48,191,140,149,104,136, 66,161, 64, 90, 90, 26,134, 12, 25,130,219,183,255, 86,128, 6, 4, 4,216, 86,122,177,177, +177,240,246,246, 6, 33,196,199,145, 60,123,123,123,251, 26,141, 70, 12, 27, 54, 12,241,241,127,155, 51, 6, 6, 6, 90,203,212, +203,217,114,244,245,245,245, 45, 44, 44, 68,235,214,173,161,215,235, 1, 0,125,251,246,133, 80, 40, 68, 90, 90, 26,132, 66,161, + 87, 5,170,199, 43, 58, 58,186, 84,215, 42,106,181,218,228,238,238, 94,203, 73, 76,207,215, 95,127, 61,113,249,242,229, 79, 28, +108, 57,123,246,108, 55, 15, 15,143,131, 30, 30, 30,225, 78, 98,242,246,164, 74, 36, 18, 61, 70,180,132, 66, 33, 24,134,225,241, +223,151,255, 1,176,158,130,251, 1, 64,131,231, 72,179,101, 35, 91,123,246,236, 65,157, 58,117,144,149,149,133,152,152,152,127, +157,100,217, 17, 19, 8, 4, 2,219, 34, 89, 42,149, 34, 42, 42,202, 70,178, 8, 33, 40, 40, 40,128, 64, 32,176,142,215, 14, 13, +126,217,217,217,240,247,243,131, 74,165, 66,205,176, 48,220, 41, 26, 71,172,239, 37, 18, 9, 8, 33,176, 88, 44,229,149, 97, 30, + 30,217, 90,125, 80,217,213, 99, 37, 69,101,170,142, 3, 2,192,243,188,117,204,167,149,129,233,229,229,133,252,252,124, 71, 49, +159, 75, 41, 69,163, 21, 5,224, 34,128,104, 74,233,242, 34,195,248,199,220, 59,180, 5,112, 4,118, 71, 42, 9, 33, 76, 45, 95, +229,202,121, 99, 59, 14,121,165,142, 23, 10,211,239, 67,170,242, 2,209, 84,197,130,133,187,113,237, 94, 38, 0, 96,193,134,243, +248,121,102, 87, 64,230,129, 8,183, 12,248,169, 4, 61, 75, 34, 90, 4,148,240,148, 66,192, 50, 69,123,183, 44, 88,150,129, 54, + 61, 25,139, 62, 31, 83, 68,178, 54, 99,215,241, 24, 4,133,214,249,123, 31,151, 16,128,150,221,184,189,221, 68,203,199,246,106, + 46, 75, 37,201,208, 4,200, 33,149, 22,227,143,238, 34,144,170, 12,198,181, 11,146,159,219,161, 95, 14,160,220,137, 66,202, 48, +143,140,223, 9, 41,209,144,141, 41,186,199, 18,242,200,251, 43,239,252,152,110, 37, 44, 74,165, 18,190,190,190,152, 59,119,174, +239,228,201,147,127,130,147, 1,168, 41,165,183, 8, 33,237, 70,142, 28,121, 36, 51, 51,211, 55, 34, 34, 2, 74,165, 18, 74,165, + 18,169,169,169,232,221,187,119,106, 74, 74, 74, 69,181,101,235,134, 15, 31,238, 43, 18,137,112,247,238, 93,120,120,120,216, 8, + 98, 69, 73,150, 90,173, 62,125,240,224,193,144, 26, 53,106,224,230,205,155,168, 85,171, 22, 54,110,220,232,221,191,127,127,135, +200,150, 76, 38,235, 81, 68,156, 48,106,212, 40,205,168, 81,163,218, 2,104, 91,222,179, 71,141, 26,165,249,224,131, 15, 94, 47, +139,104, 9,133,194,120,173, 86,235, 39,147,201,176,117,235, 86, 40,149, 74,200,229,114, 4, 4, 4, 64,171,213, 66, 46,151,131, + 82, 10,179,217,108, 29, 44, 50, 29,201,119,122,122,122, 42,199,113,193,123,247,238, 69,122,250,223,190,245, 66, 66, 66,144,147, +147, 3,142,227, 50,156, 45,203,164,164,164, 84, 66, 72,240, 95,127,253,133,184,184, 56,116,233,210, 5,191,253,246, 27, 26, 55, +110, 12, 0, 48, 26,141, 21,113,226,199,177, 44, 75,203,168, 63, 2,192,189, 50, 49,139, 38, 47,167, 48,121,158,231,173, 36,203, +254,213,158,124,149,243,204,255,138,184,217,175, 19,158,215, 68,118,233,210, 5, 90,173, 22, 74,165,242,185,178,207,177,106,180, +102,204,152,129, 49, 99,198,192,215,215, 23, 31,127,252, 49, 4, 2,129,237,178,223, 25,112, 70,124,124,125,203,188,111, 53,136, + 47,103,188, 84,185,185,185,205, 96, 24,166, 15,235, 64,193,113, 28,199,241, 60,191, 41, 39, 39,167, 76,247, 14, 86,195,117, 71, +234,194,190, 12,202, 73,235, 83, 99,150,196, 69,158, 7, 41,126,218,176, 36,141, 22,254, 62,117,248, 68, 40, 32,107, 46,143, 20, +169,236,142,216,147,172, 47,198,180, 31,242, 74, 29,119,108, 63,116, 6, 34, 83, 54, 96,204, 43,163,134,205, 32, 34, 5,124,221, +132, 65, 37, 86, 2,195,222, 76, 72, 76,130,167,187,178,136,100, 21, 93, 12,131,250,117, 30, 45,102,119, 29,143, 65, 80,245, 58, + 16,176, 44, 4, 44, 11,165, 76,130,212,148,100, 8, 4,204,205,210, 30, 91, 79, 64,122,245, 10, 15,174,234,238, 41, 68,134,183, + 17,254,190,242,146,127,216, 72,133, 32,127, 49, 58,123, 74, 67,234, 9, 72,175,114,136,139,141,104,153, 44, 22,136,222,120,195, +182, 93,120,113,212, 40, 68, 45, 95, 14,174,123,119,232, 76,166,199, 84,197,206,138,181, 65, 90, 9,209,180,105,211, 82, 51, 51, + 51, 7, 84,112,245,120, 43, 43, 43,171,221,167,159,126,154,154,145,145, 1,185, 92,142,228,228,228,167, 34, 89, 0, 80, 88, 88, + 56,104,249,242,229,169, 71,142, 28,129, 82,169,132, 74,165,170, 48,209,178,106,178, 62,255,252,243, 42,193,193,193,136,141,141, +133,155,155, 27, 60, 61, 61, 81,191,126,125,156, 60,121,210, 59, 56, 56,120,111,145,193,108, 89,105,250,125,249,242,229,217, 0, +176,124,249,242,108, 66,200, 81, 66,200, 82, 66,200, 15,197,174,165,132,144,163,246,191, 45, 44, 44,220, 86, 22,182,209,104, 60, + 26, 19, 19, 67,229,114, 57, 88,150,133,201,100,130, 84, 42,181,213, 87,110,110, 46, 10, 11, 31,109,115, 95,184,112, 1,102,179, +249,132, 35,121,207,203,203,219,179,122,245,106,115,112,112, 48,234,213,171,135, 70,141, 26,161, 69,139, 22, 8, 9, 9,193,140, + 25, 51,140, 58,157,110, 79, 5,136,214,174,141, 27, 55,154,131,131,131,209,168, 81, 35, 72, 36, 18,212,175, 95, 31, 1, 1, 1, +152, 59,119,174, 49, 39, 39,103, 79, 5,170,233,225,213,171, 87,217, 50, 72,174, 26, 64,170,147,152,241,231,206,157, 99,155, 55, +111,190,189,248,141,166, 77,155,110, 87, 42,149,110, 0,156,181,251,163,246,228, 74, 34,145,216, 46,235,247, 2,129,224,255,131, + 70,107, 60,128, 43, 0, 98, 1,124,252, 60, 37,204,222,240, 61, 51, 51, 19, 49, 49, 49,184,112,225, 2,154, 55,111,142, 19, 39, + 78, 0, 69, 6,242,255, 98,250, 64, 41,133, 80, 40, 68, 68, 68, 4, 62,248,224, 3,236,222,189, 27,183,110,221,130,217,108,182, + 17, 33,171, 77,166, 51, 26, 45,145, 72, 4, 95, 95, 95,152,205,102,155, 54, 11, 0,238,220,190, 13,129, 64, 0,158,231, 97, 52, + 26,203,213,104,185,185,185,205, 88,177, 98,197,123, 25, 25, 25,254,233,233,233, 62,246, 87,106,106,170, 79,114,114,178, 79, 98, + 98,162, 79,124,124,188,207,131, 7, 15,124,238,223,191,239,255,229,151, 95,190,231,230,230, 54,195,209, 57,168,126,253,250,120, +231,157,119,108,215,146, 37, 75,108,215,145, 35, 71,156, 54, 94,103, 89, 22, 17,211, 23,160,107, 58,181, 93,187,189,137,237,186, +246,209,232,178, 48, 31,227, 34,207, 77, 91, 46, 58,109,104, 31, 88,186,132, 57, 56,153, 82,186,220,186, 93,104,239,188,180,184, + 49, 60, 0, 32,210, 79, 62,251,139,145,109,134,188, 92,203, 13,191, 31, 58,143,153,219,238,221, 12, 27,226, 29, 81,195, 61, 29, +124,122, 12, 62,122,171, 49, 22,108, 56, 15,224,209,214, 33,159,118, 13, 52, 43, 22, 84, 21,140,251,218,140, 18,183, 29, 44, 70, +253,225,123,119,111,183,143,168,219,132, 73,201,200,127,236,248,103, 84,187,222, 32,132, 32,176,122, 29,176, 2, 1, 88,150,129, +128,101,161, 81, 75, 17,243,215, 95,188,161,176,240,112, 73,152,237, 8, 17,248, 41,197, 75,222,234, 92, 95,154, 36, 78,131,183, +191, 2, 34,225, 35, 18, 64,239,245, 46, 54, 67, 8,128,186, 42, 12, 77,244,148, 29, 78,213, 47,105, 71,200,246, 35,165, 24, 96, +242, 60, 15,165, 68, 2,189,193,128, 66,139, 5,237, 22, 45,178,109, 23, 50,132,224, 18,128,122,139, 22,225,212,150, 45, 80,139, +197,128, 68,226,240,169,144,146, 52, 90,169,169,169,232,219,183,239, 83, 17, 34,123,205,214,216,177, 99,143,204,157, 59,215,119, +218,180,105,149,134,249,241,199, 31, 31,217,176, 97,131,111,181,106,213, 42,220, 88,149, 74,229, 36,158,231, 53,243,231,207, 79, +249,234,171,175, 80,220,158,172,136,232, 72, 52, 26,205, 2, 0,237,203,128,154, 57,122,244,104, 17,128, 49, 69,154,173,122,163, + 71,143, 62, 69, 41,157, 90,172,124,167, 47, 91,182,172,175,221, 22,227, 82, 0,139,202, 74, 99,110,110,238, 15, 31,124,240,193, +176, 99,199,142,121, 73,165, 82, 16, 66, 32, 18,137, 80,179,102, 77,219, 41, 26,161, 80, 8, 74, 41, 62,252,240,195,140,180,180, + 52,135,220, 59, 24, 12,134, 53, 51,103,206,108, 95, 88, 88, 24, 50,116,232, 80,145,187,187, 59, 82, 83, 83,241,245,215, 95, 27, +215,172, 89, 19,175,211,233,156,181,165,130,217,108, 94,243,217,103,159,181,203,207,207,175, 62, 98,196, 8, 81, 78, 78, 14, 10, + 11, 11, 49,113,226, 68,227,170, 85,171, 18, 10, 11, 11,157,118,248,219,162, 69,139,187, 15, 30, 60,104, 85, 80, 80,144, 37,151, +203,139,107,251,136, 66,161,104, 2, 96,157, 51,152, 81, 81, 81,177, 15, 31, 62,108, 62,123,246,236,163,102,179, 89,120,246,236, +217,238, 86,146,245,237,183,223, 30,145, 74,165, 29,225,188,209, 62, 47,145, 72, 30,211, 96, 21,127, 47, 16, 8,254,243, 26, 45, + 74,233, 17, 60,114,153,241, 92, 73,113,146,117,237,218, 53,180,111,255,168, 75,159, 56,113, 2, 45, 91,182,196,137, 19, 39,208, +170, 85,171,127,213,189,131,149,104, 9, 4, 2,244,239,223, 31,157, 58,117, 66,149, 42, 85, 30, 59,109,104,125,239, 12,217,176, + 88, 44,168, 91,183, 46, 12, 70, 35, 68, 34,145,109,107, 82, 32, 16,192,219,199, 7,119,239,222,117, 72,163,197, 48, 76,159, 30, + 61,122, 48,215,175, 95, 71,191,126,253,176,126,253,250, 82,127, 59,112,224, 64,252,242,203, 47,232,209,163, 7, 51,101,202,148, + 50,221, 59, 88,141,208, 29,201,147,117,158, 46, 79,163, 87, 89,152,246, 92,228,121, 19, 59,215, 14, 37,181,249, 81, 37,180,175, +229,143, 17, 45, 59, 39, 97,168,238, 45, 31,218,169,166, 0,191, 31, 62,143,153,191, 63, 92,195, 81,186,117,235,197,172,157, 31, +183, 4, 76,155,222, 66,253,222,235, 30,109, 23, 2,224,211,174,193,180,105, 32,136,220, 11,199, 19,133,200, 41, 52,237, 42,185, +225,153,214,255,246,211,119, 31, 52,255,190,149,183,191,143, 27,180, 57,133, 54,178,117,241,200,102, 0, 64,175,209,115, 32, 96, + 31,109, 41,170,149, 82,200, 68, 44,182,172,253, 38,195,100,210,151,216,186,242,132,204,152, 41, 47,213,116, 19, 43,204,200,245, +163,168,227,253,247,161, 63, 82,125,243,147,132,171,161, 59,188,174,101,225,173, 26, 74,245, 55,215,179,199, 0, 88,242,196,132, +152,157, 93,152,253,215, 95,178, 46, 43, 86,224,236,160, 65, 8,228, 56, 28, 13, 8,128,135, 80, 8, 55,137, 4, 12, 33, 40,220, +185, 19,167,182,110,133,175, 68, 2,168, 84,176,204,154, 5, 67, 76, 12,204,121,121,133,206, 18,173, 59,119,238, 60,181,214,169, + 36, 98, 52,121,242,228,159, 50, 51, 51, 7, 84, 38,230,160, 65,131,142, 28, 58,116,200,183,162, 56,121,121,121, 19, 0, 76,168, +132,244,240,132,144,169, 69,142,241,198,140, 26, 53, 74,115,238,220,185, 97,132,144,239,173,171, 9, 66,136,207,240,225,195, 71, + 22, 35, 89,229,158, 58,164,148, 62, 84, 42,149,179, 38, 76,152, 48,231,171,175,190, 82, 90, 13,223, 47, 95,190, 12,139,197, 2, +161, 80, 8,142,227, 48,124,248,240,252,204,204,204, 5,165,121,116, 46, 1,215, 66, 8, 25, 56,103,206,156,225,223,124,243,205, +107, 44,203,122,115, 28,151, 94, 88, 88,184,183,176,176,112,121, 69, 78, 93, 21,149,195,224,105,211,166, 13, 94,184,112, 97, 15, +134, 97,124, 44, 22, 75, 70, 94, 94,222,142,194,194,194, 10,249,230, 58,117,234, 84,250,247,223,127,127, 47, 61, 61, 61, 50, 40, + 40, 40, 71,169, 84, 26,141, 70, 35, 43,147,201,212, 10,133, 34, 10,192,159, 0,110, 56,131,121,225,194,133,148,165, 75,151,198, + 25, 12,134,136,165, 75,151, 30, 87,171,213,135, 8, 33, 68, 36, 18,185,203,100,178,246, 0,142, 2,184,227, 12, 38,195, 48,188, +189,246,170,184,125,150, 88, 44,254,255, 98,163,245,220,137,189,123,135,140,140, 12, 92,191,126,221, 74,178,162, 0,160, 85,171, + 86, 23,173,100,235,194,133, 11,104,212,168,209, 69, 66,136,240,159, 62,121,104,175,209,178, 18,170, 42, 85,170,216, 62,219, 95, +118, 54, 90, 14, 9,199,113, 16,137, 68, 16, 8, 4,240, 15, 8,176, 61,139, 82,138,187,119,239, 66,171,213, 58, 68,180, 88,150, +101, 9, 33,232,215,175,159, 67,207,125,243,205, 55,113,244,232, 81,176, 14,178, 66,150,101, 81,181,106, 85,135,118, 94,224,160, + 61, 21,203,178, 8, 10, 10,170, 48,166, 61, 23,121,158, 8, 86, 73,239, 75, 34, 85, 37, 73,137,198,240,177,105,133,179, 7,126, +125,114,202,141, 20,253,214,152,212,130, 15, 0,208, 77,215,228,251,235,123,179,175,188, 18,158, 0,195,242, 86, 32,234, 71,206, +219,104,126, 50,136,194, 23, 9,124, 32,166,111,191,153, 98, 1,153, 95, 74, 34,146, 68, 82,249,212,181, 43,190,253,106,248,216, + 15,149,215, 98, 83,145,147,111, 0,203, 50,246,131, 39, 4, 2, 22,106,133, 20,193,126,110,216,240,227,215,121,121,185,217,211, + 74,139,123, 88, 69, 37, 26,221,177, 73, 13,137,200, 95,135,136,122,125,193, 74,255,118, 50, 75, 83, 74,217, 29,108,185, 31,175, + 62,212, 73,127,123,168, 27, 93, 34,209, 50, 26, 95,249,180,115,231,125, 51,119,239,150, 55, 93,179, 6,177,195,135, 35,160,176, + 16,146,162,173, 68,134, 16, 40, 69, 34, 40, 69,162, 71, 36,107,225, 66, 20, 90, 44, 88, 52,104, 80,129,193,104,236,236,164, 70, + 66,212,182,109,219, 74, 35, 89,246,196, 8, 78,218,121, 57, 74,182, 58,117,234,116,132, 82, 42,121, 14, 86,242, 86,178,101, 58, +119,238,220,200,227,199,143,199,226,241,192,162,217,199,143, 31,143, 29, 49, 98, 4, 89,185,114,229, 42, 0,159, 57,234,192, 51, + 63, 63,255, 91,141, 70,131, 54,109,218,124, 54,111,222, 60,207,198,141, 27,195,199,199, 7,121,121,121,184,112,225, 2,198,143, + 31,175,205,205,205,157,151,149,149,245,149,147,105,230,138, 52, 55,203, 43,179, 28, 0,172, 46,186, 42, 69,222,126,251,237,203, +177,177,177,153,222,222,222,205, 68, 34, 81, 61, 60,178, 3, 74, 1,176,202, 89, 66,100,149, 49, 99,198,252, 21, 27, 27,155, 17, + 24, 24,216,188, 8, 83, 3, 32, 17,192,138, 10, 96, 38,157, 63,127, 62,168, 73,147, 38,140, 80, 40,164, 44,203, 66, 40, 20, 82, +129, 64, 64,139,236,106, 40, 0,236,216,177, 67, 2, 64, 11,151,252,211,125,211,230,222, 33, 57, 57,217, 70,178,236, 28,150, 70, +181,106,213,234, 98, 17,201,178,222,179,252, 75,105,197,204,153, 51,177,108,217, 50,148,231,209,188,232,116, 31, 41, 15,207,170, +209,226, 56, 14, 38,147, 9,215,174, 93,179,249,236,178,110, 23, 90, 93, 59, 88, 44,150, 50, 79,171,115, 28,199, 25,141, 70,252, +250,235,175, 14,145,173,159,127,254, 25,122,189, 30, 92, 57, 12,206,222, 21, 67,131, 6, 13,160,213,106,109,135,125,162,162,254, +118,149,103, 50,153,156, 34,174, 86,204,136,136, 8,100,100,100,192,203,235,209,121,156,224, 65,127, 43,123, 44,186,255,166,255, +224,178, 52, 90,196, 81,151, 4, 13, 52, 26, 55,131,216,188,173, 91, 29, 73,187, 62, 81,110,168,238,167,130, 80, 36, 69, 82,174, + 5, 7,111,228, 98,197,145,148,248, 66, 51,247,218,173, 52,221,213,178,112,164, 10,183,189,141, 95,234,212,114,208,200,241,138, +124, 3,135,184,184, 7, 72, 79, 75, 6, 67, 24,248, 7, 6, 33, 36,164, 42,100, 98, 6,235,151,127,165,187,120,234,208,201,188, + 92,109,151,210,176, 94,211,136, 79, 45,124,163,101,243,208, 80, 21,129,197, 12,112,102,192, 98, 6,248,162, 87,235,119,252,227, +109,238,250,245,108, 58,229,146,246,244,206,108, 99,137, 49,171,250, 16,210, 82,227,225,177,111,250,142, 29,114,222,100, 66,230, +132, 9,144, 91, 44,144, 22,173, 74, 0, 0, 18, 9, 44,179,102, 61, 34, 89, 3, 7, 22,228,100,103, 59, 29,130,199,219,219,123, +117, 70, 70,198, 11,231, 25,222,211,211,243,211,138,184,137,120,134,105,242, 1,144, 77, 41, 53,149,176,178,246,182,106,185, 42, +128, 91,213,219,219,123, 10,195, 48, 45, 40,165,158, 12,195,100,241, 60,255,103, 90, 90,218,151,148,210,187,174, 41,245, 95,171, +111,171,103,248,242,246,177,211, 0,188, 15, 32,143, 82, 26,231, 42,185,127,188,158, 26,226,209, 41,172, 82, 67,240,224, 95, 60, +121,232,233,233,121,102,223,190,125,141,171, 87,175,206,216,155, 49, 88,125,229, 89,183,183, 4,130, 71,250,136, 99,199,142, 89, +250,245,235,247,103, 74, 74, 74,155,210, 48,213,106,245,254, 43, 87,174,188,156,147,147,243, 4,161,178,247, 20,111,253,172,211, +233, 48,118,236,216, 3,185,185,185, 37,134,224,209,104, 52, 11,191,250,234,171,247,122,245,234,197, 88,221, 81,216, 95,214,112, + 65,214,203,100, 50, 97,221,186,117,252, 55,223,124,179, 56, 59, 59,187,212,173,195,128,128,128,248,164,164,164, 32,171,171, 5, + 71,156,138, 86,173, 90, 53, 57, 46, 46, 46,224,159,196,124, 81, 9, 87,113,237, 22,113,198,247, 19, 33,132, 68,248, 40,250, 82, +160, 15, 3,190, 46, 67,136,216, 66,113, 11, 20,251,229,130,130,239, 47, 36, 81,135,182,206, 68,114,249, 56,149,210,253,243, 94, + 3,222,241,172, 26, 26, 70,124,253, 3, 65,192, 32, 53, 37, 17, 15,238,221,166,219,126,250, 46, 83,151,171,157, 81, 80,144,255, + 93, 89, 56,181, 9, 9,173,166, 22,109, 18,115, 8,135, 53, 31,197,226, 83, 61,193, 48, 1,152,132,204,205,184, 60,115,223,235, +101,108,251, 88,201,214,212,109,219,228,226,240,240, 39, 28,197,241, 60, 15, 67, 76, 12, 22, 13, 26, 84, 33,146,229, 18,151,184, +228,169, 7,180,234, 40,223, 71,150, 25, 64,194,191, 25,188,248,255,121, 29, 61,183, 65,165, 9, 33, 10, 15, 15,143, 67, 44,203, +134, 88, 53, 50,246, 54, 67, 37, 4,148,142, 75, 77, 77,237, 72, 41, 45, 40, 3, 51, 84,165, 82,125,199,113, 92, 83, 71,130, 74, +179, 44,123, 54, 47, 47,111, 92, 89, 65,165,159,197,169, 67, 47, 47,175,187, 15, 30, 60, 8,181,158,162,182,159, 43,139,151, 3, + 0,220,185,115, 7,109,219,182,125,144,156,156, 92,245,159,196,124, 94,165, 20, 63, 90, 79,175,209,122, 6,141, 60, 64, 36, 81, + 14, 22,203,164, 29,120,179, 37, 2, 4, 16, 8,133, 55,141,250,194,195,134,194,252,181,165,109, 23,254,147,210,135,144,150, 18, +177,120,191, 72,173,150,149, 84, 78,230,188,188, 66,131,209,248,138,139,100,185,196, 37, 46,113,137, 75, 94, 32, 2, 28,238,225, +225,177, 79, 40, 20, 74,236,201,100,241,247, 86,177, 88, 44,250,244,244,244, 46,101,237,190, 60, 11,204,255, 76,121, 59, 75,180, +118,237,218, 69, 29,245,222, 74, 8,233,228, 72,204, 42, 59,195,183,114,125,103,252,219,152,207, 48,239,229,122,197,117, 2,179, + 45, 30, 29,143,157, 17, 29, 29, 61,253, 5, 72,103,101,214, 81,165, 98, 90,235,220, 81, 92,103, 48, 29,109, 83, 78,166,211,161, +118,255, 60, 96, 58,210,151, 42,152,206, 50,219,104, 5,235,189,204,190,244, 28,165,179, 50,235,168, 82, 48,139,183, 31, 71,112, +157,197,116,164, 47, 85, 32,157,229,182,251,231, 5,243,105,199,144, 50,210, 89,106, 27,117,180, 45,149, 82,247,229,206, 77,207, +171, 38, 11, 0,172,254,180,138,107,180, 74, 51,136, 23, 56, 75,178,158, 69,226,237, 39, 29, 56,232,167,228,223,192,172, 8,225, +114, 38,173,149, 40, 71, 42, 27,179, 88,121, 86,150, 76, 47, 26,208,143,194, 1,135,163,206,228,189, 50,234,189, 88, 94, 43, 5, +215, 30,179,178,202,178,164, 65,177, 50,211,249, 44, 48, 43,171, 47, 21,199,172,140,118, 95, 82,189, 63,195, 58,170,172,116, 86, + 74, 95,122, 22,109,190,132,246,243,212,184,197, 49, 43,163, 47, 21,199,172,140,118,255, 79, 96, 86, 70, 95, 42, 9,179, 50,218, +125,105,117,255,162,106,166,172,219,133, 69,132,139,148, 64, 62, 31,219, 62,180, 18, 47,166, 34,133,246, 44,228, 89, 4,146,172, +108, 66,244,172,200,230,174, 93,187,104, 17,211,127,238, 49, 43,185,142,166, 23, 97, 86,230,202,166, 93,101,213,209,179,104,239, +246,152,149,133, 95, 28,167, 50,234,169, 36,204,167, 77,111, 41,233,172,244,188, 63,109,187,255,167, 48, 43,185,142, 42,165, 47, + 21,195,108, 87,201,139,129,118,118,159,167, 87, 38,102,101,245,165, 18,210,249,212,245, 84, 18,230,211,166,183,148,116, 86,122, +222, 43, 99, 14,121, 86,184,255,150, 70,235, 70, 20,161,148, 41,185, 77, 20, 57, 44,181, 93, 21,210,104, 61, 75,146,245,172, 38, +181,202,196,126, 22, 90,157,103,165,121,171, 44,173, 78, 9,184, 71, 43, 17,238, 72,101,167,179, 40,125,228,121,118,122,231,234, + 75,174,190,244,255,169, 47,149,212,110,162,163,163,167,239,218,181,235,243,231,169,157, 23,199,172, 44, 66, 84, 66,222,159,170, + 47, 21,255,223,202,232, 75,229, 96,146,103,145,255,202,238, 79,255,164, 70,171, 52,146, 85,218, 61,193,243,146, 1,107, 35,169, +228,149, 9, 42, 89, 3,243,204,242, 93,201,233,108,247, 44, 52,132,207, 64, 42, 61,157, 69, 43,229,207,159, 65,222, 95,148, 50, +117,245, 37, 87, 95,122,238,250, 82,177, 54,217,174, 18, 53, 69,149,170,121, 46,142, 89, 25,207,176,199,168,172, 54,250,172,243, + 94,153,125,233, 89,212,253,139, 38,255, 55, 0,242, 66,135, 78, 90, 48, 10,210, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; diff --git a/source/blender/editors/datafiles/prvicons.c b/source/blender/editors/datafiles/prvicons.c index 2c606230345..5d6b63c1d80 100644 --- a/source/blender/editors/datafiles/prvicons.c +++ b/source/blender/editors/datafiles/prvicons.c @@ -1,409 +1,477 @@ /* DataToC output of file <prvicons> */ -int datatoc_prvicons_size= 12878; +int datatoc_prvicons_size= 15052; char datatoc_prvicons[]= { -137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, - 68, 82, 0, 0, 0,192, 0, 0, 0,192, 8, 6, 0, 0, 0, 82,220,108, 7, 0, 0, 0, 4,115, 66, 73, 84, 8, 8, 8, 8,124, - 8,100,136, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 25,116, 69, 88,116, - 83,111,102,116,119, 97,114,101, 0,119,119,119, 46,105,110,107,115, 99, 97,112,101, 46,111,114,103,155,238, 60, 26, 0, 0, 32, - 0, 73, 68, 65, 84,120,156,237,125,121,124, 20, 85,186,246, 83, 85,221,213, 91, 58, 59, 36, 16, 32, 48, 64,192,128, 65, 68, 17, - 66, 8,171, 10, 40,174, 51, 46, 31,200,111,116,188, 92,113, 70,199,141, 77, 16,163, 51,138,128,224, 40,138,203,160, 32,202,117, -197, 65,244,122, 85, 28, 29, 81,194,146, 24, 64, 48, 4, 66, 32, 9, 9, 16,204,218,221,233,164,151,170,250,254,232, 84,165,186, -187,186,187,122,203, 98,215,195,175, 72,117, 45,167,158,115,234,121,207,121,207,123, 78, 85, 17, 28,199, 65,129,130, 88, 5,217, -221, 4, 20, 40,232, 78, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166, -161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26, -138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, - 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, - 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24, -128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, - 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128, -130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40, -136,105,168,186,155, 64, 87, 98,252,248,241,233, 44,203,238, 6, 48, 58, 90,215,160,105,186,174,176,176, 48, 61, 26,105, 15, 31, - 62, 92,147,148,148, 52,129, 97, 24, 99, 52,210, 7, 0,181, 90,109,219,191,127,255,238,104,165,223,211, 16,148, 1,244,102, 1, -117,112,255,110,253,250,245,244,148, 41, 83, 80, 92, 92,140,140,140, 12,104,181, 90, 80, 20, 5,130, 32, 64,146,157, 13, 34, 65, - 16,126,215,197,219,248,223, 86,171, 21, 51,103,206, 76,139, 52,119,192, 37,254,196,196,196,137,207, 61,247, 28, 57,125,250,116, -148,148,148, 32, 35, 35, 3, 52, 77, 67,165,114,221, 70,138,162,124,158,239,111, 31, 15,187,221,142,169, 83,167,106, 34, 70,186, - 23, 64,182, 1,248, 18,144, 70,163, 1, 69, 81, 32, 73,210, 75, 28,129,132,227,185, 30, 45, 1,241,220,159,127,254,121,205,148, - 41, 83,134, 0, 64,113,113, 49,218,219,219, 17, 31, 31, 15,149, 74, 37,228,129,207,135,175,197,223,254, 51,103,206, 68,154, 58, -128, 78,241,175, 89,179,134,156, 62,125,186, 30, 0, 14, 30, 60,136,209,163, 71, 35, 49, 49, 81,224, 47, 22, 57,111, 20, 0,100, -109,167, 40, 42,106,252,123, 50,100, 25,128,148,128, 14, 28, 56,128,209,163, 71, 35, 33, 33,193,167,128, 60,197, 18,104,223,233, -211,167, 35,158, 65,158,251,186,117,235, 52, 83,167, 78, 29,194,111, 39, 73, 18, 44,203, 10,199, 5, 18,183, 92,195,136, 52,164, -196, 15,248,175,209, 67, 17,127,172, 34,160, 1,248, 18, 16, 69, 81,224, 56, 78, 56, 78,142,192,229,236,139, 36,120,238,107,215, -174,213, 78,155, 54,109,176,120,159,248,166,135, 35,254,104,113, 7,124,139, 31,112, 23,179, 56, 63,161,138,223, 51,189, 88,129, -223, 92,135, 42,160, 80,197, 31, 73, 17,137,185, 79,159, 62,125,176,231,126,222,239,143,148,248, 35,205,223,159,248,121,254,158, -235,138,248,131,135,207,156,203, 21, 16,128,144,196,239,235,184, 72, 32, 16,119,192,117,211,249, 78,111,164,196, 31, 41,254,129, -196, 15,192,203,231,247,220, 39,206,167,212,246, 64, 70, 19, 43,144, 52, 0, 57, 2, 82,171,213, 33,215,244,209,116,129,196, 46, -155,103,171, 37,134, 70,163,241,186, 94,176,254,126, 52, 12, 64,142,248,121,254, 82, 80,106,254,224,224, 85, 2,114, 5, 68,211, -180,219, 13,247, 39,144, 96, 12, 35, 28,136, 59,235,226,254, 10, 0,216,108, 54, 84, 86, 86,162,186,186, 26,141,141,141,208,106, -181,146, 66, 14,183, 35, 28, 14,252,137,223,102,179,225,204,153, 51,168,174,174, 70, 83, 83, 19,244,122,189,151,216,195, 17,127, - 44,214,254,128,135, 1,200, 17, 80, 85, 85, 21, 26, 27, 27,161,211,233, 4, 65, 68,162,230, 15, 87, 60, 0,192,178,236,238, 13, - 27, 54,208,249,249,249, 67, 88,150, 69,109,109, 45,142, 31, 63,142, 19, 39, 78,160,190,190, 30,241,241,241, 72, 78, 78, 70, 66, - 66, 2,140, 70,163, 91, 63, 32, 18,125,129,112,145,148,148, 52,225,249,231,159, 39,243,243,243,245, 12,195,160,182,182, 22,101, -101,101, 40, 47, 47, 71,125,125, 61,140, 70, 35,146,146,146,144,152,152, 8,163,209, 8,149, 74,229, 37,124, 32,116,241,199,162, - 17,184,149, 4,203,178,187, 59,226,252,130,128, 74, 75, 75, 5, 1, 25,141, 70, 36, 39, 39, 35, 49, 49, 17, 6,131,193, 45,254, - 31,174,248, 35,228, 66,140,206,206,206,198,166, 77,155, 80, 94, 94, 14,138,162,144,150,150,134,148,148, 20,244,239,223, 95, 24, - 52,162,105, 26, 90,173, 86, 16, 80,160,248,127, 48,251,194, 1,195, 48,198,236,236,108,188,242,202, 43, 56,125,250, 52, 40,138, - 66,159, 62,125,144,154,154,138,156,156, 28,168, 84, 42,104, 52, 26,208, 52, 45,140,191,248,170,245, 1, 69,252,114,224,233, 2, -141, 30, 53,106, 20, 94,126,249,101,148,151,151, 67,165, 82, 33, 45, 45, 13,201,201,201,184,244,210, 75, 5, 1,105, 52, 26,104, -181, 90,168,213,106,168, 84,170,136,137, 63, 18,181,168,217,108, 70, 92, 92, 28,242,243,243,145,152,152, 8, 0, 66,235,194, 95, - 75,173, 86,123,137,200,151,200,187, 58, 10,100, 50,153, 96, 52, 26,145,151,151,135,164,164, 36, 97,187,120,180,151,162, 40,104, - 52, 26,129,191, 84, 43,160,136, 95, 30,188,250, 0, 38,147, 9, 6,131, 65, 16, 16,127, 83,197,238, 14,111, 4, 26,141, 70,248, - 29,108,180,199,215,190,112, 97, 48, 24,144,147,147, 3,134, 97, 0,120,143, 64,147, 36, 9,138,162,160, 86,171,133,191, 82, 45, - 64,168, 29,225,112, 17, 31, 31,143, 49, 99,198, 8,252,197, 16,215,248,158,226, 87,220,158,208,224,101, 0,188,128, 60, 71, 73, -197, 2, 82,169, 84,130,112,104,154,118, 19, 80,184, 46, 81,216, 25,234,112,113, 56,142,147, 20, 63,127, 61,113,205, 31,169,190, - 64, 36,248,243,181,187,211,233, 12, 40,218, 72,138,159,119, 7, 99, 13, 94, 57,230,107,119,150,101,189,110, 44, 47,244,130,215, -255,141,226, 95,106,193,136,140, 36, 24, 28,221,185,210,167,168,194,133,248, 70,242, 70, 32, 94, 60, 7,192,130,169,249,187,162, - 35, 44, 53,175,199, 95,116, 71, 74,252,114,250, 5,254,142,137, 37, 72, 26,128,248, 6,120,222,100,146, 36,241,236, 3,179,209, -208,210,134,231,222,250, 22, 37,199,107,133,115,119,191,177, 8, 70,131,123,120,177,201,212,134, 83,213,191, 98,243,142,125,248, -169,180, 90, 50,205, 72,137,159, 79,219,215, 0, 87, 36,230,250,248,218,199, 95, 47, 18,144, 19,213, 9, 69,216,138,248,189,225, -229,116,243, 55,148,175, 93,248,133,239,240,242,219,211, 83,227,177,240,247, 19,221,206,165, 36,106,212,212,164, 56, 76,188,236, -119,216,252,183,121,152, 60,110,152,112,141,104,245, 1,194,169,189,195, 17,127,180, 38,195,117,149,248, 99,181, 47,224,211, 0, -124, 9, 64,188, 62, 36, 35,197,237, 92, 74,229,219,151, 86, 81, 20, 22,221,145,239,247, 26,145, 66,164,196, 47, 55, 60, 26,233, - 86,140,135, 34,254,232, 67,178,253,227,111,100, 32, 67, 48, 26,180,110,231, 81, 18,130, 16,255, 30, 51, 98, 0,174,202, 25, 18, - 85,241,251,227, 31, 73,195,144,218, 30, 9,120,250,245,252, 54, 32, 60, 97, 43,226,151,134,151, 1,200,185,233,190,106,188, 64, -157, 74,146, 36,241,246,234, 63, 70, 93,252,129,150,104, 24, 70,180,160,136, 63,186,144,108, 1, 60, 59,145,114, 7,174, 40, 74, -126,216, 51, 26,226,247,197, 63, 18,181,190, 34,254,223, 38, 36,251, 0,114, 69,236, 41, 96, 74,226,216, 71,215,238,232, 82,241, - 71,195,229,233,106,241,139,163,112,138,248,163, 11,217,125, 0, 57, 3, 87, 36,229,222, 7,104,183, 59,177,167,184,188,203,196, -239,201, 63, 18,226,247,183, 47,218, 80,196, 31,125,200,234, 3,248,243,235,197,224,195,160, 78,134, 69, 93,189, 9,111,124,188, - 23,109, 54, 71,151,139, 95,108, 0,209,234, 8, 71, 19, 82,177,121, 69,252,209, 65,192, 62, 64,160, 78,173, 24, 99,110,121, 86, -242, 34, 93, 37,126,241,245, 0,255, 81,160,112, 12, 35,154,144, 18,169, 34,254,232,193,103, 11, 0, 4, 14,131,122,138,225,216, -167, 79,128, 32, 8, 48, 44,135,186,122, 19, 94,251,240, 7,236,248,186,164, 75,197, 47,206, 67,164,107,253,174,112,123, 60,161, -136, 63,186,144, 84,165,156,154, 95, 74, 16,252, 62, 90,173,194,160,254, 41, 88,117,255,245,208,105,212,138,248, 67,132, 34,254, -232,195,167, 1,200, 17,191,167, 40, 60,247, 25,116, 26, 76,187,106,100,151,100,196, 31,127, 69,252, 10,124, 33, 96, 39, 56,152, - 48,168,212,121, 27, 87,222,217,101,153,145,226, 31,174,191,175,136,255,183, 13,159, 97, 80, 57,226,151,114,129,124,237,235, 74, - 68,170,214,239,206, 60, 4, 35,126,229, 1,247,208, 33,217, 2,200,245,255,125,245, 1,186, 83, 56, 60, 15, 69,252, 10,228, 32, - 96, 31, 32, 24, 23, 72, 17,127,100,161,136, 63,250,240, 59, 21, 34,144,248, 45, 86,155,219,185,158,191,187, 11,189, 89,252,188, -168, 21,241,119, 13,100,133, 65,125,185, 68,167,107,234,221,206, 43,175,186,216, 37,164,253,193,159,240,123,186,248,121, 40,226, -239, 58, 72, 26,128, 28,241,215, 92,104,194, 11,111,127,227,118,222,218, 55,191,196,169,234,158,103, 4,114,132,223, 83,196, 47, -134, 34,254,232,195,111, 24,212,151,248,239,124,108, 51, 14, 29, 63,235,149, 88,209,209, 74, 92,123,239, 63, 48,242,119,233,216, -246,220, 61, 72, 73,140,235,146, 76,120, 66, 17,191, 2,185,240, 25, 6,245, 23, 9,250, 96,195,194, 30,209,225,149,130, 34,126, - 5,193, 32,232, 48,168,248,119, 79,133, 28,225,119,229,244,140, 80,161,136, 63,250, 8, 42, 12,218, 27,196, 47,167,198, 87,196, -175,128,135,236, 48,104,111, 16, 63, 15, 69,252, 10,228, 34,232, 62, 64, 79,135,221,110,199,169, 83,167, 36,253,252,104,139, 95, -173, 86,135,157,134,211,233, 68,121,121, 57,128,174,127,105, 21, 77,211, 93,122,189,158, 0,175, 18,118, 56, 28,168,168,168,232, -150,206, 98,184, 2,210,104, 52,117,147, 39, 79,142,202,119,122,131,225, 16,234,185, 58,157,206,150,155,155,219,173,223,233,213, -233,116, 61, 99, 52,179,139, 64,136,191,244, 56,105,210,164, 11, 54,155,173,219, 5,180,119,239,222,168,124,105, 93,129, 2, 79, -184, 25,128, 2, 5,177,134,158,223, 35, 84,160, 32,138, 80, 12, 64, 65, 76, 67, 49, 0, 5, 49, 13,197, 0, 20,196, 52, 20, 3, - 80, 16,211, 8,106,164,165,227, 59,194,187, 1,140,142, 18, 31,208, 52, 93, 87, 88, 88, 24,149, 48,168,194, 63, 48, 98,141,191, -108, 3,224, 63,162,221,241, 29, 97, 20, 23, 23, 99,192,128, 1,208,104, 52,194,167, 82, 61, 7,204,130, 93,111,107,107,195,140, - 25, 51,162, 50, 14,193,243,239,248,144,118,175,229,207,151,127, 81, 81, 17, 50, 50, 50,188,248,251,226,231, 57,144, 41,181,221, -108, 54, 99,246,236,217, 49, 85,254,178, 12, 64,252, 5,249, 41, 83,166, 12, 1,128,226,226, 98,216,108, 54, 36, 36, 36, 8,159, - 78, 10,244, 58,244, 64,251, 78,159, 62, 29, 12,119,217, 16,243,207,207,207,239,181,252,215,173, 91, 39,148,255,129, 3, 7, 48, -106,212, 40,196,199,199, 75,242,151, 51, 29,220,115,255,153, 51,103,162,202,191, 39,150,127, 64, 3, 16,147,159, 58,117,234, 16, -225, 68,149, 10,226, 65, 52, 57, 4,229,100, 42,210,248,173,240, 95,179,102,141,102,218,180,105, 2,127,138,162,132, 79,217, 6, -203,213,215,254,104,160,167,151,191, 95, 3, 16,213, 60,218,169, 83,167, 14, 22,239,227, 39,150,121,126,138, 52, 28,242,145,190, - 9,191, 21,254,107,214,172,209,206,152, 49,195,139,191,248,122,114,133, 31,232,152,104,240,239,201,229,239, 51, 10, 36, 38, 63, -109,218,180,193,158,251,121,191, 13, 8, 92,248,193, 52,103,145,194,111,133,191,148,248, 1, 87, 11, 32,151,191,220,188,196, 98, -249, 75,182, 0,129,200,139, 51, 16, 73,242,145,186, 1,191, 21,254,190,196, 47,230, 15,200,251, 14,130,156, 99, 34, 53, 93, 92, - 78,249,239,218,181, 11, 9, 9, 9,208,106,181, 80,169, 84,110, 45,154,167, 97,120,110, 19,231,121,233,210,165,145, 53, 0, 15, -159, 77,146, 60,224,154,186,236,121, 81,185, 5, 30,205, 38,248,183,194,127,205,154, 53, 26, 95,226, 23,243,231,121, 75,241,151, - 43,124,241, 49,145,226, 31,168,252,111,191,253,118, 12, 24, 48, 0,241,241,241,160,105, 26,106,181, 90,104,213,186,178,252,221, - 12,192, 87,135, 5, 0,108, 54, 27,170,170,170, 80, 85, 85,133,166,166, 38,104,181, 90, 47,194,225,146, 15,247, 6, 4,226, 95, - 89, 89,137,234,234,106, 55,254, 23, 47, 94, 20, 62, 6, 62,112,224,192,128, 60, 43, 42, 42, 0,184,124,215, 75, 46,185, 36, 42, -252,215,173, 91,231,214,225,229,249,159, 57,115, 6, 85, 85, 85,168,175,175,135, 78,167,147,245,174,163, 96, 91,134, 72,240,151, - 42,127,139,197,130,195,135, 15,163,164,164, 4,199,142, 29, 67,107,107, 43, 12, 6,131,219, 7,216,229,214,252,252, 58, 73,146, - 88,182,108, 89,228, 12,128,101,217,221, 29,113,218, 33, 44,203,162,182,182, 22,101,101,101, 56,113,226, 4, 26, 26, 26, 16, 23, - 23,135,148,148, 20, 36, 36, 36, 32, 62, 62, 94, 32, 45, 55,252, 22,237, 40, 74, 40,252,139,139,139,113,235,173,183,226,179,207, - 62, 19,106, 85, 41,191,146,223, 94, 88, 88,136,187,239,190, 27, 91,182,108, 65,118,118,118,196,249,119,196,249,135,176, 44,139, -154,154, 26, 28, 63,126, 28,101,101,101,168,175,175, 71, 92, 92, 28,146,146,146,144,148,148, 4,131,193,224,183, 2,234,106,241, - 7, 83,254,179,103,207, 70, 82, 82, 18,140, 70, 35,244,122,189, 48, 22,224, 75, 79,209,212,143,167, 11, 52, 58, 59, 59, 27,155, - 54,109,194,169, 83,167, 64, 81, 20,250,246,237,139,212,212, 84,244,239,223, 31, 52, 77, 67,165, 82, 65,163,209, 8,190,155,216, -151, 14,245,149,132, 17,188, 9, 65,243, 47, 41, 41,193,161, 67,135, 64, 16, 4,210,211,211,125,214, 62,252,178,111,223, 62, 20, - 22, 22,130,227, 56,220,123,239,189, 81,225,255,242,203, 47,163,188,188, 28, 36, 73, 10,252, 71,143, 30, 45,212,150, 26,141, 6, - 58,157, 78,248, 29,138,248,125,237,143, 4,127,169,242,223,187,119, 47, 8,130, 16, 62, 4,174, 82,169, 4,183, 71,220, 7,144, - 83,243,139, 91,128,229,203,151,135, 85,254, 94,125, 0,139,197, 2,163,209,136, 41, 83,166, 32, 49, 49, 81,216,206, 23, 26, 73, -146, 80,171,213, 80,171,213,208,104, 52, 32, 73, 82,248,172,103,176,133, 29,141, 78,100,176,252,139,138,138,132, 99,246,239,223, - 15,192,229,222,240, 11,255, 91,188,157, 95,143, 6,127,179,217, 12,189, 94,143,188,188, 60, 36, 36, 36,120, 9,128, 23, 12, 77, -211,160,105, 90, 40,123,185,131, 72,129,246,135, 11, 95,229,191,104,209, 34,175,242,215,106,181,194,186,167, 17,116,149,126,188, - 12,192, 96, 48, 96,204,152, 49, 96, 24, 70,136,209,242,224, 51, 64, 81, 20,212,106,181,144, 25,169, 81,200, 80,200, 71,226, 6, - 4,203,191,162,162, 2, 53, 53, 53, 24, 48, 96,128,236,107,152,205,102, 24,141,198,168,240,215,235,245,184,244,210, 75,193,178, -172,215, 64, 17, 95,102, 60,127,113,237,201,239, 11,183, 79, 16, 46,124,149,255, 27,111,188,225,102,204,252,125, 16,115,231,247, -121,254,245,181,141, 32, 8,172, 88,177, 34,178, 6,192, 55, 77,226, 48, 27, 31, 30, 19, 23,162,184,230,151,170,253, 25,134, 65, -109,109, 45,206,158, 61,139, 11, 23, 46,160,190,190, 30, 77, 77, 77,104,109,109,197,250,245,235,163,118, 3,130,229, 15, 64, 16, -127, 65, 65, 1, 72,146, 68,110,110, 46,178,179,179,145,146,146,130,134,134, 6,148,150,150,162,176,176, 16, 44,203,162,160,160, - 0, 70,163,209, 45,189, 72,243,167,105, 26, 44,203,122, 9,198, 83,196,226,138,103,194,132, 9,168,171,115, 61,143,159,158,158, -142,162,162, 34,217,125, 51,241,254, 72,240,151, 42,255,135, 30,122, 40, 40,253,132, 82,121, 70,196, 0,248, 90, 5,144,110,230, -197,191, 41,138,130,201,100, 66,117,117, 53,206,159, 63,143, 95,127,253, 21, 77, 77, 77, 48,153, 76,176, 90,173, 48,153, 76,104, -105,105, 65,115,115, 51, 90, 90, 90,132,245, 13, 27, 54, 68, 69, 60,161,240, 23,131, 36, 73, 44, 88,176, 0,153,153,153,194,182, -126,253,250,161, 95,191,126, 24, 54,108, 24,182,109,219,230,118,124, 52,248,243,254, 49,239,110,249, 18,191, 88, 72,205,205,205, - 24, 60,120, 48,202,202,202, 0, 0,179,103,207,134,201,100, 66,114,114,114,151,138, 31,240, 93,254, 27, 55,110,244, 42, 43,169, -218,125,201,146, 37, 33,247, 37, 67,129,151, 1,240,133,202,175, 7, 34,242,204, 51,207,120, 9,188,165,165, 5,102,179, 25, 44, -203, 34, 62, 62, 30,195,135, 15,199,184,113,227,144,149,149,133,167,158,122, 42,170, 55, 33, 88,254, 0, 80, 87, 87,135,180,180, - 52,228,230,230,186,137,159, 32, 8,193, 13,201,204,204, 68,110,110, 46, 0,215,172, 67,157, 78, 23, 21,254,124, 58, 82,226,103, - 89, 22,143, 60,242, 8,206,157, 59,135,167,159,126, 26,163, 71,143, 6, 73,146,104,105,105,193,196,137, 19,113,246,236, 89,161, - 53,104,110,110, 70, 74, 74, 10, 8,130,192, 47,191,252,130, 37, 75,150, 96,208,160, 65,120,237,181,215,220,198, 64, 60,175, 17, - 46,124,149,255, 35,143, 60, 18,118,237, 30, 13, 35,246,251,141, 48, 57, 68,222,125,247, 93,144, 36,137,129, 3, 7, 98,248,240, -225,152, 52,105, 18,134, 15, 31,142,172,172, 44,100,101,101, 9,145, 21,254, 28, 95, 6, 16,169, 26, 40, 88,254, 0,144,150,230, -154, 65,155,157,157,237,150,134, 39,248,253, 58,157,206,235, 58,145,226, 47,174, 17, 61,111,248,163,143, 62,138,113,227,198,225, -233,167,159,198,242,229,203,145,158,158,142,249,243,231,227,253,247,223,199,132, 9, 19, 96,177, 88, 64,146, 36,178,179,179,177, -101,203, 22,204,159, 63, 31,219,183,111, 7,195, 48,216,182,109, 27, 62,249,228, 19, 44, 90,180, 8,111,190,249,166, 79, 81, 69, - 42, 15, 71,143, 30,133, 74,165,194,165,151, 94, 42,108,235,105,226, 7,100,124, 41, 62, 16, 9, 0, 56,123,246, 44,180, 90,173, -108,193, 69, 83,252,161,240,231,145,146,146, 34,172,123,118,160, 61,247,139,211,143, 52,127, 95,229,200,215,252, 44,203, 98,243, -230,205,248,207,127,254,131, 85,171, 86, 97,225,194,133,152, 51,103, 14, 14, 29, 58, 4,146, 36,113,227,141, 55, 34, 62, 62, 30, -239,188,243, 14, 22, 45, 90,132,212,212, 84,180,182,182,226,134, 27,110,192,174, 93,187,100,151, 71,168, 32, 73, 18, 26,141, 6, - 35, 71,142,132, 74,165, 2,195, 48, 97, 9, 60,154,238,155,223, 47,197,203, 33, 1,192,167,248,125, 21,112, 52,197, 31, 10,255, -134,134, 6,161,195,219,175, 95, 63,159,105, 55, 52, 52, 0,112,189,126,145,166,233,168,240, 7,124, 27,240,223,255,254,119, 44, - 91,182, 12,111,190,249, 38,246,238,221,139,156,156, 28,124,250,233,167, 56,119,238, 28,138,138,138,208,222,222, 14,173, 86,139, -210,210, 82,140, 26, 53, 10,227,199,143, 71, 93, 93, 29,142, 31, 63,142, 17, 35, 70,224,137, 39,158, 16, 2, 16,209,138,194,241, -233,100,103,103,187,137,255,197, 23, 95,116,171, 84, 60,239,145,231, 54,185,251,158,124,242,201,176,248,202, 50,128, 64, 29,143, - 96,172,150, 63, 94,236,131, 71, 18,161,240,231,107,246,210,210, 82,193, 0,196,105,240,253,128,210,210, 82, 0,157,239,208,140, -134,248,253,149,107,118,118, 54, 6, 12, 24,128,111,191,253, 22, 99,199,142,197,209,163, 71, 81, 90, 90,138,178,178, 50,124,253, -245,215,194,224,211,184,113,227, 48,127,254,124,140, 24, 49, 2,173,173,173, 72, 73, 73,193,217,179,103, 17, 23, 23,135, 49, 99, -198, 68,117, 28, 64,156,142,184,230,247,236, 3, 4,186, 55,114,195,185,225,194,103, 31,128,255, 27,168,105, 18,103, 90,174,224, -162, 37,254, 80,249,243, 40, 44, 44,196,176, 97,195,144,153,153, 9,207, 55,230, 85, 85, 85,161,176,176, 48,106,156,197,220,125, - 25, 0, 73,146,184,227,142, 59, 80, 80, 80,128,157, 59,119,162,180,180, 20, 59,119,238,196,158, 61,123,176,114,229, 74, 76,156, - 56, 17, 0,112,240,224, 65, 44, 94,188, 24, 15, 63,252, 48,230,206,157, 11,154,166,177, 98,197, 10, 60,240,192, 3, 81, 31, 7, -224,121,243,127,249,235,189,240,194, 11, 94, 45, 64, 56, 53, 63,191,190,106,213,170,176,184,250, 53, 0, 57,214, 41, 38, 37,199, -114,197,233, 71, 11,193,242,231,111, 12,203,178,216,182,109,155,223,113, 0,241,241,209,230,207,115,228, 56, 14, 38,147, 9, 77, - 77, 77,216,190,125, 59, 22, 46, 92,136,243,231,207,163,172,172, 12,123,246,236,193,247,223,127,143,196,196, 68,225,248,204,204, - 76,204,154, 53, 11,121,121,121,200,207,207, 71, 90, 90, 26,102,206,156,137,119,222,121, 7, 11, 23, 46, 68,106,106, 42,146,146, -146,162,210, 1, 22,243, 23,167,255,232,163,143,202,210, 72, 87,213,252, 60,252,126, 35, 76, 14, 65,241, 57, 93, 21,107,246,135, - 80,249, 3,174,129, 48,185,215,136, 38, 60,203, 53, 55, 55, 23,131, 7, 15,198,132, 9, 19,144,151,151,135, 57,115,230,160,168, -168, 8,187,119,239,198,202,149, 43,221,196,207, 47, 9, 9, 9, 88,181,106, 21,182,111,223,142, 21, 43, 86, 96,198,140, 25,184, -112,225, 2, 94,120,225, 5, 28, 58,116, 8,245,245,245, 56,115,230, 76,196, 91, 0, 95,229,190, 97,195, 6,183,167,191, 60,243, - 41, 62, 55,208, 62,241,181,162,210, 2, 4, 27, 69,233, 14,203,245,135, 80,163, 64, 61, 1, 98, 94, 60,223, 11, 23, 46,160,172, -172, 12, 53, 53, 53,176, 88, 44, 56,114,228, 8, 28, 14, 7,202,203,203, 49,113,226, 68,159,101,158,155,155,139, 87, 94,121, 5, -107,215,174, 69,109,109, 45,110,185,229, 22,104, 52, 26, 24, 12, 6,244,237,219, 87,242,156, 72, 64,170,252, 31,123,236,177, 30, - 85,243,243,136, 72, 20,168, 39,137, 63, 20,254, 86,171, 21,122,189, 94,246, 84, 8,150,101,163,218,154,249, 18, 37,159, 15,146, - 36,161,211,233,132,145,108,127,101, 47,158, 98,236,201, 89, 92, 54,145,230,238,201,107,253,250,245,110,199,120,254, 13,166,230, - 23,167, 19,149, 22,192,147,188, 63, 95,218,243,216,238, 20,127,168,252,245,122, 61, 0,249, 83, 33,162, 45,126,207,114, 77, 79, - 79,199,172, 89,179, 48,113,226, 68,100,103,103,227,198, 27,111,196,169, 83,167, 48,126,252,120, 28, 60,120, 16,153,153,153,146, -121,219,191,127, 63,230,206,157,139,182,182, 54, 24, 12, 6,108,221,186, 21,229,229,229, 56,122,244, 40, 50, 50, 50, 34, 46,126, -207,124,136,185, 44, 89,178, 36,232, 90,191, 43,244, 19,112, 36, 56, 80, 71,210,243,120,241,254,195,135, 15, 99,199,142, 29, 56, -119,238, 28,170,170,170,144,156,156, 28,181,140,132,195,159,135,120, 42, 4,191, 79,106, 42, 68, 87,240, 23,231,163,168,168, 8, - 38,147, 9,205,205,205,120,251,237,183, 65,211, 52, 38, 77,154,132, 5, 11, 22,224,175,127,253, 43,102,205,154, 37, 76,157,230, -243,102, 54,155, 81, 80, 80,128, 3, 7, 14,192,102,179, 97,215,174, 93,104,110,110,198,170, 85,171,144,146,146,130,228,228,228, -168,138,255,224,193,131,160, 40, 10, 19, 38, 76, 0, 0,172, 91,183,206,109,191,191, 26,223,243, 24,127,215,137,120, 11, 16,140, -120,124, 25, 0,203,178,120,235,173,183,208,210,210, 2,131,193,128,182,182, 54, 84, 87, 87, 11,243,237,163,137, 80,248,243,115, -123,196, 83, 33,120,225, 19, 68,231, 56, 0,191, 63,154, 46,144, 84,153,146, 36,137,228,228,100,164,166,166, 98,222,188,121, 88, -182,108, 25,230,206,157,139,172,172, 44, 44, 89,178, 4,121,121,121, 88,181,106, 21,114,115,115, 65, 16, 4,246,239,223,143,130, -130, 2,252,243,159,255, 68, 92, 92, 28,172, 86, 43,182,110,221,138,173, 91,183, 34, 43, 43,171, 75,106,126,154,166, 49, 98,196, - 8, 97, 94,147,248,225,117,185, 46,115, 87,120, 14, 62, 59,193, 82,196,142, 30, 61,138,207, 62,251, 12,231,207,159, 71, 85, 85, - 21,146,146,146,220, 50,205,147, 95,189,122, 53, 42, 43, 43, 49,104,208, 32,180,180,180,160,161,161, 1,109,109,109, 96, 24, 6, -233,233,209,255,250, 81, 48,157, 45,160,115,110,143,212, 84, 7,241,120, 0,191, 63,218,209, 44,127,188,183,109,219,134, 7, 30, -120, 0,141,141,141,104,108,108,196,220,185,115, 49,121,242,100,108,223,190, 29,155, 54,109, 2, 69, 81,152, 59,119, 46, 14, 28, - 56,128,184,184, 56, 97, 0,108,254,252,249,216,188,121, 51, 94,122,233,165,168,243, 39, 73, 18, 87, 94,121,165, 32,126,130, 32, -176,118,237, 90, 33,111,129,254,202, 21,126,212, 91, 0,126, 97, 24, 6,239,189,247, 30,172, 86, 43,226,227,227, 81, 89, 89,137, -154,154, 26, 28, 60,120, 80,200, 48,255,151, 32, 8,124,240,193, 7, 80,171,213,168,168,168,128,213,106, 69, 93, 93, 29,154,155, -155,193, 48, 12,238,186,235,174,176, 8, 7,130,220,154, 69,170,160,197, 83, 33, 60,197,207,239,239, 10,248,226,125,236,216, 49, -212,212,212, 96,198,140, 25, 56,113,226, 4, 6, 14, 28, 8,163,209, 8,173, 86,139,199, 31,127, 28,171, 87,175, 6, 65, 16,176, - 90,173,176,219,237,104,107,107, 19, 90,128,219,110,187, 13, 55,223,124, 51,142, 28, 57,130,177, 99,199, 70,157, 59,224,254,210, -171,101,203,150, 5,236,139,117,101,205,207, 67,214,108,208,127,252,227, 31,168,173,173,245, 91,163,139,201, 27,141, 70, 97, 54, - 32,195, 48,112, 56, 28,224, 56, 14, 79, 60,241, 4, 86,172, 88, 17,245, 76,201, 21, 63, 95,208,252,220, 30,241, 84, 8, 62, 29, - 0, 94, 83, 33,162,237, 2,249,226,189,116,233, 82,188,249,230,155, 48,153, 76, 24, 54,108, 24,190,252,242, 75,188,250,234,171, -184,231,158,123, 48,123,246,108,212,214,214, 10, 17,162, 93,187,118, 9, 51, 66,111,187,237, 54,168, 84, 42, 20, 20, 20,224,193, - 7, 31,196, 15, 63,252, 16, 21,238,190,242,192,183, 0,190,230, 2,137,207, 9,246, 58, 81, 27, 9, 22, 47, 59,118,236, 0, 77, -211,146, 53,250,188,121,243,188, 44,247,221,119,223,197,226,197,139, 81, 93, 93,141,184,184, 56, 36, 39, 39, 99,249,242,229,184, -242,202, 43,195, 34, 43, 23,114,197,207,139,152,159,219, 35,119, 42, 68, 87,185, 64,158,188, 7, 14, 28,136, 79, 63,253, 20,115, -230,204,193,125,247,221,135,161, 67,135, 98,227,198,141,216,182,109, 27, 26, 26, 26,112,251,237,183,131, 32, 8,108,217,178, 5, -205,205,205,216,186,117, 43, 54,111,222,140,155,111,190, 25, 5, 5, 5,248,250,235,175,221, 34, 92,209,230, 47,206,199,242,229, -203,123, 84,205,207, 67, 86, 39, 56, 46, 46, 14,191,252,242,139, 87,141,190, 98,197, 10,183,103, 50,121, 12, 29, 58, 20,159,124, -242, 73,151,102,196, 31,127,127,226, 23, 67,238, 84,136,174,200,131, 20,247,215, 94,123, 13,247,223,127, 63, 62,251,236, 51,172, - 95,191, 30,151, 93,118, 25, 8,130,192,194,133, 11,177,126,253,122,193,144,203,203,203,177,106,213, 42,100,101,101, 97,227,198, -141, 56,124,248, 48, 30,124,240, 65,100,102,102, 98,235,214,173, 81,231, 46, 85,254,207, 61,247, 92,192,217,160,161, 92, 43,106, - 45,128,152,252, 91,111,189,133,199, 31,127, 92,232, 80,137,107,244,238,178, 92,127,144, 35,126, 49,111,222,165,145, 59, 21, 34, -218, 46,144, 47,238,106,181, 26,155, 55,111,246,218,159,154,154,138,195,135, 15, 11,227, 25, 63,255,252, 51, 82, 82, 82,132,227, -198,142, 29, 27,117,183, 39, 80, 30, 30,127,252,113,191, 21, 83,119, 65, 86, 20,104,232,208,161,248,240,195, 15,123, 28,121, 95, - 8, 54, 10, 20,172,152,187, 35, 10,228, 79, 60, 73, 73, 73,104,104,104, 64,159, 62,125, 0, 0, 25, 25, 25,194,227,144,221, 1, - 41,142,207, 62,251,172, 91,222,248,245, 96, 16,137, 26,223, 19, 65, 77,134,235, 13,226, 15,135,191,220,169, 16, 61,137, 63,191, - 93, 60,177,173,187, 70,223,253,241, 95,185,114,101,143,212,143,172, 78,176,191, 8, 74, 79, 68,176,252,121,151, 70,238, 84,136, -174,158, 11,228, 47, 15,190,142,235, 78,244, 38,253,120,221,197,222, 68, 94, 10,161,240,231,197,236, 57, 21, 66,124,156,120, 42, - 68, 87,186, 64,188, 97, 42,226,247,198, 83, 79, 61, 5,167,211, 25, 86, 26,126, 91,128,222, 38,126, 30,161,242,151, 59, 21, 34, -154, 8,165,214,239, 41,226,231,209, 85,250, 9,247,121, 96,192,199, 23, 98,122,179,248,129,224,249,243,225, 77,185, 83, 33,162, - 29, 14,237,205,226, 7,122,151,126,188, 90, 0,135,195,129,138,138, 10, 55,194, 93, 69, 94,173, 86,135,157, 70, 40,252,121,151, -198,243,173, 16,124,220,154, 55, 2,126, 42, 4,127,252,201,147, 39, 35,206,191,181,181, 21,167, 79,159,246, 18,141,167,224, 61, -183, 69, 2,221, 85,254,145, 66, 40,252, 9,113, 13, 55,105,210,164, 11, 54,155, 45, 42,223,137,149, 11,141, 70, 83,183,119,239, -222,144,102,204,245,118,254,185,185,185, 23,236,118,123,175,229,223, 27,203,159,240, 28,242, 87,160, 32,150, 16,253,167,212, 21, - 40,232,193, 80, 12, 64, 65, 76, 67, 49, 0, 5, 49, 13,197, 0, 20,196, 52, 20, 3, 80, 16,211,240,249, 90, 20, 5, 10, 34,141, -142,239, 8,239, 6, 48, 58, 90,215,160,105,186,174,176,176, 80,118, 24, 84, 49, 0, 5, 93, 2,254, 35,218, 29,223, 65, 70,113, -113, 49, 50, 50, 50,220, 62,184, 46,158, 99, 37, 30, 56,147, 90,247, 28, 88, 35, 8,215,179,208, 51,103,206, 12,106, 28, 66, 49, - 0, 5, 81,135,248, 11,242, 83,166, 76, 25, 2, 0,197,197,197,104,111,111, 71,124,124,188,240,145,108, 57, 19,255,252,237, 63, -115,230, 76,208,220, 84, 6,131,174,192,102,179,175, 96, 24, 86,150, 49, 16, 4, 97,231, 56,174,128,227,184,213, 65, 95, 45, 10, - 48, 24, 12,227,108, 54,219, 88,134, 97,228,246,103, 88, 0,197, 28,199, 29,142, 38, 47,185,232,237,252, 3,129, 23,255,186,117, -235, 52, 83,167, 78, 29,194,111, 39, 73,210,109, 78, 85, 32,113,203, 53,140, 96, 65,218,108,246, 21,101,199,143,170, 28,118, 43, -228, 44,167, 78,158,112, 0, 8,127, 26, 94,132, 96,179,217,198,158, 56,254, 51,105,183,183, 66,206, 82, 94, 94,206, 2, 24,215, -221,188,121,244,118,254,254,192,139,127,237,218,181,218,105,211,166, 13, 17,239, 19,127,161, 51, 28,241,139, 91,141, 80,160, 98, - 24, 86,149, 57,120, 8,218, 90, 27,193, 50, 76,199,230,206,233, 17,158, 19, 37,250,165, 39, 95, 0, 48, 52,164,171, 69, 1, 12, -195,144,131, 6, 15,134,205,218, 4,198,193, 4, 60, 62, 35, 61,197, 10, 32, 62,250,204,228,161,183,243,247, 5,177,248,167, 79, -159, 62,216,115,191,248,219,192,225,136, 63,220,217,166,130,219,195, 48, 78,176,172,143,135, 11, 68, 86,192,114,108,224,187,212, - 13, 96, 28, 12, 88, 56,164,119,138,102, 47, 51,140,179, 71, 78,126,234,237,252,197, 8, 36,126, 0,194, 23,238, 1,223,143, 81, -134, 98, 24,193,194,197,128, 47, 82, 78,188,112,194,199,154,221,254,113,172, 10, 64, 59, 65, 16, 25, 65, 95, 45,218, 96,221, 23, -134, 95,208,185,128, 98, 9, 0, 12, 65, 16,134,238, 35,234, 3,189,157, 63,220,125,126, 95,226, 7, 0,141, 70, 35, 25,201,241, -116,107,130, 53,140, 96,161, 2, 0, 83,115, 29, 74,246,125,140, 54,107,179,203, 22, 56, 81,165, 47,172,187, 86, 40, 74,213,103, -241,226,135,219, 55,108,120,169, 74,165,162,132, 99, 68,135, 19,158, 27, 57, 14, 94,204, 56,142,115,219, 70,145,164, 83,163, 85, - 61,211,218,106, 43, 8, 54, 19, 45, 77, 23, 81, 82,184,195,229, 70,248, 59,144, 5, 8,138,210, 45, 94,252, 16,179, 97,195,198, -255,199,127,209, 92, 26,157, 41, 49,140, 55,127, 79, 80, 20,197,106, 52,228,161,214, 86,251, 79,242,153,187,208,219,249,243, 16, - 71,123,196, 29, 94, 0,176,217,108,168,172,172, 68,117,117, 53, 26, 27, 27,161,213,106, 37,133, 28,110, 71, 56, 88,168, 92,153, - 39, 96, 48,104, 65,145,122,240, 66,119, 25,130, 32,125,215, 95,215,111,227,194, 63,206,197, 99, 15,223, 15,134,115,181,205, 4, -231, 29,155,237,140,215,138,174,198,111,115,219,228,250, 85, 85, 85,165,186,114,194,140, 21, 0, 10,130,205,132,154, 36, 97, 52, -106,161,166,244,194, 54, 22, 0, 24,119, 57,117,252, 82,255,247, 31,111,192, 99, 15,255, 5, 12,239, 91,116,252,161, 36, 10,208, -109, 11,229,181, 91,216, 88, 93,125,134, 28, 63,225,234,177, 0,130, 22, 80,111,231, 47,112,102,217,221, 27, 54,108,160,243,243, -243,135,176, 44,139,218,218, 90, 28, 63,126, 28, 39, 78,156, 64,125,125, 61,226,227,227,145,156,156,140,132,132, 4, 24,141, 70, -183,126, 64, 36,250, 2,161, 64, 5, 0, 78, 39,139, 22,147, 21,214, 86,139,203,245,225,247,186,173, 11,255,225,208,193, 47,161, -209,197,129, 36, 41,247, 22, 2,238,221,103,183, 71, 13,196,173, 4,231,214, 58, 0,224,208,212,220, 2,150,149, 23,138,245,132, -131,101,209,210, 98,133,213,106, 6, 24,248,169, 69, 93, 74, 41, 41,250, 18, 90,109, 7,127,184,185,216, 34, 48, 96,124, 61,249, - 40,113,129,166,150, 22, 4, 17,202,116, 67,111,231, 47,194,232,236,236,108,108,218,180, 9,229,229,229,160, 40, 10,105,105,105, - 72, 73, 73, 65,255,254,253, 65,211, 52, 84, 42, 21,104,154,134, 86,171,133, 74,165, 18,250, 2,145,234, 8, 7, 11, 21, 0,144, - 20, 1,131, 65, 3,138,208, 74,138, 83,122,221, 9,116,116,218,196, 45, 4, 33, 58,151,112,115,131, 56,209,118,215, 89, 28, 0, -162, 35, 93,130,179, 7, 77,158, 7, 69, 2,250, 56, 13, 72, 82, 15,136, 98,203,110,247,159, 17,254,235,248,223, 33,240, 39, 37, - 78, 96, 1, 80,110,189, 79,183, 63,240, 82, 17,107, 11,145,125,239,231, 47,134,217,108, 70, 92, 92, 28,242,243,243,145,152,152, -232,226,231,241, 14, 80,181, 90, 13,154,166,161,209,104, 64, 81, 20, 24,211,175, 40,127,249,143,176,212,158,130, 46,181, 31,250, - 93,115, 31,250, 95,243,167,174,139, 2, 49, 78, 22, 38, 83, 43,172, 22,139, 80,143,187,215,222,156,100,205, 46, 54, 10,215,111, - 79,227,113,107, 56, 60,210,117,191,134,217,210, 22, 52,121, 30,140,131,129,185,197, 2,171,197,210,113,203, 61,110,174,140, 90, - 21,112,211,158,248, 84,209,201,190, 83, 49,155,219,229,145,149, 64,111,231, 47,134,193, 96, 64, 78, 78, 14,152, 14,247,173,211, - 21,238,124, 11, 31, 69, 81, 80,171,213,194,223,218,239,223, 69, 60,247, 43, 38,255, 97, 38,172, 86, 59, 14,125,253, 50, 90, 43, - 15, 35,235,191, 94, 4,225,225, 38, 69, 58, 10,212,209, 2,144, 48,232, 52, 32, 56,109,199,102,119,113,250,111, 21, 60,143,247, - 45,114, 78,212,187,246,236, 99,216,237, 97,188,223, 69, 77, 65,175,215, 0,208,116,110,115,171, 13,189,107, 66,247, 85,207,218, - 80,114,213,245,203,171, 38,117,193,102,243, 17,194,148,131,222,206, 95, 4,222,197,145,122, 17,174, 88,180, 20, 69, 9,211, 31, -250, 78,188, 25,199,254,253, 22, 26,207,213,162,239, 37,227,144, 55, 39, 13, 71,126, 44,198,145,167,102,227,210,165, 31, 65,147, -144, 42,187, 35, 28, 52, 95, 0, 96,156, 12, 90,204,109,104,181, 88, 0,248, 18,185,184, 54,247, 45,108,241, 73, 82, 29,105,222, -245, 17,210,233, 88,111,181,134,222, 2,176, 14,166,195,135,118,241,247,245,214, 18,198,253, 63, 63, 9,138,255,120, 39, 38,149, - 78,123,123,232, 46, 68,111,231, 47, 6,239,215, 3,238, 31,200, 16, 11,223, 51,220,105, 24, 48, 18,163,150,126,140,146,231,239, -192,104, 7, 48,224,242,201,184,252,154, 25,168,248,169, 8, 63, 45,155,140,203, 86,236, 68,220,160, 75,162,210, 17,118,181, 0, - 36, 9,189,222,213, 2,136,197,233,202,132,235, 64, 95,181, 55,159,209,206, 51,208,233, 50,137,211,233,248,143,115, 75,164, 51, - 93,135, 35,244, 22,128,164, 40,232,245, 90,184,213,160, 0, 14, 20,151, 99, 79,225, 73,152,173, 54, 56,108,237,176,182, 59, 96, -179, 57,208,222,110,131,205,214,142,246,246,200,212,122, 60, 58,110,238, 66,169,125,106,181,154,205,201,201, 42, 43, 46, 62,246, -227,111,141,191, 24, 4, 0, 10, 53, 0, 0, 17,191, 73, 68, 65, 84,226,112,164, 88,160,156,195,134,179,239, 46,131,233,248,143, - 96,108, 54,112, 28,235,210, 9,203,186,214, 1, 16, 36,137,159,127, 58, 9, 34, 33, 3, 3, 46, 25,133,161,227,174, 66,124,114, - 18, 74,158,156,133, 81, 15,252, 19,125,175,156,237, 55,252, 25,122, 11,192, 48, 48,153,172,104,181,180,186,251,254, 98,209,139, - 5,223,241,191,103,132, 72,236,239,187, 27,140,111,215,135, 95, 55,183,134,238,131,178, 12,131, 22,139, 21, 86,179,213,109,251, -158,194, 50,124,248,225,199, 72, 77,237,214, 55,117, 0, 0,206, 84,158, 33,115, 46,155, 48, 18,128,151,128,122, 59,127, 49,196, -174,136, 88,164, 23,190,122, 13,134,246, 26, 92,126,211,181, 80,209, 52, 8, 82, 5,130, 82,117,252,165, 0,130, 2, 8,210,181, -168, 52,224,156, 54,192, 97, 69,159,223,141, 64, 94, 82, 31, 28,120,253, 47,104, 61,187, 8, 67,127,191, 68, 82,252, 97,183, 0, - 6, 61, 13,112, 90, 55,113, 30, 58,114, 26, 63,236, 43,131,181,205, 14,155,205, 1,187,221, 1, 91,199,226, 90,119,194,102,115, - 8, 29,158,112, 65,146, 36, 75, 16,132,228, 80, 63, 65, 16,109, 28,199,173,224, 56,238, 5,175,243, 0, 24,245, 26,128,209,186, -109, 87,171, 73,164,166,166,162,241,226, 47,112, 48,145,173, 45,131,133,181,165, 30, 14,135, 67, 50,204, 24,152,127, 25, 88, 38, - 50,157,212, 80,225,143,191, 39, 60, 13,128, 36, 73,176,246, 54,232,245, 58,208,176,129, 96, 24,128, 83, 1,156, 26, 32, 85,224, -160, 5,152, 86,128, 84,185, 12,193, 97,117,233, 80,173, 5,156, 54, 24, 18, 19, 48,249, 15, 55,163,248,203,119, 96,169, 60,138, -203, 22,191, 3,130,144, 14,157, 6,139,206, 22,192, 98,133,197,212, 10,113,205,190,191,184, 28,239,125,176, 3,169, 41,169, 65, - 39, 28, 34,124, 22,112, 77,109,141, 46,123,212, 21,107, 0,120, 25,128,131,101,209, 98,182,194,220, 98,133,187,127, 76,129, 1, -224,112,216,224,112, 88, 61, 79,235, 82,248,187,190, 63,254,252,185,172,163,123, 13, 32,152,242,147,234,244,166, 77, 91,128,202, - 45, 15,227, 68,201,215,110, 35,161, 36,165,198, 37,179,254,128, 65,253,141, 32,193,130,160, 84,112,201,128, 5,199, 56, 1, 16, - 0, 99,135,154, 0, 38,220,112, 61, 14,253,251, 59, 28,255,231, 99,184,116,209,139, 97,139, 31, 16,181, 0, 58,157, 6,156,211, -229,131,242, 46, 11, 77,107, 92,239,200,175, 43, 5,227,236,222, 27, 96, 51, 91,224,112, 58, 37,223,125, 71,145, 36,244,122, 53, -224,112,241,231, 71, 72, 53, 90,254,240,224, 90,168,214,214,118,234,182,249, 75,238,254,240,221,181, 91, 12, 6,173,159,147,131, - 72,215,207,161,254,248,243,145,127, 70,162, 51,235, 15,255,251,229,143,253,223,125,239,139, 73,167, 42,170,178,109,237,118,131, -205,238,212,165, 36,199,159,203, 28,216,175,226,134, 27,166, 29,188,243, 15,215, 86, 6,149,160,204,172,250,234,164,234,210, 6, - 35,123,249, 78,161, 69,176, 55,212,162,116,253,157, 24, 49, 97, 50, 50, 6,247, 1,103, 51,129,160,104, 16,201, 67, 65, 14,201, - 7, 17,159, 1, 16, 36,184,230, 42,176,167,190, 1,123,254, 48,208,214,136, 49, 83,167, 96,239,206, 93, 56,251,245, 88,100,206, -186, 39, 44,241, 3, 66, 11,192,194,108,178,194, 98,110,117,243,203,217,142,206,137,211,209, 6,167,195, 51, 74, 35,233,169, 68, - 13, 38, 83,179,207,125, 12,203,194,220, 98,133,197, 98,113, 15,110, 48,162,152, 95, 16,110,218, 29, 11,150, 46, 56, 89, 94, 53, -238,142, 5, 75,153,207, 62,220,176, 37, 84,206, 98,176,126, 4, 28, 73,254, 53,181, 23,181,127,186,255,111,127,172, 56, 83,227, -245, 45,212,139,191, 54, 13,190,248,107,211,224,162,146,210,233,255,243,254, 23, 7, 86, 63,185,104,199,232, 81,195, 77,225,242, -247,132,191, 89,158, 36, 73,194,124,234, 39,148,191,122, 31, 46,159,115, 35,146, 18,105,112,173,191, 2, 42, 45,136, 33, 83, 64, -101,205, 1, 33,126, 52, 50,109, 52,200,190,163,192,156,248, 2,206, 35,219, 65,181,215, 99,252,172, 25,216,243,246,227, 24,116, -245, 93, 32,213, 26, 95, 52,228,113,117, 17, 38,160,215,209,208,235, 53, 48,232, 53, 48,232,181,208,235, 53,208,105, 93, 31, 93, -115,205, 10,101,187,117, 1,231,251, 6,184,106, 80, 23,103, 99,199,162,215,107,160,213,187,124,106,214,115,154,165,159,101,233, -170,141,147, 79, 85,156, 29,195,113, 28,121,170,226,236,152,165,171, 54, 78,150,123,174,255,197,183,128, 35,201,255,238, 69, 79, -221, 35, 37,126, 15, 16,199,203,206, 76, 88,176,240,169,197,199,126, 41,143, 15,151,191, 91,194,126, 98,244, 36, 73,226,226,143, - 31,161,226,159,127,193,132,155,111, 69,146,222, 14, 88,235, 93,247, 54,126, 0,136, 97,215,130, 97, 89,148, 86,214,227,227,255, -156,196,182, 47, 75,241,195,207, 53,176,218, 28,192,240, 89,224,172,141,112,254,252, 62,232,243,133,232, 51,112, 16, 46,150,124, - 35,139,147, 63,116,182, 0,150, 54,152, 76, 86,239, 57, 59, 28,231, 34,232, 71,128, 82,224, 34,220, 66,112,254,106, 80, 7,139, - 22,139, 21,150, 22, 15, 63,149,101,248, 89,101, 96,101,220,192,175,191, 61,144,254,213,238,125,179, 29, 14,167, 14, 0, 28, 14, -167,238,171,221,251,102, 79,155, 58,182,252,154,233, 87, 93, 8,135,191, 63, 4,230,223,241, 83, 70, 30, 30,252,243,109, 59, 31, - 91,246, 82, 54,195,176,234, 97, 67, 7,254,116,253,156,188, 31,114, 39,142, 62,103,212,235,156,187,191, 43, 26,180,235,243, 31, -243, 78, 85,156,189, 2, 0, 76,230,214,190,119,223,255,183,135,118,127,254,210,179,241, 70, 67,120, 95,154, 16, 65, 42, 10, 68, - 18, 4, 42,223, 43, 64, 91,121, 33, 38,221,124, 19,104,219,175,224, 28, 78, 16, 36, 5, 16, 12,184,193,249, 96, 88, 14, 21,231, -154,241,213,193,106, 56, 25, 22, 37, 39, 47,226, 84,109, 51,254,235,250, 81, 88,112,205, 72,112, 19, 31, 1,202,191, 2,103,185, -136,126,253, 47,195,217,221, 91,208,239,170,235,194,226,218,209, 7, 32,160,213,209, 96,156,180, 56,242, 9,157,150,239, 19,116, -198,106, 35,135, 32, 13,196,223,245, 41, 64,175,209,128,213,187,119, 17, 52, 26, 45, 4,217, 4,160,223,216,100, 86, 63,249,244, -230, 63, 89, 90,219,220, 62, 18, 96,105,109, 75,121,242,233,205,127,186, 98, 76,246,218,228, 36, 99,200,161, 36,198,223, 55, 5, -252,242, 7, 0, 6,172,204,231,144,174,187, 58,247,220,161,146,147,111, 3,192,202,165,127, 44, 18,239, 27,122,247,128,227,247, -221,125,243,241,213, 27,222,249,105,235, 59,159,255, 23,199,113,100, 83,147, 57,163,224,239,111, 78,222,176,250,193,239,252, 38, - 44,243,155, 8,158, 97, 80, 62, 2, 84,250,210,221, 48,210, 44,174,186,118, 26, 40,214,138, 54, 58, 29, 78, 66,131, 56,107, 57, - 8, 16, 96, 13,253,192, 57,157,216,247,203, 5,156,107,104, 69,113,217, 5, 88,218, 92,197,253,225,119,229,184, 53,111, 48, 52, -125,115, 64, 18, 36,184,182, 38, 36,100,196,227,248,225, 34,127, 84,100,129, 4, 92, 45,128,197,210, 14,147,169, 13, 45,102, 43, - 76, 29, 11,195,176,252, 67, 48, 81, 88, 56, 25,139,251,241,190,192, 50, 12, 44, 86, 43,204,102, 27, 90,204, 86, 97, 17, 68,195, - 6,110,226,231,221,179,234, 79,109,109,237,241, 6,131,174, 65,156,182,193,160,107,104,107,107,143,159,119,207,170, 63,185,218, -145,208, 22,191,179,121,252,242,103, 59,140,199,247, 98,179,181,147, 31,124,188,123, 48,255,123,229,210, 5, 69, 43,151, 46, 40, -242,117,252,242, 71,230,149,204,156,118,197, 78,254,250,223,124,123,112,142,205,214, 78, 30, 63, 81, 97,252,223,175, 10,251, 75, -157, 19, 76, 24, 65,236,242,216,155,206,227,231, 85, 87, 35, 61, 85,143,156,241,217,160,156,173,104,110,105,199,119, 91, 94, 3, -107,109, 2, 8, 10, 28, 99, 7,227,116,130, 97, 24,212,254,106,198,247,135,207, 10,226, 7, 0, 45, 77, 1, 28, 11,135,195,193, - 95, 0,148,154,134,163,205, 18, 4, 43,105, 8, 45,128, 78,171,134,211, 78, 67, 60, 98,165,211,209, 29,235,209,104, 1,130,131, - 63, 3, 32, 41, 10, 26,173, 26, 14,155, 26, 64,103, 45,170,215,119,214,160,129,198, 42, 62,255,120,237,107,252,250, 37,227,230, -189,206,175, 23,239,217,252,184,112, 80, 56,227, 29,126, 78, 13,151,255,226, 21, 47, 79,255,110,207,161,217,159,127, 85,184,247, -173, 77,203,254, 69,146,100,192,230,245,169,199,239,253,246,187, 61, 37,215, 57,157,140,166,221,102,143,159,124,237,253,171,218, -172, 54,227, 93,119,206,122,103,214,204, 43,207,121,243,151,159,119,222, 0,218, 47, 86,225,216, 51, 55, 32, 39, 63, 15,233,125, -227, 0,214,137,186, 11, 45, 56,242,159,239, 17, 55, 96, 4, 28,173, 45, 32, 18, 40,112,237,173, 96, 27, 78,161, 13,122, 12,239, -175,135,231,173,158, 62,166, 31, 24,198, 9,212,254,228,242, 4,212,122,216, 29, 28,116,201,225, 15, 16, 10,125, 0,139,165, 13, - 38, 97, 36,210, 53,215,135, 97, 59,134,171, 59,106,227,238,132,191,235,179, 12, 3,171,217, 6,179,104, 36,149, 5, 58, 69, 35, -199, 7,242,157,122,136,231,201, 79, 71, 30,127,105, 56,156, 78,162,168,228,196, 4,155,221, 17, 87,244,211,241, 25, 87,223,240, -240,224, 87, 95,124,236,141,172,161, 3, 37,171,199,186,186, 70,205,194,191,174,157,223,216,104, 74,227, 56, 78, 8,183, 52, 55, - 91,250,245,237,147,120,250,209, 7,239,240,241,186,149,224, 92, 32,130, 32, 80,254,250,159,145, 51,121, 18,210, 18, 9,112,148, - 26, 85,167, 47,160,226,200, 49, 92,185,250, 59, 92, 60,248, 57, 26,203,191, 66,106,223, 75, 0,243, 5,224,135,213,176, 93,251, - 38, 38,100, 37,225,246,252, 76,124,123,164, 14,118, 39,131,137,151,244,193, 13, 19,250,195,225,112, 64,115,240, 69, 0, 0,153, -152,137,230, 38, 51,146, 70, 78,148,197,201, 31,132, 22, 64,163, 85, 67,111,231,163, 62, 0,192, 65,175,227,127,247,132, 22,192, -247,245, 73, 0,106,173, 26,250,142, 56,186,203, 93,101, 93,177,117,184,220, 8,132,250, 44,127,132,222, 1,224,207,135,247,207, -223,181,238, 75,128, 79, 63,251, 86,110, 83,179,185,159,235, 60, 86,117,238,124,253,136,187,238,253,219,226,249,183, 95,253,241, - 3,247,221,122,212,243,248,180,180, 68,219,204,169,227, 14,190,251,193,238,223, 51, 12, 43, 52, 55, 36, 73, 58,243,115,199,252, -232,235, 58,193, 56, 65,188, 1, 56, 77,191, 34,121,192, 36,112,156, 29, 39,142,156, 64,253,197,102,140, 95,179, 7,234,184, 68, - 12,152, 62, 31,251, 62,127, 5,131, 71,143, 6, 89,251, 19, 84,109, 77,208, 22,254, 29,230, 43,151,226,150,220,254,184, 37,183, -127,103, 95, 2, 44,212, 7, 95,132,186,250, 63, 0,169, 2,219,111, 28, 78,254,239,247,152,180,250, 37,217,156,124,193,245, 68, - 24,223, 7,224,107,160, 14, 3,112, 58, 88,215,143, 16,162, 64,129, 16,108,140,200,159, 1, 56, 88,192,106,110, 71,139, 91, 20, -133, 5,239, 50,178,108,176,195, 72,226, 84, 34,133, 80,249,119, 60, 14,239,195,128,246, 20, 30,201, 19, 63, 73, 71, 81,164,131, - 86,171,108,223,252,231,167,241,183,221, 56,229,100, 90, 90,146,215, 52,207, 7, 22,222,116,244,218, 25, 87,156, 89,244,240, 11, - 11, 47,212, 53, 13,101, 89, 86,149,152, 24,119,126,229,210,187, 10,125, 26,170,204,130, 16,183, 0,241, 35,115,113,224,255,190, -129,195,106,129,113,216, 21,184,252,111, 31,128, 82,187, 30,134, 87, 27, 18, 48,112,246, 66, 84,252,242, 3, 70,102, 92, 1,166, -226, 27,196, 29,123, 11,244,133, 98, 88,114, 22,194,158,154, 3,150,160, 64, 55, 28, 69,220, 47,111, 67,115,126, 31, 0,128, 28, - 48, 30, 53,181, 77,232,115,217, 12,196,101, 12,151, 71,202, 15, 68,125, 0, 26, 14, 59,237,166, 76,157,142, 6,135,158,209, 2, -120, 57,134, 34, 80, 36,160,213,171,225,112,184, 71, 81,244, 90,181,104, 80, 41, 68,254,161,158,231,153,140,223,145, 96, 63,252, -225,106, 17,164, 6,162, 54,188,252,209,101, 45, 45,173,125, 19,227, 13,231,155, 77,173,253, 0,128, 32, 8,246, 95,239, 61,189, -142,143, 88,249, 26,192, 26, 54,180,191,229,203,157,107, 94,184,247,254,231,111, 62,114,180, 98,210,149,151,143,216,175, 86,147, -156,111,165,203, 47, 7,222, 0, 70,222,247, 50,172, 53,101,160,141,201,208,166,244,247, 26, 23, 24, 50,247,207,248,254,254,215, -144,144,156,139,126,163,255, 0,230,196, 23,160,235,127, 70,242,183,127,145, 40, 36, 26,212,176,153,104,114, 38,224,196,193,111, - 49,125,211, 33,217,124,252, 65, 5, 0, 44,195,194, 98,109,135,217,220, 57,218,203,193,213, 55,112,245, 1,196,157,208,174, 29, - 1, 22,248,248, 49, 64,134,101, 97,182,218,208, 98,113,143,163, 59,120,241, 50,242, 7,114, 0,128,166, 85,173,118,187,211, 0, - 0,159,127, 85, 56,224,250,107,175,170,113,187,158,236,148,228,157,229,151, 63,223,127,145,176,160,236,172,204,139,255,179,121, -121,193,144,193,233,173,185, 87, 63,180,166,221,102,143,119, 58, 25,205, 83,207,108,157,254,226,154,251,191, 10,196,136, 2,184, - 45,175, 60,250,201, 71, 59,247,148,220, 48,103, 98,181, 63, 43, 13,102,194,163, 56, 10,100,204, 28,229,123,254,190, 70,135,188, -117, 63,160,248,239, 55,163,185,111, 50, 70, 92,182, 0,196,133, 18,112,230, 11,224,204,231, 1,150, 1, 17,151, 6,194,216, 15, - 68,122, 14, 42, 79,159, 71,229,177,125,200, 91,243,111,104,147, 67,250,142,159, 23, 72, 0, 32, 72, 2, 90,141, 10, 58, 45, 13, -157, 86, 13,173, 86, 13,157, 70, 13, 93, 71, 13, 20, 94,248, 50,130,163,193, 62,115, 65, 66,175, 38,161,215,104,161,215,168, 59, -151, 14,254, 12, 24,183,119,235, 4, 90, 18,226, 13, 23,249,164, 55,109,222,117,227,174,175, 14, 12, 16,239,143, 56, 2,241,103, -164,121, 94, 61, 99,220,185,225, 89, 3,205, 42, 90,205, 78,155, 50,230, 11, 62,185,127,239, 57,124,211,154,141, 31, 93,238, 43, -127,207,108,120,255,202,191,173,251,159,171,248,223,183,220,148, 95,169,162,213,172,191, 50,145, 11, 57, 79,110,137,247,233, 82, - 51, 48,121,195, 62,112, 41, 35,241,227,174,175, 80,209,148,136,166,164, 60, 48, 87, 60, 0,118,194, 35,104, 73,191, 6, 85,214, -126, 40,252,247, 65, 52, 90, 40, 76,127,245,103,196,103, 70,238,131,229,157, 45, 64,107,187,240, 92, 46, 63, 25,206,238,100, 59, -126, 69,218, 5, 10,190, 21,241,123,125, 7, 11,139,213, 6, 75, 71, 13,202,223, 48,135,184,214, 10,226,227,214,151,102,255,238, -208,183,123, 14, 13, 1,128,170,179, 23,115,150, 63,185, 57,103,249,147,155, 37,143,253,185,240,245,255,150,151,106, 56,252, 25, -255,231, 3, 88,185,100,222, 15,251, 15, 30,159,220,212,108,201,224, 56,142,220,182,253,235,255,222,187,239, 88,241,245,215,142, -255,113, 90,126, 78,181,213,106, 87,237, 59, 88,218,255,139,221, 69,147, 43, 78,159, 31, 7,128,163,212, 4,179,244,161,219,139, -195,230,239,129,160,223,240,160, 82, 35,231,254,141, 48,159, 45, 67,195,177, 31, 81,115,120, 55, 26,190,221, 14,142,113, 34, 41, -235, 10,164,140,189, 6, 99,110,204, 67,210,240,200,191, 18, 85, 5,116,180, 0,180, 26,118,173,218,109, 50,156, 94,199,191,227, -170,179, 19,220, 53, 14,144,212, 85,252,143,164,106,212,106,104, 52,158, 62, 52,127, 86,112, 46,208, 51, 79, 44,248,230,250,219, - 43,198, 53, 52,154, 50, 3, 31, 45, 51, 93,127,209, 36, 57,252, 3, 68,163,140,122,218,185,105,195, 3,255, 88,248,224,139,139, -205, 22,107, 95, 0,168, 56,125,238,138, 23, 95,221,121,197,139,175,238,148, 58,133,248,225,199, 99, 19,150, 62,248,123,153, 6, - 16,222, 92,160, 64,207,242, 18, 4,129,132,204,108, 36,100,102,227,119,215, 73, 62,148, 22, 21,144, 4, 65,176,237,237, 54,180, -181,219, 97,182,180,193, 98,105,131,197,226,106, 13, 56,182,195,165, 97,157,238,147,210,162,190,112, 94,139,211,233, 4, 65, 16, - 82, 86,192,217,218,219, 97,181, 57, 96,177,182,187, 22, 75, 59, 44, 22,107,135,102, 92, 35,136,193, 44, 52, 77, 50,255,122,119, -229,154,105,121, 57,159,244, 73, 77, 56, 67,171, 85,173,190, 10, 80,110,154, 86,215, 51,183, 82,150, 29,144,191,220, 80,236,168, -145, 3, 77,111,188,244,192,186,145,195, 7,236,247,113, 45, 1, 67, 50,211, 15,189,254,210,131,210,205,154,143,124, 6, 74,147, - 71, 40,226, 15,103, 74,115, 56, 80, 25,244,154, 95, 79,148,157, 72,235,155,214, 31,214,214, 70, 97, 46, 16,195, 48, 72, 73, 27, - 8,198,233,128,169,165, 81, 56, 33,208,135,181,229,124,119, 59,208, 68, 57,207,107,112, 28,135,242,138, 90,104,181,244, 89,207, - 99, 13, 6,109,123, 89, 89,185, 46,173,111, 63, 88,173,141, 66, 69,197,178, 14,100,244,205, 0,227,112,160,165,165, 62, 48, 41, - 15, 16, 20,152,167,159,152,255, 21, 0,191,157, 73,171,156,135,201, 89, 6,149,213,231,161,211,209, 94,134, 20,144, 63,203,160, -197,220, 36,155,247,144,193,233,166,173,175, 63,186,101,231,231,251,190,251,191,221,197,227,107,106,235,135, 54,183, 88, 50, 84, - 42,170, 77,163, 81, 91,134, 14, 78, 47,253,253, 13,121,123,103, 76,205, 57, 7, 0, 86,171,188, 7, 93, 42, 42,206,195, 32,193, - 95, 10,189, 69,252, 0,160,210,106,212, 37, 31,239,216, 49,251,207,247,223,139,227,165,135, 93,115, 50, 88, 14, 14, 7,131,153, -179,167,163,169,241, 28,204,226,232, 68, 32, 3,144,113,209,192, 70,228,109, 0,133, 7,142,183, 51, 12,187,207,243, 88, 61, 77, -215,239,248,100,199,192, 69,139,238, 69, 89,217, 97, 48, 14, 7, 28, 44,224,112,176,152, 49,107, 38,154,154,106, 96,181,118,239, -195, 60, 96, 89, 20, 30, 56,193,112, 28, 91,231,185,203, 47,255,235,102,162,165,177, 86, 38,127,247,198,241,154,233, 99, 42,175, -153, 62,166,210,215,209,178, 12, 87,148,244,190,226,147, 12, 35,193,223, 19,189, 73,252, 0,160,210,171,201,191,124,188,227,179, -147,191,191,245, 22,234,206,187, 30,193,201,178, 18, 48, 12,131,172,145, 99,209,167, 79, 95, 28, 41,250, 20,182,246,206, 41, 18, -129, 16,168, 5, 8, 36,126,169, 99,206,214,214,227,227, 79,247, 58,236,118,231,147,158,199, 38, 16,170,189, 31,237,248,236,246, - 91,111,185,137,184,253,174, 71, 81, 94, 86, 2,134,113, 32,107,228,229,232,155,154,134, 35,197,187,130,124,229, 71,228,227, 60, -181,181,245,248,104,231, 94,214,225,112,122,249,219,126,249,167,245, 67,217,225,207, 96,179,186,119,142,187, 26,213,213,245,120, -127,199, 30, 73,254, 82,144, 35,252, 80, 94,100, 27, 13, 16, 28,199, 97,208,160,212, 69, 13,245,150,141,119,222,113, 3, 53,247, -250,235,144, 53,252,119,104, 53,215,227,116,121, 17,236,182,206,218, 95,142,120, 3,217,136, 44, 3, 0, 7,134, 97,113,225, 98, - 51,142, 28,171,108,219,249,249, 65,134, 97,157, 15, 57,157,220,155, 82,199,103,102,166,100,215,215, 91, 39,253,191, 59,230, 18, - 55,204,189, 14,195,135, 14,133,213, 90,143,202,242, 98,180,183,119,207,179,192, 44,203,224,124, 93, 11, 74,142,156,113,238,216, -181,143,115, 56, 28,251, 56,142, 43,147, 58,182,147,255, 77,196, 77,115,175, 67, 86,214, 96, 88,173, 77,168,174, 40,129, 35, 66, -252,131, 53, 30,150,101,112,254,124, 19, 14, 29, 57,229,124,239, 95,254,249,243,184,226,138, 43,184, 3, 7, 14,192,102,179,117, -139,248, 79,158, 60,137,121,243,230,161,184,184, 88,118,179, 66,240,130, 76, 72, 72, 24,166,166,216,151,219,237,206,203,172, 86, - 91, 31,241, 68,169,238, 0, 65,128,165,105,245, 89,150,101,247, 57, 28,204,147, 28,199,157,244,119,124, 74, 74, 74, 60,197, 57, -243,172,118,123, 74,107,107,187, 22, 8,252, 74,240, 40,131,211,209,116, 43,199,178,117,237, 78,103, 49,199,113, 45,254, 14,238, -237,252,129, 78, 3,176,219,237,221, 82,243,135, 98, 0,194, 28,146,150,150,150, 83, 0,102, 69,133, 89, 23,160,161,161,193, 4, -224,139,128, 7,246, 80,244,118,254, 60,236,118, 59, 78,157, 58, 37,233,231, 71,219,237, 81,171, 37,223,153,224, 23,202,103, 82, - 21, 68, 12, 26,141,166,110,242,228,201,221,250, 22, 47,141, 70, 19,176,163, 46, 6, 33,203,175, 87,160,224, 55,138,158,209, 21, - 87,160,160,155,160, 24,128,130,152,198,255, 7,109, 43,244, 49, 78,182, 48,112, 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, 0,192, 0, 0, 0,192, 8, 6, 0, 0, 0, 82,220,108, 7, 0, 0, 0, 4,115, 66, 73, 84, 8, 8, 8, + 8,124, 8,100,136, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 25,116, 69, + 88,116, 83,111,102,116,119, 97,114,101, 0,119,119,119, 46,105,110,107,115, 99, 97,112,101, 46,111,114,103,155,238, 60, 26, 0, + 0, 32, 0, 73, 68, 65, 84,120,156,237,125,121,156, 20,197,221,254, 83,125,205,204,206,206, 30,236,194, 94,200,130,200,181, 34, + 32, 40, 1,228, 88, 48, 70, 64,209,168, 81,140, 33, 26, 77, 66, 98,242,198, 55,106,162,198, 11,242,198, 68, 5,209,188,106,140, + 49, 94, 16,125,127, 49, 30,241, 74,226,145, 40,162, 34,114, 9,114, 45,187,171, 92,123,176,176,247, 28, 59, 71,119,215,239,143, +217,158,237,233,233,158,233,185,150,197,237,103, 63,179, 51,221, 93, 93,245, 84,245,243,173,250,214,209,221,132, 82, 10, 11, 22, + 6, 43,152, 19, 77,192,130,133, 19, 9,203, 0, 44, 12,110, 80, 74, 35, 31, 0,203,149,143,178,109,240, 93,222, 27,110,154,230, +252,114,245,249,234, 56,213,219,218,223,122,233,234,241,136,119,142,206,113, 35,142,186,113,197,137,191, 60, 1,199,242,120,101, +160, 87, 38,154,253,137,226, 55,228, 19,111,127,162,242, 77,230,250,104, 63,218,178,141,163, 15,109,222,116,243, 26,175, 76, 12, +174,109,204,183, 94,124,102, 62, 81, 45, 0,165,244, 9,245,119, 28, 92, 72, 41,125,130, 82,186,205, 96,255, 19, 0, 64, 8, 89, +174,108, 19, 66,150, 43,129,212,191,141,210, 85,199, 99,246, 28,147, 28,117,161,141, 95, 21,247,133, 70,156,180,199, 53,233, 62, + 97,176, 29, 21, 78, 57, 95,155, 31,163, 50,209, 73,207,112,191,230,120, 76, 89,153,189, 62, 58, 72, 84,182, 23,234,149,157,118, + 59, 81,153,196, 3, 33,164, 28, 64,115,130,248, 18, 34,161, 11,100, 80, 24,111, 18, 66,150,247,146, 72, 26,218, 2, 55,147,174, +153,115,210,225,152, 10,167,222,237, 55,147,224, 20, 55, 62,147,225, 99,210, 75,151,135, 22,122, 6,161,124,122,119,197,148,173, + 65,217, 24,114, 52,202,123, 18,101,114, 33,165,244,141, 20,206,139, 66, 66, 3,208,179, 42, 74,105,147, 89, 75, 77, 38, 94, 19, +233,154,182,240, 84, 56, 38,203, 41,219,101, 96, 16, 62,233, 22, 32, 21,232,181,198,170,150, 36,166,108, 13,202,198,144,163, 81, +222,147, 40,147, 55, 9, 33, 75, 82, 56, 47, 10, 92, 42, 39,169,107, 2, 29, 82,203, 21, 66,234,154, 36, 89,130,169,158,151, 12, + 71,157, 99,122,113,196,212, 90, 9, 56,189,169, 9,167,221,206, 56,122,227, 87,220, 17,211,249, 75,245,250,152,141,223, 76, 28, +137,210, 53, 10, 71, 41,109, 34,132, 92,152, 40, 92, 66, 30,212,154, 7,176, 48,136, 97, 13,131, 90, 24,212,176, 12,192,194,160, +134,101, 0, 22, 6, 53, 44, 3, 72, 3,132,144,242, 84,135,223, 44, 12, 16,232,204,242, 37,154, 89, 77,102,182, 54,238, 57,113, +102, 0, 19,206,226,170,247,233,165, 29,143, 71,170,233, 26,229,217, 12, 95,163,176,122,113,170, 57,105,243,169,141, 83,111, 59, +206,185,134, 51,172, 38,174,101,170, 51,227, 70,231, 37,154, 65,143, 59, 99,159,169, 79, 50, 6,160,187, 95,239, 98,152, 61,199, + 40,141, 68,225, 18, 8, 44, 33,143,116,210,213, 11,147,204,121,102,202, 49,153,112,102,242,145,236,117,137, 87,134,102,211, 72, +182,172,147,201, 95, 38, 63,105,185, 64,169,204,214,154,156, 1,204,202, 76,179, 94,124, 25, 74, 55,153,243, 18,206,162, 26,193, + 76,184, 84,103,139, 51,113, 45,227,165, 77, 77,142,207,167,122,205, 83, 69, 90, 6,160,151,169, 68, 25, 53, 58, 78,163,103, 30, +179, 53,211,108, 52,139,154, 86,186,201,156,167, 23,214,172, 56,204,132, 51,226,145,136, 95, 38,174,101,188,180,147, 89,226, 96, + 50, 92, 70,160, 59, 19,108, 48,171, 22, 51,163,105, 98,246, 45,149,115,226,206, 52,166, 56,211,252,102, 18,181,167,110,186, 41, +158, 23, 51, 43,171, 23,214,160,140, 50, 58,139,171,153, 45, 54, 74,211,204,117, 73,106,102, 60, 78,126,227,149,149,118, 59, 42, +108,111, 43,113,161,217,138, 35, 30,172,153, 96, 11, 39, 29,146,113,169, 18,198,101, 25,128,133,193, 12,107, 30,192,194,160,134, +101, 0, 22, 6, 60, 8, 33, 89,115, 83,190, 18, 6, 96,205,200,126,181, 65, 41, 37,218,125,132,144,106, 66, 8, 85,125,170, 83, +141, 92,119,210, 2,250, 51,140,166,238,201, 84,109,155,189,183, 51,238,236,168,222,121, 6,124,210,186, 87, 89,143,115,162, 60, +105,227, 78,162,108,226,206,160, 38,251, 1, 80, 13,128, 2,168,238,221,166,170, 99, 84,249,214,134, 49,216,214,134,167,154,180, +180,219,134,105, 39,147,190,122,159,118, 91,179,175, 90, 47, 13,117, 60,166,203, 77, 79,252,102,127,107,191, 19, 29, 79,244,173, +151,150, 25,110,201,156,103, 54, 47,233,114, 55, 83,142,241,226, 73,250, 66,170, 68,166, 21,146,217,111,163,184,140,210, 50,155, +118, 42, 60,140,210,208,132,175, 86, 11,223,136,111,188, 79,202, 46, 80,178,247,128, 38, 64,202,179,163,137,226, 73, 6, 26,206, +111, 26,140,123,235,230, 41, 25,238,217,114,215,180,190, 50,165,148, 36,242,159,123,143,207, 87,111, 83,149,203, 97,214,255, 54, + 74,155,106,220, 23,189,244,212,219, 70,113,107,227,233,197,251,148, 82, 66, 41, 93,111,134,163, 30, 82, 54, 0,154,220, 61,160, + 17, 49,233,137,136,166, 49, 59,154, 40,158, 36,207,127,130, 82,218,164,196,165,254, 86,113, 50,138,219, 52,247, 84,242,102, 6, +122, 34, 49, 16,142,246,248,251,128,190,208,204, 26,131,217,180,213,233,233,109,107, 17, 71,252, 0, 48, 63, 45,255, 31, 58, 51, +193, 52,205,251, 68,245,206,161,225,251, 55,163,190,245,206, 69,242,247,223,234,114, 64,156, 89, 70,154,230,189,202, 58, 48, 53, +203,172,199,147,234,204,252,102,114,146,199, 32,237,184, 53,174, 34,114, 69,116,154,237,249,102,106,108, 19,233,255, 90,239,152, +186,197,210, 51, 60,213,190,249, 42,195, 80,243, 76,154,151, 53, 17,102,225,164, 68,111,173,175,110, 57,230,167,226, 10, 89, 6, + 96, 97, 80,227, 43, 49, 15, 96,193, 66,170,176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168, 97, 25,128,133, 1, +129, 61,211, 8,221, 51,141,208,221,103, 71,143,233, 43,251,247, 76,139,158,131,216,125, 54,169,214,134,215,134, 49,131,148,158, + 13,106,193, 66,166,113,250,182,240, 24,127,175,136,137,222, 49, 53,136,140,247, 79,223, 70,137, 18, 62, 21,241, 3, 86, 11, 96, +161,159,160, 8, 52,158, 80,247, 76, 35,148, 50,177,147, 89,122, 45, 3, 0,236,158, 70, 86, 42,191,245,140,196, 12,172, 22,192, +194,128,192,158,105,132,234,137, 56, 94,203, 48,113, 27, 93,185,103, 26, 89,145, 78,186, 86, 11, 96,161, 95, 64, 25,204, 87,215, +240,122, 45,129,218,215, 87,127,235,157,167,141, 47, 85, 88, 51,193, 22, 6, 53,172, 22,192,194,160,134,101, 0, 22, 6, 53, 44, + 3,176, 48,168, 97, 25,128,133, 65, 13,203, 0, 44, 12,106, 88, 6, 96, 97, 80,195, 50, 0, 11,131, 26,150, 1, 88, 24,212,176, + 12,192,194,160,134,101, 0, 22, 6, 53, 6,213, 98,184,233,211,167,151,202,178,252, 46,128,137,217, 74, 67, 16,132,150,141, 27, + 55,150,102, 35,238, 49, 99,198,216, 10, 11, 11,103, 72,146,228,202, 70,252, 0,192,243,124, 96,211,166, 77,239,102, 43,254,129, +134,164, 12,224,100, 22, 80, 47,247,247,215,172, 89, 35,204,155, 55, 15, 91,183,110, 69, 69, 69, 5,236,118, 59, 88,150, 5, 33, + 4, 12,211,215, 32, 18, 66, 98,126,171,247,233,237,247,249,124,248,250,215,191, 94,146,105,238, 64, 88,252, 5, 5, 5, 51,239, +187,239, 62,102,193,130, 5,216,190,125, 59, 42, 42, 42, 32, 8, 2, 56, 46,124, 25, 89,150, 53, 60, 63,222, 49, 0,224, 56, 14, + 62,159, 15,213,213,213,182,140, 18, 31,224, 48,109, 0,122, 2, 42, 47, 47,143, 8,136, 97, 24, 16, 66,116,133,163,254, 29,111, + 95,182, 4,164,112,127,224,129, 7,108,243,230,205, 27, 5, 0, 91,182,108,129,223,239, 71, 94, 94, 30,120,158,143,201,131,250, + 99,180, 95,123,236,203, 47,191,204, 52,117, 0,125,226,191,255,254,251,153, 5, 11, 22,228, 0,192,230,205,155, 49,121,242,100, +184, 92, 46,112, 28, 7,150,101,163, 68,174, 24, 5,208, 39,126,245, 62,245,126,229,251,192,129, 3, 89,225, 63,144, 97,202, 0, +244, 4,180,105,211, 38, 76,154, 52, 9,121,121,121,224, 56, 14, 28,199, 69,137,193,232,119,188, 99,217, 16,144,194,125,245,234, +213,182,234,234,234, 81,202,126,134, 97, 32,203,114,148, 17, 38, 35,124,163,227,153,134,158,248,129,176,104, 37, 73,130,122, 91, + 65, 42,226, 31,172, 72,104, 0, 70, 2,226, 56, 14,178, 44, 3,136, 21, 79, 42,226,207,134,128, 20,238,171, 86,173,178,207,159, + 63,127,100, 84,198, 57, 46,101,241, 27, 29,203, 52,140,196,175,240, 87,144, 9,241,107,195, 12, 22,196,205,117, 60, 1, 41,133, +151, 41,241, 43,219,153,130,154,251,130, 5, 11, 70,106,143, 43,126, 63,165, 52, 35,226,207,180, 17,196, 19,191,194, 95, 11, 75, +252,201,195,112, 24,212,140,128, 24,134,137, 18, 80,186,226,207,148,128, 18,113, 87,248,171,211, 76, 87,252, 12,195, 68,117,162, +211, 65, 34,241, 43,252,141,220,151, 84,197, 63, 24,221, 33, 93,211, 55, 35, 32,197,133, 80, 4,148, 9,241,103, 66, 64,106,151, + 77,219,106,169, 97,179,245, 13,118,100, 66,252,153, 50, 96, 51,226, 7,140,107,109, 75,252,201, 33,166, 20,205, 10, 72, 16, 4, + 0,136, 18,110,186,226, 79, 87, 64,234,206,186,186,191, 2, 0,129, 64, 0, 7, 15, 30,196,225,195,135,209,214,214, 6,135,195, +145,208,157, 49,227,242,104,143,167,131,120,226, 15, 4, 2, 56,112,224, 0, 14, 31, 62,140,142,142, 14,228,228,228,196,136,217, + 18,127,242,136, 42, 41, 51, 2, 58,116,232, 80, 68, 64,106, 55, 98, 32,248,255,178, 44,191,251,224,131, 15, 10,115,231,206, 29, + 37,203, 50, 26, 27, 27,177,119,239, 94,212,214,214,162,181,181, 21, 46,151, 11,133,133,133, 40, 44, 44,140, 12, 31, 42,174,203, +137, 22, 63, 0, 20, 22, 22,206,120,224,129, 7,152,185,115,231,230, 72,146,132,198,198, 70,212,212,212,160,174,174, 46,138,127, + 65, 65, 65,132,191, 90,248, 64,122,226, 31,140,134, 16, 85, 90, 70, 2,218,191,127, 63,142, 31, 63,174, 43,160, 76,250,255, 25, +112,129, 38, 86, 85, 85,225,177,199, 30, 67,109,109, 45, 56,142, 67, 73, 73, 9,138,138,138, 80, 94, 94, 14,158,231,193,243, 60, + 4, 65,128,221,110, 7,207,243, 81,121, 72,197,229,209,126,210,129, 36, 73,174,170,170, 42,252,225, 15,127, 64, 93, 93, 29, 88, +150, 69,105,105, 41,138,139,139, 49,105,210,164,136,216,109, 54, 27,108, 54, 91, 84, 63,128,101, 89, 75,252, 41, 64,235, 2, 77, +156, 48, 97, 2, 30,125,244,209,168, 11, 48,100,200, 16, 76,158, 60, 25, 28,199,129,231,121,216,108, 54,216,237,246,132,227,255, +253,237, 2, 1,128,219,237,134,211,233, 68,117,117, 53, 10, 10, 10, 0,244, 77,180, 41,105, 8,130, 16,201, 7,195, 48, 49,147, + 96,233,244, 5,210, 69,119,119, 55, 92, 46, 23,230,205,155,135,194,194, 66, 0,177,162,213, 26,129, 94,127,192, 18,191, 57,196, +148,156, 34,160,121,243,230, 33, 63, 63, 63,170,102, 83,220, 5,165, 22, 85,215, 66,122,174, 68, 42,134,145, 46,156, 78, 39,166, + 76,153, 2, 73,146,148, 55, 10, 70,226, 85,210, 82, 12, 89,201,139,194, 61,149,137,175, 76, 27,176,211,233,196,228,201,147,163, + 38,185, 20,168, 69,173, 22,191,214, 8, 82, 17,191, 82,153, 13, 54,196,228, 88,239, 2,104,107, 80, 69, 64, 44,203, 70, 4,148, +169,254, 64,218, 25,226, 56, 8,130, 16, 51,203, 11,244, 93,108, 69,236,138,225,198, 91, 6,145,108, 95, 32, 93, 40, 21,139, 40, +138, 9, 93,154, 76,138,127,176, 34, 38,231,106, 1,169, 71,119,212, 23,122,229,159,254,131,173,123, 26, 33,245,206, 4, 39,139, + 93,175,222,105, 40,172,116,161, 94, 23,163,204, 81,196, 91,162,145,168,230,239,239,142,176,222,186, 30, 61, 49,235,137,215, 18, +127,242,208, 53, 0,165, 86, 49, 18,208,189, 55, 44, 70,107,167, 15,247, 61,253, 30,182,239,107,140,156,251,238, 19,215, 35, 47, +215, 17, 21,182,189,203,135,250,195,199,241,228,203,159, 96,219,222,195, 0,226, 15,151,166, 11,181, 47,158,138,128,211, 57,150, + 41,104,125,114,189,213,158,153,232,240, 14,118,241, 3, 58, 51,193,132,144,136, 75,160,184, 58,138,127,168, 30,118, 43, 45,206, +195,143, 46,159, 21,117, 46,167,114,131, 20,129, 20, 23,230, 98,230,148, 83,241,212, 61,203, 48,103,218,105,225, 68,179, 56, 19, +156,140,128, 51, 41,254, 76, 27,129,130,254, 18,127,188,153,229,175, 50,116, 13,192,172,239, 62,178,124, 72,116,100, 44, 99,120, + 30,203, 48,184,254,202,185, 9,211,200, 4,210,173,217, 79,228, 40, 80, 60,119, 71,189, 79,217,159, 41,241, 15, 86,232,182,129, +137, 46,188,242,219,229,180, 71,157,199, 38, 24, 9,154, 50,254, 20,124,109,210,168,126, 17,191,153,124,100,234, 88,166,196,175, + 32,153,149,158,201,134,177,196, 31,141, 24, 3,208, 19,144,217, 81, 27, 51, 35, 65,107,239,253, 94,214,196,175,206,131,154,191, + 89, 1, 15, 4,241,171, 97,137, 63,251, 48,108, 1,128,248,190,186,222,133,103,152,248,226,207,102,205,175,199, 63,219,226,207, + 84,199, 93, 11,163, 78,176,246,152, 37,254,244, 97,216, 7, 72,228,255,235, 93,124,197, 5, 82,135,189,121,213,203,253, 46,254, +100, 4, 60,208,196,175,133, 37,254,236, 66,183, 5, 72,217, 5,226,162, 93,160, 64, 72,194,134,173,117,134, 98,202, 22,140, 90, +176, 76,186, 60,150,248,191, 26,208,237, 3,168, 93,136, 68,174,140, 26,108,239,113, 81,146,113,172,205,141, 63,189,248, 17,122, + 2,161,126, 23,127,188, 78,240,201, 32,254,120,162,181,196,159, 89,152,238, 3,152,153,184,154,116,201,111,117, 19,233, 47,241, +107,249,103, 82,252,153,156,171,136, 7,173, 72, 45,241,103, 23,134, 45, 64, 60, 97, 24,137, 97,247,107,119,129, 97, 24,136,146, +140,150,214,110, 60,254,183, 15,241,242, 59,219, 7,132,248, 51,213, 17,238, 79, 88,226,207, 62,116,199,239,146, 89,200,166,119, +158,192,115,168,172, 40,198,138,159, 46,129,195,198,247,187,120,146, 21,183, 37,254,193, 11,221, 22, 64,249, 78, 36,126,173, 40, +180,199,114,236, 2,230,127,109,124,191,139, 39,211, 46,143, 37,254,175, 46, 12,251, 0,102,196,175,103, 0,218,243, 30,189,235, +170,126,201,136,154, 67, 38, 93,158,254, 22,191, 26,102,132,109,137, 63, 61, 36,116,129,226,137, 95, 43,142,254, 28,237,137, 7, + 75,252,150,248,205, 34, 97, 39, 56,153, 97,208,129, 32,254, 84,133,111,137,127,112, 34,238, 98,184,100,135, 65, 7,130,120,180, + 60, 82,237, 11,156,104, 88,226,239, 31,152, 90, 10, 97, 36,126,143, 47, 16,117,174,199, 23, 24, 16,226, 57,153,197,175,119,111, +174,122,201,179, 37,254,204, 34,169, 97, 80,237,144,225,129,198,182,168,243,234, 15, 31,239, 23,210,241,112, 50,139, 95, 15,137, +214,251,107,143, 89, 72, 14,166,111,136,209,138,165,177,165, 19, 15, 62, 27,253, 34,145,251,159,252, 23,234, 15, 31,235, 55,242, + 70,208, 51, 86, 75,252, 22,244, 96,106, 24, 84, 43,150,111,255,226, 73,124,182,239, 72,204,121, 91,118, 29,196, 55,190,255, 16, +198,159, 90,138,191,220,255,125, 20, 21,228,102, 61, 3,122, 72,101,236,127,160,193, 18,127,255,192,112, 53,104, 60,255,255,111, + 15,253, 40,242,123,160, 33,149, 81,160,129,134,100,110,115,180,144, 30,210,186, 39,120,160,226,100, 22,191, 2, 75,252,253, 3, + 93, 21, 91,226, 63,177,176,196,223,127, 48,188, 39,248,100, 20,191, 2, 51, 35, 64, 39, 3, 44,241,103, 31, 9,159, 10,113,178, +137, 63, 24, 12,162,190,190, 62,102,189, 82,127,136,159,231,249,180,227, 16, 69, 17,117,117,117, 0,250,223, 0, 6,163,145,197, + 24, 64, 40, 20, 66,125,125,125,148,224,251, 75,252,233, 10,200,102,179,181,204,153, 51, 39, 43,239,233, 77,134, 67,170,231, 58, + 28,142,192,172, 89,179, 78,232,123,122, 29, 14, 71, 32,113,168,175, 14,136,242, 4,101, 0, 56,231,156,115,142, 6, 2,129, 19, + 46,160,143, 63,254, 56, 43,111, 90,183, 96, 65,139, 40, 3,176, 96, 97,176, 97,224, 59,245, 22, 44,100, 17,150, 1, 88, 24,212, +176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168,145,212, 43, 66,122,223, 35,252, 46,128,137, 89,226, 3, 65, 16, + 90, 54,110,220,152,149, 97, 80,139,127, 98, 12, 54,254,166, 13, 64,121,137,246,154, 53,107,132,121,243,230, 97,219,182,109,168, +168,168,128,205,102,139,122,215, 46,128,152,111, 51,191, 9, 33,232,233,233,193,130, 5, 11,178, 50, 15,161,240,239,125, 15,242, + 73,203, 95, 41,255,173, 91,183,162,188,188, 60,242,182, 72,189, 39,117,104,103,189, 19,229,203,237,118, 99,209,162, 69,131,170, +252, 77, 25,128,250, 13,242,243,230,205, 27, 5, 0, 91,182,108, 65, 32, 16, 64, 94, 94, 94,212,139,221,146, 93,138,172, 62,246, +197, 23, 95, 36,195,221, 52,212,252,231,206,157,123, 82,243, 87,202,255,147, 79, 62,193,196,137, 19, 77,243, 55,147,143, 3, 7, + 14,100,157,255, 64, 43,255,132, 6,160, 38, 95, 93, 93, 61, 74,217,207,178, 44,100,213, 91, 34, 83,185, 9,165, 63,238,202, 74, +196, 95,153, 8, 28,232,252, 87,175, 94,109, 88,254,137, 4, 98, 70, 68, 39,170,252, 21,156,168,242,143,107, 0,170,194,183, 87, + 87, 87,143, 84, 31, 83, 22, 78, 81, 74, 51, 70, 62,211, 23,192, 12,127, 32,115,133,159, 45,254,171, 86,173,178,207,159, 63, 63, +134,191,146, 94, 38,132,159,141,167, 94,159, 12,250, 49, 28, 5, 82,147,215, 22,190,146,129, 84, 11,190, 63,150, 41,127, 85,248, +175, 90,181,202,190, 96,193,130, 24,254,106,193,102, 74,252,131,177,252,117, 91,128, 68,228,149, 12, 24, 93,132,116,158,199,153, + 9,124, 85,248, 27,137, 31, 8, 47,149, 78,100, 4,169,184, 69,153,228, 31,175,252, 95,127,253,117, 20, 22, 22, 70, 58,193,122, +121, 81,126,107,191,149,223, 12,195,224,214, 91,111, 77,171,252, 99, 12, 64,227,179,233,146, 7, 0, 65, 16, 98,246,165, 42,158, + 76, 54,191, 95, 21,254,171, 87,175,182, 25,137, 7, 0,108,182,190, 85,211,201, 26,113,188,227,153,226,159,168,252,151, 46, 93, +138, 83, 78, 57, 5,121,121,121, 16, 4, 1, 60,207,199,140,102,245, 71,249, 71, 25,128, 81,135, 5, 0, 2,129, 0, 14, 30, 60, +136,195,135, 15,163,189,189, 29, 57, 57, 57,113,239, 28, 75,150,124, 38, 46, 64, 42,252, 91, 90, 90, 34, 15,163,170,172,172, 76, +200,191,190,190, 30, 64,216,119,157, 48, 97, 66,191,241,247,251,253, 56,120,240, 32, 14, 30, 60,136,214,214, 86, 56, 28,142,148, + 90,169, 68,199,179,197,223,227,241, 96,199,142, 29,216,190,125, 59,246,236,217, 3,183,219, 13,167,211, 9, 65, 16, 34,163, 64, +102,107,126,117, 11,240,171, 95,253, 42, 45,254, 81, 6, 32,203,242,187,189,227,180,163,100, 89, 70, 99, 99, 35,246,237,219,135, +253,251,247,163,173,173, 13, 46,151, 11, 67,134, 12, 65, 97, 97, 33, 92, 46, 87,100,252, 54,149,103,240, 24,237, 79, 7,169,240, +223,182,109, 27, 46,187,236, 50,188,241,198, 27, 16, 4, 33,174,112, 8, 33,216,184,113, 35,174,189,246, 90, 60,243,204, 51, 56, +253,244,211, 51,206,191,119,156,127,148, 44,203,104,104,104,192,222,189,123,177,127,255,126, 28, 59,118,204,176,252, 7,130,248, +147, 41,255, 69,139, 22,161,160,160, 0, 46,151, 11, 57, 57, 57,176,217,108,145, 22,160,191,245,163,117,129, 38, 86, 85, 85,225, +177,199, 30, 67, 93, 93, 29, 88,150, 69, 73, 73, 9,138,139,139, 81, 81, 81, 1, 65, 16,192,178, 44,108, 54, 27,236,118,123,164, +230, 76,165,179,146,165, 38, 56,105,254,219,183,111,199,103,159,125, 6, 66, 8, 74, 74, 74,162,120,168,239,136, 83,190, 63,249, +228, 19,108,220,184, 17, 0,240,195, 31,254, 48, 43,252, 31,125,244, 81,212,214,214,130,101, 89, 12, 27, 54, 12, 69, 69, 69,152, + 52,105, 18,120,158, 7,199,113, 17,254,202,118, 38,196,159,237,242,255,248,227,143, 35, 2,231, 56, 14, 60,207, 71, 68,175,180, + 0, 64,252, 26, 95,123,140, 16,130,219,111,191, 61,163, 6, 0,143,199, 3,151,203,133,234,234,106, 20, 20, 20,196, 36,200, 48, + 76,132,188, 50, 11,169,231,187,165,218, 34,164,139,100,249,111,221,186, 53, 50, 23,176,105,211, 38, 0, 97,247, 70,249,104,183, +213,251,178,193,223,237,118,195,225,112, 96,206,156, 57,200,207,207,143, 49, 72,165,188, 5, 65,136, 24,180,153, 73, 48, 51,198, +145,205,242,255,233, 79,127, 26, 83,254,118,187,221,208,255,239, 47,253,196, 24, 64, 78, 78, 14, 38, 79,158, 12, 73,146, 34, 23, + 89,129,146,176, 98,193, 44,203,130,231,249, 24, 23,232, 68,118, 36,147,229, 95, 95, 95,143,134,134, 6, 12, 31, 62,220,116, 26, + 30,143, 7,185,185,185, 89,227, 63,105,210,164,168, 73, 58,109,139,148,168,252, 83, 17,127,134, 90, 0,195,242,127,226,137, 39, +162,106,112,181, 49,107,107,251, 68, 53,191,250,247, 29,119,220,145, 86,249,199, 24,128, 98,157,138,107,163, 71, 64,177, 86,245, +183,182, 48, 37, 89, 66,243,177, 6, 52, 30, 61,130,150,214,163,104,235,108, 69, 87,119, 7,124, 61, 94,252,230, 23,107,178, 34, +158, 84,248, 3,136,136,127,229,202,149, 96, 24, 6,179,102,205, 66, 85, 85, 21,138,138,138,208,214,214,134,189,123,247, 98,227, +198,141,144,101, 25, 43, 87,174, 68,110,110,110, 84,124,153,228,207,113, 28, 4, 65,128, 44,203, 81,252,245,202, 75,237,126,206, +152, 49, 3, 71,143, 30, 5, 0,148,150,150, 98,203,150, 45, 9, 13, 67,207, 56,210,133, 81,249,255,252,231, 63, 79, 74, 63,253, + 85,121,198, 24,128,226,147, 17, 66,116,155,121, 45, 89,183,183, 27,141, 71, 15,163,165,181, 25,173,157,199,209,217,213, 1,143, +183, 27, 61, 1, 31,186, 61,221,232,118,119,161,203,221,137,110, 79, 23,186,221, 93,232,118,119,226,158, 95, 62,152,181, 11,144, + 44,127, 53, 24,134,193,213, 87, 95,141,202,202,202,200,190,178,178, 50,148,149,149,225,180,211, 78,195,186,117,235,162,194,103, +131,191,250,241,232, 70,110,150,242,173,124, 58, 59, 59, 81, 89, 89,137,125,251,246, 1, 0, 22, 45, 90,132,238,238,110, 20, 21, + 21,245,171,248, 1,227,242,127,228,145, 71,162,202,220,168,118,191,229,150, 91,146,106,193,210,205, 67,140, 1,168,107, 70, 51, + 68, 30,122,234,183, 81, 2,239,114,119,162,219,221, 5,143,207, 13, 89,150,225,114,230,225,212,202, 49,152, 50, 97, 26, 70,143, + 28,139, 85,127,252,117,220,248,210, 69,178,252, 1,160,165,165, 5, 37, 37, 37,152, 53,107, 86,148,248,149,139, 8, 0,149,149, +149,152, 53,107, 22, 0,160,167,167, 7, 14,135, 35, 43,252,181, 34, 81,127,100, 89,198, 77, 55,221,132,166,166, 38,252,230, 55, +191,193,196,137, 19, 65, 8, 65,103,103, 39,102,206,156,137, 35, 71,142, 68, 90,131,206,206, 78, 20, 23, 23,131, 16,130,221,187, +119,227,150, 91,110,193,136, 17, 35,240,248,227,143, 71,220, 38, 61, 65,165, 11,163,242,191,233,166,155, 50, 54, 82,152, 73,253, +196,125, 81,182, 25, 34,127,123,243, 57, 48, 12,131,138,146, 83,112,106,229, 24, 76,159,114, 14, 70,143, 24,131,209, 35,199, 98, +204,200,113, 24, 86, 92, 26, 21, 94, 49,128,108, 93,128,100,249, 3, 64, 73, 73,120, 5,109, 85, 85, 85, 76, 28,106, 40,199, 29, + 14, 71, 76,252,153, 52, 0, 61,254,132, 16,220,124,243,205,152, 54,109, 26,254,231,127,254, 7,191,250,213,175, 80, 90, 90,138, +101,203,150,225,175,127,253, 43,102,204,152, 1,143,199, 3,134, 97, 80, 85, 85,133,103,159,125, 22,203,150, 45,195,115,207, 61, + 7, 73,146,176,110,221, 58,188,242,202, 43,184,254,250,235,241,244,211, 79, 27,138, 42, 19, 32, 36,188, 50, 51, 47, 47, 15,165, +165,225,165,249,253, 33,254,140, 24,128,222, 5, 72,212,235,222,245, 78, 3,108,130,205, 52,193,108,139, 63, 89,254, 10,138,138, +138, 34,191,181, 29,104,237,113,117,252,153,228,175,196,171, 23,127,115,115, 51, 46,190,248, 98,200,178,140, 39,159,124, 18,235, +215,175,199,221,119,223,141,229,203,151,227,130, 11, 46,136, 12,231, 94,124,241,197,200,203,203,195,186,117,235,112,253,245,215, +163,184,184, 24, 94,175, 23, 23, 93,116, 17, 94,127,253,117, 67, 81,101,210,128,135, 14, 29,138,138,138, 10, 4,131, 65,200,178, +156, 49,129,103,186,242, 76,216, 2,152,233,120,152, 21,191, 81,211,158, 73,241,164,194,191,173,173, 45,210,225, 45, 43, 43, 51, +140,183,173, 45,252, 70,156, 80, 40, 4,158,231,179,194, 95,207,128, 21,190,247,220,115, 15,110,187,237, 54, 60,245,212, 83,248, +248,227,143, 49,121,242,100,188,246,218,107,104,106,106,194,230,205,155,225,247,251, 97,183,219,177,111,223, 62,156,126,250,233, +152, 62,125, 58, 90, 90, 90, 80, 83, 83,131,113,227,198,225,206, 59,239,196,154, 53,107,116,203, 67,175, 66, 72, 39, 15,133,133, +133, 81,226,255,253,239,127, 31, 85,169,104,243,169,253, 54,179,143, 97, 24,220,125,247,221,105,149,127, 92, 3, 48,211, 52,169, +201,153, 21, 92, 54,197,159, 10,127,165,102,223,187,119,111,196, 0,212, 92,149,126,192,222,189,123, 1,244, 61,194, 49,219,252, +181,124,171,170,170, 48,124,248,112,188,247,222,123, 56,243,204, 51,177,107,215, 46,236,221,187, 23, 53, 53, 53,120,251,237,183, + 81, 95, 95, 15,150,101, 49,109,218, 52,124,247,187,223,197,184,113,227,224,245,122, 49,100,200, 16, 28, 57,114, 4, 46,151, 11, + 83,166, 76, 73,120,125, 50,197, 95, 93,243,223,116,211, 77,105,213,238,217,154,193, 54,124, 58,180,242, 59, 17, 17,117,184, 84, + 12, 38,211, 72,133,191,130,141, 27, 55,226,180,211, 78, 67,101,101, 37,180, 79,204, 59,116,232, 80,100, 6, 88,157, 86, 54, 16, +207,128,175,188,242, 74,172, 92,185, 18,175,190,250, 42,246,238,221,139, 87, 95,125, 21, 27, 54,108,192, 93,119,221,133, 25, 51, +102, 0, 0, 54,111,222,140, 95,252,226, 23,184,241,198, 27,113,209, 69, 23,129,231,121,220,113,199, 29,184,225,134, 27,250, 69, +252,122,229,255,208, 67, 15, 69,141, 10,169,243,153,108,205,175,109, 1,210,129,169, 62, 64, 60,129, 43, 68,204, 90,180, 54,141, + 76, 35, 21,254,202,133,145,101, 25,235,214,173,139, 59, 15,160, 14,159, 77,254,234, 15,165, 20, 93, 93, 93,232,232,232,192,243, +207, 63,143,229,203,151,163,185,185, 25, 53, 53, 53,216,176, 97, 3, 54,108,216, 16, 53,107, 92, 89, 89,137,133, 11, 23, 98,246, +236,217,152, 59,119, 46, 74, 74, 74,112,222,121,231, 97,221,186,117, 88,190,124, 57,138,139,139, 81, 88, 88,168, 59, 79,144, 41, +254,218,188,220,124,243,205, 25,237,236,102,170,252,211, 30, 5,210,134, 51, 35,184,108,137, 39, 29,254, 64,120, 34, 44,153,248, +179, 5,109, 13, 58,115,230, 76,140, 28, 57, 18, 51,102,204,192,236,217,179,177,120,241, 98,108,217,178, 5,239,190,251, 46,238, +186,235,174, 40,241, 43,159,130,130, 2,172, 88,177, 2,207, 63,255, 60,238,188,243, 78, 44, 88,176, 0,205,205,205,120,232,161, +135,240,217,103,159,161,173,173, 13, 7, 14, 28,200,138,168,244,202,255,193, 7, 31, 52, 60,174,221,103,230,152,242,157,241, 22, + 64,143, 68, 42,157,218,108,142,244, 36, 66,178,252, 7, 18,244, 42,150,163, 71,143,162,166,166, 6, 13, 13, 13,240,120, 60,216, +185,115,103,228, 61, 2, 51,102,204, 48, 44,251, 89,179,102,225,209, 71, 31,197,170, 85,171,208,216,216,136,203, 46,187, 12,130, + 32,192,233,116, 98,216,176, 97, 89,187, 62,122,229,255,203, 95,254,114, 64,213,252, 10,226,186, 64,102, 8,170,207,233,111,242, +122, 72,133,191, 50,177,101,118, 41, 68, 54, 93, 32, 37, 15,218,188, 40,219,138,219, 98,183,219,117, 39,156,180,253, 45,189, 69, +114,218,178,202,180,248,245,202,255,129, 7, 30,208, 13,147, 74,205,175,142, 39, 43, 45,128,150,124, 60,129,171, 73, 39, 90,119, +210,159, 72,134,191, 50,177,101,118, 41, 68,182,197,175, 45,215,210,210, 82, 44, 92,184, 16, 51,103,206, 68, 85, 85, 21, 46,190, +248, 98,212,215,215, 99,250,244,233,216,188,121,115,228, 70, 30,109,158, 55,109,218,132, 37, 75,150,160,167,167, 7,185,185,185, +120,246,217,103, 81, 91, 91,139, 93,187,118,161,162,162, 34,171,215, 70,203, 69,189,196, 33,149,190, 64,182,202, 60,225,107, 82, + 19,145, 4,140,199,219,119,239,223,129,215,223,121, 9, 71, 91,143,162,161,233, 16, 10,242, 11,179,146,137,116,249, 43, 80, 47, +133, 80,142,233, 45,133,200, 54,180, 6,176,117,235, 86,116,119,119,163,163,163, 3,107,215,174,133,205,102,195,172, 89,179,112, +245,213, 87,227,191,255,251,191,177,112,225, 66, 20, 20, 20, 68,229,203,237,118, 99,229,202,149,248,244,211, 79, 17, 12, 6,241, +218,107,175,161,179,179, 19, 43, 86,172, 64, 81, 81, 17,134, 12, 25,146, 85,241,239,222,189, 27, 46,151, 11,163, 71,143, 6, 0, +172, 94,189, 58, 38,111,122,121,141, 23, 70,175,156,178, 54, 10,100,214, 66,149, 12,171,247, 73,178,132,255,251,251, 51,232,246, +116,193,233,116,193,223,112, 0, 71,154, 14, 97,243,206, 79,178,222, 18,164,194, 95,153, 64, 82, 47,133, 80, 47, 69, 86,126, 43, +199,179,237, 2,169,243,161,112, 30, 50,100, 8,138,138,138,240,157,239,124, 7,183,221,118, 27, 46,188,240, 66,140, 27, 55, 14, +183,220,114, 11,102,207,158,141, 21, 43, 86, 68, 12,116,211,166, 77, 88,185,114, 37,254,252,231, 63, 35, 55, 55, 23, 62,159, 15, +207, 62,251, 44,214,174, 93,139,177, 99,199,102,181, 86, 85,226, 45, 46, 46, 70,121,121, 57, 24,134, 1,165, 20,183,222,122,235, +128,170,249, 21, 36,124, 73,158,154,224,222,186,207,241,214,250,215,209,210,214,130,134,166, 67,200,207,139,189,225,132, 16,130, +255,125,234,126, 52, 30, 61,130,242,146, 10,116,117,119,162,179,187, 3,129, 96, 0, 84,150, 49,180, 40,251,111, 96, 74,166,128, + 1,192,110,183, 3,208, 95,234,160,158, 15, 80,142,103,243,162, 36,226,189,110,221, 58,252,236,103, 63, 67, 71, 71, 7,218,219, +219,177,100,201, 18,204,153, 51, 7,207, 63,255, 60,254,240,135, 63,128,101, 89, 44, 89,178, 4,159,126,250, 41,114,115,115,209, +208,208, 0,167,211,137,101,203,150,225,201, 39,159,196,195, 15, 63,156,117, 97, 17, 66, 48,124,248,240,136,248, 25,134,193,170, + 85,171, 98,102,130,213,249,213,238, 83,127,199, 75, 39,235, 45, 0,195, 48,144,100, 9, 47,255,243,255,224,243,123,145,151, 87, +128, 35,205,135,209,120,244, 8,182,238,250, 84, 87, 84,127,127,235, 5,216, 4, 27, 14, 28,174,135,215,231,193,241,246, 99,232, +114,119, 66,148, 68, 44, 93,242,221,180, 8, 39, 66, 50,226,215,142, 2,169,151, 66,104,197,175, 28,239, 15, 24,241,222,189,123, + 55, 26, 26, 26,112,238,185,231, 98,255,254,253, 24, 62,124, 56,242,242,242,224,112, 56,112,251,237,183,227,222,123,239, 5, 33, +225,103,100, 6, 2, 1,244,244,244,192,233,116,162,167,167, 7, 87, 92,113, 5, 46,189,244, 82,236,216,177, 3, 83,167, 78,205, + 42,119, 69,184,234,135, 94,221,118,219,109,166,175, 77,127,142,206,197,109, 1, 20,130,143, 63,247,123,180,180, 54, 27,214,232, + 90,242, 46,103, 30,246,214,237, 2,207,241, 16, 37, 17,161, 80, 16, 0,240,203, 31,223,141,155,127,116, 71,214, 51,101, 86,252, +202,133, 82,214,246,168,151, 66, 40,241, 0,136, 89, 10,145,237,137, 48, 35,222,183,222,122, 43,158,126,250,105,184,221,110,140, + 25, 51, 6,111,189,245, 22, 30,123,236, 49, 92,119,221,117, 88,188,120, 49, 26, 27, 27,193, 48, 12, 28, 14, 7, 94,127,253,117, + 60,243,204, 51, 88,182,108, 25,174,184,226, 10,240, 60,143, 21, 43, 86,224,134, 27,110,192, 71, 31,125,148, 21,238,234, 60,104, +243,113,255,253,247,155, 90, 11,148, 76,185,102,165, 5, 80, 34, 86,147,127,253,221,151, 96,183,217,117,107,244,203, 47,248, 78, +140,229,254,233,254,231,176, 98,205, 47,209,208,116, 24, 78,103, 46, 10,243,135,224,198, 31,252, 10,103, 78, 60, 59, 45,178,102, + 97, 86,252, 74, 97, 43,107,123,204, 46,133,200,182, 95,106,196,123,196,136, 17,120,245,213, 87,177,120,241, 98,252,232, 71, 63, +194,232,209,163,241,200, 35,143, 96,221,186,117,104,107,107,195,210,165, 75, 65, 8,193, 51,207, 60,131,174,174, 46,172, 93,187, + 22, 79, 62,249, 36, 46,185,228, 18,172, 92,185, 18,239,188,243, 78,212, 8, 87, 54,249,107,203, 95,253,248,146,129, 80,243, 43, + 48,245,166,248,220, 28, 23,106,190,216, 19, 83,163,223,188,252, 78,220,180,252,246, 24,242,163, 78, 25,141,117,191,127,165,255, +114,145,128,127,188,130, 87,195,236, 82,136,108,243, 55,250, 60,254,248,227,184,254,250,235,241,198, 27,111, 96,205,154, 53,145, +133,109,203,151, 47,199,154, 53,107, 34,143,117,169,171,171,195,138, 21, 43, 48,118,236, 88, 60,252,240,195,216,177, 99, 7,110, +184,225, 6, 84, 86, 86, 98,237,218,181, 89,231,175, 87,206,247,221,119, 95, 84, 24,237,119, 42,149, 74, 86, 91, 0,245,231,225, +255,121, 10,191,125,228, 14, 52, 29,109,128,211,153,139,130,188, 66,252,252,251,183,225,204,137,103,159, 48,203,141, 7,179,226, + 87,187, 56,132, 16,211, 75, 33,250, 99, 34, 76,143, 63,203,178,120,234,169,167, 98,142, 21, 23, 23, 99,199,142, 29,200,201,201, + 1, 0,236,218,181, 43,234,118,200,169, 83,167,102,221,237, 73,196, 95,185,121,125,160,212,252, 10, 76, 13,131,158, 58,226, 52, + 60,253,192,223, 6, 28,121, 61, 36, 35,126,109, 77,148, 76, 26,217, 68, 50,252, 9, 9, 15,145,182,183,183, 99,232,208,161, 0, +128,138,138,138,172,142,243, 39,195, 93,225,255,187,223,253, 46, 42,140, 58,108, 50, 88,177, 98, 69, 70,249, 38,108, 1,146, 25, + 69, 25, 40, 72,149,191,217,165, 16, 3,129,187, 54,140,222,194,182,254, 22,127,188, 60,220,121,231,157, 3, 82, 63,166, 70,129, +140, 10,125,160, 34, 89,254,138, 75, 99,118, 41, 68,127,184, 64,201,136, 63, 94,235,118, 34,112, 50,233, 39,198, 4, 79, 38,242, +122, 72,133,191,178,173, 93, 10,161, 14,167, 94, 10,145,237,252, 91,226, 55,135, 95,255,250,215, 16, 69, 49,173, 56,146, 90, 11, + 52,208,197,175, 32, 85,254,102,151, 66,100, 19,233, 10,127, 32, 92,159,254,210, 79, 38,250, 3,134, 45,192,201, 42,254, 84,248, + 43, 2, 55,187, 20, 66, 59, 71,144,105,156,204,226, 63,217,244, 19,211, 2,132, 66, 33,212,215,215, 71, 21,104,127,145, 87, 38, +164,210, 65, 42,252,149, 99,218,167, 66, 40,190,190, 34,120,101, 41,132, 18,190,182,182, 54,227,252,125, 62, 31,190,248,226,139, + 24, 81,199,187,187, 46, 83,226, 63, 81,229,159, 41,164,194,159,168,107,179,115,206, 57,231,104, 32, 16,200,254,106,181, 56,176, +217,108, 45, 31,127,252,113, 74, 47,106, 62,217,249,207,154, 53,235,104, 48, 24, 60,105,249,159,140,229, 79,178,221,156, 91,176, + 48,144,113,226, 7, 98, 45, 88, 56,129,176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168, 97, 25,128,133, 65, 13, +195,199,162, 88,176,144,105,244,190, 71,248, 93, 0, 19,179,149,134, 32, 8, 45, 27, 55,110, 52, 61, 12,106, 25,128,133,126,129, +242, 18,237,222,247, 32, 99,235,214,173,168,168,168,136, 60,224, 75,153, 45, 86,160,158, 56, 83, 79,250,169,161,221,239,243,249, +240,245,175,127, 61,169,121, 8,203, 0, 44,100, 29,234, 55,200,207,155, 55,111, 20, 0,108,217,178, 5,126,191, 31,121,121,121, +186,175, 73, 53,187, 4, 68,125,236,203, 47,191, 76,154, 27,231,116, 58, 86, 6, 2,193, 59, 36, 73, 54,101, 12,132,144, 32,165, +116, 37,165,244,222,164, 83,203, 2, 28, 14, 71,117, 48, 24,156, 35,203,178,217,254,140, 4, 96, 61,165,180,255,110,145,138,131, +147,157,127, 34, 40,226, 95,189,122,181,173,186,186,122,148,178,159, 97,152,200,251, 3,128,228,111,100, 50, 58,158, 44,152, 64, + 32,120, 71,205,190, 93, 92, 40,232,131,153, 79,125,109, 77, 8, 64,102,111,203, 73, 3,193, 96,112,206,254,253,187,152, 80,168, + 7,102, 62,117,117,251,101, 0,213, 39,154,183,130,147,157,127, 60, 40,226, 95,181,106,149,125,254,252,249,163,212,199,148, 55, + 73, 2,201,139, 95,121, 62,106, 38, 22, 2,114,146, 36,115,149, 35, 71,161,199,219, 14, 89,138, 94, 91,173,183, 72,162,172,116, +200, 81, 0,163, 83, 74, 45, 11,144,101,153, 25, 57,242, 84,248, 61,237,144,229,104,254,122,183,176, 87,148, 22,122, 0,244,207, + 51, 26, 77,224,100,231,111, 4,181,248, 23, 44, 88, 48, 82,123, 92,241,251,227,189, 10, 54,149, 86, 33, 89,244,190,144, 22,144, + 36, 49,230, 2, 64,103,157,144, 36, 83, 41,233, 84,178, 13, 25, 16,101, 29,254, 58, 79,113,144, 56, 71,246, 31,237,144, 44, 78, +118,254, 26, 36, 18, 63, 0, 30, 79, 27,159, 0, 0, 26, 61, 73, 68, 65, 84,195, 55,196,167, 42,126,165, 85, 72, 22,170, 51,104, + 88,240,189, 31, 74, 41,104,120,111,248, 67,195,203,131, 41,149, 56, 0,126, 66, 72, 69,210,169,101, 21,114, 88, 48,234,143,126, + 56, 6,128, 72, 8,113,245, 39,187,196, 56,217,249,135,161,246,249,141,196, 15, 0, 54,155, 45,242, 59, 19,226, 79,171, 5,232, +238,108,193,246, 77, 47,161,199,219, 5, 0,160,138,243, 67, 85,110, 80,239,111,150, 99,135,254,242,151, 55,250, 31,124,240,225, + 67, 28,199, 70,142,169,130, 17,237, 78, 74, 17,195,140, 82, 26,181,143,101, 24,209,102,231,126,235,245, 6, 86, 38,155,137,238, +206,163,216,190,233, 37,248,124, 93,189,123,228,200,151, 86, 70, 12,225,156,183,220,114,147,248,192, 3,191,191, 81,121,190,190, + 62,250,206,148,229, 88,254, 90, 48, 12, 35, 11, 2,243, 97, 79, 79,104,125, 82,228,113,242,243, 87,160, 30,237, 81,119,120, 1, + 32, 16, 8,224,224,193,131, 56,124,248, 48,218,218,218, 12, 95, 52,158,110, 71, 56, 89,112, 0,192,178, 4,185, 78, 59, 56, 18, +236,149, 45, 85,137,159,106, 12,129,186,150,127,111, 9,126,113,227, 79, 33, 83, 25, 20, 20,164,183,124, 9,244,198,110, 17,181, +143, 70,142,133, 35, 85,194, 29, 58,116,136, 59,123,198,185,119, 0, 88,153,108, 38, 24,142, 65,110,174, 29, 28, 19,236,187,236, +154, 31,170, 77,225,135,215, 44,193,205, 55,254,180,247, 65, 87, 50,148,134, 48,170, 1,101,244,246,169,127,200,189,191,194, 59, + 15, 30, 62,200,156,253,181,115,231, 0, 88, 63,216,248, 71,168,201,242,187, 15, 62,248,160, 48,119,238,220, 81,178, 44,163,177, +177, 17,123,247,238, 69,109,109, 45, 90, 91, 91,225,114,185, 80, 88, 88,136,194,194, 66,184, 92, 46,112, 28,103,216,161,237, 15, +241, 3,189, 6, 32,138, 50,186,186,124,240,122, 61,145, 3,234,251, 4,162,238, 25,160, 64,199,230,183, 96,119,228,130, 48, 28, + 34,102,162,106, 42,212, 61,135,152,251, 13,148,198,133,246,109, 80, 0,237,237, 29,144,101,115, 67,177, 90,136,162,140,206, 78, + 31,124, 62,119,100, 95,180, 7, 33, 71,253,220,177,249, 95,176,231,184, 0,134,131,186,182,213, 9, 29,179,165, 19, 28, 0,208, +222,222,134, 36,134, 50,191, 82,252, 85,152, 88, 85, 85,133,199, 30,123, 12,181,181,181,224, 56, 14, 37, 37, 37, 40, 42, 42, 66, +121,121, 57,120,158, 7,207,243, 16, 4, 1,118,187, 29, 60,207, 71, 70,131, 50,213, 17, 78, 22,189, 45, 0,131, 28,167, 13, 12, + 9, 63, 38, 60, 92, 57,107,221, 32, 26,221, 39,166, 34, 40,148, 78,155, 90,244,209,225,162, 13,169, 55, 66,213, 87,164, 37,160, +169,223,221,207, 49, 12,114,114,237, 96,152,240,155, 94,244,175,185,164,217, 31,130,140, 16,116, 79,136, 58, 89,229, 74,168,118, + 51,170, 42, 89, 6, 0,109, 7, 54, 9,156,236,252,213,112,187,221,112, 58,157,168,174,174, 70, 65, 65,223,227,243,129,190, 91, + 35, 5, 65, 0,207,243,176,217,108,225,167,143,119, 31, 71,221,163,223,131,167,177, 30,142,226, 50,148,159,127, 61,202,191,241, +253,148, 12, 35, 89,244,182, 0, 18,186,187,125,240,245,182, 0, 17,205,210,228,133, 29,251, 91, 57,187,239, 95,244,254,176, 1, +120,188, 61, 73,147, 87, 32,138, 98,152,191,199, 29,125, 32,202,135,214,212,139, 49,154,145, 13,246,171,142,246,253,139,217,239, +241,249,147, 35,173,194,201,206, 95, 13,167,211,137, 41, 83,166, 64,146,164,168, 39,107, 40,223, 12,195,128,227, 56,240, 60, 15, +134, 97,192,243, 60, 26, 63,120, 14,249,104,197,156,165,231,195,231, 13,226,179,183, 31,129,231,192,103, 24,251,195,255, 5,195, + 11, 73,181, 10,201,130, 3, 0,134,101,224,204,177,129,129,195,208,245,209,186, 44,138,138, 99, 92, 31,170,218,210, 49,152,168, +115, 85,255, 66,161, 16, 82, 5,195, 49,200,205, 17,192, 32,199,176,198, 83, 95,124,125,239, 66,142,173, 71,163,220,138, 88, 31, + 67,157,146, 40, 6, 83, 96, 30,198,201,206, 95, 13,142,227, 32, 8, 66,204, 44, 47,128,200, 75,253, 20,191, 95, 89,254, 48,108, +230, 37,216,253,159,167, 49,188,169, 1,195, 38,156,141,217, 23,148, 96,231, 71,159, 98,231,175, 23,225,140, 91, 95,132,189, 96, +168,233,190, 64,210,124, 1, 64, 18, 37,116,187,125,240,122, 60, 26,161, 70,254,105,106,255,222,111, 3,145,171, 3, 81,221,237, +232, 52, 40, 40,220,105,181, 0, 50,186,187,125,240,120, 60,136, 18,137, 81,109, 24,219,211,212,236,215, 57, 57, 74, 52,177,181, +168,199,151,186,128, 78,118,254,106,112, 28, 7,150,101,193,178,108,212, 19,247,244,196,170, 24, 66,238, 41, 19, 48,241,182,151, +177,125,245, 82, 76, 12, 2,195,167,205,195,212,111,124, 3, 95,110,219,140,109,183,205,193,153,119,190,134,220, 17, 19,178, 55, + 10,196,176, 12,114, 28, 54, 64,238,237, 3, 68,185, 41,250, 46, 11,160,105, 33,194, 59, 84,191, 35,161,117,126,107,226, 1, 69, + 48,152, 70, 11,192, 48,200,201,177,171,248,135,235,187, 79,183,212, 98,195,166,122,120, 60, 62,248,253, 65,248,131,193,240,183, + 63,136, 96,239,239, 76,162,247, 98,232, 46, 19,225, 56, 78,158, 50,101,194,182, 45, 91, 62,255,231, 87,141,191, 26,106, 95, 92, + 45, 80, 26, 10,224,240, 95,110, 69,247,190,143, 32, 5, 2,160, 84, 14,187,216,178,220,231, 42, 49, 12, 62,223,186, 31,108,193, +112,148,143,159,136, 83,207,154, 1, 87, 81, 33,182,221,125, 62, 78,255,217,159, 49,236,236, 69,113,221,161, 84, 16,105, 1,186, +220, 62,120,221, 94, 0,177, 53,187,161,176,161,250,173,221, 79,181, 34,143,236, 84,197,213, 23,222,227, 73,221, 7,149, 69, 17, +157,221, 62,248, 60,225, 62,140, 82,123,110,216, 88,131, 23, 94,252, 59,138,139,139, 83,142, 59, 83, 56,120,240, 48,115,198,228, +179,167, 1,136, 17, 80,182,249,203,178, 72, 24,134,163,122,251, 1, 64,239, 88, 50,252,213, 80,139, 81, 45,210,230,183,254,136, + 92,127, 19,166, 93,122, 1, 88, 65, 0, 97,121, 16,150, 3, 97,194, 31, 48, 12, 64, 24, 0, 4,224,108,128,232, 7, 66, 62, 12, + 29, 53, 22,179,243,139,240,233,159,254, 11,222, 35,215, 99,244,183,110,201,252, 40, 16,195, 50,112, 58, 4, 16,217, 22, 37,230, +237,159,127,137, 15, 55,214,192,219, 19, 64, 48, 40, 34, 16, 8, 34, 16, 20, 17, 12,134, 16, 8,132,194,223, 65, 17,146,148,153, +213, 17, 12,195,200,132, 16,221,139, 65, 8,233,161,148,222, 65, 41,125, 40,230, 60,197,135,150,237, 81,126, 45, 39,112, 40, 46, + 46, 70,231,177,154,164,125,220, 96, 48,196,132,164, 16, 3, 0, 60,203,203,130,192,199, 25,106, 73, 12, 95,103, 43, 68, 81,212, + 29,166, 72,200,191,181, 22,162,104,190,130,144,101,145,136, 34, 37, 84, 18, 73, 80, 18, 25, 42,202,132,112, 12, 21, 88, 78, 38, + 44,215, 91,247,136,164,167, 39,200, 50, 0,108, 54, 65,226,109,188, 28,207, 16,124,221,198,252,181,208, 19,166, 28,236,129,195, +233, 0, 79,253, 32,162, 8, 80, 30,144,121,128, 97, 65,249, 28, 32, 20, 8, 15,235, 18, 6, 8,249, 0, 42, 3,172, 0,136,126, + 56,243,243, 49,231,242, 75,176,245,173,191,192,115,112, 23,206,188,229, 57, 16, 18,107, 4, 41,143, 2, 73,162, 4,183,167, 7, + 30,183, 55,202, 0, 62,217, 82,135,255,247,194,203,253, 89,131, 26,230,160,161,161,193, 81,117,250, 89,247, 3,136, 49, 0, 81, +148,209,237,241,194,211,237,137, 62, 32, 43,199,253, 16,131, 62, 83, 4,100, 89, 36, 62, 95,128,235,234,236,180,185,189, 94,129, + 16, 66,115,115, 93,193,130,252,188,128,195, 33, 72,102,106, 75, 61, 4,227,164,159,144,127,208,103,202, 0,100, 89, 38,162, 36, + 17,159,183,135,243,122,220,130,183,199,207, 5,131, 1, 78, 18, 69,134,229, 56, 89, 16,108,162,195, 97, 23, 57,150,165, 61, 61, + 62,174,219,237,177, 49,132,208,252,188,188, 64, 81,241,144,158,156, 28,135,104,148,191,120,252,213,208,186, 64,202,167,100,254, +213, 56,248,204,141,216,191,237, 95, 80,207, 75, 51, 44,143,170, 69, 87, 98,196,240, 92, 48,160, 0,219, 59, 21, 36,137,136, 44, + 32,144, 2,224, 65, 49, 99,201,133,248,236,189,247,176,247,137,155,113,198,245,255,155,182,248, 1,165, 5, 96, 24, 56, 28, 2, +100,201, 22,229,162, 8,130,128,226,162, 98,180,183,236,131,164,115, 1, 82, 82, 66,178,177,244, 30, 14,184, 61, 8,137,162,238, +179,239, 24,134, 65,142,221, 6, 89,180, 71,237,183,219, 5, 0, 50,100, 89,214, 27, 35,137,129, 40,138,196,231,243,241, 45, 71, +143, 59,119,236,220, 87,242,215,151,255, 51,213,225,176, 5, 47, 94, 50,123,247,148,137, 19, 90, 74, 74,135,122,115,114,114, 66, + 28,151,138, 17, 24,167, 31,159,127,239,185,178, 94,247, 85, 21,187, 28,174,209, 59, 59, 58,236,199,219,218,114,106,235, 14, 20, +109,218,188,103,196,161,134, 99, 69,221,157, 62,103, 65, 65,174,103,100,101, 73,235,244,179,170,142,148,149, 12,241, 29, 58,210, +146,247,194,203, 27,102,129, 80,233,187, 87,156,251,241,215,102, 76,105, 44, 97, 75,125, 54, 27,163,223,156, 39,209,254,169, 71, +127,148, 79, 78,233, 40,156,126,251,107,145,237, 96, 91, 35,246,174,249, 54,198,205,154,135,138,145,195, 64, 3,221, 0,103, 7, + 41, 28, 5,118,228, 57,128,171, 28, 32, 12,104,231, 65,200,117,239, 64,110,222, 1,244, 28,199,228,121,115,241,241,107,111,226, +200, 59,103,162,114,225,117,105,137, 31, 80, 90, 0, 73,134,219,221, 3,183,219, 23, 61,246, 79, 41, 40, 40,196,144, 15, 98, 40, +245, 81,154,116,160,116,144,186,187, 58, 12,195,200,162,140,110, 79, 15, 60,221, 62, 68, 15,248,201,125,223, 9,222,239, 37,138, + 34,241,121,125,124,211,209,163,185, 91,182,238,174,248,199,127,246, 44,254,247,251,155, 29,255,248,199, 63,112,247, 93,119,156, +122,237, 85,254,127,157,125,214,196,198,242,210, 82, 79,142, 51, 5, 35,136,147,126,124,254,137, 13, 88,105,181,142, 29, 63,158, +211,112,164, 41,127,237,243,111, 77,157, 56,101,246,164, 95,255,246,143, 76, 89, 89, 25,236,118, 59,142, 28, 57,130,109,219,182, +141,123,250,169,167,100, 57,212,190,167,181,189, 51,111,243,214,125,229,219,182,109,195, 47,110, 90, 62,121,194,248, 83, 91,135, + 20,230,251,109, 54,206,192,159, 53,111, 1, 90, 3,208,250,236,238,250,109,168,251,227,143, 49,245,130,111,162,176,192, 14,234, + 61, 6,112,118, 48,149,231,128, 25,179, 16, 68,125,107,100,201, 25, 96,134, 77,132, 84,243, 38,196, 29,127, 1,219,115, 28,211, +207,159,143, 13,107,111, 71,229, 55,174, 6,195,219,140,104,152, 66,111, 11, 64,194, 45,128,104,131,186, 35,235,176,135, 35, 15, +175, 2, 77,203, 5, 54,134,105, 25, 25, 7,100, 24,244,214,160, 66,212,126,229, 5,216,137, 4,164,212,252, 77, 71,143,230,110, +222,178,123,248,219,239,213, 44, 90,191,254, 67,135, 40,138, 56,239,188,243,112,202, 41,167,228, 92,119,237, 53,139, 36, 42,191, + 53,253,108,185, 33, 21, 35,136,151,126, 34,254,189,153, 48, 60, 63, 20, 8, 50,237,109,237,246,109, 91,119,151, 61,247,226,134, +243,215,174,251,191,194, 41, 83,166,192,231,243,245,142, 22,249, 49,108,216, 48, 44, 94,188, 24, 11, 23, 46,100,158,120,226,137, + 51, 86,175, 94, 21,202,205,205,197,216,177, 99,209,218,218,149, 31,244,251,185, 80, 64,100,100,123, 80,183,195,156,168, 2, 81, +160,238,140,234,137,255,216, 71, 47,162,233,141, 7, 49,227,210,203,225,100,125,128,207, 13,176, 54, 16, 87, 57, 48,250, 60, 72, +148, 98,255,129, 86,236, 62,208, 6,175, 63,132,211, 42,242,113,246,248, 18, 8, 99, 23,131,110,250, 3,164,186,183, 33, 12, 29, +135,161,167,140,192,177,237,255, 70,217,215, 46, 48,197,203, 8,125, 45,128,199, 7,119,183, 55,106, 20, 39,188,216, 42, 44,254, + 19,109, 0,241,210, 23,101,197,135,246,169,231,133,194,252,229,200,134,238,185,178, 44, 18,191,175,135,107,106,106,201,221,188, +101,215,240,119,214,215, 46,122,127,253, 6,135, 40,138,240,122,195,163, 98,227,199,143,199,179,107,255,146,115,237,247,174, 94, + 8, 74,223,154,126, 54, 26,134,151,151,184,227,249,204,201, 32, 46,127,196, 55, 96, 89,150, 73, 79,192,207,118,116,117,216,159, +123,241, 63,231,124,178,105,103, 33,207,243,104,110,110,198,227,143, 63,142, 15, 62,248,128, 30,109,110,236, 41, 45,171,112,204, +155, 55,143, 44, 95,190, 28,223,255,254,247, 49,122,244,104,149, 59, 73, 33, 81,137,136, 52, 68,228,222, 86, 39, 38,157, 20, 90, +128, 40,241, 3, 56,248,255, 86,162,167,110, 35,102, 95,122, 41,248,192, 49,208,144, 8, 66, 88, 0, 12,104,229, 92, 72, 50, 69, +125, 99, 59,254,245,233, 33, 4, 69, 9, 59,235,143,227,143, 77, 93,248,225,133,167,227,154,243, 39, 0,179,110, 6,234,222, 6, +245, 28, 67, 89,249, 20, 28,126,231,233,204, 24, 0,195, 16, 56,236, 2,164,144,210,156,132,199,254,237,142,112,159, 32,101, 3, +200, 76, 39, 33, 28, 85,156,135,248,134,125,104, 33,170, 6,149,229,190, 62, 0, 12, 46, 42, 0,132, 66, 34,211,222,209,105,223, +178,117, 87,197,219,235,247, 47,126,255,253, 13,118, 81, 20,177,115,231, 78,204,156, 57, 19,199,143, 31, 71,125,125, 61,198,142, + 29,139,103,215,254, 37,231,154,107,150, 45, 34, 4,255,116,204,226, 14,241,101,165, 94, 67,159, 89,139, 56, 53,104, 92,254, 9, + 12, 24,178, 8, 41, 36,145, 80, 32,200,130, 8,197,161, 80, 8,159,127,254, 57,174,191,254,199, 98,249, 80,254,179,111, 46,158, + 86,207,210, 9,228,192,145,163,133,207, 60,253,248,153, 47,189,244,210,208, 85,171, 86,145, 9, 19, 38, 68,162, 8,143,121,244, +166, 33, 27,148, 85, 18, 45,128,182, 19, 44, 7,123,176,255,225,107,225,178,201,248,218,249, 11,192,202, 94,244,240,165, 16,137, + 13,185,190, 58, 16, 80, 72,206, 82, 80, 81,196,198,221,205,104,110,243, 98, 91,109, 11,188, 61,225,185,161,191,189, 95,135,111, +205, 25, 5, 97,232, 25, 96, 8, 3,218,211,129,252,138, 60,236,219,177,197, 20,167,120,136,180, 0, 30,143, 31,221,238,222,158, +126,239, 24,190, 44,135,151, 59, 83, 12, 4, 3,136,239, 67,123, 60,126,116,119,247,141, 84,200, 80,106,206,222,111,157, 11, 40, +203, 50,233,241,251,217,246,142, 14,199, 63,223,221, 49,243,131, 15,183, 68,196,191,116,233, 21, 82, 83, 83, 51, 11, 0, 75,151, + 94, 33,189,240,194,223,216, 49, 99,198, 96,221,186,231, 29,215, 94,243,237,121, 85, 19, 78,125, 49,191, 48,207,207,178,140,204, + 48, 76,194,156,198,245,225,227,242,239,251,211, 5,195, 80,150,103,100,135,211, 17, 28, 55,186,104,203,130, 5,243,206,234,238, +234, 12,126,235,226, 25,235,207,156, 60,246,168, 32,216,196,206,246, 14,231,191,215,239,158,191,119,223, 23,195,114,115,115,213, +249, 7, 0,136,162,204, 82, 74, 40, 40,161,178,129, 1,164,210, 2, 16, 66, 16,236,104,198,222,251, 47,199,200, 9, 99,113,234, +184, 74, 64,242,162,179, 59,136,141,175, 60,135,115,174,188, 26, 32, 4, 84, 12, 64, 18, 69, 80, 73, 66, 83,171, 27, 31,126,222, + 16, 53,249,106, 23, 88,128,202, 8,133, 66,176,133, 35, 6,203,219, 16,234,241,232,166,159, 12, 34, 45,128,221, 46, 64, 12, 9, + 81,171, 63,115,148, 81, 8, 42,135, 63, 90,152, 27,192,201, 8,226, 25, 0,195,132,107, 75, 81, 12,215,152, 74,200, 8,255, 56, +144, 68,137,136,162,196,128,216, 10,125, 62, 31,246,237,219,135,107,174, 94,214, 67, 16,240, 0, 24, 10, 0, 4,129,246,107,174, + 94,150,187,118,221,115,142,202,202, 74,240,130, 93,160,146, 76,168, 72,205,207,188,196,109, 1, 18,240,143,123,135, 24, 96,227, + 57,169, 40, 63,175,231,202,111, 45,216,221,217,217,253, 5, 75, 8,117,185, 92,254,252,188, 60, 63, 24,192,235,245,216, 64, 56, +254,200,145, 35, 81, 67,218,148, 82,108,223,190, 29,229, 37,133,109,246, 28, 94,228,121,197,152,211,107, 1,148,111,255,177, 67, +216,253,219,139, 48,105,238, 28,148,150,228, 2,178,136,150,163, 93,216,185,126, 61,114,135,143, 67,200,219, 13,146,199,130, 6, + 61,144,218,234, 16, 32, 78,140,173,112,198,220,137,187, 96,114, 25, 68, 49, 4,182,113, 91, 88,135,124, 14,130, 33, 25,142, 33, +233,191,138,160,175, 5,240,246,160,219,237,139, 74, 92,148,194,125,128,176, 27,164, 35,231,254,124,183, 64,130, 62,128,199,231, + 67,183,218,135,238,221, 15, 0, 48,104, 1, 0, 80,142,231,164, 92,167, 35, 48,122, 68,238,167,115,102,207,152, 26, 8,248, 67, + 23,157, 63,101,203,171,255,220, 60, 69, 9,196,115,156,116,209,249,103,124,240,131,235,174,154, 68, 88, 91,193,148,211, 43,182, +229,186,156, 1,142,231, 36, 0,212,204, 27,228,227,118,194, 77,240, 55,238,195,200, 36, 24, 10, 50, 65,127,128,149, 66, 18, 97, + 9,161,148,202,196,231,243, 9,161, 80,144, 37,132, 80, 89,146,200,194,249, 85, 31, 95,250,205,133, 83, 65,216, 72,207, 90, 12, + 73,236,208,226,220,198,101,151,207,223, 94,224,116,249,109, 60, 39,197,185, 21, 51, 97, 30, 21, 40,174, 79,221,159,126,138, 73, +115,206, 65, 73, 33, 1,101,120, 28, 58,112, 20, 95,236,216,133,179,239,125, 31,199, 54,191,137,182,218,183, 80, 60,116, 2,224, +110, 6,249,240, 62,248,207,127, 10, 51,199, 13,193,210,185,149,120,111,103, 11,130,162,132,153, 19,134,226,226,153, 21, 8,133, + 66,176,111,121, 24, 0,192, 20, 84,162,179,195,141,194,241, 51, 77,115, 50,130,170, 5,224, 17, 10,132, 71,129, 20, 56, 28,189, + 45,130, 44,131,154,172, 1,162,145, 57, 3,137,223, 2, 48,176,219, 5, 4,237,118,168, 47, 84,142,122, 28,221,224, 2,218, 4, + 94, 26, 90, 92,232, 91,182,244, 27, 59,151,120,186,247,139, 65,137,117,123,189,118, 96,115,212, 98,144, 49, 99, 78, 57,126,230, +148,113,255,228, 5, 78,204,115,185, 2, 67,139,243,125,188,192,107, 23,233, 27, 35, 65, 31, 32, 62,127, 99, 3,146,164, 16,233, +236,236,182,213, 29, 56, 52,228,197, 87, 54, 76,170, 63,208, 84,198,178,125,171,253, 29, 14, 91,224,155,139,167,127, 94, 85, 53, +234,216,148, 73, 99,254, 33,201, 18, 35, 74, 34, 19, 10, 73, 44, 75, 64,157, 46,167,127,104,113,145,215, 85,232,242, 19,150,208, + 56,157,109,115,249, 68,159, 1,136,221,199, 49,100,248, 57,160, 8,162,118,103, 45,142,183,116, 96,250,253, 27,192,231, 22, 96, +248,130,101,248,228,205, 63, 96,212, 25, 19,193, 52,110, 7,231,239,132,125,227, 61,240, 76,191, 13,151,206, 42,199,101,231, 84, + 68,226, 2,149,192,111,126, 20,220,161,247, 1,134,131, 92, 54, 13,181,255,248, 0,179,239,123,196, 52, 39, 35,168,250, 0, 61, +125,125,128,222, 90, 95, 18, 41,178, 62, 10,100,210, 72,226,117,130,195, 62,180, 79,197, 63,236, 71,132,223,160,217, 91,251, 27, + 92, 64,142, 1,117, 58,156, 65,174,140,147,134, 6, 10,124,221, 94,159,208,212,216,172, 37, 70,115,115,236,129,242,210,146,174, +156, 28,123,200,158, 99, 19, 5,158,147, 57, 6,212,172,107, 16, 15,233,240, 15,244, 4,216,174,142, 78,251,186,231,223, 62,235, +201,181,175, 78, 26, 59,118,108,212,113,175,215,139, 25,103, 79,201,187,245,231,195, 95, 43, 46, 42,240,130, 2,221, 30,175,205, +237,118,219, 41,165,132, 99, 56,217, 97, 19, 68,129,101,100, 6,233,231, 71, 61,246,159, 63,225, 28,124,250,175,127, 35,228,243, +192,117,218, 89,152,250,155,191,130,229,109,225,155, 98,114, 11, 48, 98,241,143,240,197,158, 13, 24, 63,252,108, 72, 95,252, 27, +185,187,159,134,112,116, 43, 60,147,150, 35, 88, 60, 9,148,176, 16,218,118, 33,119,207, 90,216,154, 63, 1, 0, 48,195,167,163, +161,177, 3, 67,167,156,139,220,138, 49,105,113, 5, 52,125,128,144, 35, 92,227, 40,139,216,114,114, 4, 80,164, 49, 10,148, 17, + 40,203,177, 19,251,208, 57, 14,117,141, 31,230,175,108,199, 29,135,231, 64, 29,156, 77,148,237,172, 36, 82,137, 48, 28,137, 9, + 44,138, 18, 35,209, 16,161,176, 33,216, 19, 96, 37, 81, 34, 34, 47, 17,158,231,204,117,130, 77,244, 1,146,229, 47,203, 50, 9, +132,130,140,183,167,135, 63,220,208, 54,108,252,248,241,104,105,105,137, 10,211,210,210, 2,134, 99, 72, 32, 20,100,125,254, 30, + 46, 20, 18,217,154,186, 67, 67,223,124,251,243,185,146, 4, 97,226,132,161,219,190,117,113,245, 30,135,195, 22, 98,121,214,144, +100, 50, 45,128, 50,252, 57,254,199,143,194,123,100, 31, 4,215, 16,216,139,202, 99, 38,198, 70, 94,248, 19,124,240,147, 63, 34, +127,200, 44,148, 77,188, 28,210,254,127, 66,104,253, 28, 67,222,251,175,216, 72, 89, 1,236,105, 95, 71,135,152,143,253,155,223, +195,185,127,220, 97,154, 79, 60,168,250, 0,126,184, 61,225,217, 94,165,182, 13,137, 18, 34,143, 72, 57,209, 6,144,200,135,246, +248,225,233,173, 65,149,144,162, 40,246,141, 32,154,185,128, 50,192, 16, 74, 99, 23,228, 81,210,213,237,113,144, 35,148,242, 54, + 78, 98, 8, 67,121, 27, 47,230,187,242,252,133, 5,121,254,156, 28,187,152,216, 8,210,225,111,208, 2,200, 50, 36, 73, 34, 84, +150, 8, 97,123, 7, 76,101, 25,199,142, 29, 67, 77, 77, 13,238,190,251, 46,217,239,235,106, 95,124,222,228, 29,238,110,159, 35, + 24, 8,242,235, 63,218, 61,210, 19,112,125,237,131, 13,155, 5,159,207,135,217,231,124,109,230,194,249,238,250, 96, 97,190,207, + 38,240,146,113, 62,146,155, 8, 83, 62,174,202,211, 13,103,132, 57,155, 3,179, 87,127,136,173,247, 92,130,206, 97, 69, 24, 55, +229,106,144,163,159,129,186,155, 65,221,205,128, 44,129,228,150,128,184,202, 64, 74, 39,225,224,151,205, 56,184,251, 19,204, 89, +245, 30,236, 67, 82,122,143, 95, 12, 56, 0, 32, 12,129,221,198, 33,100,231,163, 22,195, 69,106, 36,163, 81,160, 12,192,108, 47, + 33,209, 60,128,221,206, 33,232, 80,143,250,200,166, 91, 0, 68,133,146, 65,136, 38, 49, 98, 31,242,240,159,222,168, 86,211,117, + 56,132,192,165, 75,102,109, 59,103,230,196,195, 37,252, 80,175,205, 38,196,157, 15,136, 63, 19,156,152,191,190, 0,251,230, 56, +212, 79,228, 56,124,248, 48,102,207,158,141,215, 95,127,131,121,228,145, 71,138, 63,219,190,173,250,189, 15,255,227,158, 56,105, +170,235, 7, 63,186,139, 95,184,112, 33,188, 94, 47,234,234,234, 32, 75,129, 46,150, 37, 50, 97,137,254,232, 79, 84, 90,230, 96, +230,198, 21,229,227, 40,174,192,220,135, 54, 97,207,159,111,198, 71,175,191,141,242, 49, 99, 80, 56,116, 52, 92,227, 74, 65, 24, + 6,158,214,227,232, 58,222,138,166,255,108,134,125,232, 72,156,251,248, 46,112,142,220,196, 36, 76,130, 3, 0, 89,146,225,245, + 6,208,237,233,137,186, 73, 37, 20,146,122,127,157, 72, 23,168, 23, 9,231, 1,130,232,114, 71,175, 88, 12, 6,195,226,144, 77, +172, 5, 2, 0, 6,160, 28,207, 74, 54,155, 61, 84, 94, 86,216,186,125,251,246,242,178,178, 50,212,127,113,192,198,113, 92,153, + 58,172,223,239,199,180, 51, 79,119,157, 62,126,196,139, 5,121,121,126, 62,209,124, 64,130,181, 64,241,248, 71,250, 1, 49, 81, +202, 32, 12,237,109, 28,251,146,190,238,186,107,165,123,238,249, 45,123,209, 69, 23,225,206, 59,239,132, 32, 8, 60,207,243, 67, +120,158, 7,165, 20,173,173,173,120,229,149, 87,112,239,189,191,241, 92,121,201,244, 77, 46,151,211,207,115,108,220, 17,173, 84, + 58,193,137,196,223,119,140,197,164,159, 60, 2,247,145, 26,180,237,254, 8, 13,159,189,131,182,247,158, 7,149, 68, 20,142, 61, + 11,197, 83,207,199,148,111,206, 70,225,152,105,166, 57,152, 69,164, 5,176,217,120, 56,236, 66,212, 98,184,156,222,135, 20,156, +216, 62, 0, 20, 18,198,199, 24,192,110,231,224,236, 29, 53,137,140,163,231,244,254, 48,154,221,212,129,192, 50,114,158,203, 22, +184,228,130,233,187,190,243,237,203, 71,174, 94,243,191,121,211,166,197, 22,252,193,131, 7, 65,194,211,167,136, 55,202,212,135, + 56,199, 19,240, 55,154,156, 2,100, 16, 66,168, 32,176, 98,190,203,225, 13, 6,131, 56,118,236, 24, 10,242,184,166, 63, 62,242, + 59,255,203, 47,191, 60,102,233,210,165, 56,227,140, 51,112,202, 41,167,160,161,161, 1,187,118,237,194, 11, 47,188,128, 99,205, +181,251,111,254,241,249,159,158, 50, 98, 88, 71, 65,129,203,207,243,140,156, 76, 45,111,132,228,197,223,183,157, 95, 89,133,252, +202, 42,156,122,193,242,180,121,152, 5, 71, 8,145, 3,254, 0,211,227, 15,134,251, 0,125, 55,252, 66,150,195,247,117, 82, 89, + 60, 97, 6,160,208, 9,134, 66, 32, 36,182,115, 10,128, 6,253, 65,226,243, 7,209,229,241, 35,114, 17,101, 64,150, 57,200, 0, + 68, 49, 24,246,167, 77,128, 16, 34,231, 58, 29,129,211, 70, 86,180,126,111,233,244, 55,127,247,235,155, 38, 54,181,116, 20,107, +125,181,130, 60,135,231,226, 69,103,237,204,117, 58,123, 88,134, 72,178, 44,199,157, 15,232,189,125, 81,207,138, 19,242,135, 44, + 26,206, 99,240, 28, 43,229, 56,115, 2, 23,124, 99,234,206,169,103,158, 94, 8,128,187,240,188,169, 59,198,140, 41,111,171,173, +111,218,247,236,159, 87,143,104, 62,214, 57,164,167, 39,228,116, 56,120,111,217,176,130,246,179,167,141, 62,180,236,210,139,154, +139,139, 10,188,249,121, 46,127,142,205, 38, 34,193,124, 70,239, 13, 69,166, 60,214, 68,194, 55, 58,126, 34,192, 57,115,108,199, +107,106,246,151, 12, 43, 41, 67,143,167, 61,178, 22, 84, 18,101, 12, 47, 25, 1, 73, 12,161,187,171, 93,247,228, 68, 47,217, 54, + 51, 79, 70, 19,148, 41,237,237,132,215,127,217, 0,187, 93, 56,162, 61,238,116,218,124, 53, 53, 53,206, 97,195, 42,224,119,183, +247, 45,128, 22,101, 20,149,141,128, 40, 6,209,221,169,207,223, 8,178, 44,139,206,252, 28,207,216,211, 42, 67, 63,190,110, 88, + 91, 32, 24,224,169, 36, 19, 74, 41, 33,132, 80, 48, 4, 2,207,139,185,185, 57,126,123,142,224, 15,133, 68, 89,146,226,184, 56, +178,140, 47, 15, 54,194,225,176,117, 39,203, 95, 22, 69,120, 60,157,198, 75,129,100, 81,206,205,177,247, 76,157, 50,254,200,105, +163, 43, 94,130, 12, 56, 93,142,128,221,102, 15,149, 13, 45,110,159, 62,109,252,193, 96, 48,196,201,162,204, 48, 28, 35, 11, 2, + 47,230, 56, 28, 33,167,211, 22,180,219,236, 34,195, 48,114, 80, 20,251, 30,241,164,151, 6,100,124,249,101,179, 46,127, 61,164, +242, 80,171, 19, 5,206,110,227,183,191,244,242,203,139,254,235, 39, 63,192,190, 61, 59,194, 79,137,150, 40,130, 33, 25,231, 46, + 94,128,142,246, 38,184, 61, 6,119, 3, 37, 50, 0, 19, 4, 18, 27, 81,120, 77,210, 39,155,107,252,146, 36,127,162, 61,238, 16, +184,230, 23, 95,126,249,180,159,253,244,135,216,183,231, 51,136, 98,184,182, 12, 6,101, 44,184,224, 92,116,182, 55,193,231,247, + 39,219,186, 83, 6, 76,200,238,176, 75,188, 32,248, 37, 81,100, 36,205,179, 76,121,142,145, 57,142,151, 32,129,250,253,193,184, +153,144,101, 25,155,182,214,138,146, 36,198, 24,112, 60,254, 95,191,224, 92,116,118, 54,193, 23,255,153, 61, 20, 4, 98,158,203, +225,181,219,120, 63, 0, 8, 2, 39,133, 39,195,108,112, 74, 14, 38, 16,148, 24,197,120,121,142,149,121,150,145, 9, 67,168, 36, +201, 84,146, 18,223, 42, 42,203, 50, 54,110,174,209,229,175, 69,178,181,254,137, 20, 63, 0,112, 57, 60,243, 95, 47,189,252, 70, +237,183, 46,187,148,253,246,119,111, 66,237,254,237, 16, 69, 9,227,198,159,137,161,195,134, 97,231,150,215, 16,240,167,104, 0, +137,214, 10,153,104, 34, 40,165, 56,210,216,138,151, 94,251, 56, 20, 12,138, 49, 79, 44,200,145,185,127,190,244,210,235, 63,187, +252,178,203,200,183,191,123, 51,106,107,183, 67, 20, 69,140, 31, 63, 21,195,134, 13,195,231, 91, 95,135,223,159,242,205, 60, 50, + 0,153, 50,132, 48,154,231,203, 82, 2, 26,146, 66, 8, 73, 72,104, 92,135, 27,142,225,197,191,127, 36, 7,131,210,122, 67,254, +151, 95, 70,190,125,205,205,168,173,217, 14, 89, 20, 49,118,252, 84, 12, 43, 45,197,222,237,111, 34,152,152, 63, 5, 32, 50, 76, +120,101,170,198, 29,147, 89,134,144,190,251, 16,101, 26,146,228,240,123,102, 96,238, 73, 28, 7, 15, 31,195, 11,127,223,160,203, + 95, 15, 39,139,248, 1,128, 80, 74, 49, 98, 68,241,245,109,173,158, 71,174,186,242, 34,246,194, 11, 47,192,216, 49,167,194,235, +110,197,151,117, 91, 16, 12,196,185, 23, 52, 93, 3,136,211, 70, 72,146,140,163,199, 58,177, 99,215,129,158, 87,223,220, 44, 73, +178,248,115, 81,164, 79,233,133, 29, 49, 98,232, 89,109,199,187, 23, 95,117,229, 69,100,201,197, 75, 48,246,180, 83,225,243,181, +226, 96,253, 22, 4,253,153,121,226, 89,178,144, 69, 25, 77,199,218,177,125,199,151,226,203,175,109,146,131,162,248, 22,165,244, + 51,189,176, 17,254, 87,125,147, 92,188,100, 9,198,142, 61, 21,126, 95, 59, 14,127,185, 29,193,160, 87, 21,105, 22,249,106,183, +101, 25, 77, 71,219,177,117,199,151, 98,216,120,141,249, 43, 56,235,172,179,232,167,159,126,138, 64, 32,112, 66,196, 95, 91, 91, +139,171,174,186, 10, 91,183,110, 53, 29, 57, 81,106,225,252,252,252,211,120, 78,126,212, 31, 16,167,248,124,129,161,148,210, 19, +250, 14, 97, 66, 32, 11, 2,127, 68,150,229, 79, 66, 33,105, 5,165,180, 54, 94,248,252,252,252, 33, 60, 43, 45,246, 7,197, 82, +175, 55,144, 3, 36,126, 36,120,150, 65,109, 54,190,155,138,242,145,160, 36,173,167,148,182,197, 11, 60, 96,249, 83,249, 72, 48, +152,152, 63,208,103, 0,193, 96, 48, 97, 71, 56, 27, 72,197, 0, 34, 79, 99,238,234,234,170, 7,176, 48, 43,204,250, 1, 93, 93, + 93,237, 0,158, 59,209, 60, 82,197,201,206, 95, 65, 48, 24, 68,125,125,125,204,227, 10,251,195,237,225,121,221,103, 38,196,133, +245,154, 84, 11, 25,131,205,102,107,153, 51,103, 78,250,139,244,211,228,144, 76,120, 98,166, 35,106,193,194, 87, 21, 39,212,207, +183, 96,225, 68,195, 50, 0, 11,131, 26,255, 31,244, 45,114, 84,193,188, 23, 3, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; diff --git a/source/blender/editors/datafiles/splash.png.c b/source/blender/editors/datafiles/splash.png.c index bbce480ecba..73a11f2fdc6 100644 --- a/source/blender/editors/datafiles/splash.png.c +++ b/source/blender/editors/datafiles/splash.png.c @@ -1,2483 +1,6328 @@ /* DataToC output of file <splash_png> */ -int datatoc_splash_png_size= 79258; +int datatoc_splash_png_size= 202316; char datatoc_splash_png[]= { -255,216,255,224, 0, 16, 74, 70, 73, 70, 0, 1, 1, 1, 0, 72, 0, 72, 0, 0,255,225, 0, 22, 69,120, -105,102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,255,219, 0, 67, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,255,219, 0, 67, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,255,192, 0, 17, - 8, 1, 15, 1,245, 3, 1, 34, 0, 2, 17, 1, 3, 17, 1,255,196, 0, 31, 0, 0, 1, 3, 5, 1, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 7, 10, 3, 5, 6, 8, 9, 2, 1, 11,255,196, 0,103, 16, 0, 1, 3, 3, 2, 4, 3, 4, 6, 4, 7, - 11, 5, 9, 13, 9, 1, 2, 3, 4, 5, 6, 17, 0, 7, 8, 18, 33, 49, 19, 65, 81, 9, 20, 34, 97, 10, 21,113,129,145,240, 35, - 50,161,193, 22, 23, 24, 66,177,209,225, 25, 26, 36, 40, 51, 56, 73, 82, 98,232,241, 72,104,105,136,168, 41, 52, 57, 67, 84, 88, -120,150,178, 37, 38, 68, 83, 87,115,130,135,147,152,181,200,210, 54, 89, 99,114,146,184,213,214,215,255,196, 0, 29, 1, 0, 0, - 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 5, 6, 7, 1, 4, 8, 9,255,196, 0, 80, 17, 0, 2, 1, - 2, 4, 4, 3, 4, 6, 7, 5, 7, 0, 7, 9, 0, 1, 2, 3, 4, 17, 0, 5, 18, 33, 6, 19, 49, 65, 7, 34, 81, 20, 97,113, -240, 8, 35, 50,129,161,209, 21, 66, 82,145,177,193,210, 36, 51, 98,162,225, 9, 67, 83, 84,114,130,241, 52, 56, 68, 85,116,148, -211, 22, 23, 24,115,131,146,147,180,181,255,218, 0, 12, 3, 1, 0, 2, 17, 3, 17, 0, 63, 0,159,198,150,150,150,134, 6, 22, -150,150,190,100,122,143,199, 67, 3, 31,116,203,220, 60, 68,108,181,171,123, 70,219,170,254,224,209, 41,183,140,167, 25,101, 20, -135,189,241, 73,101,249, 28,165,136,243,170, 77, 69, 84, 74,116,149,133,163,149,185, 15,180,226,185,211,132,158, 97,151,159, 35, -212,126, 35, 92,108,227, 63,131, 43,145, 85,251,143,120, 54,213, 18,235,236, 86, 37,191, 87,185,237,148,243, 72,170, 67,146,224, - 11,147, 81,162,128, 57,167, 69, 42, 5, 75,143,213,230,242, 75, 94, 34, 50,148, 86,158, 42,113, 39, 27,112,159, 14, 38,119,193, - 60, 55, 23, 19,212, 81,204,173, 89, 4,134, 67, 34,209,128,198, 87,130, 56,138,188,146, 2, 0,242,151, 49,169, 50,114,101, 1, -128,179,188, 40,225,158, 7,226,222, 37,108,143,142, 56,150,110, 23,166,172,133,150,142,120,196, 98, 54,173, 44,162, 36,158, 73, - 85,146, 56,200, 44,124,193, 4,140, 4,124,232,139, 41, 61,145,109,196, 58,132,173,181, 37,104, 80,200, 82, 72, 32,131,243, 26, -247,174, 11,240,211,199, 61,219,180,206, 66,179, 55, 36, 79,186,108,118, 29, 68, 54,166, 58, 92,122,228,181,217, 65, 13, 22,219, - 47, 30,106,157, 61,174, 95,242, 14, 16,243, 97, 37, 45, 44,128,150,181,219,219, 46,247,181,247, 6,129, 2,231,180, 43, 48,171, -148,106,139, 65,216,211, 33, 58, 29, 65,232, 57,219,113, 63,172,203,233, 86, 66,219, 88, 74,208,160, 66,146, 14,147,240,211,197, -174, 19,241, 67, 46, 53, 25, 37, 79,179,102,180,202, 13, 86, 95, 49, 2,166,156,244, 38,219, 9, 97,213,178,207, 29,212,220, 7, - 17,201,120,194,158, 38,248, 69,197,190, 22,102, 66,159, 60,166,246,156,166,165,136,165,204, 33, 4,210,212,142,160, 95,115, 12, -218,119,104, 36,179, 11, 18,134, 72,237, 33,202,244,180,180,181,103,226,173,194,210,210,210,208,192,194,210,210,210,208,192,194, -210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210, -215, 13,125,163,254,220, 13,158,224,130,240,159,178,214, 5,156,238,249,111,173, 45,150, 21,116, 81,219,173,155,110,200,219,199, - 39,194, 98,116, 8,215, 53,192,138,116,167,170,213,245, 68,151, 17,255, 0,171, 32,177,132, 50,233, 76,186,132, 39,249, 26, 91, -214, 67,195,217,207, 19,102, 9,149,228,116, 47, 95, 90,224,177, 85, 42,161, 80, 16, 11,200,238, 85, 35, 64, 72, 5,157,128,185, - 10, 46,204, 1, 98,226, 46, 38,200,248, 79, 45,124,219,136, 51, 20,203,104, 81,130, 6, 96,204,206,237,114,169, 28,104, 26, 73, - 28,128, 78,148, 86, 58, 85,152,128,170,196,119, 43, 75, 80,124, 63, 73,159,141,131, 84, 83,195,103, 56, 94, 20, 82,242,212,138, -127,240,103,117, 13, 77, 44, 20,171,195,105, 85,127,227,115,194, 91,193,101, 37, 75, 16,146, 20, 1, 1,180,147,204, 58,247,192, - 39,183,219,102,184,168,189,173,253,156,222,171, 32,236, 38,233,221, 18,227,210,109, 58,154,110, 6,238, 13,182,188,107,111,132, -162, 53, 29,138,204,184,113, 36,218,181,233,114, 84, 26,131, 10, 91, 82, 88,144,233, 68,118,234,107,152,244,120,206,205,115,175, - 7,248,243, 35,161,151, 49,169,202, 86,166,150,157, 75,200,105,230,142,102,141, 64,185,102,140, 17, 33, 10, 55, 98,138,225, 64, - 44,108,160,156, 64,178, 47, 27,188, 58,226, 12,194, 28,174,151, 57,106, 90,186,150, 9, 16,169,134, 72, 82, 71, 38,202,171, 35, - 3, 26,179, 27, 5, 18, 50, 22, 36, 42,130,196, 12, 72, 35, 75, 94, 80,180,173, 41, 90, 8, 82, 84, 1, 73, 29, 65, 7,204, 29, -122,213, 97,139,107, 11, 75, 75, 94, 29,117,182, 91,113,231,156, 67, 76,180,133, 56,235,174, 41, 40,109,182,208,146,165,184,226, -212, 64, 66, 2, 65, 36,147,128, 6, 78,134, 6, 61,233,107,140, 28, 63,123, 94,236,238, 39,253,160,119,151, 9,219, 61,108,210, - 43,219, 63,103, 88,247, 29, 77,157,231, 77, 86, 91,178,239, 43,178,215,171, 80,169,213, 69,219, 84,214,227,166, 57,178,252,106, -195,236,197,150, 92,117, 83,126,173,247,214, 23,238,178, 89, 3,231,181,219,218,129,127,123, 56, 15, 15,137,177,182,194,209,220, -115,188,169,221, 85, 85, 13,213, 86,172,210,254,165,254, 47, 78,219,136, 94,225,245, 74, 79,188,123,199,240,222, 95,139,226,126, -167,184,183,201,250,202,212,182, 30, 7,226,105,179,220,183,134,191, 71,242,179,156,218, 1, 81, 12, 50, 72,136,121, 70, 41, 38, - 5,203, 48, 17,183, 46, 39, 37, 28,171,130, 52,149, 12,109,136, 92,222, 32,240,164, 60, 61,154,241, 87,233, 46,118, 69,147, 78, -105,167,158, 56,228,145,121,162,104,160, 34, 48,170, 90, 84,230,202,138, 36,140, 50, 48, 58,149,138,139,227,180, 26, 90,134, 23, -247,207,155,251,255, 0,155, 30,209,127,235, 93,227,255, 0,232,210,254,249,243,127,127,243, 99,218, 47,253,107,188,127,253, 26, -152,127,247, 29,226, 55,254,233,139,255, 0,155,166,255, 0,234, 98, 19,255, 0,226, 11,194,239,253,245, 55,255, 0, 37, 87,255, - 0,210,196,207,116,181,166,252, 3,241, 57, 89,226,255, 0,133,157,171,223,235,138,219,165,218, 85,203,250,153, 89,157, 81,183, -232,178,101,204,165,211,157,166, 93, 53,202, 3,109,195,147, 56,120,175, 33,108, 82,154,113, 69,125, 66,221, 80, 29, 0,214,228, -106,172,174,163,168,203,171,107, 50,250,180, 17,213, 80, 75, 36, 50,168, 33,128,146, 39, 40,224, 48, 36, 16, 25, 72,184, 36, 30, -160,219, 22,246, 95, 93, 77,154, 80, 80,230, 84,110,100,163,204, 97,138,120,152,130,165,163,153, 22, 68, 37, 88, 6, 82, 85,129, - 32,128, 71, 66, 47,133,165,165,165,173, 92,110, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105, -105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,107, - 3,168,110, 45, 6, 60,249,116,122, 75, 21,123,182,183, 5,239,118,155, 75,181, 41,174, 85, 12, 9, 92,174,168,197,170, 85,150, -166,169,212,105, 67,194, 32,183, 54,108,117,130,164,229, 32, 40, 29, 12, 12,103,154, 90,104,166,239, 21, 38,143, 91,167,219,119, - 13,169,123,209, 43,245,152, 83, 39,208,233, 9,165, 83, 46,121,213,134, 41,225,159,126, 83, 12, 88,181,170,177,130,134,188, 97, -151, 38,251,171, 42,228, 95, 35,139,228, 86, 47,143, 95, 53, 54,130,157,111,109,119, 6, 76, 70,208, 28,118, 91, 44, 90, 40, 45, -183,221,106, 77, 58, 85,222,220,217, 43, 74,114, 75,108,197,113,213, 99,149,182,214,178, 18, 70, 6, 28, 29, 45, 88,232, 23, 37, - 18,231,136,236,202, 36,244, 76,110, 60,135, 33,205, 97, 77,191, 18,125, 54,115, 56, 47, 83,234,212,201,141, 55, 38,149, 80, 64, - 82, 10,216,146,211, 78,164, 45, 36,160, 5, 2,111,154, 24, 24, 90, 90, 90, 90, 24, 24, 90, 90, 90, 90, 24, 24, 99,120,143,168, -110,117, 51,103,174,233, 91, 65, 29,201, 23,200,138,203,116,255, 0,119,109,167,170, 12, 69,114, 67,104,169, 72,165, 50,240, 40, -118,166,136, 69,226,200, 32,144,175,137, 0,184, 17,174, 20, 60,223, 25, 18, 95,121,199,215,190,238, 72, 83,138, 83,202, 92,139, -187,156,186,165, 18,178,175,210,126,183, 54,117, 36,133, 36, 40, 16,160, 8, 61, 8, 35, 32,253,218,208,158, 40, 56,198,176, 54, - 85,185,246,165,163, 22,151,119,238,105, 66,153, 92, 54,212,151,168,214,187,171, 78, 67,245,249, 12, 43,244,179, 83,148,148,194, -109, 65,206,185,121,108,167,148, 47,157, 60,116,224,190, 27,204, 99,139,140, 56,175,196,124,203,131,114,188,170, 14, 66,193, 75, - 56, 17, 77, 38,167,144,114, 96,182,185, 42,165,190,146, 16, 51, 50, 70,132,233, 84,102,199, 72,120, 15,198,220, 77,151, 75, 55, - 7,112,151,134,185,103, 26,102,153,172,252,246,158,170, 2,101,134, 61, 49,198,121,211,223, 68,116,145, 17,172, 23,210,170,242, - 53,139, 51,170,227,143,215, 53,223,196,133,153,238,191,194,219,167,117,237,195, 59,196,247, 52,214,107,151, 20, 5,201, 13, 99, -196, 83, 45,200,148,149, 45, 41, 42, 0,144, 49,147,140,231, 88,195, 91,199,188,114, 93,109,134, 55, 39,112,100, 60,226,194, 90, -101,171,158,186,235,142, 44,159,133, 40,109, 50,201, 90,179,216, 0, 78,177,155,198,244,186,247, 18,225,151,114, 93,181,137,181, -218,221, 69,209,207, 34, 82,202,131,105, 39, 13, 68,134,194,112,136,145, 17,156, 33,166,210,148, 36,118, 25, 36,157,221,188, 47, - 45,145,246,104,112,186,239, 19, 59,221, 70, 93,217,123,214,159,133, 73,179,173, 8,106,140,213,106,227,187, 42,177, 94,153, 78, -181,233, 18, 37,182,177, 72,167,177, 22, 51,207,212,167,150,214, 25,110, 59,132, 37,229,170, 52,119,121, 7,194,159, 15,120,203, -198,222, 60,159,134,248, 23,136, 51,106,108,146, 23, 75,212, 85,212,201, 45, 66,164,141,162, 37, 49,195, 36, 81, 52,243,178,187, - 44, 97,214, 56,145, 92,188,204,177,150,110,196,241,107,196,110, 10,240, 51,128, 32,226,126, 62,225,252,162,167, 58,153, 28,251, - 61, 37, 52,112,211, 51, 70,161,230, 97, 36,209,203, 42,211,192,172,138,210, 20,105, 37,118,141, 82, 21,105, 2,174,163, 72,218, -189,222,170,162, 69,126, 85,135,123,206, 76,183, 23, 46, 77, 77,218, 13, 81,227, 33,199,137, 91,146, 29,120,199, 37,106, 82,148, - 73, 81,238, 73, 58,203,118, 91,127, 55, 47,135,155,149,114,173,233, 18, 19, 1,201, 8, 23, 5,159, 86, 18, 27,166,212,210,217, -229, 80,122, 50,192, 84, 10,130, 81,144,135,219, 1,196,246, 80, 91,101, 77,171,150, 85, 47,164,143,198, 35,151, 97,170, 81,118, -183, 97,169, 54,130, 37,133,179,102, 61,111, 92, 53, 14,120, 40, 95,195, 22, 93,192,171,133,185, 46, 62,166,176, 22,235, 65,161, -204, 74,144,218, 6, 18, 59,121,195,151, 16, 59, 31,237,121,225,250,232,188,108,251, 74, 62,216,241, 35,181,232,138,205,221,106, - 37,246,165,173,185,210, 97,201,126,152,244, 42,139,108,182,186,213,159, 85, 16,103, 34, 50,222,109, 50, 33,200,136,182, 92, 7, -194, 14,201,234,207, 16,126,128,222, 38,248, 71,147,143, 16,120, 59,138,106, 38,207, 50,127,174,217,162, 46,210, 29,204,124,216, -156,104,105,141,227, 9, 42, 77, 79, 51,176,134, 89, 64,146,237,200,222, 28,127,180, 43,194,191, 25, 51,195,225,207, 24,112,181, - 60, 89, 30,113,245, 32, 50,202, 17, 98, 29, 36, 17, 76,191, 88,176,139, 72,205, 19,193, 81, 10, 35, 77, 20, 76, 99, 32,118, 27, - 96,248,137,177,183,250,218, 21,123,106, 66,161,213,225, 37,166,235,214,228,213,160, 84,232,242,156, 78, 64,113, 41, 56,147, 13, -101, 43,240,159, 71,192,224, 65, 7,149,105, 90, 19,106,226, 39,139,222, 29,184, 78,110,198,145,196, 38,229, 82,246,206, 6,226, -214, 42, 20, 27, 86,171, 91,137, 84, 93, 38, 85, 78,151, 17,153,211, 89,157, 82,131, 5,214,105, 13,162, 43,237,171,196,148,182, - 91, 86, 72, 74,138,129, 26,224,102,199,110,133,115, 99,247, 86,135,116,199, 84,134, 26,129, 81,250,170,231,166, 5,148, 9,180, -119, 95, 17,234,144,223,108, 28, 41,230,185, 75,173,103, 33, 47,197, 65,236, 8, 56,167,210,118,170,198,173,240,251,194, 53, 82, - 35,168,126, 52,237,202,189, 36,178,235,106, 10,109,214,222,179,169,238, 54,226, 20, 58, 41, 37, 10, 4, 31, 67,171, 87,232,151, -199,112,248,245, 61, 22, 67,196,119,203,243,234, 9,141, 61,127,179,133, 66,234,105,230,150, 10,168,209,213,213, 57,175, 11,164, -177,216,133,120,223, 78,133,116, 11, 85,125, 48,120, 26,127,163,229, 30, 99,196, 92, 52, 23, 49,200,107, 97, 90,156,188, 84,150, -112,140, 42, 96,138,162,146, 87, 70, 70,147,148,147, 35,197, 32, 96, 89, 36,143, 86,182, 71, 38, 80,214, 61,247,102,238,101,169, - 68,190,118,250,231,162, 94, 86,117,203, 5,186,157, 2,229,183,106, 17,170,180, 90,196, 7, 74,146,220,186,125, 66, 35,138,110, - 83, 5, 72, 80,230, 66,136,202, 72,238, 8,214, 89,168, 64,112,175,237,189,221,253,134,225,159,102,120,123,225,163,133,105,251, -189, 82,218,155, 26, 53, 58,249,186, 43,172, 93, 53, 88,104,168, 59, 62,163, 61,244, 83, 40, 54, 52,101, 57, 18,156,216,146, 0, -149, 42, 82, 84,242,185,200,142,216, 71, 50,250, 53,193,103,210, 48,176, 55,151,114, 45,253,161,226,123,106,154,216,235,138,230, -171,179,111,210,175,154, 45,102, 69, 70,198, 98,189, 45,246,226, 66,166, 92,208, 43, 49,218,153,107, 54,228,197,120, 94,244,183, -101, 50,219,175, 32, 72, 17,218, 11,121, 61, 57,156,120, 63,198,153,119,233, 74,154,108,168,214, 80, 80, 73, 45,180,205, 3,212, -154,116,102,229,204,244,233, 33,144,107,140, 7,210, 20,181,143,217, 29,185,103, 35,241,187,128,243, 63,209, 20,149, 89,184,162, -204,179, 40,225, 7, 84, 53, 9, 74, 42, 93, 19,153, 2, 84,188, 98, 35,203,145,140,122,139,232,184,251,102,226,253,250,171,113, - 37,195,245, 6,251,107,107,171, 91,211,182, 52,173,200,122,165, 79,163, 51, 98,207,189,104, 17,110,183,106,213,101, 50,154, 93, - 53, 20, 39,167, 9, 42,157, 33, 82, 99,134, 90, 13,243,184, 95, 72, 64, 60,195, 47, 80, 32,128, 65, 4, 17,144, 71, 98, 53, 2, -158, 50, 84,211,191, 72, 26,128,243, 1, 10, 14,113, 65,195,147,232, 82, 80,159,137,193, 34,193, 91, 78,246,248,156, 5, 45,144, -174,224,164, 16,122, 13,118, 87,143, 15,111, 68, 62, 31,247, 89,238, 25,120, 83,218,134, 55,231,120,232,117, 24,214,189,203, 90, -170, 59, 86,145,107, 83,239, 39, 22, 24,122,204,183,168, 86,222, 39,222, 53,230, 36, 56,219, 82, 84,212,136,236,177, 41, 11,138, -145, 33,196, 56, 91, 91, 48,240,167, 51,118,225, 88,120,116,201,154,212,103,249,106,102, 51,243, 57,112,197, 76,172, 19, 86,169, - 89,130, 8,193,123, 6, 98, 25,182, 0, 19,182, 17,203, 60, 97,202,145, 56,190,163,137,196,121, 61, 47, 14,230,178,101,148,252, -190,100,210,213,186,151,211,162, 37, 82,237, 35, 4,185, 84, 5, 84, 92,179, 1,190, 36,133,165,168,139,220,190,218,255, 0,106, -111, 13,237, 80,239,190, 41,184, 29,183,169, 27, 89, 90,168, 69,138,228,225, 66,187,237, 23, 16,167,193,117, 20,246, 46, 35, 90, -169, 70,163, 85,156,101, 14,120, 77, 84, 34,149,172,182,172, 54, 74, 84, 7, 85, 46,223,109,143, 13, 22,231, 5,182, 47, 26,148, -171,102,247,187,237, 43,183,112,233,251, 83, 88,178, 40,166,138,205,225,100, 95, 50, 40, 85,218,228,250, 85,194,221, 66,123,108, -120, 76, 51, 65,115,145,214,150,161, 37,154,132, 89, 13, 39,195,116,242,177,215,248,105,197,180, 35, 47,120,168,226,205,105,243, - 57,189,158, 25,168,170, 33,169,137,167,177, 60,146,241,185, 8,246, 6,193,244,130, 65, 0,146, 8,196,131, 46,241, 91,131, 43, -206,100,147, 87, 77,147,212,229, 48,251, 76,240,215,211, 79, 73, 50,211,220, 14,112,142, 68, 5,227,187, 45,202,106, 32, 16, 72, - 0,223, 29,148,210,212, 92,183, 35,233, 31,162,243,160,209,233,124, 25,112,161,184,187,163,185, 51, 34, 63, 58,227,131,120, 83, -170,147,233,118,147, 44,202,113,150,152,250,163,111,196,153,119, 10,221,142, 27,116,188,153, 48,153, 96,159, 12,248,202, 37, 72, -198,248, 54,250, 69,151,109,251,190,214,214,200,241,107,178, 86,230,220,166,238,185, 96,217,113, 46,235, 45, 87, 21, 53,219, 86, -231,169,204, 77, 62,159, 26,239,181,110,153, 50, 30, 76, 37,212, 94,142,195,174,178,251, 78, 69, 46,135, 23, 29,196,133, 99,108, -248, 71,199,171, 65, 85, 94,249, 46,143, 99, 86,119,128,205, 7,180,136,210,247,113, 0,144,200, 87, 98, 84, 91, 83,129,116, 86, - 4, 95, 68,120,211,225,211,102, 52,121,116,121,233,147,219,157, 99,142,160, 83,212,123, 33,145,237,166, 51, 80, 99, 17,134,243, - 0,198,250, 99, 38,210, 50,144,109, 43, 29,120,113,198,217,109,199,157, 90, 91,105,164, 45,199, 28, 89, 9, 67,109,161, 37, 75, - 90,212,122, 37, 33, 32,146,124,128,215, 14,253,164,222,219,221,157,224, 86,233, 59, 61,101,218, 15,111, 86,249, 34,155, 14,165, - 92,161, 49, 88, 69, 18,210,176, 89,169,199,110,101, 41,155,170,176,220,103,222,151, 90,126, 19,172,190,154,124, 86,130,209, 30, - 75, 79, 63, 37,143, 17,182,220,230, 77,175,244,142, 56,132,142,220,122,222,253,112, 91,245, 86,205, 92,140,191, 79, 85,221,100, - 38,245,165, 74,102, 61, 69,151, 99,183, 46,153, 83,187,226,187, 77,174,184,128,224, 80,100, 59, 27,198, 13,148,165,214,201,230, - 8,229, 94, 22,113,190,113,150, 83,230,244,153, 69,168,170,198,168,121,147, 65, 20,147,169, 23, 6, 24,228,145, 93,245, 13,211, - 97,172, 88,173,193, 4,175,156,120,191,192, 25, 38,109, 81,146,214,231,119,174,163, 58,103,229, 65, 81, 52, 84,237,123, 17, 52, -177, 70,232,133, 78,207,185,229,155,135,210, 65, 2, 71,219, 95,199,191, 8,187,217,187,147,118, 59,104, 55,194,208,220,189,198, -166,208,234, 87, 13, 70,153,102, 59, 46,189, 76,133, 76,164,205,137, 79,158,183,238, 88, 81, 85, 78, 18, 91,151, 54, 58, 11, 41, -148,167, 73, 89, 33, 4, 37, 68,109,254,160, 19,244,127,110,123,126,214,227,115,113,175, 26,237, 82, 45, 14,212,183,182, 43,113, - 46, 74,213,102,160,164,196,131, 73,183,233, 85,139,126,167, 62,165, 57,121, 34, 52, 86, 32, 48,235,174, 30,161, 9,104,247,198, -186,103,185, 63, 72, 83,125,183,147,120, 38,237, 23,179,215,133,198,183, 45,182,164, 77, 98,145,112,222, 16,174, 10,229,197,113, -192,167, 58, 82,245,199, 30,212,183,230, 68,102,215,162, 45, 1, 42, 11,168, 75,116,161,181,165, 79,248, 14, 57,225, 53, 36,226, - 95, 8,115, 26, 94, 38,172,201,120,104, 61, 93, 6, 89, 75, 4,245, 53,117,114,195, 4, 81, 25, 67,146,100,145,185,104,163,202, - 74,160,212,224, 2, 73, 32, 18, 34,220, 41,227, 94, 89, 89,194,148, 57,247, 21,178, 81,102, 57,181,101, 69, 61, 45, 29, 20, 83, -212, 77, 48,132,160, 2, 56,151,153, 35,155,184, 12,231, 66, 18, 85, 64, 4,128,101,135,165,168,156,219,158,223, 30, 44,184,114, -221, 75,123,111,253,161,252, 36, 55,183,244, 42,247,131, 37,117,235, 78,155, 93,160, 92, 80,232,239,201, 68,119,171,244,186,109, -102,169, 54,159,121,211,227, 40, 44, 58,212, 57,113,220,230, 73, 71,139,226, 0,218,186, 89,198, 87,182,211,135, 30, 14,235, 27, - 75, 6,163,102,223, 59,171, 70,222, 93,176,167,238,197,161,117, 88, 18, 40, 31, 82,200,182,106,181, 25,180,248, 5, 70,177, 61, -135,125,225,126,226,183, 10,124, 49,200,151, 18,149,128,224, 82, 83, 20,171,240,211,140,105,171,114,250, 40,178,177,152,182,106, -143, 37, 52,148,179, 67, 60, 19,172, 66,242, 24,230, 71,208, 74, 13,202,146, 26,219,128, 70,248,152,209,120,173,192,245,116, 57, -149,124,217,177,202,215, 39,120,227,171,138,178, 9,169,234, 41,218, 83,166, 46,100, 14,156,192, 28,236, 25, 67, 45,246, 36, 29, -177,217,173,112,163,112,253,133, 28, 55, 95,188,105,212,248,162,173,202,171,215,108,187,186,163, 93,190, 47,125,152,175,202,157, - 87,160,214,183, 90,175, 85,141, 82,118,228,122,179, 46,114,165,201,181,228, 73,126,179, 50,101, 17,245, 57, 25,115, 93,105,180, - 56, 41, 5,116,160,202,240,191,237,190,220,158, 50,248,231,219, 77,158,218, 29,130,147,111,112,189, 93,145,119,193,184,247, 10, -229,165,214,170, 87,151,189,209,182,206,237,185,233,142,205,168,210,100,170,143,106, 52,237,203, 71,166, 71,110, 59,134, 83,174, -180,249, 30, 48,117,228, 33,185, 31,161, 92,200, 74,187,115, 37, 42,199,166, 64, 58, 74,170, 30, 49,240,218,181,169, 26,169,242, - 74,252,226,140, 25, 82, 41, 81,156, 65, 43,200,129, 36, 40, 91,149, 48,104,217,133,136,150, 59,130, 25, 75, 17,133,169, 38,224, -127, 20,232, 22,181,105, 35,207,242,236,146,184,136,164,154, 23, 84, 53, 16,164,110, 94, 33, 32, 83, 44, 44,178,170,155,131, 20, -182, 33,149,130,131,134,126,151,176,123, 71, 74,180, 27,176,226,237,253,162,205,158,136,126,226, 45,102,173,218, 59, 86,224,136, - 80, 27, 49, 69, 13,184, 98, 40,143,200, 0,228, 13,114,224, 99, 24,212, 4,189,180, 92, 57,109,223, 10,156,122, 93,182,174,205, -192,141,105,218,119, 45,169,102,238,133, 50,218,161,145, 14,159,102,213,171,255, 0, 88, 69,169,211,168,140,199,193,165, 66, 53, -106, 19,243,227,176,217, 74, 34,138,178, 89,140,150,163, 54,195, 77,254,136, 21, 90,173, 54,133, 75,169, 86,235, 51,225,210,168, -244,120, 19, 42,149, 90,165, 66, 67, 81, 32, 83,105,180,248,238, 75,157, 62,108,183,214,148, 70,136,204, 86, 93,113,199, 22,160, -132, 33,181, 41, 68, 0, 78,191, 57, 62, 35,175,107,151,218,161,237, 50,184, 37,109,235, 50,196, 29,229,220,202, 77,141,183,190, - 43, 14,184,170, 30,215, 90, 80,163, 80, 97,220,243, 97, 43, 10,140,219,118,133, 14,117,126,160,198, 73,109,217, 50,144,146,162, - 19,155, 39,192, 39,174,139, 62,226, 12,218,122,167,135, 34,160,161,145,235, 29,217,140, 69,217,213,208,184, 38,197,194, 71, 52, -154,236, 88, 42,184,189,156,131, 86,125, 35,211, 47,155,135,120,111, 38,167,164, 73,184,135, 50,204, 35,142,133, 17, 84, 74, 17, - 81,146, 64,132, 0, 66, 51,201, 4,122, 1, 10, 89,144,218,233,113, 61,206, 11,119, 14,189,187, 28, 40,240,239,185, 23, 75,138, -118,228,190,118, 83,107,110,250,243,171, 32,173,202,197,203, 99,208,235, 85, 53,168,134,209,146,102,205,124,159,129, 61, 79,234, -167,176,217,253, 55, 59, 75,100,210,182,231,110,237, 11, 38,133, 20, 65,162,218,246,245, 30,223,164, 66, 7,152, 68,165, 81,169, -241,233,212,232,193, 88, 25, 13,196,142,210,123, 15,213,211,141,170, 34,178, 72,102,172,170,154,158, 62, 77, 60,178, 59, 34,126, -202, 51, 18,171,255, 0,106,144, 62,236,116, 69, 12, 83,193, 69, 71, 5, 76,188,250,152, 98,141, 36,127,219,117, 64, 29,191,238, - 96, 79,223,133,168,165,123,119,125,170,238,209, 91,175,240, 39,195,117,192,235,151, 29, 77, 14, 81,120,135,190, 40, 15,243,187, - 74,135, 49, 41,105,123, 57,111, 76,138,162,181,214,165, 33,194, 46, 23, 26, 41, 49,152, 90, 40,225, 78, 63, 38,166,204, 61,237, -246,205,251, 82,224,240, 79,182,174,108,238,209, 85,161,203,226,135,116, 40,142,253, 82,227, 78, 37,255, 0,226,146,206,156,167, -161,191,184, 53, 54, 18, 8, 53,247,252, 41,108, 80, 99, 56, 82, 61,229,165,212,159, 75,177,161, 8,147,185, 93,236,136,246, 94, -213,106,214,149,199,198,255, 0, 17,212,217,179,238, 10,173,173,115,221, 27, 61, 64,185, 22,228,217,136, 85, 70,147, 62,106,247, - 98,229, 19,146,183,100,220, 18,214,234,221,164,120,203, 82,154,110, 66,170,174, 5,201,122, 11,177,110, 14, 3,225,236,179,135, -178,212,241, 23,140, 33,215, 71, 11,133,202,168,154,193,235,170,175,228,151, 73,191,212,196,192,178,146, 8, 37, 76,132, 21, 68, - 89,105, 31, 17,120,151, 54,226,108,214, 79, 12, 56, 34,126, 93,116,209,151,206, 43,214,229, 40, 41, 45,231,132, 50,145,245,242, -169, 10,202, 8, 32, 50,196, 8,105, 29,161,210,223,163,211,255, 0,132, 11,255, 0,169, 75,243,255, 0,199,236,141,116, 43,233, - 74,255, 0,148,224, 99,255, 0,154,226, 91,255, 0,107, 96, 53,207, 95,163,211,255, 0,132, 11,255, 0,169, 75,243,255, 0,199, -236,141,116, 43,233, 74,255, 0,148,224, 99,255, 0,154,226, 91,255, 0,107, 96, 53,106,102,159,250,197,112,231,255, 0, 5, 39, -255, 0,208,175,197, 59,147,255, 0,234,195,197, 95,252,124,127,255, 0,161,150,227,167,222,201,206, 30,246, 78,244,224, 27,134, -234,253,209,181,155,125, 93,172,206,219,232,206,205,170, 85,108,219,118,161, 80,150,239,214, 85, 36,151,101, 76,151, 78, 91,146, - 29,229, 74, 71, 50,212, 78, 0,235,174,142,127, 36,254, 28,127,249, 20,218,239,253, 65,181,127,255, 0, 21,168, 67,236,206,242, -251,107,106, 27, 11,183,118,135, 14,118,230,248,218,123, 35, 96,219, 49,169,246,138,246,239,108,225, 81, 63,132, 20,246, 12,185, - 95, 92,181,113, 85,232,203,170, 93,234,124,188,224,255, 0, 4,146,236, 21, 45,180,166, 60,100, 57,144,172,147,102,189,184,158, -209,254, 22,247, 41, 54,175, 17, 19,170,123,167, 72,160, 84, 35,193,188,246,187,121,108,216, 86,109,253, 75, 99,149,165,201, 68, - 43,134, 21, 2, 5, 86,143, 93, 49, 75,106,105, 85, 86,234, 49,190, 62,117, 68, 87,136, 87,168, 78,113,225, 63, 21,230,217,158, -127, 91,147,241, 53, 5,117, 75, 84,212,207,236, 81, 87, 72,103, 68,121,153,145, 24, 4,229,164,150,101, 82,174,202,138,219,115, - 58, 98,193,200,252,101,224,252,151, 41,225,202, 12,239,133, 51, 44,186,145, 41,105, 96,246,233,178,248,197, 59,201, 28, 17,171, -186,157,124,201, 35,186,179, 6, 68,121, 25, 70,174, 95,164,237,173, 75, 62,218,177,233, 17,168, 22,157, 22,153,111,209, 33, 37, -105,135, 73,163,193,139, 77,167, 68, 67,142,173,231, 17, 26, 20, 54,144,211, 9, 83,206, 56,178, 16,144, 10,156, 82,143, 82, 78, -178, 93, 49, 28, 53,113, 19,183, 28, 85,108,189,139,190,123, 87, 80,118,125,159,125,210, 5, 74, 19,114,219,105,138,157, 46, 99, - 18, 31,167,214, 40, 85,152,204,188,226, 34,214, 96, 85,226, 78,135, 45,180, 56,227,105,126, 18,252, 55, 93,108,161,197, 62,250, -231,250,168,106, 41,170,106, 41,234,227,104,170,224,119, 73, 85,193, 14,178, 43, 21,117,112,119, 12, 24, 16,215,222,247,190, 58, - 70,146,122, 90,170, 74,106,154, 41, 18,106, 58,136,209,225,120,200, 40,209, 58,134,141,144,141,138, 50,144, 84,141,172, 69,176, -180,180,180,180,134, 54, 48,180,180,180,180, 48, 48,180,180,181,192,111,104, 5,251,125, 80, 56,143,220,198, 45,253,213,169, 89, - 9,183, 54,167,110,238, 27,118, 11,123,151,122, 90, 50,220,172,139,138,158,153, 72,178, 45,251,125,102, 37,197,116, 63, 9, 82, - 82,182, 38, 6, 89, 68,111, 26, 95,138, 30,142,216, 47, 57, 30, 78,249,221, 99, 81,164,226, 6, 84, 47,168,169,111,215, 68,181, -129, 7,171,130, 78,246, 0,236, 78,216,215,169,168, 20,209,243, 10,234, 23,181,175,110,196,255, 0, 44,119,231, 75, 81,244,103, -138, 29,229,219,186,190,226, 38,204,169, 55,100, 67,220,238, 34,247, 45,250,213,217,125, 65,164,205,147,104,206,165,216,118, 61, - 94,129,106,212, 95,186,100,197,162, 91,207, 73,151, 86,156,153, 30, 59,169, 82,141, 53,244,196,109,181, 55,135,114,241,198,191, - 22, 21,107, 15,123,247, 58, 21,239,182, 80, 41,252, 61,195,225,246, 85, 90,221,164,217,177,110, 10,125,254,238,232, 42, 29, 18, -168, 34,221, 38,172, 62,174,129,245,162, 36,204, 82,163, 52,225, 82,101,134, 98,190,203,109, 37,110, 59,183, 5,230, 62, 70, 90, -152, 57,114,114,192, 44,206, 14,169, 36, 72,144, 16,168,246,213, 43,132, 6,228, 91,204,218, 84,223, 8, 12,198, 29,193, 70,184, -191, 64, 58, 0, 88,157,200,232,162,231,111,112,185,199,119, 52,181, 31,219,163,138, 13,215,187,247, 63,109,175,153, 87,125, 18, -185,126,217, 23,151, 19, 82,104,252, 60,211, 45,201, 52,233,150, 71,240, 34,193,174,162,217,167,220,143,211,222, 93, 66,233,145, - 84,147, 75,108,134,220, 72,230,113,130,136,203, 97, 74,115,194,187,218, 60,116,241, 71, 94,159,183, 22,253, 63,112, 54,166,175, - 63,117,119, 39,104,237,104,115,229, 80,109,233,245, 11, 49,235,225,117,154,109,106,149, 86,182, 45, 90,232,117,138, 91, 85, 35, - 79, 91,126,254,228,106,167, 37, 61,109,158, 66,226,214,144,220, 23,153, 8,213,214,162, 27,132,212,225,139,174,147,174, 69, 33, - 78,131,172, 1, 25,109,118, 10,194,252,179, 32, 1,136, 25,140, 58,136, 42,221,108, 45, 99,125,129,245,219,115,107,117, 29,237, -142,245,233,107,147,209,223,222, 43, 46,151,189,123,171, 87,168, 91,247, 45,193, 96,238,236,107, 86,163,184, 18,175, 13,204,135, - 26,223, 51,155,219,155,122,229,185,225,109, 4,121,171,160, 11, 66,149, 6,229,173, 86, 75, 18,101,144,211, 81, 94, 47, 30, 86, -130,245,116,153,197,253,205,104,175,125,224,212,119, 98,196,186,104,182, 78,217,238,236,253,159,220, 25, 80,109,250, 84, 61,204, -189,109, 75,111,110,106,180, 88,240, 28,129, 37, 16, 46,122,140, 59,158,240,173,209,164, 71,165, 4,181, 37,202, 9,253, 10, 30, - 67,199, 90, 31,253,157,169,144,255, 0,100,153, 42,109, 96,108, 24, 93,173, 25, 33,108, 27, 96, 37, 66, 3,232,144,141, 71,151, -101, 98, 20,246,180, 31,222, 41, 75,252, 58,110, 5,250,122, 30,151, 3,109,247, 24,234,110,150,185,121,125,113, 27,190,246,141, - 14,226,220,138, 85,122,149, 95,137, 79,221, 29,192,219, 42, 86,219,187,104, 69,247, 57, 66,135,195,181,213,186,212,122,171,149, -122,104, 85, 74, 93, 76, 92,212, 56,173,120, 13,169,182, 94,140,242,153, 95,134,178, 36,161,188,127,125,171, 86,214,225,238, 11, - 22,199, 16, 84,107,178,163,121, 39,108,124, 29,207, 68,141,169,183,108, 72,233,163,237,245,233, 92,170,211,106, 53,186,204, 89, - 52,202, 39, 35,139,138,182, 99, 49, 2,101, 90, 83, 81,212,194,240,184,239, 73, 25,143,134,171, 36, 66,194,104,254,198,161,110, - 97, 23, 14,138,202,199, 64, 11,164, 54,162,119, 6,214, 93, 86, 98,161,171, 35, 6,218, 79, 91,118,238, 9, 4, 11,239,126,158, -238,246,218,253,134,210,215, 23,168,252, 66,238,173,122,152,237,253, 54,243, 85,110,231,171, 76,225,138,243,161,236,203, 18,102, -193,102,123,213,219, 34,129, 34,173, 62,218,133, 2,172,137,173,218,242, 46,180,203,140,244, 86, 80,236, 39,101,213,208,220,211, - 33,228,132,186,236, 80,248,135,221,139,146,237,218,187, 18,214,222,123,102,243,129,185, 51,246,200,220,219,133,110,217,182,220, -151, 54,246,175,118, 89, 27,207,114,220, 59,126,196, 88,238, 61, 5,154,162,127,128,148, 71,161,179, 83, 67,181, 56, 13,161,255, - 0,172, 27,152,151,144, 18,105,120, 98,178, 37,118, 51,199,104,151, 83,147,204, 1,108,138,237,184, 67,125, 33,173,125,181, 16, - 66,106,107,129,133,173,141,136, 1, 79,155,167, 77,247, 32,119,239,248,119,182, 58,147,171, 69,118,187, 74,182,233,114,107, 21, -153,105,135, 2, 47,132,149,185,225,188,251,206,189, 33,212, 71,139, 18, 28, 72,205,173,217,211,223,148,235, 45, 49, 29,148, 45, -231,222,121, 13, 52,133,184,180,164,182, 60, 63, 94, 23, 13,249,180,118,173,203,117,202,141, 58,225,125,219,146,149, 84,168, 68, -134,221, 57,154,140,139,106,235,174,219, 34,165,238, 12,168,183, 13,217, 13, 81,219,121,198,219,253, 26, 28,125, 73,108, 37, 1, - 41, 13, 62,232,111,214,218, 88, 87, 53,221, 90,189,235,241,103, 84, 54,214, 35,223,192,237,191,166,243,212, 43,146,234,168,162, -210,230,214,174, 85,210,219,108, 4, 84, 20,139,146, 5, 54, 10,228, 56,219,108, 55,239, 43,109,212,137,238, 41, 44, 50,192,240, -207, 45, 59, 88,201, 19,178, 27,116,186,146, 13,137,182,215, 29, 72, 27,117,198,210,176,101, 86, 29, 24, 3,251,247,199,221,233, -222,106,181,159, 75,167, 84,174,234, 93, 66,210,177,231, 69,184,235,115,168,180, 74,161,155,188,183, 37,187,104, 81,151, 91,175, - 70,163, 80, 40,200, 81,166, 32, 83, 84,169, 82,149, 18, 91,178,216,139, 78, 83, 11,126,159, 42,107, 42,103,136,187,179,237, 34, -226,147,119,235, 63,197,223, 8,251,124,189,158,219,184, 97, 16, 40,176,233,212,196, 92,251,157, 84,166,150,212,167,102,185, 76, -180, 34, 77,106,221,117,114, 22, 2, 25,135, 45, 15, 52,181, 45,110,204,125, 71,175,108,182, 23,109,174,187,130,169, 84,222,157, -223,125,186,149,249,123, 65,247,101,210, 60,100,212,104, 54, 69,155, 36, 7,224,237,133,176,149, 2,203,148,166,146,166,158,173, -205,109, 3,235,170,160, 43, 86, 98, 69,134,211, 59, 51,104,216,150, 77,129, 77,110,141, 99, 90, 54,213,159, 74,109, 41, 66,105, -246,205, 18,155, 68,137,132,126,169, 91, 20,232,205,165,197,117, 57, 82,129, 81, 36,146, 73, 39, 78,217,109, 94, 95,150, 60,146, - 85, 80,254,145,169, 22,208, 11, 40,141, 58,223, 82,180,114, 93,186, 91, 96, 71, 98,164, 27,234,212,195, 81, 80, 21, 35,159,217, -227,223, 81, 0,150, 61, 45, 98, 25,108, 58,223,168,247, 17,136,175,109,165,111,136, 46, 22,110, 90,253,251,188, 55,190,238, 65, -226, 39,118,227, 73, 22,188, 43,214,173, 93, 15,170,216,230,151, 29, 53, 11,198, 13, 89,199, 26,118,108,119, 24,169, 38,135, 69, - 37,232,207,174, 19,213,119,127,239, 68, 64,213, 43,151,138,189,231,148,233, 93,203,191,247,220,103, 10,148,232,142,246,226, 85, -105, 32, 96,149, 21, 51, 79,141, 84,100, 37, 35,175, 68, 55,129,142,128,107,190, 92, 81,109,158,214,113, 35, 67,184,108,237,202, -102, 60, 43, 2,198,163,212, 42,247, 21,248,211, 49,155,173, 80, 37,183,202,252,118,173,218,155,209,221, 83, 79,170,117, 53,160, -227, 77, 36,169,228, 67,121, 32,178,242,233,207, 57,194,234, 71, 15,220, 39, 90, 75,109,193, 77,191,119, 2,124, 94, 96,220,151, -161,219,182,108,103,243,144, 18,185, 21,119,174, 89,106,100,163, 0,129,224,171,201, 60,131, 83,252,135, 54,165,204,160,150,105, - 50,197,106,184,152, 41, 60,176,194,223,170, 17,180, 5, 22, 29, 67, 58,155,146,119,189,240,193, 93, 73, 45, 59,170, 45, 73,228, -176,184, 26,172,111,176, 36,139,220,223,181,129,216, 91,107, 91, 29, 21,246,100,113, 47,186, 91,235,125,110, 4, 59,162, 92, 75, -222,214,164, 89,244,136,116,189,196,146,195,109, 87,221, 69, 6,164,227, 77, 68,157, 83,101,164,170,228,142,252,250,245, 93,166, - 94,150, 12,132,127, 7, 30, 90, 93,113,183, 73, 87,102,245,197, 62, 8,247, 59,106,118,179,113, 23,103, 90,182, 36, 75, 2, 30, -235, 85,168,116, 25, 13,199,172,212,107, 14, 87, 43,209,216,152,205,189, 33,239,126, 9,109,170,147,105,114, 75, 75, 16,216,138, -219,177, 93, 46, 62,219,134, 27, 74, 71,107, 53, 4,226,104,132,121,180,197, 40,197, 20,114, 5,101, 80, 0, 13,113,230,112, 20, -149, 23,107,139, 2,109,109,247,185, 47,153,107, 22,165, 75,205,206,101,184, 39,115,107,116, 27,128,122, 88,239,235,233,133,165, -165,165,168,254, 55,240,180, 29, 66,161, 2,147, 6, 93, 78,169, 50, 45, 58,157, 2, 59,178,166,206,154,251,113,162, 68,140,194, - 11,143, 72,147, 33,229, 4,178,202, 80,149, 21, 41, 68, 0, 6, 73,209,154,212,158, 53,182,250,255, 0,220,189,141,169,219,187, -118,235,139,169,181, 89,166,213,106,148,134,158, 12, 59,113, 81, 32, 51, 52,201,162,180,181, 16,149, 58,102, 59, 6, 74, 80,165, - 0,225,167, 6,243,149, 0, 88,184,159, 52,173,201, 56,123, 58,205,242,220,170, 76,242,191, 45,166,150,104,105, 34,254,242,162, - 68, 66,203, 18,216, 19,118, 35,162,171, 57, 23, 8,172,214, 82,253,194,249, 85, 14,121,196, 89, 38, 79,153,230,209,228, 89,126, -101, 83, 12, 51, 86, 75,253,221, 60,114, 56, 87,149,174, 85,108,160,245,102, 84, 6,197,221, 86,236, 52,131,138, 95,104, 4,186, -199,214, 54, 22,197, 77,122, 13, 40,151,161,213,183, 5, 41, 91, 51,234, 13,245,109,214,109,116, 44, 5, 64,138,174,191,225,138, - 1,245,164,254,133, 45,116,112,232,102,217,108,157,245,187,134,183, 88,166,198,146,138, 37, 30, 21, 78,171, 88,184,102, 54,243, -205,188,244, 72,207, 77,118, 44,101, 40,243, 79,168,186,180, 97, 88, 36, 32,185,206,226,129, 32, 43,100, 54, 19,129,203,238,248, -173,181, 55,114, 41,115,173, 91,118, 27,233,241,105,111,225,154,189, 85, 72, 80,230,100,242, 40,251,132, 63, 37, 44,159, 21, 64, -225,180,167, 62, 34,123,107,102,109,165,171,100,219,108, 91, 52,106, 68, 40,116,214, 97, 24, 34, 35, 12, 33,184,233,142,182,203, -107,104, 54, 7, 80,164,169, 92,196,228,168,168,149, 18, 73, 58,227, 46, 26,240,155,196, 15, 27,243,131,198,254, 48,212, 79,148, -100,169,175,216,178,205, 50, 64,197, 79,217, 84,129,142,186, 74, 91,129,173,223,251, 93, 72, 91,234, 0,172,216,237, 78, 38,241, -115,195,223, 3, 50, 97,192,254, 13, 83, 65,156,103,114, 20, 53,217,166,164,168, 64, 71,218,103,168, 81,162,174,168,169,109, 8, -159,217, 41, 75, 17,164,144,208,226, 44, 52,185, 13,195,169,211,165,188,142,118, 98,207,137, 33,212, 30,203,109,137, 13,184,226, - 8,249,165, 36,125,250,127,189,191, 59, 1,126,241, 15,193, 94,202,238,238,208,211,167, 93,244,109,151,184,170,119,101,215, 68, -161,176,236,233,235,179,175, 10, 4, 24,142, 93, 76, 66,140, 20,185, 76,211, 95,167, 69, 50, 66, 18,165,179, 30,166,244,130, 3, - 76, 60,164,211,226,127,101, 42, 59, 29,186,181,187,117,109, 62,187,118,168,251,213,155, 78,162,182,200,106, 93, 34, 91,202, 95, -186,135, 57, 66, 85, 38, 43,203, 84,119, 64,193,253, 26, 87,128,151, 18, 75,183,195, 79, 26, 53,221,151,166,139, 34,240,164,187, -122,109,226,148,224,141, 17, 46,182,154,189, 13,183,212,165, 72,102, 2,165, 31, 10,109, 61, 74, 90,213,238,238,148, 4, 41,106, - 40,113, 41, 37, 5,151,232,189,226,236,127, 70,191, 20,115,188,175,140,233,189,135,151, 83, 26, 73, 43,163, 50, 69, 61, 47, 62, - 45, 50,104, 12,254,207, 83, 5, 76,154, 39,141, 95, 65, 49, 74, 20,198,204,234,241,244,170,240,114, 79,164,247,132,249, 46, 99, -193,117, 94,220, 37,165,149,227,137, 29, 21,229,130,168,211,204, 26, 46, 97, 84,246,154, 89,233,163,215, 79, 35, 71,204, 2, 88, -139, 9, 21, 81,160, 87,169,110,253, 27, 78, 31,247, 14,201, 78,246,241, 53,120, 64,159,107,237,173,207,108, 82,237,139, 90, 69, - 85,167,160,179,114, 68,163, 76,149, 92,175,220,241,144,248, 79,137, 70,138, 26,139, 29,153, 56, 45,188,228,137, 73,109, 71,193, - 94,122, 95, 89,143,236,147,185,110, 37,110, 61,103,134,205,190,118,245,118, 71,214, 47,186,246,201, 80, 28,168, 63, 81,230,241, - 76,135,214,152, 94,233, 38,103,139,215,198,113, 69,124,221,121,181,134,239,223, 25, 43,190,109,119, 54,195,105,109,159,226,243, -110, 28, 97, 16,106, 24, 17,153,172,214,169,236, 0,134,169,158, 5, 63,244, 20,106, 55, 34, 82, 21, 29,165, 56,167, 82, 2, 22, -180,183,204,210,189, 25,241,187,233,237,225,100,220, 3,152, 80,112,253, 92, 57,166, 99,153, 70,182,130, 10,152,234,164,119, 86, - 89, 18, 33,201, 5, 97, 70,145, 87,153, 52,237, 25, 88,195,132,133,228, 42, 7,154, 94, 3,127,179,211,197,122, 79, 17,114,220, -207,136,233,166,203, 50,220,174, 70,250,249,233,164,165,141, 17,213,163,121,155,158,193,230,117,141,219,151, 5, 58,200, 30, 82, -133,230, 72,149,201,211,219,222,171, 18,185,121,221,181,168, 8, 8,131, 86,185,107,149, 40,105, 74,121, 64,139, 58,167, 42, 76, -127,132,143,135,244, 78, 35,167,207, 77, 71,183,193, 83,207, 4, 92, 7,166,161,226,120,232,185,171,137, 62, 46,121,194, 5,131, - 73,240, 82,160,174,160,134, 66, 7,221,173,145,216,173,173,169,238,230,227,208,109,120,108, 60,170,120,148,204,234,252,180, 33, - 69,184,116,136,238,161, 82, 57,156, 72,194, 30,120,132,178,214,123,173,224,113,202,149, 17,210, 31,105, 23,179, 6, 31,180, 15, -107, 54,119,111,211,186, 82,118,157, 59, 83,112, 85,238, 6, 95,131,103, 71,187, 17, 86, 21,122, 52,122, 72,130, 99,187,113, 83, -133, 57, 44,166, 58, 86,149,165, 78,133, 5, 20, 20, 12, 5,107,144,127,217,239, 11,228,156,117,155,248,159,196, 50, 53, 6, 69, - 81, 49,167, 14, 35,118, 89, 36,209, 81, 36,238,145,198, 25,217, 98,121, 98,141, 74,171, 13, 82, 58,223,200,246,236,191,246,140, -186,241, 7,135,185, 87,133,124, 53, 18,230, 60, 67, 79, 0,168, 49,153, 35, 86,142, 62,101, 52,112, 70,242, 72,200,138,210,199, - 20,210,176,118, 83,166, 56,218,223, 88,151,102,125,130,112,118, 42,169,192, 62,220,155, 3,248, 58,253,211, 14, 69,121,189,216, -141, 20,197,250,250, 61,248,229,122,168, 93,114,229,109, 39,197, 75,206, 82, 17, 78, 84, 37, 57,240,170, 2, 88, 75, 71, 8, 80, - 17,173,246,250, 13,156, 87,180, 78,224,103,100, 28,162, 63, 88,110,202,179, 25,220,245,218, 78, 69,118, 49,221,175,121,170, 25, -141,184,237, 53, 69,181,220, 41,161, 42,215, 76,222, 83,227, 38, 98, 92, 68,140, 74, 75,192,117, 38,227,250, 54,119,189,161, 79, -164, 73,216, 46, 46,110,123, 78,180,253, 25,154,101,232,154,149, 18,165, 73,135, 95,154,143, 16, 72,168,192,114,215,185, 18,237, - 62, 19,168, 82, 1,129, 35,223, 2, 20,149, 45, 50,202, 86, 27, 67,243,193,111,209,227,219,173,146,220,107,127,118,119,231,112, -164,239, 85,205,109, 84,218,174, 81,173,207,169, 81, 69,178, 35, 87, 35, 60,153, 16,234,149,118, 37,204,149, 42,232,125,153, 9, - 75,205, 33,229,199,142, 93, 0,191, 29,240,156, 31, 80, 50,110, 36,240,255, 0,133,248,167,136,120,250,159,140,167,206,102,204, -197, 81,139, 47, 20,147,199, 51, 60,242, 9, 52, 75, 52,159, 86,209,161, 80, 35, 44, 16, 5,210,199,204,186, 91,202,188,243,133, -252, 73,226,222, 17,225,159, 14,106,120, 26,159, 34,131, 42, 52,130,108,204,214,211, 75, 2,165, 60, 92,190,100, 48, 71,245,171, - 35,134, 38, 64,165,201,109,106, 60,175,173,120,101,186,226,227, 30,216,222, 31,145,113,169,212,222, 13,238, 7, 6,204,215,213, - 43,196, 18, 19,114,181,106,109,123, 85, 19, 47,197,202,132,164,212,146,231,141,205,215,196, 74,201,235,211, 90,121,178,118,150, -251, 86,248,244,118,209,176, 55, 14,149,181, 28, 67, 63,187,123,137, 77,165, 94, 87,124,150,160,183, 79,191, 68,251,137,138,172, - 71,101, 79,167,202, 75, 85,121,111,253, 99, 25,144,182,148,167, 95,150,150,144,124, 71, 18, 12,191, 55,139,216,145, 27,114,184, -246,164,241,181, 23,126,103,210, 85, 77,220,141,186,220, 36,237,202,118,242, 36,168,229, 86, 2,232,107, 69, 32, 92,230,240,109, - 65,169, 66,136,128, 94,247, 2,166,125,229, 68, 33,194,145,159,188,127,251, 8,246,135,139,155,230, 86,246,237,181,237, 81,216, -221,230,170,248, 18,174,153,244,186, 83, 85,171, 78,238,170, 68,109,180, 49, 90,169, 81, 81, 50, 35,244,171,136,165,166,146,236, -232,146,128,119,194, 75,143, 69,117,254,103, 75,214, 91,226,215, 8, 67, 22, 85,150,205, 86, 35,138,175, 35,134,138,121,205, 36, -147, 69, 73, 85, 26,176,229,203, 3,162,251, 69, 57,230, 48, 97, 30,180,109, 10,167,202,197,149,139, 52,240,103,141,106, 37,205, -243, 72,104,140,147, 80,241, 4,245,244,244,226,182, 40, 37,173,163,149,163, 60,200,170, 35,145,189,154,161,121, 42, 80,203,203, -117,214,204, 6,181, 8,220,174,226, 71,130,207,107,101, 91,105,167,218,220, 83,113,207,179,208,246,122,238,169,208,173,233,177, -183, 54,243,164,208,173,170,181,102,101, 69,135,109,234, 98,103,201,178, 88, 45,207, 85, 69,134,150,209, 67,168, 82, 61,221, 78, -173, 73,109,181,173, 58,117,197, 87, 1,155,253,192,167,179,178,235,160,238,229,199,101,215,173,141,200,226,147,102,174,107, 61, - 22, 93, 90,117, 86, 35,117, 8, 59,103,187,240,170,243,222, 92,168, 76,160, 38, 69, 61,202, 40,109,109,115,248,137,137,146,174, - 80,141,116,161,143,163,193,196, 46,228,213,168, 20,254, 34,120,219,187,111,155, 38,221,113,180,211,233, 77,199,185,174, 25,241, - 97,167, 8,114, 37, 29,203,202,228,122, 53,190,165, 48, 57, 82,234, 35,200, 8, 29, 60, 21,142,154,234,183, 19,126,200,187, 31, -124, 56, 36,218,238, 11,108,125,198,175,109,125,165,181, 87,181, 22,242,163, 87, 39,211,158,220,106,188,245,210,168,215, 85, 46, - 68, 42,129,170,215,224,171,196,147, 34,233,147, 37,110,182,234, 91,105, 81,195, 44, 70,109,146,148, 54,214,158, 34,228,185, 53, - 87, 15, 81, 71,196,212, 85,249,107, 87, 71, 81, 94,180, 57, 43, 81, 65, 18, 68, 85,227,149, 89,109, 43, 77,170, 53, 86, 9, 12, -154,144,144, 89, 2,128,238,210,120, 95,158,231,148,156, 75,152, 73,194,149,249,118,106,153,124,148,217,123,102, 25,242,215, 84, - 77, 36,193,146, 72,157, 90,240,164, 26,100,118, 66,243, 71,165,192, 96,175,172,152,216,127,163,207,182, 54, 85, 63,129, 26, 5, -213, 18,131, 1,186,245,225,121, 94,117, 27,146,168, 35, 51,239,213,105, 84,250,195,212,170,127,190, 73, 8, 11,121,152,244,248, -205, 54,202, 20, 74, 90, 10, 95, 32, 5,107, 39,133, 62,218,203,122,129,108,123, 96,109,245,210, 41,177,105,109,213,209,195,221, -118,176, 97,180,134, 12,218,147,149, 56,208,159,168, 62, 91, 3,158, 81,133, 78,134,130,179,241, 17, 25, 57, 61, 53, 47, 47,103, -175, 7, 75,224,115,135,139,127, 97,141,234,237,254,138, 5, 74,189, 81, 77,202,253, 13,187,113,201,102,185, 84,122,164,166,141, - 41,170,164,208,194, 90, 47,114, 3,239, 11, 42, 8,230, 56,206, 53,160, 92,119,251, 21,218,227, 43,139,138, 79, 20,201,223,169, -214, 59,244,232, 27,125, 4,217,141,109,212,106,251, 11, 22, 36,247, 38,120,191, 94,185,121,196, 82, 76,164, 44, 39,151,221, 15, -128, 83,205,151,129,228, 17,110, 24,227,108,134,131,196,238, 46,226, 60,195, 51,120,242,140,217, 51, 4,134,110, 92,238, 92, 77, - 42, 52, 0,198,177,153, 20,104, 81, 96,232, 2, 5, 0,233,176, 24,151,241,111, 0,241, 22, 99,225, 63, 5,112,190, 91,148,164, -153,214, 76,249,107,207, 8,150,157, 4,109, 4, 46,181, 12, 36,105, 22, 38, 58,216,234, 40,236, 92,177, 35, 85,201,196, 94,166, -255, 0, 4,227,251,102,171,138,226,141, 80,145,106,127, 43,106,227,151,155,183,111,130, 40, 41,134,253,197, 45,203,106, 77,100, -206, 72,103,248, 45,250, 74, 26,201, 88, 17,189,203,148,159,208,106,118,219,255, 0, 77,225,202, 23, 11,155,155, 59,120,151,101, -141,146,115,108, 43,142,220,242,235, 79, 83, 77, 2, 85,186,237, 13,231, 25, 76, 37,173, 94, 28,153, 78, 35,192,250,189, 49,242, -243,146, 21, 28, 67, 5,242,214,185,225,237, 10,246, 37,236,223, 28, 51,160,110, 93, 50,230,159,180,155,231, 14,139, 6,141, 84, -188,169, 20,168,245,170, 53,231, 14,149, 20, 69,166, 34,238,183, 93,151, 24,202,168, 48,195,108,176,204,230, 36,178,250, 35, 54, -134, 94, 76,166,217,142,134,185,163, 99,253, 27,221,214,159, 80,165, 91,187,205,197,181,110,187,181,116,121, 33,246,109, 11, 90, -155, 92, 73,125,180,171, 33,152,105,184, 43,142,194,160,169, 67,169,117,184,146, 84,156, 20,165, 25, 60,195,123, 59,206,248, 23, -142, 41, 56, 79, 52,204, 56,182,110, 23,174,225,202,104,160,154,140, 82, 79, 49, 38, 34,167, 93, 35,197,104,209,156,173,149,152, -146, 20, 70, 93, 84,165,153,191, 32,200, 60, 65,240,254,183,140,178,156,183,130,224,226,234, 14, 40,171,154,162, 10,227, 91, 4, - 0, 9,129, 81, 29,108,114,131, 35,162, 6,187,162,128, 11, 25, 66, 51,137, 46,188, 20,224,130, 37,122,161,107,241,207, 22,205, - 68,229,213,151,193,189,253, 34, 59,113,121,149, 53, 84, 40, 55,206,223, 79,185,147,150,134, 72, 22,172,106,177,123, 29, 60, 36, - 57,159,135, 58,112,125,151, 27,107,197,206,231,238,109,253, 66,224,219,124,109,173,154,220,132, 90,144,164, 85,209, 87,159, 18, - 13, 86,231,182,219,170,182,183,153,164,123,205, 6,114,159,102, 44,244,195,114, 64,108, 32,164, 58,218,149,148,246,148,183, 0, - 30,195,186,103, 4, 59,219, 95,221, 41, 91,210,238,236, 81,174, 43, 18,191, 97, 78,179,235, 27,115, 6,133, 5,234,101,126, 92, - 7,229, 25,178,149,117,212, 19, 61,159,118,131,224,173,133,199, 8,117, 50, 23,206,113,240,235, 95,184,128,250, 57, 52, 5,238, - 92,237,211,224,251,126,238,109,132,155, 34,168,253, 90,157,107, 61, 18,125, 66, 21,175, 38, 90,150,227,236,218, 87, 93, 26,179, - 18,165, 71,166,165, 75, 33,152,239, 9,107,109, 10, 40, 18,121, 2, 82, 39,213,158, 45,112, 93,125,119, 19,229,145,230,113,193, - 73,155,199, 76,244,245,181, 20, 18,212,211,115,163, 69, 71,134,162,150, 72,214, 70, 81,203, 66,172, 80,165,217,219, 82,178,174, -170,226,135,193,142, 59,203,114,254, 18,205,101,202,100,158,183, 36,150,174, 58,154, 26, 92,198, 42, 74,174, 68,178, 51,199, 61, - 45, 92, 82, 52,106,228, 72,225,215,152, 30,200,138, 85,149,155, 79, 63,120,152,246,113,123, 73,247,246,235,219,109,167,226,139, -140,141,138,188,175,178,213,122,187,181,118, 29,241,126, 64,166,221,115, 99, 73, 93, 54,159,112, 78,182, 41,145,237, 56,210,106, - 13, 56,228,106,115,110, 33, 60,254, 41,132, 84,218, 23,238,207, 41,173, 31,246,169,108, 70,229,240,207, 70,224,147, 98,119,114, -163, 71,170,222,187,125,195,213,118,150,252,234, 12,137, 18,233, 70,139, 43,118,239, 89,244, 56,177,164,203, 97,167, 29, 12, 68, -146, 91, 60,200, 72, 79, 32, 74, 71, 40, 26,238, 94,204,253, 30, 26,228,253,212,164,238,167, 22,156, 77, 94,219,207, 82,164, 79, -131, 56,192,167, 63, 93,167, 79,170,174,154,224,118, 27, 85, 91,234,181, 93,149, 83, 76, 20,173, 8, 10,106, 34, 99, 59,203,144, -220,182,137,206,183, 63,218, 81,236,103,137,199,254,225,237,141,254,141,242,159,182, 63,197,206,219,177,183,108, 80,227,216, 76, - 93,200,157, 30, 61,114,165, 89,102,162,106, 82,110,248, 10,142,176,154,138,153, 45, 22,157,230, 12, 37,207, 23, 42, 41,211, 54, - 91,226,118, 67,149,113, 15, 14, 82, 84,113, 37, 61,110, 65,151, 37, 76,179, 61, 46, 80,244,112, 67, 83, 36, 82,198,139, 2, 70, - 26, 87, 71,230,182,191,169, 81,168, 7, 46,218,138,163,238,105,225, 55, 17,103, 28, 53,197, 21,180,220, 43, 85, 67,196,121,172, -148,176,195, 29,102,117, 29,117, 68,244,145,205, 12,142,213, 15, 41, 72, 99,120,249, 43,203,250,242,218, 47, 24,141,116,134,125, -234,246,125,236,206,223,237,103, 9,155, 11, 64,179,173,250,125, 38, 3, 59, 97,100,212, 92, 17,163, 54,202,230, 85,234,214,237, - 54,167, 88,172, 76, 82, 19,151,234, 82,234, 82,100, 72,125,213,100,173,199,207,100,132,164,111, 48, 24, 24, 29,135, 65,166,203, -102,236, 37,237,126,216, 88,187,122,185,202,169,155, 50,212,183,173,113, 82, 83, 9,138,169,233,160, 82, 33,210,147, 53, 81,146, -234,196,117, 58,152,129,101,176,181,132, 21,242,133, 40, 12,150, 11,143, 78, 49,236,142, 6, 56,109,189,119,206,237,247,106,133, - 98, 35, 63, 80,109,189,164,235,165,183,175,125,198,171, 71,147,252, 28,183,209,200,180,173, 16, 18,168,242, 38, 84, 93, 65,230, -143, 77,165,203,121,176,183, 80,219, 78,115,121,134,183, 63,207, 30, 26, 53,122,250,236,222,165,132, 99,114,242,188,210, 27, 18, - 91,123,146,215, 98,214,176,185,107, 0,113,212, 98,122, 30, 27,225,232,231,174,100,203,178,252,150,145, 76,135, 96,145, 71, 12, - 64, 48, 1,118,178,133,178,170,222,230,193, 65, 36, 12,113, 23,233, 10,251, 69,127,139,219, 56,240, 51,180,149,207, 14,246,220, - 58, 76, 90,158,253,213,105,238,225,251,107,110,170, 45,166, 69, 35,111,195,236,175,154, 61, 90,224, 64, 68,138,131,100,165, 72, -161,165,182, 28,109,216,245,192,166,197,250, 63, 62,207,199, 44, 27, 45,238, 46,247, 46,142,166,111, 45,207,164, 38, 30,218,192, -168, 71, 90, 31,183,118,209,231,218,148, 43,105,105,228, 15, 10,125,126, 68,104,146, 26, 88, 10, 34,147, 18, 26,217,112, 38,161, - 37,189,113, 27,217,255, 0,195, 62,227,251, 81,184,218,174,223,155,197, 50,161,115,219, 13, 92,234,221, 61,253,186, 37, 37,214, -218,174, 63, 83,168,185, 34,149, 99, 68, 49,148,129, 0, 85, 37, 71,114, 43, 76, 50,166,145, 6,141, 74,151,238,188,134, 52,102, -151,250, 18,218,182,237, 58,213,161,211,168,148,168,145,160,194,167,196,143, 18, 60, 88,140,183, 30, 52,118, 35,180,150,153,143, - 29,134, 82, 16,203, 8,109, 41, 74, 16,144, 18,148,164, 37, 32, 0, 53,117,113,253,101, 39, 0,112,165, 23,134, 89, 44,193,243, - 42,197, 90,140,226,116,234,236,225, 88, 67,126,160, 61,151,202,108, 86,153, 34, 86,213,206,123,208,254, 27, 80,214,248,145,198, - 53,254, 44,103,208, 52,121, 85, 11, 61, 54, 73, 76,251,132, 68, 44,166,123,116, 38, 59,183,152, 92, 53, 84,146,178,149,228, 32, - 25, 10, 82, 18,144,148,140, 4,128, 0,244, 3,160,215, 62, 61,164, 30,208, 29,190,246,125,108, 68,221,193,174,166, 21,195,185, -183, 74,103,208,246,111,110, 92,144, 91,126,238,186,153,142,218,156,168, 84,144,203,169,118, 61,155, 75, 18,162, 72,171, 73, 65, - 65, 8,121,152,108,172, 76,155, 21, 42,223,186,157, 78,157, 69,167, 84, 43, 21,138,132, 42, 77, 34,147, 10, 85, 74,169, 84,169, - 74, 98, 13, 58,155, 78,130,195,146,166,207,159, 54, 83,137,106, 28, 38, 99, 52,235,142,186,226,146,134,208,218,150,181, 4,130, - 71, 9,184,174,225,239,128,223,109, 5,235,103,196,178,120,186,133, 90,187,118, 26,145,116,193, 93,191,180, 87, 53,159, 80,147, - 34,153,115,212,232,158,253, 88,147, 10,183, 72,146,245, 74,148,212,218, 52, 38,155,157, 7,154, 22,102, 37, 42,117, 74,117,156, -212,252, 35, 69,149,207,156, 82,213,241, 20, 21, 13,195, 52, 45,174,178, 72, 34,146, 64,163, 75, 24,163,145,145, 78,133,154, 64, -177,177,184,109, 37,180,144, 64, 34,228,227, 92,195, 55,166,201, 42,232,248, 98,122,101,226,188,193,116, 80,199, 81, 52, 81, 22, - 98,202, 37,146, 53,145,135, 49,160,137,154, 69, 91, 50,235, 85, 12, 10,155, 24,223,112, 43, 69,217,158, 45,184,165,187,120,165, -246,138,241, 35,182,116,170,123, 23, 91,119, 61, 74,223,220,203,198,221,164,212,247, 82,240, 90,154,145, 18, 4,155,122, 83,169, - 76, 13,179,165,195,106, 27, 94,232,150, 88,134,243,109, 69,164,194,109, 80,163,204,105,153,125,220, 94,209,127,103,156, 61,184, -186,232, 52, 94, 47, 56,125,117,247,237, 26,244, 24,113, 99,110, 45,186, 93,145, 37,234, 60,166, 35,176,203,104,151,241, 45, 78, - 41, 9, 74, 64,234, 84, 0,215, 43,127,189,146,225,251,255, 0,151,141,236,252,108, 47,255, 0,212,117, 98,186, 62,141, 70,193, - 80,109,171,134,184,206,250,111, 75,206,209,168,117,106,171, 77, 58,108, 79, 9,215, 41,240, 31,150,134,220,228,180,193,240,212, -166, 64, 56, 32,224,156, 28,234,227,226,156,231,194,238, 48,205, 41, 42,234,248,179, 49,165,167,161, 88,226,165,164,134,136, 37, - 61, 52,107,164,104,141, 76,102,218,138,130,204,119, 54, 10, 44,136,138, 40,222, 15,200,252, 93,224,124,162,178,142,139,131, 50, -202,202,154,247,146,106,202,201,235,245,213, 85, 72,218,137,121, 92, 72, 47,160, 51, 4, 81,176,187, 49,187,187,179,241,151,216, -125,188,123, 87,177,188,108,155,223,120,111,251, 87,109,173, 15,226,150,243,164,127, 8,239, 10,196, 74, 37, 35,235, 57,181,155, - 69,248,144, 61,246,107,137, 71,189, 56,212, 57, 74, 66, 51,149, 6, 20, 64,192, 58,156, 37,241,179, 92, 40,241,203,106,237, 46, -225,220,246,214,221,239,165,175,107, 85,218,191,118,150,241,196,122,245, 54, 52,165,184,202, 93,157, 69,169, 68,120, 38,161, 71, -146,245, 54, 31,189, 67,112,189, 2,106,233, 81,140,168,239, 42, 43, 5,184, 0,123, 51,184, 59,180,120,227,226, 73,123, 35,122, - 92,215, 45,167, 72,254, 47,238, 75,185, 21, 91, 80,210,133, 79,223,104,181, 43,126, 19, 17,149,245,197, 62, 75, 62,234,182,234, -239, 21,254,143,159,153,164,114,168, 12,131,250, 11,240,185,177,214,207, 9,155, 29,181,187, 7, 78,186,100,213, 41,118,141, 53, - 54,133,175, 62,230,151, 77, 98,183, 95,122, 59, 21, 90,234,227,165,168,172,176,212,202,144,167,198,170, 72, 83,113,218, 4, 70, -167, 60,241, 64,109,167, 22, 49,227,201,203,105, 56,158,154,191, 47,204,234, 97,226,113, 20, 74,241,160, 40,145,211,114,230, 28, -196,153, 44,218,218,229, 29,117,125,130,110, 45,140,253, 29, 23, 52,173,225, 42,188,187, 50,202,105,103,225, 38,158,102, 73,100, - 43, 36,146, 85,137, 41,207, 41,224,123,174,133, 0, 58, 57, 91,243, 2,216,220, 12, 63,180,219,118,145, 74,138,212, 72,144,152, - 67, 77, 33, 40, 72, 13,164, 97, 41, 24, 0, 0, 58, 12, 1,168,214,125, 36,238, 26, 44,170,175, 15, 59,113,196,205, 42,137, 14, - 22,224,216, 59,137, 73,176,171, 53,136,200, 98, 51,213, 75, 2,242,167, 86,221, 76, 42,145, 5, 42,168, 46, 29,213, 78,163, 42, - 16, 60,230, 50, 42,243,249, 18, 18,251,170, 18,111, 4, 30,160,228,122,141, 71, 19,233, 42,111, 69,183,107,112,145,182,219, 37, -239,241,156,189,119, 91,118,169,119, 3, 20,143, 17,179, 37,155, 43,111,169, 53,105, 85,170,210,208, 57,148,210, 5,199, 87,180, -163, 53,144,128,239,189,200, 40, 89,247,119, 16,170,219,194,167,174, 95, 16,120, 99,216, 11, 9, 94,160, 7,211,125,224, 42,220, -240,214,234,188,157,100,223,109,175,219, 22,175,140, 41,151,191,134,156, 91,250, 68, 41,133, 41,137,143, 85,182,168, 14,158,207, -166,253, 27,157,160, 45,183,222,221,240,212,253, 25, 45,199,171,212,118,115,136, 29,176,151, 33,247,169, 54,142,229, 80,110,122, - 75,110,168, 41,184,138,190, 45,181, 67,159, 26, 49, 42, 42, 67, 62, 61,152,135,139,120, 8, 14, 76, 91,137,202,221,112,234, 82, - 58,139,207,209,155,219, 90,149, 31, 99,247,187,115,230, 71,118, 60, 91,231,115,160,208,105,106,117,183, 80, 38,192,177,109,214, - 20,185,241,212,165,114,187, 24,213,110,170,156,110,100,164, 31, 22,152,242, 20,163,202, 2,101, 13,163,120,178,105,219,196, 78, - 41, 52,214,229,243,208, 27,116,230, 8, 34, 19,125,252,208,250,189,247,193, 60, 25, 90,149,240,199,132, 5, 93,249,190,206,228, - 95,175, 40,212, 76, 97,251,185, 38, 61, 63,225,181,182,194,210,210,210,213,119,139, 59, 11, 75, 75, 75, 67, 3, 11, 86,231,168, -244,137, 50,219,159, 34,151, 78,126,123, 74,105,109, 77,122, 12,103,101,180,182, 20, 20,202,155,146,182,138,208,164, 40, 2,146, - 20, 10, 72,200,193,213,199, 75, 89, 4,141,193,177,247, 96, 98,222,186, 77, 45,198,165,199,114,155, 79,113,137,239,123,196,230, - 87, 14, 50,154,153, 32, 41, 11, 15,203,109, 77,226, 67,220,237,182,121,150, 10,178,128,115,144, 52,195, 92,219,245,176,182,149, -122,185,103,220,245, 58,117, 38,177, 14,165, 62,137, 88,166,205,183,100,165, 18, 94,180,182,226, 54,233, 43,153,126,224, 91,159, - 5,155, 45,232,238,197, 88, 82,208,167,241, 10, 62,100,128,214,182, 39, 90,175,186,220, 34,237,174,239, 92, 87,189,203,114,202, -174,179, 62,249,180,173,155, 70,114, 96, 73, 97,182,233,177,104, 55, 4, 90,205, 74,117, 39,196, 97, 70, 44,234,189, 58,155, 70, -165,212,213,146,151,233,244,134, 89,229, 24, 36,239,229,230,133,166, 97,152,203, 44,112, 21,216,197, 98,193,245, 40, 4,130, 13, -194,173,216,141,137,210, 0, 32,219, 9, 75,204, 10, 12, 42,165,129,253,111, 75, 29,135,199, 97,247,227,225,226,159,135, 84, 56, -170,163,213, 95,119,172, 38, 13,219, 88,247,105, 22,125, 85,171,145, 66,203,155, 66,162,214, 18,136,138,166,123,195,149, 5, 46, -227,166, 8,173,167, 43,148,194,220,113,158,102,153,112,164,250, 39, 17,220, 62, 92, 21, 58, 93, 58,145, 81,141, 34,185, 94,151, - 97,212,226,211,133,167, 80,106,170,170,149,249,112,215, 45,203,118, 92,198, 28,166,133,197,168, 51, 86,164, 85,125,241,199,121, - 87, 1,181,165,233, 10,109, 15,161, 74,182,220, 60, 32,109,125,201,123,215, 47,185,174, 86, 27,170, 87, 55, 43,109, 55, 45,216, -204, 61, 29, 48, 33,205,219,106, 84,138, 75, 84, 24, 49,212,193, 12, 91,213, 70,167, 84,156,170,176, 58,201,118,122,151,204, 20, -134,139,116,232, 92, 31,109,165,187,120,209,239,138, 92,218,235, 53,202, 30,226,110,142,227, 66,113, 79, 68,117,145, 63,115,169, -177,233,206, 81,214,211,177,136, 85, 10,144,168, 20,183,233, 12,118,138,245, 57, 11,202,185,222, 14, 56,145,195,220,178, 86,106, -161, 46,139,128, 74,144, 27, 78,161, 30,201,246, 67,125, 94,175,251,237,109,176,143,246,189, 67,202,133,111,239,189,175,107,245, -235,111, 53,190,235,247,192,151, 23, 20,214,213,149,120,238,245,161,112, 90,149, 90,123,118, 93,223,110,218,116,155,146, 37, 34, -165, 34,213,175, 92, 87,142,216, 91,119,181, 10, 5,199, 93,102, 0, 98,139, 83,155, 86,172,154, 91, 40,230,144, 74,145, 17, 79, -169,147, 50, 58, 23,100,166,241,143,176,110, 91,118,252,155,150, 60,202,122, 85,111, 48,244,196,211,236,186,197,114,218,166, 92, -206, 88,209,239, 59,138,199,163,207,137, 73, 87,214, 85,120,214,244,153,202, 90, 88,103,194,117, 48,100, 69, 14, 42, 91,110,197, - 77,226,167,194, 53, 62,224,168,214,164, 92,187,177,184,117,202, 93,207, 86,176,238,171,166,132,252, 75, 34, 52, 75,138,247,219, -171, 22,218,178,232, 23,101, 70,124, 75, 81, 19, 90,146,100, 90,180,154,171,241, 99, 73, 98, 19,149, 8,201,195, 8,139,207, 29, -204, 89,174, 3, 54,230, 28, 89, 84,218, 93,213,112, 83,169, 85, 8, 13,183, 62, 50,109,173,179,153, 84,126,170,109,166, 45,137, -213, 38,111, 9,246, 59,149,202,124, 73, 44,199, 68,199, 96,199,169,183, 24, 77, 91,133, 9, 76, 55, 93,134,181,227, 28, 52, 99, - 65, 52,210, 44,161, 35,212, 99, 50, 88,176,141, 85,236, 90, 50, 67, 23,214,214,210, 86,214,179,139,144, 10, 77,101,201, 85, 4, - 92,245,183, 75,220,116, 61,133,133,239,123,246, 56,201,110, 78, 45, 54,210,143, 71,187, 69, 26,206,190,106, 23,221,159, 10,239, -174, 77,176,164,109,229,114,157, 93,162,200,181,109, 26, 5,194,253,122,230, 66,160, 17,111,208,220,164,222, 86,170, 68,245, 41, - 75, 91, 85,192,134, 91,117,109,188,218, 1,107,139,222, 30, 41,208,160, 38,182,212,154, 96, 81, 98, 34,164, 83,236,138,173, 86, -132,229,233, 73,143, 2, 77, 86,210,160,202,167, 82,150,229,102,224,167, 57, 85,155,240,177, 28,130,105,117, 4, 48,181,191, 26, - 67, 73,200,239, 78, 20,232,247, 93,227,184,151,181, 59,113,239,187, 58,175,186, 16,107, 20, 59,177, 20, 6,109, 25, 81, 38, 91, - 85,235, 26,194,177,234,148, 36, 49,113, 91, 83, 67, 13,174, 54,221, 80,228,162, 75,124,147, 24,118, 76,180,176,251,104,120,114, - 97, 71,129, 29,185,102, 75,134,157,116, 87,233,212,215,107,237,221,142,192,102,217,219, 23,234, 46,220,107,153, 26,125, 70, 66, -175, 41, 86, 50,235,200,165, 73,156,220,169, 11,130,138,162, 26, 67,243,150, 16, 68, 68,166, 32,196, 67,134,204, 81,243,102,154, - 55, 96, 25,172, 90,225,180,141, 75,126, 89, 22, 86,190,141,141,197,203, 50,155, 12, 6,246,205, 70,202,164, 3,177,176,251,143, -218,190,227,175,167, 96,112,231, 92,188, 65,108,253,156,237, 21, 85,234, 37,205, 77,117, 54,204, 75,162,127,188,109,197,114, 52, -173,190,178,220,185,255, 0,131,148,235,130,242,141, 38,152,219,246,149, 21,117,198, 37, 41,160,227, 97,192,213, 50, 76,191, 5, - 44,199,113,212,227,232,226,211,100, 21, 21,169,244,186, 61,249, 82, 97,202,109,126,252,241,169,187, 81,118,165, 40,183,173,245, - 24,119, 77,250, 28,149, 70,101, 47, 81,162,201,144, 35, 61, 61,165, 56, 94,122, 73,102, 57,144,174,112,155,149,235,194,253, 54, -254,147, 62, 77,127,114,247, 1, 75,185,109,201,150, 53,252,136,169,180, 27, 69,243,183,234,190,107,183,181, 30,208,169,151,173, -119, 21, 76,139, 79, 23, 21, 86,150,196,154,122,162,203,114,155, 49,212, 72,121,217, 74, 76,164, 52,251,165,194,237,235, 26,209, -179,173,109,147,172, 76,141, 81,133,182, 87,238,208, 87, 46,106,213,219, 71,163, 71,122,208,188,167,211, 39,166, 53,106,131, 47, -109,107,104,172, 50,153,222,250,242,158,167, 46,147, 80, 97,184,166, 59, 47,172,204, 15, 66, 37, 60, 57, 12,220,152,228,168,144, - 77, 35, 16,197,159, 68,106,161, 88,234,102,104,191,104, 88, 1,114, 84,173,192,114,193,114,237, 84,161,152, 32, 33, 64,176, 2, -228,155,141,128, 13,233,248,131,216, 12,110,107,245,216,236,216,210,174,155,102, 19, 51, 24,254, 12, 74,185,104,144, 74,126,174, -102,127,139, 76,118,175, 5,151, 65,108,123,159,142,181,183,206, 74,121,146, 94, 82,148, 50, 14,180,215,116,165,219,144, 32,213, -182,215,234, 10, 53,122,167, 42,135, 42,149,118,221,213, 70,214,169, 21,107,134,188,202,229, 86,106, 18, 4, 96,219,174,148,212, - 36,135,144,147, 32, 54,202,144, 24,109,164, 55, 29,160,157,199,135,107, 57, 22,193,139,100,166,162,160,236,107, 61,139, 88, 85, -154, 99,195, 80,113,154, 42,105, 34,162,212,101, 58,174, 69,115, 39,197, 74, 10,206, 14, 19,204,123,235,144, 59,209, 19,116,167, - 75,115,110,234, 52,115,107,213, 46,219,210,159, 99,220,151,204, 58,236, 73,212,214, 41,117,135,213, 18,124,250, 47,142,152,243, - 99,207,171, 72, 8,129, 8,201,140,219, 77, 59, 90,111,154, 74,212,166,148,189, 76,174, 26,121,106,106, 29,239, 34, 68, 9, 80, -110, 46, 9,181,201,219,183, 91,237,190,248, 60,236,234,136, 7,148,183, 95,203, 29, 10,217,141,236,135,113,237,133,155, 34,137, -104, 94, 55, 7,131, 64,143, 79,110,109, 18,136,236,138, 4,185, 20, 96,229, 38, 91, 17,174, 7,228, 6, 36,186,204,216, 18, 99, -188,239, 63, 35,146, 34,186,166, 84,235, 74,109,197,229,117,203,231,113,228, 81, 38, 76, 27,115, 80,181,169, 66, 35,130,109, 86, -161, 91,167,203,170,192,109,238,102,132,198,233, 52, 53, 63, 33,184, 44,146,133,204,125, 1, 82, 99, 70,241, 95,139, 22, 83,173, - 37,181,115,182,167,188,183, 37,129, 6,159,182,219, 79, 95,118,221,177,236,232, 45,208,224,166,152,212, 39, 19, 54, 68, 95,130, - 92,184,146,164, 69, 83,145,233,254, 40, 83,113,195,107, 72,113,182, 68,151, 7,140,251,152,109,170, 91,157,184,213,165,133, 85, - 47,171,178,127, 33,230, 75,114,171,213, 23, 35,250,156,199, 84,159, 15,147, 25,200, 41,229,229,200, 61, 52,228,156, 45, 83, 33, - 46,213, 9, 12,109,184,184, 98,214, 61, 46, 54,177,183, 93,246,239,141,118,204, 17,118,208, 89,135, 93,192, 23,247,125,248,187, -241, 61,191, 16,171, 20,120, 91, 43,100, 59, 38, 45, 50,223,155,227,110,163,143,165,182,103,212,183, 14, 41,104,204,160,206,247, - 98, 91,122,157, 79, 90, 99, 41,149, 50,183, 97,190,216,132,184, 46, 57, 2, 52, 39,156,210, 5, 41, 40, 66,220, 89, 66, 27,109, - 42, 90,220, 95,192,219,105, 72,202,150,226,212,112,218, 7, 82, 73, 32, 0, 59,247,214,204, 79,218,105, 60, 77, 67,171,238, 54, -206,186,245, 31,112, 40,173, 83,169, 53,218, 12, 24,116,183,153,221, 11,113,130,220, 51,122, 91, 76, 85, 22,150, 26, 76, 26,164, -146,195, 50, 28, 10, 83,241,203,235,111,199,134,228, 45,102,150, 23,179, 43,113,174,103,163, 78,220,186,172, 10, 83, 3,192,117, -104,185,234,127,195, 25,237, 41, 32,164,174, 53,175, 72, 83, 84,104,143,114, 21,146,164,150,212, 20,190,185,198, 4,179, 46,173, -203, 50,156,190, 58,121,100, 74, 87,131,103, 86, 97,169,159, 98, 92, 0, 11,184,125,138,176, 91,105, 32,109,107, 6,154,136,106, -106,106, 25,213, 76,161,250, 16, 54, 3,176, 36,216, 2, 58, 17,126,183, 62,252, 48, 60, 43,109,125, 79,127,119,214,218,118,158, -185, 44,218, 22,100,195, 85, 21,152, 78,173,176, 24,129, 33,164,215, 46, 72, 51, 89, 87,232,220,113,192,221, 34,148,242, 50,174, -121,115,101, 55,205, 29,104,115, 82, 78,211, 25,177, 59, 3,102,236, 21,187, 50,139,108,185, 46,165, 62,173, 33,153, 53,170,245, - 73, 17,145, 54,114,162,180, 89,135, 17,150,162,180,148, 67,165,176,133, 61,224,176, 57,202, 21, 37,197, 41,197,149,100, 62,122, -131,113, 6,106,185,165, 96,104,175,236,208, 11, 33, 34,197,137,182,166, 35,168,189,128, 0,244, 85, 23,220,156, 61, 80,210,154, -104,136,127,239, 28,220,251,189, 7,243, 39,212,156, 45, 45, 45, 45, 48,227,119, 11, 95, 8, 4, 16, 70, 65,232, 65,215,221, 45, - 12, 12, 83, 67, 45, 53,146,219,104, 65, 61,202, 82, 1, 63,128,213, 77, 45, 45, 12, 12, 51,123,215,177,246, 78,250, 90,142,219, - 55,132, 15, 17, 77,169, 82, 41, 53, 88,229, 45, 85, 40,211,185, 57, 19, 46,159, 36,164,248,107,198, 2,208,160,166,221, 72,229, -113, 10, 24,199, 21, 55, 95,128,189,229,176,101,201,126,218,136,213,251, 65, 75,139, 49,164, 82,249, 99, 86, 27,103, 36,161, 50, -233, 82, 22, 57,221, 9,192,203, 14, 59,205,140,242,163, 60,162, 65,250,242,180, 33,192, 82,180,165, 96,247, 10, 0,143,219,170, -147,196,127, 5, 56, 23,196,226,149, 89,229, 28,148,121,204, 74, 17, 43,169, 25, 98,168,208, 62,202, 73,169, 94, 41,209,127, 84, - 75, 27, 50, 11,136,217, 1, 55,183,188, 54,241,191,143, 60, 47, 87,165,200,171, 99,172,201,165,114,239, 65, 86,173, 45, 54,179, -246,158, 61, 46,146,192,237,250,198, 41, 21, 92,216,200,174, 64,180, 88,213,177,251,198,219,222, 2,182,186,252, 11, 10,228,255, - 0,246, 90,178, 91,207,151,233,189,211,147, 31, 62,108,117,239,167,207,108,248, 36,222, 91,238,100,115, 87,165,127, 3,105, 10, -113, 62, 60,170,176,241,106, 37,172,142,111,119,166, 48,172,135, 49,156,120,203,100, 12,103,174, 48,100, 58,105,148,245, 30, 99, - 13,130,123,231,195, 26, 33,168,236, 50, 48,211, 77,182, 63,217, 72, 31,208, 53, 83,100,223, 67,239, 15,232,107, 82,167, 52,206, -115, 28,238,154, 50, 15,179,179, 69, 4,111, 99,246,100,120, 99, 18,149, 61,249,111, 17,244, 97,139,115, 58,250, 99,248,133, 95, - 67, 37, 46, 85,146,229,217, 29, 76,128,143,104, 85,150,162, 68,184,251, 81,164,210, 24,131, 14,220,200,229, 95,240,156,107,150, -193,112,227,103,236,125, 9,184, 52,136,161,218,131,220,143, 84,106,146,130, 29,168, 84,101, 37, 56, 15, 74,120, 32, 14, 80, 10, -130, 27, 64, 13,182, 9, 8, 72,201, 39,100,244,180,181,212,185, 94, 87,151,100,153,125, 38, 85,148,209, 71,151,101,180, 40, 35, -134, 24,148, 36,113,160,232, 21, 70,221,110, 73,234,204, 75, 49, 36,147,142, 85,205,115, 92,203, 59,204,106,243,108,222,182, 76, -199, 50,175,115, 36,211,204,197,228,145,207, 82,204,119,233, 96, 7, 69, 80, 21, 64, 0, 0,180,180,180,181,191,134,252, 45, 45, - 45, 45, 12, 12, 45, 45, 45, 45, 12, 12, 45, 45, 45, 45, 12, 12, 45, 45, 45, 45, 12, 12,104, 15, 16,151, 95, 24, 54,239, 17,123, - 83,103,109, 12, 84,212, 54, 75,118, 69,182, 47, 27,216,219,148, 90,131,187, 24,189,180,184,101, 92,219,132, 23, 42, 76, 82, 37, -139,234,202,151, 77,160,210,125,241,138,135,213,181, 58,116,137,140,248, 9, 90, 64,231,117, 43,136,239,106,117,199, 89,185,105, -117, 10, 52,219, 42, 68,189,220,218,235, 50,177, 79,135,177,151,213,106,118,216, 64,186,248,146,182,109, 10,197, 94,196,168,220, - 27, 33, 79,182,247, 3,109, 33,236,132,171,166,163, 88,171, 53,117,221,106,132,229, 62, 29, 72,212, 41,241, 36, 73,106, 28,131, - 84,132, 47, 28,201, 10,199,108,140,227, 84, 76, 88,197, 69, 69,150,202,143,115,203,215,203,250,134,165, 20, 60, 69, 77, 73, 4, -113, 75,195,212, 85,111, 18,196, 57,143, 18,150,102,142, 70, 98,238, 24, 50,182,184,244, 70,234, 2,130, 99, 89, 13,218, 73,249, -209, 44,195,134, 42,235,106, 36,154, 46, 37,175,163,142, 87,148,152,210,102, 8,171, 36,106,161, 35, 42,200,203,203,148, 73, 42, - 49, 44, 87,154,209,139, 36,116,252,158, 18,111, 54,228,113,174,250,120,178,217,207,122,222, 77,206,102,216,218,235, 50,169,182, -183,141, 11, 96,170,118,165,187, 86,174, 81, 46, 93,174,102,187,109,151, 87,181,116,241,125,223,117,200,235,187,229, 59, 34,206, -174, 87,232,109, 83,149, 52, 24,150,188,232,144,226,189,121,221,222, 37,189,160,182,229,237,191,208,108, 59, 58,250,169,203,183, -173,190, 38,157,179,108,216,155, 3, 85,170, 88,180,107, 78,206,216,154,213,197,195,166,226,216,251,164,154, 35,177,247, 99,117, - 46, 45,225,139,109,211,166, 90,113,234, 19,223, 67, 85,233,113, 87,111, 66, 52,228,205,149,220, 51, 22, 58,149,204, 89, 65, 80, - 24, 4,167,168, 30,131,211, 95, 12, 72,196,133, 22, 91, 42, 29, 1,229, 25, 3,211, 75,197,197, 20,136,176,163,240,229, 36,235, - 18,176, 33,145, 44,210, 60, 84,241,180,133, 86, 48,170, 73,131,152, 2, 42,144,206,124,197, 76,130, 93,105,120, 70,177,218,103, -143,138, 43, 96,121, 93, 72, 43, 36,132,172,105, 45, 76,169, 24,102,149,157,128, 21, 28,178,100,103, 82,136, 60,129,132, 70, 29, - 28,224,214,249,226, 54,181, 83,222,219, 55,136, 39, 43, 85,241,100, 94,246,107, 27,119,127, 86,246,245,141,190,145,120, 91, 23, -102,204,109,181,247, 91,109,168,212,184, 17,169,213,150, 40,215,245,201,118,208,253,234, 19, 64,161,116, 5, 67,154,165,207,141, - 37, 70, 41, 62,217,106,175, 29, 60,104,113, 79, 93,164, 80,248, 84,226,128,108,102,199,212,235,214, 38,211,193,135,178, 27,169, - 46,147,113, 46, 44,255, 0,115,185,183, 61, 15,199,182, 20,196,245, 87, 38,211,216, 92, 23,154, 60,130,143, 6,156,148,254,148, -200,113,217,206, 33,150,155, 57, 67,105, 73,237,144, 49,211,211, 67,187, 77,128,242,138,221,136,195,139, 61,212,180, 5, 19,247, -157,111,240,175, 28,175, 11,103,243,113, 12, 25, 5, 53, 85, 91, 66,177, 70,164,152,227,133,180, 34, 75, 44,105, 26,133, 87,155, - 75, 19,164, 5, 65, 35,170, 0,166,216,110,227, 15, 15,159,139,248,110, 14, 25,168,226, 74,186, 58, 36,153,165,149,192, 89,101, -157, 4,143, 36, 48,202,242,146,204,144,234, 80, 53, 18,206, 99,141,156,150, 92,126,116,252, 63,207,246,190,240,179,111, 84, 45, -109,128,218, 78, 44,118,210,133, 86,172, 61, 95,169,195,163,240,195,113, 77,114,125, 93,248,145, 32,174,108,185,213,189,175,149, - 33,245,136,112, 98,182,132,169,210,134,210,214, 16,148,229, 89,216, 95,229,123,244,129, 63,242,126, 52, 63,251,173,204,255, 0, -254, 61,169,231,253, 81, 76,255, 0,200, 99,127,246, 73,254,173, 47,170, 41,159,249, 12,111,254,201, 63,213,169,173, 79,140,244, -149,147,203, 85, 89,225,206, 77, 85, 85, 49,212,242, 73, 10,188,142,118,221,157,162, 44,199,110,164,147,211,211, 16, 58, 95, 2, -107,104,105,226,164,162,241, 71, 60,163,164,128,105, 72,162,157,227,141, 23,246, 81, 18, 80,170, 58,236, 0, 27,226, 37,155,115, -253,212,126, 49,125,153,188,113,237,174,247,198,222,153, 59,193, 46,175, 96, 72,219,250, 22,228,109,202,182,202,225,187,172,138, - 21, 82,137,114,222,246,157,180,203,246,205, 29, 85, 20,205,129, 74,154,216, 8, 67,198, 83,220,180,197, 40, 34, 90,211,174,108, -123, 29, 56, 93,226,149, 28,122,109, 85,237, 78,219,189,198,219,219,123,106,234,245,201,187,145,114,220,214,181,114,217,129, 10, -149, 34,223,173, 81,102, 90, 18, 69,110, 36,113, 58,173, 81,126, 98, 97,251,154, 2,223,101, 46, 57, 49, 77,165, 17, 22,226, 63, - 64, 22, 96,195,143,159, 6, 51, 45,115, 12, 43,145, 0,100,124,245, 69,170, 85, 61,151,140,134,162, 50,135,137, 36,184,148, 36, - 40,147,243,198,154,161,241,114,174,151, 42,226,204,162,135,135, 40,168,169, 56,157,157,130, 68,186, 35,166,230,211, 71, 75, 40, - 72,213, 66, 72,165, 35, 14,129,130,132,145,152,182,181, 58,112,239, 63,130,212, 85,153,191, 6,103, 85,252, 79, 95, 95, 91,194, - 43, 26,151,149,181,201, 87,201,170,146,174, 18,242,179, 23,141,131,202, 81,202,150, 47, 18,162,175, 45,134,178, 91, 28,254, 11, - 94, 39,235,248,104,231,255, 0,249,185, 70,127,110,177,109,192,143, 34, 93,135,122,196,136,195,210,165, 74,180,238, 40,241,163, - 71,105,111, 72,145, 33,234, 68,198,217, 97,134, 91, 73, 83,175, 45,197, 37, 41, 74, 65, 82,148,160, 0, 36,235, 46,210, 35, 32, -131,216,244, 58,169, 35,115, 27,163,129,114,132, 31,220,111,139,166, 68, 18, 35,161, 54, 14, 8,253,226,216,132, 15,176,167,134, -142, 35,182,159,142,131,114,110,159, 15,251,217,182,150,232,218, 43,214,152,107,251,129,181, 87,213,153, 69,250,202, 85,110,207, -118, 45, 59,235, 91,142,131, 25,143,127,113,168,178, 84,219, 62, 39,136,180,199,112,165, 36, 33, 68,117, 47,219,205,195, 55, 28, -251,238, 54, 30,243,225,142, 29, 70,225,177,182, 89, 85,139,166,109,187, 96,220, 82, 40,155,167, 77,220,121,146, 24,110, 13,239, - 72,138,151, 99, 46,172,220, 26, 44, 70, 24,129,245,108,167, 42,145,159,169,206, 83,113, 11, 78,151, 83, 34,132,192,132,135, 60, -100,198,101, 46,147,146,224, 64, 11,207,219,162, 84,132,172, 20,173, 41, 82, 79,112,160, 8, 63,113,213,149,152,120,159,153, 87, -113,173, 39, 27,140,170,149, 43,105, 34, 16,136, 36, 15, 44, 37,116, 73, 27, 19,114,172, 24,164,140, 1, 7,202,108,119,232,106, -156,179,194, 76,171, 47,224, 42,222, 1,108,226,174, 74, 26,217,140,230,162, 50,144,206,175,174, 41, 20, 11, 43,161, 85,120,148, -144, 65,212, 46, 54,216,136, 25,208, 61,170, 30,218,237,168,164, 39,110,107,112,119, 42,161, 86,167,180,154,124, 73,123,145,195, -123,147,175,152, 73, 79, 52,102, 82,236,185, 86,131, 14,213,229, 7, 80,172, 61, 80,106, 99,238,173, 39,196,113,206,163, 77,149, -151,192,119,180,211,218, 97,189, 44,110, 46,255, 0, 64,220,170, 74,107, 38, 36, 90,246,237,239,133, 26, 85,175, 26,139,111, 48, -234,221,106,157,101, 88, 47,198,128,235,144, 71,143, 49,200,112, 41, 20,248,116,144,252,135, 28,117,248,190, 58,222, 95,232, 6, -237, 2,142,250,185,220,129, 29, 74,245,240,211,253, 90, 50, 61, 62, 20, 79,251,222, 43, 45, 99,205, 8, 0,254, 56,212,132,120, -202,153,122,212, 79,195, 92, 13,149,240,246,109, 84,165, 90,170, 40,213,156,106,234, 81, 86, 56,128,223,205,165,153,208,176, 5, -209,237, 99, 26, 62, 5,190,100,244,176,113, 87,136, 57,191, 19,100,212,110,174,148,114,202,202,135, 79, 64,238,210,202, 78,215, - 82,200,169, 32, 82, 66, 58, 94,248,215,190, 20,248,114,178,184, 89,217, 43, 15,102, 44, 56, 70, 37,191,100,208,163,210,163, 45, -222, 85, 76,168, 74, 82,220,153, 87,173, 84,156, 72, 1,218,172,250,188,153,211, 37, 41, 41, 74, 21, 34,123,133,180, 33, 28,168, - 78,200,105,105,106,151,168,168,158,174,121,234,170,101,105,234, 42, 93,164,145,216,221,157,220,150,102, 98,119, 44,204, 73, 39, -185, 56,189,233,169,169,232,233,169,232,233, 97, 90,122, 90, 84, 88,227,141, 5,149, 35, 69, 10,136,160,108, 21, 84, 0, 7, 96, - 48,180,180,180,180,142, 23,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194, -210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,214, 53,117,217,246,213,239, 67,171,219,183, 69, 34, 21, - 94,149, 91,165, 79,163, 84, 24,146,195,107,113,112, 42,113, 93,135, 45,182, 95, 41,231,142,178,203,206,114,173, 5, 42, 66,136, - 82, 72, 80, 7, 89, 46,150,178, 24,169, 5, 77,136,238, 48, 8, 7, 98, 46, 49,196,171,235,133,221,241,219,202,252,170, 5, 5, -186,133,255, 0,110, 54,227,142, 91,183, 24,180, 43, 87, 5, 89,218, 66,156, 34, 28, 91,130,109, 22,174,210, 93,171,176,128, 27, -113,199, 24,105,215,249, 3,170, 47, 40,169,247, 49, 56,124, 52,111,189,235, 81,137, 67,173, 91, 85,184,244, 57,175, 52,212,250, -127,240, 58,177,105,211,231, 52,181, 0, 89,174,220, 21,122,163,202, 77, 11,186,164,199, 97, 13, 46, 66, 17,224,173,197,178,183, - 24,123,188, 58, 90,146,167, 20, 85,172, 74,141, 2, 59,168,182,162, 91,115,107, 92,168, 54,223,184,232,119,216, 13,176,222,114, -248,203, 92, 57, 11,126,155,126, 7,249,225,157,217,141,156,160,236,245,178,138, 85, 60, 53, 50,183, 53, 12, 57, 94,173,134, 82, -202,230,190,210, 57, 90,139, 21,176, 63,193,105, 44, 36,169, 17,217, 29, 0, 37,106,202,214,163,167,139, 75, 75, 81,233,166,150, -162, 87,154,103, 50, 73, 33,185, 39,231, 96, 58, 0, 54, 3, 97,182, 55,149, 85, 20, 42,139, 42,244,194,210,210,210,210, 88, 54, - 22,150,150,150,134, 6, 32,111,253,251,111,253, 25,127,246,206,255, 0,117, 13, 84, 31, 77,167, 61,189,153,157,251,127,142,111, -251,168,234, 6,201, 25, 61, 71, 79,216,116, 66, 7, 92,227,160,237,253, 29,191, 61,180,202,213,149, 2,195, 94,231,220,191,150, - 52,249,178,126,215,224, 63, 44, 79, 25, 63, 77,151, 39,255, 0, 6,119,218,127,150,103,111,251, 41,107,223,247,236, 95,244,103, -255, 0,219, 47,253,212,245, 4, 4, 2, 7, 95, 63, 47,223,170,169, 25, 61,186,122,250, 31, 81,243,210,126,219, 83,255, 0, 19, -240, 95,203, 24,230,201,127,181,183,192, 98,119,163,233,176,103, 24,246,104, 30,163,167,248,229,121,231, 24,255, 0, 53, 62,250, -168, 62,154,225, 35,175,179, 71, 31, 47,229,149,254,234,154,130, 42, 65,207, 67,215,212,255, 0, 96,209, 9,238, 1, 57,207, 66, -113,249,198,136,213,245, 67, 97, 37,143,253, 43,249, 99, 60,217, 45,187,126, 3,242,196,238, 7,211, 87,201,199,247, 52,251,255, - 0,207, 39,240,255, 0,146,174,190,171,233,171,114,130,127,185,167,159,151,242,200,255, 0,117, 93, 65, 69, 9,235,159,151, 79, -207,231,190,171, 4,115, 15,151,207,215,229,233,211, 26, 76,230, 21,118, 63, 93,254, 85,254,156, 37,237, 18,245,215,248, 15,203, - 19,165, 79,211, 89, 73, 4,159,102,170, 83,233,158, 50,135,207,254,106,191, 45, 18,215,211, 80,241, 19,205,253,205, 94, 80,123, -127,142, 62,115,255, 0,101,109, 65, 56, 67,100,168, 18,128,163,223,185,239,242, 25,237,223, 87, 54,211,203,202, 0, 0,118, 29, - 49,229,158,131,238,210,103, 49,173, 22,250,254,191,225, 79,233,198, 13, 68,189,155,240, 31,150, 39, 74,159,166,146, 79,127,102, -191, 47,111,249, 99,122,255, 0,213, 99, 85, 71,211, 69,207,250, 54, 71, 94,199,249, 98,244,199,175,249,172,106, 11,137, 0,145, -159, 63, 79,199,240,209, 41, 7,203, 0,118, 57,237,143, 77, 96,230, 85,191,241,191,202,159,211,140,123, 76,223,183,248, 15,203, - 19,158,254,253, 11,254,141,175,251, 98,127,186,206,189,143,166,127,144, 15,247, 54,241,159,249,225,255, 0,186,214,160,208,144, - 8,234,123,244,199,237,253,218, 36, 39, 29,124,250,119, 29,189,116,145,205, 43,199,251,255, 0,242, 39,187,252, 56,199,180,205, -109,218,196,123,135,229,137,201,143,166,116, 79,250, 55, 15,111,252,240,187,127,217,107, 94,199,211, 56, 39,191,179,119, 29, 51, -254,120, 95,111,127,241, 91,233,219, 80,111, 66,135,111, 60,254, 7, 24,209, 8,238,125, 72,239,223, 31,119,231,182,138,115, 90, -253,254,190,214,255, 0, 10,127, 78, 11,237, 51,116, 50, 88,250,233, 31,150, 39, 26, 62,153,166,112, 71,179,131, 57,237,142, 48, - 63,221,115, 94,135,211, 49, 57, 0,251, 55,241,156,227,252,112, 51,219,254,171,154,131,194, 82, 70, 48, 64,232, 51,143, 33,242, -252, 52, 66, 49,158,191, 96,244,255, 0,142,136,115,108,195,114, 42, 46, 7,248, 19,250, 48, 95,107,159,246,255, 0, 5,252,177, - 56, 65,244,203, 15,159,179,135, 31,245,191,207,255, 0,149,221,122,254,252,175,166,127,185,197,246,143,229,127,219,211,254, 75, -218,132, 10,112, 10,114,160, 9, 29, 7,168, 61,127,167, 94,243,144, 72,238,122,100,244,207,207, 69,253, 47,152,255, 0,204,127, -146, 63,233,198, 13, 93, 64,255, 0,121,248, 47,229,137,189,127,126, 89,255, 0, 71, 16,255, 0,239,127,229,235,254,107,186, 95, -223,150,127,209,197,255, 0,107,255, 0,247, 93,212, 32,130, 70, 78, 83,156,121,142,227,167, 97,235,175,129, 39, 36, 96,158,227, -228, 15,174,116, 63, 75,230, 63,243, 31,228, 79,233,198, 61,174,163,175, 50,254,235, 47,229,137,191,255, 0,126, 86,112, 79,247, - 56,187, 99, 63,227,127,235,216,255, 0,154,238,144,250,101,100,228, 15,103, 9,200, 56,255, 0, 59,241,143,159, 95,228,189,168, - 65, 28, 19,201,158,160, 12,125,189, 71, 93,124,228, 56, 61, 58,142,199,215,215, 67,244,190, 96,127,246,143,242, 39,244,227, 34, -170,163,188,157, 61,195,242,196,224, 26,250,101, 42,117,105, 66,125,155,238,173, 74, 90, 16,134,216,226,229,114, 31,117,110, 45, - 45,180,204,120,237,112,184, 87, 34, 67,142,173, 8,109,180, 2,183, 28,113, 40, 64, 42, 80, 26,145,125,139,237, 28,187,106,123, -107, 97, 92,219,161,195,163, 59, 99,184,215, 61,173, 2,228,186,182,189,141,220, 55,106,172, 25, 85, 68,137, 81,173,154,141,204, -118,206,154,106, 53,248,244,231,225,154,131,105,167, 50,136,178,214,252, 70,220,146, 35,151,215,249,251,123, 18,120, 79,167,111, -111, 18,114,247,186,251,163, 49, 85,218,222, 24,163,210,111, 53,194,156,128,245, 62,228,222, 74,163,175, 29,169,183,157, 96,172, - 9,108, 83,222,131, 80,184,101, 52,174,132,209, 41,225, 89, 75,196, 25,105, 85,110, 39,101, 73,126,161, 41,197,174, 75,239,169, -114,139,171,241, 63,239,176,162,251,170, 86,121,157, 65, 89,113, 67, 7, 35,169, 4, 18,115, 82,113,247,137,217,238, 79, 87, 22, - 91,147,230, 34, 26,136,198,185,156, 69, 79, 33, 23,221, 80, 44,145, 56, 6,222, 98,116,157,153,122,110, 71, 99,125, 27, 60, 13, -161,241, 3, 47,175,226,174, 50,162,122,236,146, 71, 48, 81, 64, 36,150, 14,107, 70,214,150,114,244,239, 20,133,117,222, 36, 93, - 65,110,172, 77,203, 45,186,186,215,180, 61,151,139, 72, 78,210, 40, 56,230, 50,147,125, 47,149, 37, 77,151, 65,231,254, 5, 97, - 72, 9,229,201,242,231, 29, 51,240,235, 38,139,199, 80,146,160,145,181,193, 5,104, 75,168,255, 0,223,202, 78, 90, 39,195, 82, -214, 13,164, 11,120,116,164, 96,142,161, 65, 94,120,215, 37, 97,212,227,199,149, 78, 9,151, 17,105,146, 42, 43,109,228,184,158, - 66,150,152, 96,162, 49, 81, 60,133,229, 15, 16,124, 93, 73, 25,192,198,117,127,135,119,198,133, 85,181,154, 92,152,232, 50, 28, -186,224, 45, 77,133,168,134,145, 77,106,160,134,156, 25,228,241,210,136, 43, 91,107, 60,205,168,199, 90, 80, 50,188, 26,248,120, -191,199, 91,223, 62,222,224, 91,217,168,122, 27,111,255, 0,163,123,205,183,183,173,183,183, 70,215,125, 26,252, 47,211,253,139, -131,216, 17, 28,143,189,110,104,215, 17,164,174,118, 53,123,111, 17, 95, 80, 78,224,219, 29,102,143,198,144,125,124,131,109, 74, - 72, 74, 85,145,120,165,105,198, 84,135, 7, 50,109,142,133, 46,164,167, 31,102,112, 78, 53,145,195,226,200, 74,117, 13, 42,195, - 67, 36,164, 41,197, 27,185, 11, 13, 21, 41, 73,194,147,252, 30, 10, 94, 8, 28,197, 41, 32, 5,103, 39,166,121,115, 2,240,167, - 70, 20, 80,180,187,134,229,185, 73,145, 29,134,150,242,101, 73,157, 30, 64, 97,134,152, 42,230,117,245, 61, 19,152,140,164, 39, - 42, 42, 1, 32,105,211,165, 85, 16,235,177,228, 37,200,205, 55, 48,170, 47,130,211,169,144,168,175,186,194,157, 76, 57, 13,129, -240,203, 11,104,243,140, 39,147,168, 74, 84, 64,202,195,197,222, 56, 99,182,126, 45,113,183,178,209,131, 98, 7, 66,105,253,247, -233,115,110,128, 3,138,247, 55,240, 35,129, 40,195, 21,225,118,129, 72,107, 19, 85, 94,119, 82,194,219,213, 27,146,171,175, 96, - 71,152,124, 11,113,237, 58,246,213,110,191,179,158,220,176, 55, 74, 7, 3, 3,126,182, 34,238,121,155,106,229,220,202, 87, 17, - 78, 89, 19,118,199,113,165,190,239,212,246,205,239,105,183,176,245,193, 6,220,171, 67, 74, 62,167,174,138,129,141, 46,106, 28, -166,201,143, 6, 89,138,153,124,121, 63, 76,188,131,211,217,192, 8,233,212,113,129,228,124,255, 0,205,115,211, 93,240,187,108, - 11, 23,121, 44, 27,215,104,183, 62,212,167,238, 22,218,110, 61,183, 91,177,239,203, 66,160,208, 85, 46,224,160, 85, 98, 2,253, - 61,213,161,121,131, 48, 56,162,244, 73, 72, 34, 68, 57,212,248,242,227, 45,183,153,109, 73,252,231,120,230,246,106,239,183, 6, - 60, 82, 94,220, 62, 83,108,205,193,221, 91, 81,182, 13,241,179, 87,213,187,104,220, 55, 36,155,231,104,106,242,164, 10, 21, 78, -166,154, 13, 41,239, 10,232,165,186,219,212,154,235,124,169,228,168,210, 87, 32, 1, 30,100,114,171, 79,131, 60, 72,204,115,136, - 37,165,205, 43, 2, 87, 83,141, 66, 67, 28, 72,146,161, 61,172,129, 53,165,192,178,216, 50, 16, 84, 54,151,115,201,126, 41,240, - 67,240,133, 90, 87,229,108, 70, 77, 84,193, 66, 19,169,160,115,246, 86,238, 90, 66,143,111, 41,114, 72,109,181, 29, 64, 44,156, -255, 0,191, 47,234, 71,247, 56, 71, 65,159,243,192,245,237,255, 0, 37,221,124,254,252,192,255, 0,251,184, 58,127,233,129,251, -191,146,230,161, 89, 94,176, 47,187, 81,114, 17,117,216,247,149,174, 99,171,195,147,252, 35,181,171,244, 20,198,115,152,128,219, -235,171,211, 88, 13, 56, 84, 8, 9, 81, 4,144, 64, 7, 88,123, 74, 75,159, 19, 69, 14,164, 21, 0,180, 45, 46, 36, 20,146, 20, - 9,109, 68, 2, 15,124,246,212,249, 51,218,185, 55,142,181, 92,123,132,103,248, 46, 42, 15,110,150,246, 51, 0,111,208,133,191, -238,181,241, 56, 81,244,203,137,239,236,225,192, 29,201,226,255, 0,215,254,171,186,248,126,153,120, 29, 15,179,135,175,203,139, -254,159,143,242, 93,212, 32, 71,158, 48, 9,235,223,204,253,191,118,188,167, 39,161,193,199, 83,242, 36,159,221,165,127, 75,230, - 63,243, 31,228, 79,233,193,189,170,162,223,222,111,255, 0, 72,252,177, 56, 1,244,203,201, 56, 30,206, 14,191,250, 95,255, 0, -186,238,190, 43,233,152, 4,128,127,185,195,159, 80, 56,191,234, 62,223,241, 93,212, 32,142,124,128,239,248,116,243,251,245,224, - 2, 84,115,211, 3,186,122,117, 63,111,200,157, 15,210,249,143,252,199,249, 19,250,113,159,106,159,254, 39,224, 63, 44, 78, 11, -251,242,241,128,127,185,197,247,127, 43,254,191,183,133,221, 47,239,203,198, 79,253,206, 35,129,231,252,175,186,125,255, 0,226, -187,211, 80,130, 66, 58,149, 12,115,116, 4,159, 63,159,111,206, 53,240,167,226,206, 58,142,135, 29,189, 58,232,126,151,204,127, -230, 63,200,159,211,129,237,117, 31,183,248, 47,229,137,190, 15,166, 96, 9, 35,251,156, 36, 99,204,241,125,223,236,255, 0, 21, -237,123, 31, 76,184, 28,127,220,226,239,156,127,141,247,167,127,249, 47,106, 16, 24,207,151,108,247,244,199, 92,126,124,181,244, -117,192,232, 61, 63,183,166,135,233,124,199,254, 99,252,145,255, 0, 78, 49,237, 85, 23, 31, 89,248, 47,229,137,191,143,166, 88, - 79,250, 56,122,245,233,252,175,255, 0,163,252, 87,122,235,233,250,101,100,119,246,112,227, 63,243,191,235,248,127, 37,221, 66, - 19, 3,190, 50, 71, 94,159,213,159,150,190,247, 32,249,119,193, 25,253,190, 93,244, 63, 75,230, 63,243, 31,228,143,250,112, 61, -170,163,254, 39,224,191,150, 38,238,126,153,113, 31,232,224, 56,245,254, 87,248,253,159,201,119,166,169, 43,233,153, 17,254,141, -252,140,227, 63,203, 3, 30, 93,255, 0,205,115, 80,137, 32,156,156, 0, 51,142,224,117,245, 61,123,245,213, 5, 32, 17,128, 51, -158,253,127, 63,145,172,254,151,204, 44,127,180,111,255, 0, 68,127,211,140,251, 84,255, 0,183,248, 15,203, 19,121, 63, 76,212, -130,113,236,221, 39, 7, 31,231,129,248,255, 0,201,111, 95, 15,211, 55, 35,183,179,120, 30,153,255, 0, 60, 47,217,254,107,125, -245, 7,245,128, 51,129,133,119,198, 14, 62,255, 0, 77, 10,172,140,244, 29,122,244,245, 31,111,111,237,209,151, 54,175,239, 83, -123,255, 0,129, 63,167, 25,246,169,251,191,224, 63, 44, 78, 33, 95, 76,228,167,253, 27,185, 30,191,203, 11,253,214,245, 72,253, - 51,220, 28,127,115,115, 63,245,194,255, 0,117,175, 77, 65,216,247,233,128,113,149, 30,227, 30,127,111,150,188, 16,112,114, 0, -207, 92, 14,248,249,244,232, 59,232,227, 53,175, 32, 30,127, 95,240,167,244,224,235, 81, 49, 23, 50,126, 3,242,196,226, 85,244, -208, 57,127,209,181,145,235,252,176,255, 0,221,103, 84,207,211, 67, 35,253, 27, 63,135, 24,191,238,177,168, 57, 45, 35, 56,193, -193, 29,252,191, 31, 95,234,208,235, 73, 57,230, 30,125,255, 0,163, 74, 46,103, 90,127,223,127,149, 63,167, 0,212,205,183,155, -175,184,126, 88,156,137,250,105, 24,200,254,230,199,108, 99,252,113,123,255, 0,217, 99, 84,213,244,210,249,127,209,175,159,250, -227,126,239,228,175,168, 52, 41, 61, 72, 62, 89,255, 0,142,168, 41, 56, 62,164,103, 31,126, 58,232,227, 50,173,255, 0,141,127, -251, 83,250,113,145, 81, 41,232,255, 0,128,252,177, 57,179,244,211,113,219,217,173,147,233,252,177,255, 0,221, 95, 94, 15,211, - 80,198,127,238,106,246,242,254, 88,253,127,254,213,181, 6, 5,142,164,147,229,220,116,200,251, 71, 97,211, 84,150, 6, 51,159, -179,211,246,104,227, 48,172,218,243, 94,253,244,175,244,227, 62,209, 55,237,254, 3,242,196,231,207,211, 85, 32,103,251,154,121, -199,252,242,113,255, 0,229, 87, 84,149,244,214, 72,255, 0, 70,150, 71,254,153, 61,191,236,169,168, 45,169, 56,237,219,247,143, - 95,191, 67, 44,117, 35, 3,175, 92,104,195, 48,171,190,242,237,255, 0, 74,254, 88, 56,158, 75,253,187,253,195,221,238,196,233, -215,244,215,249, 15,254, 13, 12,143, 95,229,149,251,191,146,159,174,168, 31,166,202, 57,185, 71,179, 56,159, 60,255, 0, 44,190, -159,179,133, 62,250,130,147,205,243,116, 35,207,203,167,159, 76,103,203,250,244, 42,153, 60,221,200, 3,183,150, 62,206,158,154, - 88, 86,212,216,125,109,255, 0,237, 95,203, 6,231, 73,183,159,240, 24,157,183,247,236,196,140,143,102,104,199,110,188,102,224, -231,211, 31,201, 71, 94, 15,211,105,229,239,236,204,199,253,115,191,221, 71, 80, 71, 82, 0,206, 51,208,227,167, 94,222,154, 25, -105, 72, 7, 35,174,124,242,122,252,243,246,104,235, 89, 57, 27,203,191,192,126, 88,199, 58, 77,183,189,253,195, 19,188,254,253, -183,254,140,191,251,103,127,186,134,150,160,120, 80, 60,142, 63,111,239,210,209,253,170,163,254, 39,224,191,150, 13,205,147,246, -191, 1,249, 99,234, 65, 0, 3,249,235,162,146, 15, 64,123,244, 31,156,106,138, 70, 79,203,207,243,246,232,132, 12,159,179,175, -223,157,105, 22,185,191, 75,116,194,120,174, 1, 61,189,113,249,249,106,176, 0, 96,121,121,254,253, 83, 70,122,244,200, 36, 12, -231,183,231, 58,174,144, 14,115,158,131, 61, 52, 76, 12,123, 74, 74, 73,234, 49,249,252, 52, 66, 7, 76,250,254,204,106,130, 50, - 71, 92,224,158,153,235,223,231,231,253,154, 41,180,246, 7,203,169,252,253,186, 65,141,205,241,131,176,191,166, 43,163, 29,135, -197,143, 79,159,217,162,144,140,142,131, 3,207,237,253,231, 84, 17,208,244, 3,175,125, 20,140,253,223,191, 68, 98, 69,192,194, - 36, 91,248,227,210, 7, 98, 79, 83,230,122,244,253,253,180, 72,193, 3,207,211,167,159,110,218,164,145,147,246,117,209, 9,237, -140,128, 1,200,251, 71,223,219, 73, 49,185,233,108, 99, 21, 18, 0,193,193,235,223, 61,241,233,162, 83,140, 14,157, 60,134,124, -191,118,168,164,115, 31,219,247,116,237,162, 80,158,163,167, 65,235,162,147, 97,115,219, 4,244, 23,177,255, 0,199,207,250, 98, -170, 64,242, 3,229,162, 82, 9,192,249,119,249,252,245,118,183, 45,171,130,238,172, 83,173,203, 86,135, 85,184,238, 26,180,164, -196,164, 80,104, 52,233,117,122,213, 90, 99,129,106, 68, 58,109, 46,158,203,143,206,146,164,161,100, 33,180, 40,242,182,165, 16, - 2, 73,213,222,187, 99, 94,182,156,151, 98, 93, 54,117,215,108, 74, 96,148, 63, 30,227,182,235,180, 39, 90, 90, 78, 20, 28, 77, - 82,158,215, 41,230, 7, 90,109, 60, 43, 32,137,165, 81, 43, 11,133, 36,106,181,237,123,117,183,107,224,250, 36,229,180,162, 54, - 49, 41,179, 56, 83,164, 27, 94,197,173,164, 27, 88,218,247,182,248,198, 80,144,123,128, 8,207, 65,220,156,249,122,157, 86, 70, - 62, 33,143,179,215,239,252, 63,110,188, 32, 18, 50,217, 14, 1,220,161, 73,115,211,185, 65, 56,237,162, 27, 73, 86, 58,128,125, - 7,127, 95, 61,101,136,223,126,191,127,195, 26,250,131, 11,131,127,120,239,138,168, 73, 56,233,212, 12, 30,190, 64,234,179,125, - 79,108,128, 65, 3,191,221,251, 53,245, 40,236, 58,103,190,122,253,191,187, 85,144,140, 43,169, 3,207,228,114, 15, 95,217,164, -240, 49, 84, 39, 42,193,232, 59,129,129,148,140,118,207,225,175, 74,108,245, 4,242,143, 47, 81,233,175,160,149,103, 24, 10,245, - 30, 99,243,231,175, 67,174, 2,178, 51,230, 48,123,121,159,195,246,235, 24,199,195,174, 40,165, 56,206, 85,212,156,142,157,254, -204,246,215,148,164, 2, 50,163,223,238,235,242,243, 58,172,224,201, 29,122,122,142,157, 51,140,159,151, 93, 92,168,148, 58,189, -195, 84,167, 81, 40,116,202,141,102,177, 88,152,213, 58,145, 73,165, 65,153, 85,171, 85,170, 18, 20, 16,196, 10, 77, 42, 3, 46, - 72,169,206, 90,136, 8,101,134,214,226,179,209, 58,195, 50,162,150,118, 10,171,185, 39, 96, 48, 91,133, 2,231, 97,181,254, 54, -183,239,197,153, 93,240, 57, 64, 30,106, 3,174, 51,128, 61, 53,233, 88, 67, 69,215, 84, 27,101, 56,241, 29, 89, 8,105, 40,238, -165, 21,172,129,140,103, 82, 39,224,247,232,242,113, 5,186, 44,209,175,126, 45,110,120,252, 41,109,245, 65, 45, 76, 98,212,168, -192,137,115,111,205,126, 34,210,167, 80,219, 22, 95,189, 38, 13,132,167, 80,143,133, 85,151,221,152, 18,178, 69, 47,152, 99, 82, - 25,217,126, 4,125,158,220, 32, 70,111,248,177,225,226,214,187,174,202, 84,112,204,221,208,222,132,198,220,171,212,205,121,104, - 12, 72,241,238, 54,151, 77,163,211,164, 45, 56,103,220,169,241,154,109, 74,229, 79, 82, 64,134,103, 28,115,148,101,101,145, 24, -213,204,187, 89, 14,215,247,144, 9,248, 27, 91,212,226,216,224,191, 5,184,251,142, 12,111,150,229, 38,134,142, 80, 8,158,164, - 20, 4, 18, 0,100,140,217,216, 94,195,204, 99,185,176, 23, 36, 3,170,254,203, 46, 26, 46, 77,165,224, 39,102,233,180,203, 98, -123, 55, 94,240,135,247,210,247,144,229, 50, 82, 28,149, 42,249, 17,191,130, 80, 39,169,184,229, 79,197,133, 96,194,183,154,100, -100, 99,197,117, 73, 37, 43, 81, 86,234, 87,236,203,238,132,204, 33, 46,221,170, 32,138,139, 45, 45,243, 6, 98, 99, 20,165,137, -143,123,195,179, 60, 34, 27, 65,240,249, 15, 57, 79, 42,214, 17,130, 72, 35, 99,155,223, 42,234,221,136,202,101,194,143, 66,171, -184,105,112,211, 76, 5,132,211,101,181, 28,123,180,100, 71, 82, 83,238,168, 82, 80,227, 9, 67, 73, 8, 14, 54,132, 97,180, 20, -130, 37, 39,125, 42,234,171,170,153, 34,124,151,131,206,170, 19, 32, 54, 57,101,207,141,200,137,172, 48, 57,190, 37, 8,222, 27, -165, 60,170, 39, 42, 9, 10,109, 42, 35,158,243, 89,104,243,106,250,186,249, 38,156,203, 86,236,231,104,202,139,157,149, 87, 85, -236, 1, 10,190,110,130,198,230,248,244,231,129,168,248,183,129,184,107, 38,225,202, 14, 30,163,155, 47,200,105, 99, 77, 38, 89, -121,146,114,215, 68,146, 59, 8,236,178, 22, 87,121, 1, 82, 69,181, 95, 73, 7, 26, 81, 90,169, 61, 79,168,208,167,204, 91, 44, -184,170,148,168, 83, 66, 11,141, 70,124, 78,167, 84, 35, 51, 29,198, 66,130, 11, 8,121,168,165, 36,146,181, 41, 14, 44, 21, 40, -224, 88,100, 92,178, 84,252, 41, 12, 58,134,169,236,223, 20, 56, 17, 31, 91,158, 31,213,209,106, 45, 85,162,212, 38, 53,239, 67, -159,220,194,222,100,171, 9, 37, 41,111, 45,133, 37,120,214,238,238, 21,145,110,110,237, 53,104,141, 18,147, 65,187,160,213,226, - 84,226, 75, 44, 52,154, 77, 70,163,111,200,247,152,240,235,208,227,114,167,192,113, 14, 20, 25, 44,164, 59, 28,191,226, 56,135, -145,206,141,115, 74,240, 69, 70,139, 58,226, 93, 94,157, 42,151, 38,217,171,209,163,191, 18, 75, 72, 91,241,167,211,107,148, 86, -235, 13,120,141,225, 15,143,117,147,200,218,176,158,118,242,164,158, 78,241, 42,202,121,105,230, 69, 46, 37,138, 83,229, 96, 54, - 39, 96, 53, 11, 27, 48,191,217, 61,150,247, 32, 99,163,184, 11, 53,202,248,178,154, 72,228,131,244,126,105, 66,170,147,211, 72, -202,218, 17,229, 26, 94, 18, 8, 15, 27, 23,116, 14,187, 34, 6, 89, 17, 67,170, 54,206, 82,238,185,177,160,198, 76,229,153, 13, -208,110, 74, 4,198,235, 44, 56,149,128, 69,106, 35, 41,155, 33, 8,201, 46, 37,233,173,153, 1,226, 91, 60,203, 41, 39,176,223, -221,171,219,215,238, 40,178, 42,213,233, 10,163,209,233,181, 8,142, 38,114, 84,251,110,185, 54, 35,209, 31, 13,197, 91,138, 79, -143,206,150,212, 57,242,124, 38,229, 16, 84, 73,240,213,204, 75, 50,143, 87,173, 84,164, 89, 20,181,168, 46,225,151, 26,159, 71, -109, 65, 14,184,229,111,223,226,166, 53, 41,224,179,148, 64,114, 79,132, 90,113, 73,200,104,184,146,174,118,146, 79,101,175,201, -205,219,204,155,102,128,180, 26,125, 18, 28,150, 98,195,105, 10, 14, 85, 92,139, 49, 44, 74,113, 69,160, 66,149, 34, 98, 36, 58, - 20, 83,202,178,235,104, 56, 3, 26,125,225,170,120,167,231,215, 85,141,112,211,105, 68, 66,108, 25,200, 98, 1, 35,204, 2,129, -118, 32,139,221, 73,211,171, 88,164, 60,112,168,124,170,167, 38,200,178,103, 72, 51, 44,237,231,149,166, 81,253,213, 50, 10, 79, -172, 10, 67, 42,201, 44,175, 42,128,126,168, 90, 67,176, 82, 27, 44,157,124, 91, 86,163,172,210, 40,209, 33, 66,112,182,149, 48, -228,143, 4,186,243,202,144,134,136, 71, 50, 71, 59,195,196, 43,253, 81,128,121,143, 54, 9,213, 9,123,191, 49,153,245, 55, 35, -206,109,168,116,233,113, 41,236,173,165,115,203,126,108,150, 24,126, 66, 34,165,149,164, 32, 41,215,163,182,233, 78, 22,166,155, - 90,143, 48,108,145,165, 85, 75,154, 37, 70,161, 46,164,219,243,155,165,183, 95,162, 83, 41,204,184,183, 31,120, 38, 3,190, 45, -101,232,203,231, 40, 76,115, 83, 50,127, 74, 20,164,143,112, 40,242, 9, 31, 98, 92, 79, 79,129, 78,140,203, 11,121,138,245, 72, -215,101,185, 49,196, 39,158, 19, 18, 21, 36,165,158, 84,115,163,196,105,234,116,116, 44,252, 60,143,172,114,249,234,105,237,243, -234, 88,226,151,149, 96, 84, 34, 93, 22,215, 29,128, 4, 3,181,141,183,216,168,177,185,166,163,240,166,136, 67, 12,245,145, 53, - 84,238, 0,153,166,177, 96,204, 18, 87, 55,144,155,186, 70,146, 43, 45,216,107,212, 1, 59, 91,122,169, 91,167, 70,186,227,184, -197,203, 10,131, 87,163,189, 10, 69, 85,214,171,148, 90, 69,113,166, 35, 70, 56,136,137, 81,234,204,184,151,100,173,214,164,200, -104, 6,254, 24,254, 26,193, 30, 33,214,177,238,127, 2, 62,206, 30, 34,208,151,119,167,131, 14, 31,170, 51,171, 76, 70,150,170, -189, 2,208,133,100, 93, 16,152,156,135, 92, 15,166,232,176, 13, 54, 74,101,165,135, 57,220, 33, 69, 97,249, 39,169,192, 0, 26, - 93,210, 95,153, 46,142,195, 48,212,207,240,138, 76,170,188,247,144, 86,212,166, 41,209, 88, 17,109,147,200,217,240, 91,113,230, - 10, 86,128,162,166, 98,165, 96, 97,201, 9, 78,178,250, 69, 65,249,177,152,150,228,245, 53, 78,141,239,234,159, 40,211,220,125, -234,189,102,123,128,204,166,210,121, 79, 70,152, 89, 40,114, 90,121,185, 11, 65,166,199,232,221,121,189,200,179, 42,152, 93, 92, - 75,230,181,135,235, 18,204, 69,152,107,221, 75, 2, 72,234, 69,174, 46, 14, 32, 60, 65,225, 38, 67, 80,102,246,156,185, 96,142, - 64,186, 65, 26,216, 43, 6, 40, 6,149,221,157,212, 46,150, 93, 69, 68,110,116,131, 41,199, 40, 55,231,232,175,112, 39,186, 52, -233,149,158, 27,247,143,120, 56,116,174,173,153, 18, 34,210,174, 57,144,247,130,194,102, 74,185,149, 26, 52,200, 23, 10,162, 86, - 96,176, 86,182,130,146,213, 93,197,161,183, 1, 8, 39,149, 38, 53, 60,110,123, 1,189,162, 92, 20, 64,171,222, 82,246,226, 47, - 16,123, 65, 75, 15, 72,127,116,120,126, 77, 82,239, 20,202,115, 40, 46,174,117,219,183,111, 65, 69,126,215, 97, 8,232,243,169, -139, 58, 27, 74, 74,185,166,114,142, 99,250, 18,209, 46,181,183,224, 68,113,102, 52,106,107,177, 37,200, 76, 89,105,113,113,218, - 56,118, 12, 55,101, 50, 10,230, 23, 86, 85, 37,215,208, 22,167,192, 67, 77,169, 69,206,125,108,205,177,123,137, 81,132,228, 77, -240,230, 79,154,105,244,170, 68,172, 70,170, 45, 44,243, 23,229,205,128,165,133,198, 42, 67,110, 60,176,176,144,220, 86,155, 75, -156,175,184, 82, 37,249,111, 22, 85, 64,218, 42, 36, 46,150,235,171, 86,247,176,186,185, 5,172, 47,228,140,198, 46, 44, 72,234, -121,147,139, 60, 39, 92,176,153,168,117, 68,140,198,218, 71,144, 3, 98,138, 64,212,159,103, 84,140,214, 0, 32, 12, 28,131,124, -126, 50,105,198, 21,146, 20, 2,150,143,132,228, 7, 26, 81,109,214,212, 65,248, 92, 74,194,146,164,156, 20,169, 37, 42, 0,131, -165,219,161,234, 58, 18, 58,228,124,254, 71, 95,166,111,180,163,216, 17,194, 7, 31,240,238, 45,193,218,248,212,110, 26,248,173, -144,137, 82,206,229, 89, 52, 54, 25,176,183, 2,186,219, 40,113, 49,183,135,111,169, 74,106, 53, 73,215,223,228, 75,245,122,111, -187,214,152, 50, 20,235,206, 84, 2, 61,217,127,158,255, 0, 24,156, 20,241, 33,192,134,239,206,217, 30, 38, 54,238,125,139,118, -182,211,245, 43,118,166,211,159, 90,217,123,137,109, 53, 37,113,155,187,182,234,235,101,180,177,115, 80,148,226, 64,116, 0,220, -200, 46,171,221,234, 49, 34, 72, 30, 25,177,178,252,214,159, 48,137, 36,141,135,159,161, 6,234, 78,231, 77,251, 48, 0,221, 90, -199,202,197,117, 32,214,105,170,234, 26,172,186, 65, 29, 84,101, 65, 54, 87,177, 10,215, 32, 13,141,138,150,236, 14,199,245, 75, -111,141, 87,232, 7, 78,223, 46,186,240,164,147,156, 28, 3,215, 4,145,249,235,175, 68,129,142,189, 7, 76, 99,191,151,125, 32, - 65, 39, 61, 71, 76, 36,140,103,167,252,116,233,141, 78,248,166, 18, 9,199, 92,122,143, 95,234,239,175,161, 36,250,244,200, 30, - 93,115,158,191,142,170,121,127,171,248,116,215,196,144, 1,202,147,156,231,167, 92,228,232, 96,111,143,129, 56, 33, 89,201, 25, -230,243,242,215,164,117, 4,143,135, 25, 61,115,251, 63, 29,125,233,140,254,206,216,252,245,215,209,215,246, 12, 1,220,121,253, -253, 52, 48, 58,123,176,136,207, 68,245,233,231,142,164,103,246,106,130,219,198, 9,242, 61, 70,124,244, 78, 14, 58,140,121, 2, - 70, 49,246,252,191,175, 84,207,110,131, 39,246,103, 63,212,127,167, 88, 6,255, 0, 17,140,224, 37,160,224,249,103,215,184,207, -168,252,247,208,170, 64, 0,231, 36, 18,123,250,252,190, 90,184, 57,205,158,184, 61, 58,231,190,125, 58,121,245,208,238, 32,242, -231, 4,117,232, 58,231,175,203,236,214, 65,232,122, 99, 32,158,221, 78, 45,197, 1, 39, 32,245, 29, 49,158,152,199,174,188, 20, -231, 36, 28,121, 28,159,179,207,240,209, 42, 73,234, 20, 7, 79,245,123,146,126,126, 67,174,168,242, 12, 40,100, 99,166, 0,243, -235,158,231, 75,169,184,235,131,168, 34,219,109,243,243,111,195, 3, 40, 3,212,147,129,248,125,186,160, 70, 70, 63, 35, 70, 41, - 35, 56, 30,153, 63, 44, 13, 12,180,144, 73, 3,167,246,126,206,186, 81, 79,108, 24,216,116, 23,254, 71, 0,184, 0, 32,116,206, -122,159,217,215, 31,158,154,162,160, 78, 58,100,103,175,175,221,163, 20,147,230, 7,221,216,158,250, 25, 89,201,230, 56, 39,183, -207,211, 31,119,244,105, 92, 1,208, 95,113,129, 22,128,114, 64,199,200,249,250,140,104,117, 35,166, 6, 1,239,246,103,200,244, -209,138,206, 65, 56,207,160,242,208,199,169,200,207, 95, 92, 14,221, 63,118,149, 7,160, 39,167,207, 95,158,248, 54, 5, 87, 76, -228,103, 25,253,159,187, 66,172,116,206, 15, 78,216,253,164,244,237,211, 70,172,100,142,152,235,220, 30,253,124,255, 0, 62,122, - 25,196,228,156,100, 1,208,227,182, 79,228,104,248, 50,250, 91,127, 92, 91,215,128,112, 14, 73, 39,167,161, 29,123,232,115,223, -168,235,158,191,184,104,199, 19,144, 83,211, 62,126,189, 61, 63, 13, 12, 80, 70, 78,114,125, 15,225,223, 58, 89,122, 97, 81,107, - 3,210,216, 29,105,243, 25,206,133, 90, 72, 39,183,153,251, 62,223,150,116,105, 25,251,186,250,103,228,126, 90, 25,105,206, 73, -200, 62,126,125, 59,253,250, 85, 79, 91,157,176, 69,216,144,119,183,250, 96, 34, 48,113,165,175,107, 73, 39, 35,175,224, 52,180, -174, 15,113,220,216,227,234, 49,143,233,209, 40, 24, 3,231,215,243,247,106,128,198, 6, 1, 31, 35,223, 85,211,204, 59,128, 49, -233,223, 61, 58,233, 18,118, 3,231,221,140,226,178, 60,250,253,223,191, 85,209,220,253,157,189,127, 63,191, 84, 81,143, 33,215, -204,234,178, 6,122,231,177,237,249,242,254,173, 16,157,137,190, 6, 8, 78,112,112, 70, 7,124,143,196,244,243,233,162, 27,234, -126,239,234,213, 4,125,189,188,191,126,189, 18, 64, 86, 14, 8, 30,125, 1,207,244,255, 0,102,181,216,133,193, 78,224,142,199, - 7, 54,115,211, 61, 62,206,158,126, 99, 69,164, 14,128, 16,123, 15,151,236,213,189,146,233, 74, 78, 19,142,153,251,112, 63,171, - 71, 55,223,162,122,140, 28,224,246,249,233, 34,215,194, 71,174, 43,165, 61, 65, 57,232,123, 99,191,167,237,209, 9, 0,142,169, -249,103, 39,175,175,217,170, 64, 18, 71,145,233,231,230,123,231,229,170,232,200, 36,116, 29,135,203,168,243, 62,103,182,176, 73, - 61,123, 96,167, 21,209,156, 1,208, 14,195,241,243,249,104,148, 3,216,156,228,224,103,250,117, 65,160, 72, 29, 58, 3,231,163, - 16, 58,231,175,203,211,211, 73,191,175,207,108, 99,107,145,181,206, 58,159,236,114,180, 36,215,120,223,178,238,166, 92,121,134, - 54,178,207,191,175,249, 50,154, 42, 65,101,248,212, 39,104, 52,196,151, 17,213,181, 46,101, 96,132,144, 65,248, 62,103, 82,170, -147,119, 79,171, 52, 99,214, 12, 27,130, 56,200, 92, 43,154,147, 73,175,197,113, 32,149, 96,181, 85,136,238, 83,215,166,114, 61, -117, 30,111, 98, 93, 13, 12,206,226,110,249, 80, 74, 93,129,102,217,118,147, 11, 61, 22,147, 89,172,205,170, 73, 66, 84, 58,128, -180, 66,104, 17,242,215,110, 85, 89, 62, 34, 74, 78, 18,162, 18,178, 78, 2, 72, 24,243,252, 53,207,158, 33,214, 52,188, 67, 60, - 91,218,146, 56,163, 6,254,160, 73,191,190,242, 16, 55,233,143, 67,190,140,252, 57, 24,240,222, 10,185, 97, 89, 6,113, 87, 87, - 57, 12, 1, 4, 44,130,152, 2, 8,181,138,211,143,223,140, 91,113,184, 80,224,223,122, 90,127,248,197,225,195,111,141, 78, 74, - 74, 28,185,236, 6,100,109,189,210,202,149,255, 0,194, 25,155,109, 45,182, 30,116, 14,184,114, 58,193, 35, 36, 29,114,235,126, - 61,136,232,153, 30,101,195,194, 78,234, 11,142, 74, 18,167, 81,180, 59,192,184, 84, 27,145,224,126, 38,225,219, 27,129, 13, 41, -129, 85,124,254,171,109, 79,106, 42,220, 56, 5,240, 78, 79, 93,141,126, 51,110,161,151, 93, 72, 82,213,250, 21,147,128,162,159, -242,172,156,116, 75,192, 96,143,245,128,214,109,101, 34,179,125, 87, 98,219,150,188, 73,117, 58,171,235, 8, 75,113, 88,113,228, -190,130,160,148, 6,130, 7,194,176,163,212,158,137, 41,207,108,226, 37, 67,197, 89,254, 85, 44,107, 65, 92,242,128,109,202,127, -172,140,251,130, 53,244,131,234,154, 77,174, 21,133,241,105,113, 79,128,254, 26,113,109, 13, 76,249,182, 65, 22, 83, 80, 16,177, -174,164, 11, 73, 52,123,127,120,210, 70,162, 57,108,123, 78,146,165,250,169,223, 16,133,191,246,226,251,218,171,186,173, 97,110, - 77,165,112,216,183,165, 5,229, 49, 86,182,110,106,115,212,202,172, 69, 5, 40, 7, 80,219,163,150,100, 37,129,150,164, 48,167, - 88,117, 63, 19,110, 40, 29, 97,233,193,243, 24, 29,250,143,184,116,215,232,143,190, 62,204, 45,147,226, 95,110, 34,219, 28, 90, - 85,225, 64,173,211, 34, 4,217, 87, 45, 7,192,123,116,108, 57, 14, 35,197, 13,193,172,182,131,239, 52,194,172,248,180,249,101, -232,171,201,194, 80,172, 40,106, 85,157,236, 48,246, 94, 89, 49, 96, 11,150,111, 16, 59,185, 80, 43, 83, 18, 93,168,222, 84,251, - 54,159, 41,214,155,241, 92, 81,129, 64,166,133,196, 36,117, 74, 67,170,207,108,116,206,173,202, 63, 17, 40,214,142, 55,205,233, - 13, 21,112,217,227, 87,141,135,185,128, 46, 29, 67,117,210,202, 74,244,212,246,213,142, 20,207,126,143,124, 95, 14,119, 61, 31, - 6,200, 56,195, 36, 55,104,107, 68,114, 83, 2, 59,199, 46,168,204, 70, 69,177,250,200,100,120,157,124,223, 84, 73,137, 96,225, -130, 70,121, 22, 8,237,202,133, 96,250, 28,227, 72,168, 32, 0, 58,146,113,140, 31, 63,151,222, 53, 61,230,125,146,190,201, 76, - 62,208,225,254,252, 87,128,217,112,248,251,193,118,173,197, 4, 39,152,242,173, 11, 29,115,211, 32,117,193,211, 69,186, 94,193, -159,103, 5,247, 75, 55, 6,222,220,187,247,177,170,142,168,178, 84,212, 27,150,141,124,210, 39, 70, 74,144,228,182,226,199,187, -233,222, 60, 23, 11, 1,196, 7, 82,242,195,107,113, 42,240,151,142, 83,177, 77,226, 46, 75, 83, 47, 41, 81,193,177, 55,242,216, - 0, 46, 73,185, 22,183,223,238,190, 25,235,190,143,254, 42,229,177,123, 69, 87, 14,170,171, 21, 80, 22,161, 11, 51, 57, 1, 84, - 2,160, 93,137, 3,114, 63,142, 35, 1,192, 79,179,155,127,248,252,190,165,208,246,210,151, 26,220,219,219, 90, 68, 49,185,187, -209,119,179, 45,157,189,219,184,210,112,227,112,228, 57, 29, 33,219,162,244,145, 27,153, 80, 40, 80, 57,165, 61,128,236,151, 33, -196, 10,146, 38,173,194, 71, 5, 92, 32,251, 61,109,198,127,137, 11, 71,248,111,187,134, 47,186, 92,156, 68, 95,208,233,213, 77, -203,169,188,166,210,220,230, 45,176,210, 20,198,221, 91, 60,222, 42,147, 78,163,161, 14,132, 16,169, 50,102, 40, 41,100,251, 2, - 70,221,108,222,222,208,118, 35,135,219, 98,141,182,187, 99,183, 80,221, 22,253,169, 5,240, 28,175,120,202,109,117, 43,158,224, -172,168, 42, 69,193,113,212,166, 35,154,109, 86, 73,117,239,122, 88, 75,220,172, 22,219, 70, 15, 39,112, 35,202,153, 34,108, 9, - 83, 16,228,242,167, 30,167,205, 67,209,101, 60,247, 40, 75,203,132,133,184, 16,103,115, 6,213,204,193,117,183,249,130, 73, 35, - 5, 53, 87, 20,120,131, 91,154, 84, 73, 73, 68,198,158,137, 73, 10, 65,221,198,214,239,181,250,134,185,234, 8, 61,113,217, 30, - 12,253, 20, 41, 50,184,169,243,158, 45,133,115, 76,244, 44,114,114,236, 90, 10,109,118,101, 69, 7,109, 69,110, 68,166,247, 32, -244, 91, 5,122, 46, 93,207,151,112,185, 82, 84,201,237, 85,196,152,174,184, 88,241, 23,239,197, 8,146,129,239,112,210,195,217, -143, 82, 97,220,134,151,240, 7,148,160,230, 82, 64, 42,108, 46, 11,170, 52,200,142, 42,108,229, 75,154, 25, 10,128,251,176,220, - 69, 62,231,164,248,160, 73,129, 34, 43, 32,148, 79,109,191, 21,101,149, 97,198,164, 54, 36, 52,149, 5,184, 19, 97,136,251,117, -212, 9,207, 47,222, 75, 83,204, 70,166,198,109, 84,203,178,149, 49, 96, 25, 28,237,178,132,166, 28, 66,181,167, 45,188,144, 84, -217, 47, 45,181,163,161,199,231,178,168,238, 61, 67,174,165, 50, 30, 68,210,138,101, 69, 41, 66,226,214, 24,154,175, 18, 68, 23, - 25,200, 16, 43,237, 53,206, 89, 40, 41,101,229, 18,227, 11, 67,153,107, 85,228,149, 94,103,214, 88,177,181,218,251, 49,190,198, -219, 19,126,194,199,107,117, 59, 14,220,202, 56,115, 41,161,100,166,134, 46, 65,164,220,199, 24, 80,202, 6,149, 99, 29,208, 93, - 86,200,179, 38,148,109, 12,205,160, 36,107, 36, 87,151,170,161,165, 46,223,113,167,151, 78,170, 42, 43,148,218,139,143,133, 60, -212,244, 50,100,136,203,150,242,135,136,250, 60, 22,164,198,112,144,183, 19, 29, 76, 58,165, 45, 0,185,112,131, 94,118, 83,239, - 68, 41,110,145, 84,110, 85, 61, 77, 75,109,178, 94,166,215,169,104, 8, 67,209,226,188, 8,118, 28,136,175, 69,146,129,147,227, -180,167,144,130,160, 73, 24,237, 74,148, 41,180,184,241,225,200,118,224,181,231, 71,136, 98, 84,161,159, 30,183,110, 75,101,207, -122,101,135, 67,139, 34,171, 78, 67,173,161, 72,116, 98, 92, 85,128,204,132, 60,193,241, 18, 44,199,101, 84, 85,252, 43,112,177, - 42, 84, 4, 52, 95, 52,245, 4,179, 84,167,160, 46, 60,163,202, 84, 82,137,173,158,119, 35, 43, 36, 50,180, 41,160, 2, 22, 0, - 48,114,196,178,177, 80, 55,211,178,238, 64,223,114,118,234, 70,226,196,234,190,160,112,250, 40,232,234, 98, 13, 29,180, 72, 74, -135, 58,129, 51,142, 88, 77,113,191,149, 76,133, 66, 76,142, 54, 49,137, 46,240,201,115,180,187,121,113,159,112,167, 74,168,126, -134,164, 39, 75, 21,246,192, 76,150, 24,152,101, 59, 6,160, 22,251,164, 23, 22, 86, 34,169, 37, 64, 41, 77,186,215,114,156,150, - 43,139, 43, 97,169, 85,218,101,105,162, 25, 69,219,106, 92, 52,234,159, 51,106,114, 59,213,187, 98, 11,114, 96,186,162,129,133, - 58,105, 47, 71, 91,228,165, 74,112,210, 83,241, 18,146, 11,135,106,214, 98, 78,172, 73,102, 43,177,164, 67,184,105,116,249, 76, -184,164, 4, 42, 59,240, 23,245, 98,155,113,151,208, 49, 37,216,174, 66, 88, 82,250, 45,200,200,202,137, 72, 26,161,196, 82,249, - 44,237,191,114,123, 77,202,228,191, 13, 50,108,176,183, 27, 75,109,213, 41, 83,161, 73, 7, 42, 42, 37,230,219,111,224, 71, 41, - 82,129, 72, 56, 26, 82,178,211, 80,176, 96,117, 33, 87, 27,130, 65, 15,123,139,250, 43, 17,247,133,176, 59,154,251, 35,230,229, - 30, 34,101,181, 84,209,154,121,115, 5,168,137,162, 38,222, 89,169,228,145, 35,177, 23,211, 13, 74, 42,128,222, 98,209, 33, 93, -247, 45,207, 13,114,155,103,122, 54,250,161, 33,214, 94,250,215,234,202,139,111,115, 54,235, 9,117,115, 33, 84, 25,247,117,161, - 36,186, 75,171,142,226, 92, 32,132,169, 8,234, 2,250,244,178,232,151, 46, 85, 85, 97, 46,180,218,152,141, 41,185, 10, 82,146, -133, 56, 87, 49,135, 28, 75,206, 54,128, 82,149,182,149,114,148,252, 73, 40, 42, 25, 63,173,202,173,165,149,245, 27, 59,105, 37, -133,198,106, 75, 46,199, 11,153,201,226, 56,179, 68,204,101, 51,206,133, 4,148,184,138,122, 64,229,229,233,145,221, 56, 61, 81, -185, 75, 51, 27,159, 80,109, 41,125,186,148, 24,239, 53, 37,180,135, 92,106, 52,136,171,113, 78,165, 68,140, 37, 16,223, 89, 4, -156,167,195, 25, 30,171,240,236,165,105,234,169,128, 26,161,150,226,251, 18, 25,116,220,216,131,250,167,125,192, 39,222,113, 12, -241,161, 4,252, 89,144,102,166, 63, 45, 69, 19,211,173,192, 32, 52, 53, 5, 73,183,217, 0,172,167, 96,196,253, 93,251,227, 89, -170,116,137,115, 41,150,180, 88,239, 52,228,155,128,190,219,171,105, 45,132, 20, 84,125,242,101,110, 97,109,192, 60, 15, 6, 4, -169, 41, 7,205,101, 42, 4, 30,100,235, 48, 98,100,183,170,109, 55, 77,129, 26, 53, 90, 77, 38,159, 64,165, 69,109,165, 59, 30, - 52,118, 31, 90,205,199, 80, 1,144, 68, 88,139, 74, 3, 44,182, 0,117, 80,218,100,243, 23, 20, 81,245,170, 20,128,229,191, 57, -231, 18,227,180,170, 21, 94, 83,170,231,105, 13,211, 41, 41,129, 19,194, 45,180, 74, 72,152,162,162,165,171, 24, 90,155, 91,121, - 64, 1, 10,190, 89,208,106, 49,147, 38,123,140,190, 42,215, 59,205, 63, 4, 41, 77, 7,232,116,248, 77, 39,221, 90,229, 3, 45, - 60,220, 25, 11,121, 77,164,169,180,203,154, 2,178,180,171, 50, 56, 55,242,106, 47,163,123,251,137,182,215, 39,127,128, 23, 32, -147,183, 70, 90,252,198, 22,163,102,103,142,115, 15, 52,168, 39, 72, 47, 37, 68,133,131, 88,139,196,145, 68,178, 49, 42, 54, 4, - 38,158,106, 17,126,147, 14,157, 74,146,213, 34,214,106,160, 3,145, 23, 72, 93, 65,214,154,147, 60, 45,214,208,171,150,181,227, - 40,145, 58,176,135, 20, 0, 88, 40, 71,191, 85, 50,133, 16,199, 40,204,233,149,217, 16, 81, 74,106,213,167,196, 41,166, 68, 93, - 61,218,202,202,222,163, 83, 36,180,202,163, 63,224, 83, 73, 82,235, 51,209, 30, 63, 41, 12,169, 45,248,223, 4,213,169, 74, 90, - 53,128,211,101, 42, 82,164, 55,109,135, 89,147, 41, 74,163,196,152,181, 2,229, 14,132,196,169,105,114, 84,194,235, 37, 15,213, -165,203, 74,222,142,144, 8, 75,184,116,146, 25,235,123, 77,126, 53, 26,159, 50,222,163, 82, 34, 87,170,209, 34,199,165,211, 98, -196,145, 42, 52, 27, 97,182,148, 76,169,143,206,119,244, 45, 5, 21,254,145, 74, 46, 58,167, 16,167, 2, 71, 51,139,214,220,104, - 21,172, 65, 37,238, 69,201, 58,119, 82, 55, 23, 34,254, 81,127, 40,177, 82, 54, 23, 48,154,250, 57, 42, 21,105,164,129,171,170, - 20,141, 98, 87, 0,144,254, 73, 38,170, 44,234,129, 19, 88,176,146, 78, 89, 34,103,179,171,162, 77,157, 81,164,143,123,163, 8, - 73,114, 60, 56, 14, 56, 25,153, 92, 82, 27, 64,113,230,129,159,116,212,234,141,165, 30, 35,232,150,149, 34, 26,138, 67, 35,195, -229,195, 64,160,161,215,163,214,229, 61,114,193,118, 3, 18,169,144,234,116,244, 83,105,213, 73,128, 42,170,162,244,180, 53, 84, -173, 73,139, 52,114,195,114, 72, 17,209, 13, 46,130, 91, 66,252, 80,144,164,132,233,150,102,139, 89,170,162, 58, 42, 11,109, 2, -156,194, 86,221, 33,181,251,181, 38, 42,218, 67, 77,174, 97,127,153, 78,214, 92, 14, 2,191, 29,239, 13,182, 62, 55, 80,210, 57, -121,206,113, 74,153, 54,127,189, 8,203, 67,140,225,184,143, 85,220,123,222,211, 87,121,197,162, 59, 80,232,138, 96,225,196, 37, -231, 93,231,158,158,124,173,226,166, 18,183, 1,113, 59,104,206, 7,217,212,166,214, 54, 39,125,193,177,184,189,190,201, 2,219, -129,115,109, 36, 64,115,202, 58,106,133,145,131,199, 51,172,111, 27,220,150, 84, 18, 57, 32,181,236, 38,119,102,187, 2,172,173, -245,138,161,227,115, 42,109, 53,183, 89,113,151,211, 75,165,167, 49, 32,171,220, 30, 90, 20,243,205, 83,164, 33,100, 75, 87,189, -190,190,121, 21, 18,250, 71, 48, 94, 91,105, 75, 43,121, 74,230,229, 45,103, 23,124, 32,112,213,237, 11,217, 74,166,193,241, 37, -103,179,117, 80, 93,247,138,133,163,115, 83, 94, 17,183, 11,108, 46,100,165,216,113, 47, 43, 30,236, 12, 41,116, 27,141,183,211, -202, 18,144,184,181, 22,208, 98,204,139, 46, 18,220,104,135, 30,225, 76, 56, 81,105,212,133, 48, 41,180,229, 70,162,206,126, 38, - 92, 98,148,206, 66,164,193,166,164, 45,105,171,200, 68,140,120,203, 37, 97, 47, 60,174,114,244,144, 80, 29,171, 42,165, 30,155, - 49, 51, 37,181, 81, 79,132, 15,185,196,151,151,234,114, 30, 44,248, 41,113,104, 4,248,238,184,148,190,180,184, 74,188, 52,182, - 16,234,154, 81, 58,124,203,115, 9,169, 39, 2, 57, 12,104,246, 82,172, 26,204,163, 72, 34,253, 44, 52, 92, 91,236,149, 12,133, -109,183, 62,241,103, 9, 69, 81, 77, 83, 52,208,150, 44, 27, 66,145,121, 36, 63,181, 37,206,204,250,129, 61,116,169,212, 89,131, - 43,201,249,104,123, 74,253,155,155,225,236,203,226, 10,102,204,110,202, 63,132, 86,125,198,138,149,127,100,183,134,155, 1,112, -237,173,219,177,225,202, 67, 75,152,211, 60,203, 77, 6,247,167,123,204, 54,107,180, 85,184,167, 33, 62,251,114, 35,170, 69, 54, - 84, 73, 46,115,200, 36,167, 25,234, 60,137, 61, 71,217,242,198,191, 92,191,104, 95, 2, 27, 99,237, 47,225, 82,247,225,235,116, -208,197, 6,191, 47, 55, 54,209,110, 43, 17, 27,149, 84,218, 45,211,165,197,120, 90,215,101, 56,171, 11,149, 13, 70, 66,225,214, - 96,115,165, 21, 26, 85, 74, 92, 66,166,214,227, 79, 55,249, 64,239, 46,206,238, 55, 15,155,187,185,155, 17,187,212, 5, 91, 27, -163,180, 55,157,106,194,190,104,165,101,216,241,171,116, 57, 30, 18,166,211, 37, 16, 5, 70,131, 54, 18,226, 79,167, 74, 70, 81, - 42, 5, 78, 52,132, 18, 28, 26,183,178,186,229,171,129, 84, 73,169,212,119, 35, 85,129, 0,134,181,188,202, 72, 5,128,210,110, -164,121,139, 34,115,126, 99,150,201,150, 78,208,177,215, 21,236,173,125, 91,218,250, 75,126,181,187, 55,113,190,246, 44, 91, 95, -135,148,129,156,147,147,205,212, 31,144,244, 3, 58,243,202,158,132, 96,121,118,234, 51,223,167,152,213, 84,132,144, 83,212,144, -122,231,250, 71, 93,121,229, 7,168,206, 61, 58,103,231,212,233,216,126,242, 48,223,133,202,123,243, 12,118,207,203,183,111, 61, - 32, 14,126, 17,140, 14,161, 90,245,202, 0,199,235, 2,114, 60,191,110,190, 5, 15,139, 57,201, 32,114,253,216,239,161,239,192, -233,108,123, 39,162,135, 78,189, 62,195,246,249,106,136, 10, 78,112, 73, 80, 61,113,230, 62, 64,254,122,234,166, 18, 83,202,122, -103,184,207, 81,130, 49,223,236,215,174, 80, 6, 9,201,199, 47,111, 46,189, 71,203, 89,192, 63, 27, 96, 53, 1,149, 31, 49,140, -143,183,211, 84, 10,122,103,152,159, 49,204,115,211,229,233,253,186, 57,109,140, 0, 0, 42, 35,161, 61,188,137,207,221,161, 86, - 58,145,216,118,198, 58,231, 30, 93,116, 48, 63,158, 1,112, 96,228,246, 63,119,203, 84, 21,220, 28,101, 35,160,235,242,245, 31, -102,138, 90, 22,121, 72,232, 51,231,247,231,247,104,117, 39, 61, 58, 2, 59, 96,249,104,234, 64,191,160,198, 65, 55,247,255, 0, - 60, 14,160, 50, 60,137, 24,206, 58,103,203, 61, 58,234,146,135,124,156,121, 99,160, 31, 51,219,236,252,116, 73,206, 49,128, 51, -231,231,251,123,106,130,209,216,142,152, 32,159, 63,195, 75, 14,184, 84, 94,215, 29, 79,250, 96, 55, 19,215, 9, 7,190, 79,166, -113,212,157, 10,180,231,174, 51,219, 30,163,230, 61,124,245,112, 94, 8, 35, 56,199,150, 58,254, 63, 97,208,174, 36,246, 79, 78, -132,250,231,203,175,160,237,165,148,155, 11,141,240, 1, 23,176,233,128,148,158,253,122,158,192,247,206,126,126, 93,116, 42,219, - 61,126, 33,142,248, 29,128,238, 64,251,180, 98,130, 72,235,144,115,140, 99, 39,215, 61,190, 90, 29,105, 56, 32,252,142,124,190, -223,195, 58, 58,223,238,254, 95, 39, 6,192,106, 72, 24,199,207,169,245, 30, 90,160,176, 6, 79, 92,227,183,145,249,118,249,104, -165,167, 61,148, 78, 62, 93,254,239, 93, 12,179,220, 30,157, 60,198,115,242,249,127,110,150,193,148,246,192, 42, 80,207, 64,115, -230, 7, 95,188,250,119,213, 21, 12,100, 99, 63,179,231,162,150,129,220, 12,103, 57, 35,191,246,104,101, 2, 7, 81,158,249, 35, -174,127,183, 74, 39,124, 40,187,129,129,212, 62, 68,122,250,125,199, 84, 23,140,143, 92,117,213,117, 19,215,184, 4,231,175, 66, - 79,245,106,130,251,142,158, 93,255, 0,118,149, 29,122, 95, 24, 34,198,227,107,126,239,159,158,216, 20,140, 18, 59,227, 75, 95, - 85,250,199, 75, 75, 13,192, 56, 53,129,222,221,113,224, 31, 34, 70,125, 6,170,115,117, 4, 36,146,112,146, 71,252, 62, 67, 84, - 57, 57,156, 74,190, 46,131,167,126,189, 72,198, 14,138, 73, 72, 0,249,103,174,123,247,243,198,181,201, 39,189,191, 44, 27,238, -190, 43,164,129,129,211, 63,236,245,233,243, 58, 32, 97, 35, 36,140, 31, 65,231,246,249,232,100,242,133, 16, 14, 78, 58,158,157, - 7,144, 58, 37, 4, 36, 28,167,155, 7,168,239,223,182,147, 44,119, 29,113,140, 86, 9, 88, 80, 33, 67,148,142,189, 58,147,229, -223,183,125, 16, 27, 14, 36, 37, 73,206, 14, 71,113,233,215, 84,146,114, 59, 96,121,126,113,162,219, 33, 61, 20,122,227,203, 61, -135,228,105, 51,107,111,211, 4, 38,221, 6,253,190,126, 24,172,132,132,167, 25,192, 31, 46,167,238,209,141,168,114,132,252,186, - 31, 95,234, 58, 17, 41, 24, 32,168,146,115,128, 59,159,179,174,138,108, 18,115,203,216, 12,131,215, 0,103,174,144,194, 71,174, - 42,227,160,207, 92,117,206, 62,223, 33,242,209, 40,194,176, 79, 64,124,186,245, 61,190,239,236,213, 16, 1, 81, 29, 64,242,237, -249,245,209, 45,130, 6, 1,237,228,113,147,251, 59,104, 99, 7,241,193, 13,224,100, 14,158,159,183, 68, 33,125,121,112,122,103, - 36,117, 25,207,111,219,170, 8,237,156, 12,250,116,207,217,159, 61,101, 86,165,169,113,222,213,218, 85,175,104,208,234,151, 29, -199, 92,154,205, 58,143, 67,162, 64,145, 83,170,213,103, 62,174, 86,162,193,129, 17,181, 57, 37,226, 79, 92, 12, 36, 30,101, 16, -144, 78,144,150, 68,141, 93,157,130, 34,110, 73, 54, 0, 1,212,158,192, 96, 14,194,219,159, 78,228,237, 97,234, 73,216,119, 56, -239, 95,177,184, 52,198,205,241, 34,250, 82,145, 37,219,203,111,154,116,243, 97, 74,140,138, 52,229,161, 36,121, 36, 56,165, 99, - 62,127,102,186,125, 58,178,168,165,224,240,108,180,227,106, 45,243,168,133, 3,219,224, 41,253, 99,156, 28,124,181,130,123, 43, - 61,153,123,231,176,246, 46,230, 76,226, 66, 69, 19,109, 99,238,172,123,102, 85,189,105, 61, 82,102,161,115, 83, 77, 53, 47, 41, -114,110, 56,241, 22, 91,166,201, 83, 79, 37, 41, 96, 41, 78, 35, 7,156,131,211, 91,183,187, 60, 21, 87,216,164,202,171,216, 55, - 44, 43,172,211, 80,185, 34,157, 13,254, 73,133,108,167,153, 73,110, 58,212,124, 76,167,200,119,206,185,175,140,211,219,115,250, -250,186,121,150,106, 87, 41,102, 86, 4,217, 99, 69, 62, 95,180, 64, 96, 69,237, 98, 6,161,177, 7, 30,160,125, 30, 51, 92,167, - 42,240,231,133, 50, 92,240,205,148,102, 10, 42, 3,172,240, 74,138,188,202,201,222, 50,206,202, 2,106, 70, 70,243, 90,193,183, -223, 26, 33, 89,187, 38, 56,211,173, 73, 82, 68,134, 29,100, 33,180, 43,195,241,146,165,129, 30,115, 42, 79, 82,234, 84, 82, 20, - 61, 53,220,158, 22,104,113,246,115, 98,169, 87, 66,163,180,230,226,223, 48,159,157,245,162,217,109,215,233, 84,130, 15,134,212, - 53,167, 42, 99,197, 78, 84,181,167,226,199, 98, 53, 30, 10,163,245, 54,234,111,196,144,202,209, 82,166, 75, 80,109,137, 72, 83, - 78, 49, 38, 59,153,147, 79,146,210,250,165,126, 35,100, 96,227, 24,215,127,118,138,242,164,110, 62,192,109,157,106,149, 47, 30, -229, 76, 54,197, 89, 17,150, 68,186,101, 86, 23, 51,106, 97,104, 7, 45,130, 23,217, 88,202,117, 28,118, 20, 81, 23,136,105,153, -198,204, 58,139,149,189,143,111, 45,236, 65,254, 3, 29, 5,199,185,104,158, 14, 29,203,164, 80,217,101, 77, 86,170,133, 93,209, -180,199,170, 20, 96, 14,241,187, 6, 37,127, 93,148, 45,136,181,242,106,229,223, 42,176, 31,122, 91,235, 11,114, 43,173, 63, 43, -152,169,199,159,143,135,153, 45,243, 30,101,243,182,162,159,187,215, 88,194,171,109, 42, 52, 22,155,105,229, 73,168, 62, 22,203, -206, 5, 45,198,219, 49,203, 37, 62, 31, 54,124, 70,223, 9,248,135, 92, 47,174,172,242, 97, 74,133, 54,150,235,136, 92,152,237, - 58,252, 89, 13, 45, 92,139, 46, 50,219,136, 74, 20, 9,248, 28, 41, 32,143, 62,190,122,188, 83, 18,164, 54,242,101, 71, 65,114, - 44, 22,132, 53, 40,114,187, 30, 75,239, 23, 82, 65, 72,234,224, 65, 70,125,121,117, 30, 87, 45,172,129,168,158,155,237,126,135, -115,211,189,187,236, 62, 56,127,142,130,130,138,154, 49, 79, 24,120,134,234,170,193,123,180, 96, 91,169, 10, 66, 18, 15,151, 77, -128, 4,226,231, 71,140,106,110,203,144, 95, 44, 50,131, 42, 92,249, 46, 56,161,202,196, 32,136,201,141, 24, 96, 36,190,183,201, -194, 51,149, 21, 28,117,214,187,111,102,251,181, 33,243,106, 81,228, 61, 14, 37, 33, 97,130,251, 50, 21, 30, 63, 51,105,194,152, - 98,106,148, 82, 95, 81,200, 60,195,245,138,142, 20, 14, 19,125,222, 75,250, 78,218,216,238,219,180,169,142, 42,187, 85,231,169, -204, 91,107,109, 14,183, 50,106, 86,182, 24,105,167,112,133,173,168,202, 43, 80,230, 79,199, 45, 56, 33, 67, 58,228,228,187,229, -250,132,217, 47, 75, 67,178, 96, 58,242, 83, 61,164, 56,226,208,226,208,181,175,198,125, 46,167,157, 35,226,117, 68, 43,152, 40, - 32, 32, 40,140,101,246, 58, 73, 18,147,146,135, 76,211,128,242,145,107,170,177,186,198, 9,237,250,205,184,185,216,218,219,233, -112,238, 72, 56,183, 63,169,204,229, 28,252,143,135,165, 49, 82, 40, 35,235,170, 18,203, 36,204,173, 96,202,132, 24, 98, 13,183, -146, 66,118, 56,218,122,181,245, 81,114,145, 37,110, 60,103,198, 97,207,125,165, 84, 31, 79,131, 90,163,190,219, 97, 10,108, 48, - 26, 9,169, 66, 90, 80,227, 47,128, 80,181, 33,204,169, 42, 79, 34,145,144, 27,238, 36,202, 77, 46, 61, 71,146,158, 91, 77, 34, - 80,129, 80,121,196,192,149, 37,107, 67,234,250,134,230,105, 96,211,223,104,169, 92,205,169, 77, 58,128, 83,145,140, 41, 90,141, - 75,174,173, 77,251,204, 9, 44,170,156,220,176,219,244,224,164,200,165, 79,117,183, 20,184,138, 75,160,173,218,100,118, 89, 33, - 75, 40,230, 73, 95, 94, 82, 7, 38,179,218,117,105, 35,154,151, 61,164,211, 34, 50,180, 74,121,186,147,237,205,163, 21, 60,162, - 29,110, 35,204,164, 37,216,238, 48,180,134,146,248, 5,180,189,243,232,211, 62, 92,169,112,162,228, 27,221,109,123,121,123, 16, -109,110,225, 46, 44,215,186, 62,199,161,242,220,190,156, 36,113,114, 47,203,109,107,162,234,192,145,231, 26, 47,177,110,190, 75, - 27, 13, 65,145,137, 24,220,138, 82,100, 86,167, 67, 85, 85, 5,217, 21, 54, 83, 26,153, 91,143, 41, 84,218,173, 77,175, 19,157, - 16,100, 78,167,184,142,105,169, 96,169, 46,243, 41,104,121,178, 22,223, 34,202,155, 23,250,140,137, 20,138,148,138,125, 82, 20, -234,253, 56, 69,122, 35,244,247, 86,135, 43,244,199,152,112, 33,197, 60,228, 96,159,173,226,132, 50, 84,121,113, 53,165,176,135, - 82,167, 71,194, 53,242, 20, 11,121, 84,166, 35,198,155, 38, 4, 37,169, 19, 41,142,209, 42, 19,225,165,233, 62, 34, 25,142,226, - 80, 30,113, 17,157, 66,149,252,196,164, 18,216, 82, 84,115,167, 38,148,205,126,152,227, 49, 97,220, 38,171, 81, 86, 91, 68, 26, -187, 13,248, 14, 69, 97, 62, 35,143,138,156,112, 22,101, 41, 15, 18, 22,226, 10,194,136,230,230,233,134,127, 42, 6, 37,206,199, -117,101, 43,181,186,143,180, 75, 2,110, 73, 96, 5,128,176, 42, 44,157, 77, 28, 1,181, 71, 86,166, 56,195,160,133,227,150, 34, - 10, 48, 60,200,165, 70,147,146,168,163,204, 71, 45, 85,148, 2,193, 25,163,195,167,111,214, 86,203,172,196,137, 45,186,155,174, -161, 10,167, 73,203, 62,227, 94,136,211,232, 33,202,160, 82,127,192,238, 54, 24, 88, 10,120, 37, 1,208,149, 43,151,151,153,182, -170,166, 34,105,117, 25,181, 40,161, 79,194,159, 53, 78,221,148, 2,130,244,202, 62, 11,173,203,168,196,140,210,177,239,188,139, - 79,188, 52,148,143, 25, 25,113,159,210,140,171, 8,167, 26, 85, 94, 65,131, 35,235, 11,102,226,130, 87, 49,132, 48,166, 27,155, - 34,167, 24, 20, 49, 81,133, 37, 81,151, 26,170, 90,112, 31, 21,124,188,252,170, 13,201, 72, 73,201,204,105,149, 74,157, 57,200, -147,110, 38,154,139, 18, 67,205,195,153,115, 70,104, 51, 79,155, 83, 70, 23, 21, 85, 85, 0,161, 70,146,242,249, 2, 78, 76,126, -101,128,219,173,128,148,235, 34, 80,196, 0,231, 83, 92, 1,220, 90,204, 10,145,112, 0,185, 42, 1, 2,236,108, 45, 99,136,197, -109, 57,134, 90,147, 78, 60,243,173,165,136,149, 15, 48,189,215,148, 86,241,202,190, 93, 81,152,134,165,148, 13, 11,202,242, 35, -169,110,248,110,177, 16, 67, 42,158,104,128,170, 20,215, 22,194,141,110,142,176,131, 25,131,225, 54, 11,133, 84,196,180, 99,164, - 18, 82,252, 36, 58, 2, 73, 90,181,243,137,137,169, 94,219, 91, 8,140,165,159, 30,241,143, 84, 66,139,156,202,240, 96,192, 62, - 18,156, 82,206,124, 78, 89,140,129,203,241, 21, 30, 76, 19,163,109,106, 99,148,203,129,215,161, 22,149, 70,170, 36, 45,108,171, - 31,224, 53, 5,243, 58,217,101,215, 79,193, 25, 79,185, 33, 32, 39, 1,165,190, 66, 50,135, 15, 45,187,123,227, 46,167, 87,178, - 45,198, 26,115,194,143, 66,171,214,144, 26, 91,156,200,171, 26,148,118, 84,145, 31,151, 10, 8,167,198, 11, 4, 31,135,197,207, -235, 37, 39, 74,201, 56, 20,179, 48,220, 2,160, 89,137, 27, 48,218,251, 92,218,224, 27,108,182,181,237,189, 90,213,112,199,197, -185, 37, 66, 63, 50, 26, 82,245, 33,186, 21, 2, 41, 29,149,214,224, 41, 89,127, 85, 64, 0,155,129,164,168,195,121,106,210,157, - 49, 16,180, 67,123,221,105, 23,132,151, 98,143, 8,133,181, 9,233, 2,160,114,132,149, 41,152,202, 77, 80, 0,122, 20,224,133, -140, 19,174,145,216, 85, 22,174,139, 58,117, 20,167,255, 0,116, 45,215,218,183, 92,253, 48,116, 59, 66,168, 71,135, 84,162,201, - 91,137, 33, 46,115, 83,165, 76,101, 96,101, 41, 92, 44,103,200,106,117,145,110,169,112,231, 15, 1,196,123,195, 84,153, 12,178, - 20,148, 41, 94, 28, 38,226,200,119,157,100,120, 95,165,138, 1,112,228,146,114,114,161,173,186,219, 8, 70,145, 86,150,137, 9, - 45, 70,158,138, 76, 55,148,216, 65,109, 45,150, 86,152,239,128, 57, 65, 12, 75,229,234,122,225,213,148,244,209,114,119,104,171, - 4,128,125, 92,254, 87,191, 96,110,192,158,223,104, 2,109,189,142,214,189,197,123,226,102,115, 14,101,151,130,175,170,167, 41, -126,116, 54, 59,220, 24,181, 41, 23,243, 93, 94, 65, 97,177,125, 39,160, 56,182, 92, 20, 69, 77,185,225,210,208,218, 12,121,177, -214,245,101,132,175,147, 20,200,207,169, 77, 67, 12,161, 64,187,239, 14, 55, 24, 58, 82,112,164,176,232,229, 32,231, 94, 29, 77, - 69,138,133, 70, 29, 29,163, 30,174,236, 24, 12, 74,171,176,182, 29, 93, 18,157, 80, 46,135, 10, 99,172, 22,209, 86,126, 34, 28, -247, 86, 74,249, 90, 42, 50,212,149, 37,164,133, 61,149, 74, 50, 96,174,108,231,227,148, 73,104, 70, 98, 34, 90,232,251,142, 52, -174, 65, 30, 63, 46, 28,230,126, 90,201,119, 25, 60,138,113, 64,225,189, 82,183,173,152,148,155,102,178,203,203, 68,215,166, 72, -114,183, 95,156,227,173,149, 84,171, 51, 30, 74, 27, 67, 12,173, 36, 52,203, 81,219,102, 60, 68,130,144,203,109,165, 36,133,120, -138,212,193, 31, 77,212,144, 72, 34,198,251, 27,245, 44, 15,154,214, 6,230,224,239,182,149, 3, 21, 18,113, 76, 43, 65, 3, 50, -137,214, 49, 12, 40,135,117,121, 29,209,158, 71,223, 75, 42, 46,136,204,108, 8,145,132, 74,193,144, 72, 75, 74,213, 54, 21, 45, - 76, 91,246,218, 94,139, 17,193, 28, 86, 29, 14, 46,115,208,212,249, 67, 77, 64,167, 72,144, 20,185,149,135,226,180,158,101,145, -202,195, 40, 83,141,144,227,200, 2,245, 21,216, 52, 92,248, 96, 70,161, 83,252,103, 98,197,145, 15,156,115, 78,109, 49, 66,157, -109, 1,110,205,152,167, 16,175,119, 65,203,206,130,172,229, 69, 42, 23, 85,184,213, 38,116,122, 77, 49, 30,243,112, 48,191,122, -156,175, 0,120, 52,218,131,205, 97, 18,106, 83,146,149, 4,194, 76, 0,146, 91, 88,241,164,101, 41,109,188,184, 10,126, 34,216, - 84, 0,137,213,234,155,149, 73,236,160, 76, 76,164,176,212,104,116,198,150,183, 7,131, 18, 42, 93,229,167,198,253, 69, 23,214, - 76,149,151, 57, 71,195,200,157,109, 69, 33, 82,243, 60,133,180,234,176,248,250,244,211,107, 91,226, 72,211,167,112,188,181,209, - 76,160,213,204,197,106, 0, 96, 24,179, 79, 82,204, 72, 51,121,144,128, 10,249, 98,149,218,225, 28,149, 89, 27,152,205, 94,144, -220,249, 80,209, 79,171, 70, 91, 20,181,184,135, 92,141, 50, 72, 14, 84, 76,118, 19, 36, 34,177, 25,151, 21,138,119,187,114, 19, - 21, 68, 12,117,150,149,132,150,213,150, 54, 98,220,136, 16,188,119,163, 67,101, 5,113,196,105, 72,165,185, 82,119,197, 5,126, -248,228,114,219,144,233,141, 70, 67,104,106, 56, 82,124, 82, 79,136,218, 88, 9,105, 88,156,247,222,169, 82,227,191, 45,232,212, -218, 11, 78, 71, 98, 59,143,161,113, 39, 84, 75, 46,153, 13, 76,172, 45,229,243, 37,135, 29,104,251,180, 52,101,110, 6,210,236, -148,169, 74, 12,138,140, 74,153, 50, 51,206, 33,177, 76,164,162, 59, 73,171, 73, 72,104, 78,168,197,125,231,124, 63, 6, 48,109, -102,142,200, 60,234, 28,229, 82, 93, 7,244,104,105, 39, 91,241,105,141, 99, 37,254,169,195, 11, 90,214,220,144, 53, 30,151,233, -216, 2, 62,226,207, 81, 79, 37, 64, 53, 1,150,150,100,144,129,164,144,145, 57, 33,117, 0, 73,102,157,197,144,162,146,201,229, -185, 91, 7,133,199,163,200,101, 79,198,131, 70,106, 76,183, 83, 33, 17, 40,212,166, 60, 24,241,189,234, 27,101,247,106, 85,121, - 13, 51,138, 77, 9,190, 85, 34, 58,146,217, 82,185,213,225,182,227,202,108, 33,244,163, 51, 30,132, 13,122,179, 61, 46,206,167, -178,218,106, 21, 83, 17,198,105,113, 16,255, 0,130,203, 84,152, 48,121,220,112, 58, 60, 70,144,219, 72, 14,202,154,226, 91, 75, -137,117,229,164, 37,133,166, 84,233, 54,205, 18,152, 42, 78, 72, 74,100, 38,109, 70,157, 75,167,176,101,215,110,185, 45,168,183, - 26, 21, 45,132, 58, 22,233, 81, 25, 47, 73, 45, 70,101, 9, 42,121,228, 37, 28,165,217,183, 32,206,171, 85,105,149,250,165, 82, -149, 14, 75, 94, 12,218, 69,174,167, 26, 93, 42,136,182,199, 51,171,157, 33,213,135,234, 53, 63, 17,100,187, 57, 41,104, 33, 40, - 8,142,218, 24, 74,121,221,169, 86, 22, 72,193,212,205, 96,202, 46, 67, 48,184, 22, 31,101,130,133,184, 4, 88, 49, 35, 72,181, -216, 86, 28, 81, 1,116,150, 73, 25,169,242,225,205, 66,229, 73,146,164,163,105,104,209,130,181,131, 0, 76,135, 75, 68,143,118, -149,228,145, 98,129, 95,138, 36,233,202,152,138,141, 93,169,141, 69, 80, 30,227, 5,244, 43,222, 82,165, 36,243, 74,171,176,208, - 41,106,160,226,222, 82, 83, 28,169, 98, 40, 10, 73, 90,220,201, 68, 52,254,150,111, 2,144,225,187,179,158,209,187, 10,132,211, - 79,213,165, 82,118, 15,137, 25, 20,246,210,148, 75, 91,140,190,246,200, 95,117, 36, 32,115, 57, 41, 10,102,175,109,202,146,122, - 41, 18,232,108, 40,225,134,134,166, 17, 71,172, 75,173,183,254, 28,202,224,136, 19,125,223,220,189,237,247, 37, 21,179, 37,214, - 81, 80,121,191, 1, 45, 16,166,130, 31,105, 33,106, 75, 76,149, 56,163,206,177,200,205,113,141,195,133, 51,141, 78, 12,248,147, -225,150,176,148, 59, 23,119,182,166,230,182,237, 57, 15, 97,150,105,151,140, 70, 87, 85,176,107,200, 50, 27,253, 3,177,111, 58, - 93,191, 49,181, 28, 41, 2, 57, 60,193, 74,200,158,100,149,102, 22,210,191, 88,166,198,203,123,107, 2,250, 84, 17,179, 17,170, - 37, 36, 88, 6, 45,176, 1,135, 60,241, 94, 80,210,197, 55, 50, 52,167,146, 27, 38,149,177,141,119,250,189, 44, 46, 13,254,219, - 16,222,117, 4,220,220,223,242, 16, 41, 10, 0,121,103, 35, 29, 63, 35,174,144, 0,146,129,231,232,122,252,251,246,242,213,103, -105,213, 58, 52,201,244, 90,252, 69,192,174,208,170, 53, 26, 21,114, 3,128,135, 96, 86,232,211, 30,166, 85,233,238,115, 96,133, -177, 82,139, 41,165,103,205,147,175, 33, 3, 57, 79,194, 14, 78,124,199,203,236,212,253, 72, 96, 25, 78,160, 70,198,251, 27,216, -220, 31, 76, 83,251,247, 22, 56,241,142, 65,215,160,207, 76,143, 35,229,243,210, 78, 79,144, 72, 39,250,186,145,142,218,250, 74, -136, 25,198,115,208,129,220,124,245,247, 36,146,124,191,217,244,236,126,205,103,127,191, 3, 30, 72,200,230,229,206, 58,121, 15, -199,215,251,117,236, 5, 31,245, 72,242, 7,190, 62,223, 76,233,114,133,144,114,164,245,198, 7, 65,219,215,238,215,190, 92,127, - 56,224,103, 31, 47,191,211, 67,221,233,129,138, 43, 71,124,156, 15,196, 14,221,186,244,208,171, 3, 3,191,166, 64,201,249,119, -249,234,232,212, 41,147, 22,132, 71,105, 74, 46,186,134, 91, 32, 16, 29,125,194, 18,211, 12,249,188,250,213,209, 40, 72, 43, 89, - 56, 72, 39,166,186, 71,195,191,178, 43,142,110, 36, 99,196,171,219, 27, 61, 83,178,237, 25, 97,151, 26,188,247, 98, 90, 54,206, -131, 38, 59,229, 63,225, 52,182,171,241,205, 66,178,148, 52,175, 16,166, 60, 5,115, 36, 97, 43,202,147,157,121,171, 41,169,236, - 37,148, 43, 55, 69,234,199,224,162,228,159,112,198,205, 37, 29, 93,124,188,138, 26, 89, 43, 38, 29, 86, 36,103, 32,122,182,144, -116,143,123, 88,123,241,204, 5,140,156, 36,231, 29,252,135,224,124,251,232,117, 0, 14, 70, 1, 7, 7,183,159,203,207,166,117, -177,124, 80,240,223,126,112,157,189,183,214,195,110,107, 49,211,119,216, 53, 54, 96,207,155, 77, 84,151,104,213,200,115,224,199, -169,209,174, 75,118, 76,184,204,185, 50,223,157, 79,148,219,177,157,113,166,212, 74, 28, 66,144, 20,218,181,174,203,234, 48, 7, -159, 79, 94,255, 0,111, 83,141,108, 83,203, 28,200,146,198,218,163,144, 2, 58,142,190,160,216,223,220, 69,240,155,199, 36, 18, -203, 12,200, 98,158, 22,100,116, 59, 50,178,157, 44,164, 14,132, 16, 65,247,140, 12,160, 58, 18,122, 12,253,253, 63,179, 67,171, -168,200, 61, 58,140,249,227,207,167,231,182,138, 63,173,208, 17,223,167,203, 25,201,252, 53, 69, 64, 1,142,253,115,246, 15, 67, -173,144,108, 65,244,198, 70,227,125,199,254, 48, 26,129,245, 28,189,186,140,125,224,250,245,208,171,192,201, 25, 7,255, 0,104, -122,103, 69,184, 70, 72, 57, 0, 30,195, 29,124,186,126, 31,179, 66, 47, 62,163, 30,158,121,249,116,210,202, 73, 23, 56, 0,108, - 61, 54,192,202,193,193,193, 4,247,206,116, 58,199,159,175, 67,233,162, 87,235,229,140,122, 96,250,252,244, 58,129,201,200,200, -251,113,131,219, 56,209,199,198,216, 54, 6, 88, 0,100, 39,175,203,167,231,251, 52, 43,131, 39, 36, 2, 64,236, 58,254, 63, 61, - 22,231, 76,100,244,201,251, 60,134,132, 80, 30,188,221,127,104,193,245,251, 52,170,155,223,107, 91, 25, 22,223, 2, 44, 12, 18, - 70, 49,219,212,117,237,161, 87,243,234, 15,111, 44, 31, 92,249,249,232,197,140,103,249,222,127,105,251, 6,133,115, 24,236,123, -246,244,239,223,229,165,147, 10,139, 27,123,190,126,126,252, 12,188,246,199, 76,103, 62,152,254,142,154, 13,206,249,201, 78, 51, -156,140,231,211, 31, 46,250, 49,194, 2,122,244,243,207,151, 79, 93, 90,212,167,148,162, 20, 50,159, 34,158,248, 35,184,244,210, -152, 2,247, 55,232, 48, 59,171, 82, 85,220,156,231,177,199, 79,179, 75, 84,137, 89, 82,129, 64,192, 61, 9,238,125,123,157, 45, - 11,159, 92,102,195,211, 7, 1,145,228, 49,230,115,215,175,153,251,245, 85, 41,199, 65,212,158,255, 0,159, 77, 82, 78,114, 7, -145,207, 79, 35,223,203,237, 26, 37, 0,231, 61, 49,231,219,242, 53,130, 1,198,113, 85,164, 37, 39, 24, 29, 70, 51,230,123,121, -232,129,156,245, 31, 8, 29,193,235,233,231,223,190,169,163, 29,176, 58,117, 7, 26,244,121,242, 2, 82, 20, 60,250,224,142,189, -251,246,210, 76, 0,248,223, 3, 5, 39, 29, 51,146, 59,252,240,123,103,174,138, 64,206, 8, 35, 31,183,240,208,109, 54, 70, 78, - 78, 73,235,147,144, 6, 78, 6, 51,215, 70,163, 57,233,142,157,199,203,229,162, 27,218,255, 0,203,124, 17,187,155,224,134,240, -161,156,231,174, 64,235,211, 29, 63,164,104,132,168,143, 60, 14,199, 24,243,245,249,127, 86,168,160, 96,103,207,203,243,246,141, - 16,132,224,228,245, 7,174, 63,160,231,215, 73, 16, 5,253,223, 39, 9, 28, 86, 71,127, 62,223,143,231, 58, 44, 1,220,122, 99, -160,192,252, 52, 58, 82, 7,219,143,207,238,213, 86,242,162, 60,134,112, 57,142, 0,243, 42, 62,128, 12,232,167, 5, 97,182,231, -108,101, 54,149,175, 93,188,238, 42, 37,171,108, 82,103,215,174, 43,142,169, 10,139, 68,162,210,216, 92,170,133, 82,169, 80,121, - 49,225, 64,134,195, 96,151, 31,113,229,164,118,194, 70, 84, 72, 0,157, 78, 55,217,195,236,235,180, 56, 5,219,136,183,189,229, - 6,143,114,241,101,120,210,144,245,197,112,186,195, 83, 99,109,101, 38,115, 41,113, 22, 77,152,167, 82, 66, 42, 9, 66,147,245, -132,212, 0,227,174,130,132,144,210, 64, 58, 65,236, 48,224, 78,145,183,150, 91, 28,115,238,229, 25, 47, 93, 23, 10,101,211,120, -127,163, 84,163,165, 73,163,211, 57, 87, 30,165,184, 46, 48,226, 73, 76,201, 4, 45,184,107, 35, 40,101, 37,105, 33, 78,103, 93, -206,171,207,168, 77,158,242,214,234,165,120,206, 45,240,239, 57, 83,188,203, 36,252, 62,157, 9,239,170, 51,196, 46, 48,105, 37, -147, 42,160,151, 76, 16,146, 37, 96,109,169,129, 27, 92,118, 83,208,119, 32,181,143,145,135,112,125, 25,188, 13,143, 54, 16,113, -223, 19, 82,137, 17,172,244, 16, 72, 60,170,157,125,165,213,191, 93,246, 49,126,194, 16,247,212,254, 92,102,175, 95,155, 82, 46, -162,100,151,208,236,151, 84, 86,135,157, 83,143, 45, 96,146, 94,142,181, 28,149, 31,231, 39, 61,245, 66,141,115,205,137, 57,175, - 1,247, 75, 76, 35,195, 76,148, 41, 72,125, 46, 37, 67,149, 50, 80, 63, 89,178,122,100,246, 29,245,245,218, 59,147,164, 45, 78, - 62,215, 50,202,148,134,101,254,133,244, 62,145,140,180,188,124, 11, 56,232, 71, 67,171, 83,148,233, 49,170, 13,190,247,248, 44, -245,182, 90,104, 56,144,150, 39, 33, 63, 10,154,125, 67,225,241, 20,158,202,245,193,243,213, 56,106, 88,146,193,203,105,235,239, - 59, 19,191,201,199,127,158, 23,202,218,157,233,146, 24,236, 81,136, 80, 46, 1, 43,107,143, 46,174,130,197,183, 3,169,212, 47, -102, 23,138, 45,142,166,222, 16, 42, 27,183,108,211, 81, 10,232,163, 70,247,155,186,155, 13,174, 83, 92,132, 0, 8,170,165,134, -192, 6,115, 39, 5,106, 72,203,136, 86, 73,233,166,207,131,205,208,115,108,174, 89,118,133,206,234,163,216, 59,146,166, 20,169, - 42, 82,136,161, 93, 77,252, 49, 42, 33, 4,225,182,215,204,148,185,216, 20,171, 61,198,186, 27,110,114,132,166, 53, 69,148, 59, - 30, 90, 23, 25,101,236,171,154, 43,201,240,223,133, 36, 17,241, 35,145, 74,229, 39,161,215, 63,238,253,167,145,106,238,109,193, -110,177, 27,154,158,103,166,165, 71,109,208, 75, 65,135,207,188, 66,117,149,227,252,159, 41,228,233,219, 3, 75,181, 66,188,109, - 27,157, 72,221, 61,223,199, 99,123,219,220, 65,219,108, 51,192, 88,210, 85,228, 53,174, 76,116,104, 30,157,201,185,229, 35, 0, - 2, 19,125,224,147, 75, 37,239,101, 33, 13,213, 69,250,103,114, 80, 10,102,173, 46, 58,164,199,113,180,212,163,184,159,141, 18, - 38,180,144, 27,150,219,136,255, 0, 40,194,218,193,244,234, 52, 13, 53,152, 76, 85,228, 75,126, 75,175, 83,218,112,212,170, 11, -111, 28,170,135, 77,132,169, 78,242,115, 15,209,175, 45,242,143,153,236,117,227, 97,231, 85,171,148, 38,109,155,155,154, 91, 20, -248,232,126,139, 84, 87,199, 38, 34, 85,134,223,163, 74, 82,186,185, 28, 40,126,141, 95,205, 7, 30, 67, 69,110,125, 33,219, 19, -109,119, 58,172, 90, 66, 93,116, 66,166,211,214,225, 63,160,250,214, 82, 3,169, 64,233,241,150, 27,112, 39,168, 3,155, 62, 88, - 58,244,144,243,106,233,148, 11,197, 35,128,123,129,109,205,246,238, 6,199,184,235,108, 71, 42,184,155,216,242,188,198,154,162, - 95,237,180,208,232,140, 11, 90, 66,236,136,172,189,245, 3,160,145,212, 16,122,249, 73,227,159, 17,187,137, 50,231,190,101, 63, - 18,112,228,140,252,162,176, 30, 62, 10,228, 73, 82,164, 22, 95, 72, 63, 2, 91, 10, 66, 22,112, 8, 82, 66,185,126, 28, 29, 79, -145, 81, 80,168, 42, 68,213, 63, 12, 37,188, 63, 45,130,209,128,132,156,150, 26, 75,203, 73, 74,254, 39, 10,138, 92, 67,124,164, -229, 42, 25, 25,186,221,245, 35, 87,185, 43, 18,155, 90,227, 77,126,164,251,143, 7,129,118, 51,188,178, 11,120,144,148,242,135, - 91,232, 71, 50, 10, 92, 36, 36, 39,211, 88,139,213,131, 77,117,196,212, 27, 16,219, 83,220,225,196,169, 47,211,101,161, 71,194, - 11, 92,133, 4,174, 9, 66,203,105,113,183,145,240,248,193,124,202,108,130, 38, 34, 59,179, 29,137,125,253,230,246, 63,127,165, -250, 13,186, 11,218,248,225,108,186, 60,159, 36,202,104, 33, 80,239, 79, 18, 6,232, 36, 44,108,206, 88,216,171,134,102, 58,137, -189,193,232,183,182, 51,138,107,197,167, 35,145, 32,194, 75,137, 45,162,170,204,129, 26, 59,172, 0, 57, 16,250, 88, 42, 67,173, -168, 44,132, 33, 97,105, 81, 89,194,193,192, 15, 21,183, 34, 93,189, 17,133,173,196,213, 88,150,133,188,239, 51, 44,199,149, 29, - 45,142, 86,210, 82,135, 2, 38, 68,112,144,144,148,168, 41, 39, 32,133, 0, 2, 89,200, 80,154,117,109,186,212,100,199,139, 80, -101, 13, 33,216, 78,199,114, 51,238, 37, 74, 91, 78,189, 27,148,178,231, 80,164,172,130, 9, 41,201,238, 14,179,250, 11, 83,227, -182,194,154,145, 2,161, 25,212,187, 44,196, 66,213, 18,124,111, 5,107,100,166, 20,148,169,198,211, 12,115,175,153, 42, 74, 80, - 70, 78, 78, 51,166,186,192,172,178, 6,109,136,220,117,189,189,227,117,177, 30,160, 27,119,233,139, 14,158,162, 39,142, 0,101, - 66, 93,128, 10,247, 70,216,130,108,214,176, 96,108, 65,243, 95,175,187, 27, 7,111,210, 27,168,182,211,116,199,151, 78, 75,232, -110, 83,209,169,177, 26,125, 10,125, 72, 91,143,187, 34, 34,142, 34,172, 0,129,128,132, 45, 73, 72, 9, 43, 56, 80,206,163,202, -184,216,125,223, 26,158,154,225, 56, 80,114,142,180, 69,150,162,178,150,227, 46, 61, 62,106,200, 76,129,146, 74, 91,146, 28, 87, - 54, 67,121, 73,211, 37, 69,159, 9, 83, 19, 42,175, 34,171, 13,106, 74,227,154,156, 84,200, 79,185,120,108,229,135, 25,169, 81, -213,250, 96,176,134,208,128, 65, 64,248,130,145,141, 58,116, 74,219,236,148,159,175, 97, 86, 33,180,182, 20, 87, 17,108,199,169, -180,216, 91,106, 47, 79,130,128, 61,245,230,208,113,204,207, 34,215,156,148,247,212, 94,170, 25,163,109,148, 76,140, 5,245, 41, -218,254,142, 8,213,107,116, 44, 47, 97,229, 55,198,205, 75, 85, 29, 71,255, 0, 73, 68, 85, 96,178,164,159,111, 98,202,179, 71, -229, 98, 69,134,130,202, 77,238, 0, 83, 96,239, 82,107, 84,106,164,152,205,214, 16,245, 17, 75,247,101, 22, 43, 1,232, 83,105, -203,136,165, 50,229, 98, 34,151,202, 17,226, 61,202,145,202,178, 48,162,146,142,250,216,251,105,128,186, 36,170,100,211, 22, 67, - 77,176,209,122, 60,214,153,145, 30,167, 10, 65,240,214,164,164,158, 79, 13, 73, 45,115, 37,224,181, 33,120, 81,230, 79, 42,131, - 59, 69, 16,106,201,139, 50, 64,129, 87,142,243,161,150,146, 80,211,168, 90, 71,134,148, 54,236, 25, 3,150, 43,129, 5,101,229, - 41, 92,199,162, 51,130,112,245,208,236,136, 14, 52, 88,165, 63, 50,139, 34, 51,197,246, 98, 51,239, 14, 83,216, 91,139,113,121, - 76, 73,110,172, 58,223, 48, 72, 13,160,134,135,112,144, 6,154,194, 70, 23,117,229,143,129,216,236, 71, 80, 47, 96,118,184, 4, -222,231,114, 6, 41,222, 44,205,105, 4, 73, 28,205, 45, 7, 45,193,177,250,212,141,149,187, 31, 44,137,107,144,124,172,109,102, -184,117, 1,243, 59, 82,158,154, 90, 88,167,200,142,181,210,164,169,181, 70, 81, 89,144,237, 61,164, 97, 8,142, 95, 89, 89,114, -156,227,128, 6,143, 58,148,202,185,146,172,161, 73, 41, 58,230,163,187, 82,190,163,190,164, 15,240, 15,170, 97, 12,245, 79, 47, -184,169, 46, 41,174,193, 14,169,111,140,231,161, 40,198,122,227, 89, 5, 18, 3,176,154,143, 6,166,202, 9, 1, 73,143, 61,174, -116,199,117, 99, 11,126, 47,134, 18, 84,193,229, 10, 37, 10, 37,180,225, 64, 40, 28, 13,100,168,166,120,245,217, 15,133,120,168, -146,220, 87,219, 46, 28,171, 6, 52,112,158,128,225, 60,175, 70, 87,197,205,140, 40, 16,112, 64,214, 42,193, 90,101, 10,126,211, -169,184,233,123, 31,188,110, 72,220, 3,125,207, 67,138, 55, 49,206,155,219,234, 42,132,129,216,197, 32, 46, 15,145,195, 50, 2, -235,191, 86, 80, 85,250, 18, 70,227, 86,166, 57,149,157,109,178,148,183,224, 71, 1,183, 35,200,142,217, 40, 25, 72,109,212,201, - 82,185, 20,122,144,165,158,100,158,128,171, 25,198, 50,253,209, 40,136, 75,137, 56, 90, 16,244,102,139,216, 60,229, 92,174, 20, -160, 14,224, 59,241,225, 62,105,200,244,214, 51,107,195,108,165,151, 16,146, 22, 20,133, 20, 2, 74, 64,121, 60,138, 65, 87, 76, - 96,117,207,114, 8,243, 3, 79, 5, 53,182,146, 64, 57,193,111,145, 35,178, 84, 80,226, 28,232,165,126,162,177,219, 31,234, 19, -220,105,223, 44,132,121, 88,223, 77,198,253,250,119, 62,253,247,252,113, 75,113, 30,119, 60,175, 32, 4,249,186,239,191, 91,252, - 54,176,222,214,184,191,174, 50, 89, 20,195, 81,143, 72,144,180,173, 79,134, 84,226,176, 3,206, 10,131, 10, 49,156,120,149, 12, -182, 3, 33,100, 31, 37,188, 73,238, 14,172, 46, 81, 36,215,106, 78,136, 82, 13, 46,159, 29,244,173,218,140, 98, 3,147, 86,130, -148, 42,159, 79,101,212,148,184, 90, 82, 9,117,242, 64, 39,157,182, 86, 64, 39, 89,163,142, 4,210, 26,113,106,112, 18,169,104, -109, 13,148, 32,151, 20,219, 9, 95, 85,156,163, 43, 88, 5, 64, 16, 3,157, 50, 73,215,199, 43, 45, 65, 83,113, 91, 14,161,136, -145, 25, 84,196,198, 1,231, 22, 91, 74, 20,150,219,107, 33, 42,116,156, 18,165, 16, 57, 84, 58,142,131, 82, 86,141,140,129, 80, - 14, 99, 42, 29,250, 93,128, 39, 98, 55,238, 64,233, 99,214,219, 98,176,130,186,186, 61, 66,153, 3,200, 12,138,151, 0,172,107, -174,228,216,130, 24,139,170,168, 32,128, 73,218,246, 35, 9,159, 71,167,209,161,120, 20,248,236,194,134,100,203, 91,178, 29, 95, -186,251,203,202, 90, 28,149, 81,118, 76,215,143,188, 39,196, 74,202,151, 33, 97, 35,155,151,196, 40, 72,195, 37, 84,174, 73,169, - 84,154,106,129, 77, 18,105, 49, 10,229, 68,157, 80,241,218,102,167, 32,224, 55, 84, 90, 25,111,222,102,198, 15, 5,251,154, 64, -109, 11,229, 46,180,231, 39, 33, 15,133, 74, 59,117,246,189,234,168,242, 95,136,212,199, 36,199,182,218,105,167,105,241,249, 74, -146,211,181,151, 92, 73, 53, 87, 2,149,206,150, 9, 76, 54,221, 64, 80,109,197, 32, 43, 88,189, 94,149, 6, 43,205,191, 86,230, -247,217,135,221,162,211,216,142,170,140,185,124,205,173, 45, 70,131, 10, 58,124,106,140,226, 75,124,160, 0,202, 50, 8, 82, 18, - 57,198,220, 72,224,134,210, 45,176,191, 96,122, 95,208, 6,189,206,219,216, 29,247,196,207, 33,174,134,153,155,219, 85,171,171, -156, 48,220,187, 89,207, 83, 96, 67, 75, 32, 91,221,193, 17, 45,216,175, 48, 50,178,224, 84, 74, 44,154,236,184,109, 72,113,234, -237,116,165,197,177, 54, 82,143,185,194,138,164,184,249, 16,105,241,143, 44,103,208,121, 50,164,146,226,240,182,220,119, 4,235, - 37,164, 65,153, 92, 80,137,106, 70,139, 82,125,151,164,197,155, 93,168,123,196,123, 46,150,251, 8,240,252, 17,238, 40, 42,185, -170,222, 34,155, 80,141, 16,150, 88,230, 75,114,101, 51,130,141,103,113,118,222, 84,228,199,126,232, 95,240,106,136, 16,215,189, -218, 86,235,201, 53,185, 52,220,146, 81,114, 92,236, 97, 49, 90,112,128, 36,194,166, 1,146,181, 52,236,199,138, 84, 53,147, 85, -149, 73,182, 92,129, 6,223,109, 81,169,207,198,147, 79,163, 83, 41,232, 5, 82, 81, 29,145,152,108,180,165, 54, 91,134,211,156, -200,113,210, 18,218, 3,193,103,153, 99, 39,101,145,165, 85,144, 39, 49,211,208,128,187,218,251,146, 58, 53,134,171, 94,215, 4, - 88,173,147,175,226,120,170,103,246,122, 6, 21,149, 44, 27, 66,168,189, 44, 37, 67, 23, 6, 68, 33, 36, 54, 58,210, 58,127,236, -202,171,173,165,149, 12,145, 11, 77, 10,223,167, 90, 47,203,153, 93,154, 39,203,117,178,229, 86,225,153, 22, 43, 10, 90,217, 97, -108,173,148, 73,109,194,197, 34,138,149,128, 98,176,158, 86, 18,160,180, 32,169,197, 18,171,243, 12, 71,188, 39, 42,174,205, 61, - 18, 45, 72,169, 45, 52,144,181, 82, 30,158,238, 86,184,179,219,134,160,218,163, 82,146,160,225,109, 14, 58,219,178, 20, 76,135, -249, 18, 91,109, 56,227,176, 25,153, 75,137, 81,185,166,184,212, 78, 68,193,165, 81, 33, 56, 20,195, 85, 39, 10, 11, 82,165, 48, -193, 47, 87,234,137,240,209,202,128,158, 72,168, 70, 91, 66, 74,214,240,187,209,162, 25,147, 29,241, 80,243, 20, 40, 45,185, 21, -234,107,146, 57,170,243,146,235,172,178,227, 19,125,225,132, 36,196, 91,197, 42, 68,112,151, 28, 82, 94, 80,113,210, 62, 13, 58, -210,106, 66,183, 75, 35, 17,168,117, 97,109,198,228, 16,111,212,237,190,224, 90,197,113, 23,172,103,117,158,190, 74,182,147, 48, - 80, 99,105, 64,211, 10, 1,101,209, 78,168, 99, 38,107,105,141, 52, 17, 20, 68,221,110,162, 55, 14,212, 81, 18,171, 73, 69, 54, -151, 80,170,193,183,229,135,231, 85, 42,149, 41, 47, 79,143, 80,247, 20, 52,203, 16, 98,229,240,126,168,115,170, 31,125, 39,149, -208,202, 26, 10, 40,231,230,113,232, 15, 68,139, 87,166, 53, 26, 60,198, 94,122, 51, 68, 71,148,250,148, 25,103, 63,162, 83,229, - 41, 41, 99, 37, 69, 44,160, 37, 60,201,103,152,129,206, 20, 27,135, 43, 8,141, 22,153, 2,220,110, 28,171,174,170,134, 89,142, -153,169, 66, 35,209, 88,108,174, 57,126, 80,125, 99,220, 96,135, 91,113, 92,141,161, 33,199, 27, 75,101, 92,216, 34,241, 2, 53, - 62,152,134,101, 34,161, 49,233,206,169,137,117, 56,178,156, 90,231, 45,245,190, 29,112,130,215,199,159, 17, 9,113, 10, 64, 72, -240,130, 80, 82, 83,212, 76,105, 31,217,222, 25, 64,230,104, 8,110,162,224, 1,102,223, 85,193, 99,246,172,183, 96, 73,103, 47, -101, 81, 84,230, 84,205, 52, 18,164,134, 72,163,156,202, 35,140,221,164,118, 98, 85,165,150,214,109, 39, 74,162, 72,246, 71,229, - 5, 65, 26,139,159,203,207,219, 83,176,204,240,223,237, 79,227, 35,111, 41,204, 69,139, 67,175,238, 80,222, 59, 98, 36, 38,195, -113,161,208,183,162,149, 7,112,132, 52,182,144, 3,101,170,213,102,182,215, 40,232,148,176,158,221,135, 48, 73, 36,100, 96, 99, -184, 61,250,246,212,159, 62,150, 45,137, 6,222,246,135,108,254,224, 66, 67,137,123,117, 56, 94,183,220,168,135, 22,209, 74,230, - 88, 87,181,215, 66,109,109,161,180, 2,209, 52,250,172, 0,176,165, 45, 68,165, 61, 64, 1, 34, 48, 64,228, 21, 18, 15,251, 56, -236,115,211, 86, 37, 3,171, 82, 68, 23,236, 70, 90, 53,182,195, 76,108,209,131,111, 66, 22,227,189,136,190,247,199, 60,230, 49, -152,171,170, 80,253,162,193,143,184,200,162, 66, 62,237, 86,255, 0, 76,120, 41,206, 48,160,113,145,142,217,207,150, 15,125,123, - 0,227,148, 14, 92,116, 63,209,247,244,215,220, 39, 25, 35,191, 83,230, 71,159,125, 87,109,178,242,146,134, 70, 92, 87, 96,172, - 36, 4,128, 84,165, 45, 71,162, 80, 0, 36,146,112, 0,201,233,173,195,210,228,218,223,187, 26, 93,174,118,199,134, 90,117,213, - 33,166,208,167, 28, 90,185, 80,132, 2,165, 40,158,192, 1,174,165,240, 33,236,163,226, 11,141,133,195,187,161,181, 31,108, 54, - 57,185,170,102,161,188,215,148, 9, 46,210, 42,138,140,234, 81, 54,157,182,214,243, 78, 53, 39,113, 42,232,234,133, 62,203,140, - 81,226,186,164,251,205, 65, 68, 45,141,111,127,178,155,217, 11, 7,117,232,244, 30, 38,184,174,161,203,107,103,231,248, 21,109, -173,218, 73,190,241, 78,168,239, 51, 13,168,169,155,182,242,228, 90, 36, 81,246,136,186,131,238,144,210, 90,151,113,134,203,171, - 91, 20,149, 36,203,150,181, 2, 36, 72,241, 41,180,202,125, 62, 5, 42,149, 74,131, 14,149, 68,162, 82,162, 70,166,209,168,180, -168,109, 37,152, 52,202, 93, 50, 19, 72, 98,155, 79, 98, 58, 66, 90, 97,150,208,219,105, 24, 66, 83,166, 25,243, 9, 42, 36, 48, -211, 63, 42, 59,216,200, 44, 75, 90,215, 17,131,112, 7, 91,187, 2, 54,178,171, 92,178, 89,124, 43,192, 18,102, 49, 69,153,103, - 74,240,208,200, 3, 69, 2,157, 18, 76,166,196, 60,141,179, 69, 19, 15,178, 22,210, 56, 58,131, 70,186, 89,244,203,132,143,102, - 23, 8,220, 37,199,165,207,176,182,222, 37,237,184,240,218, 71,188,239, 38,234, 68,167,221, 55,203,178, 8, 5,199,104, 48,157, -143,245,101,141, 16,184, 57,155,143, 75,138,210,217, 36,230, 83,228,243,158,151, 69,160,187, 49,126, 36,133, 58,235,129, 35, 46, - 60, 86,226,143, 94,131,153, 68,246, 24, 3,200,118,213,202,135, 74,248, 27, 28,132,168,164, 41, 71, 3, 60,167,178,137,239,204, -123, 15, 64, 52,232,211,232,248, 74, 64, 64, 35, 29, 71,146, 73,235,146,113,212, 96,254,205,107, 90, 40, 75,114,198,159, 86, 38, -236,109,251, 76, 73, 38,219,253,162,109,208, 91, 22,226, 81, 83,208,192,148,180,116,233, 71, 78,189, 18, 53, 84, 94,219,144,182, -187, 30,236,110,205,212,155,226, 36,191, 73,131,133,184, 14,237,254,198,241,107, 70,166, 37,170,205, 10,172,246,199,238, 12,230, - 90, 72, 51,232,213, 6,101, 92, 59,127, 50,122,210, 50,227,241,167, 51, 87,134,218,213,158, 86,166, 6,193, 0, 1,168,116,169, - 41, 33, 39,204,245,237,215, 39,203,251,117,250, 82,251,111,182,226,159,122,123, 47,248,158, 68,212,183,205,103,209,237,109,192, -166, 56,164,149,248, 53, 59, 98,234,166, 45,165,183,223,145, 74, 98,100,132,103,253, 85,145,219, 95,154,217, 61, 0, 4, 2, 74, -134, 8, 61, 7, 49,198, 52,227,147, 73,255, 0,165, 66, 15,216,112,195,220, 36, 0,159,222,225,201,223,169,197, 33,199,180,137, - 77,196, 45, 34, 0, 5,116, 17, 74, 69,250,190,167,136,155,109, 98,194, 32,222,246, 36,247,192,206,116, 56, 35,174, 1,207,238, -253,186, 25, 65, 61,243,212,246,243, 7, 26, 53,192, 0,199, 55, 83,220,158,189,254, 95,142,132, 88, 87, 83,128, 65,237,142,152, -192,193, 56,199,174,159,241, 15,192, 46, 18, 50, 66,124,241,246,227,185,249,232, 98, 58,147,216,252,251, 39,236, 30, 90, 53,207, - 47,191, 65, 58, 65,207,175,110,189,250, 16, 14, 52,178,244, 30,252, 20,218,254,159,207,182, 5,112,227, 39,190, 51,142,131, 31, -120,199, 78,154, 17, 68,242,243, 31,159, 40,251,126,126,154, 37, 72, 61,249,137,198,122,121,118,238,122,245,213, 5,161, 68,100, - 16,191, 34,124,135,231,247,232,227,183,207,254, 48,111,134, 5, 42, 36, 16, 71,124,114,231,182, 61,126,122, 29, 68,103, 25,234, - 1,232, 6, 0,235,229,162, 84,147,145,215,246,116, 0,106,130,240, 62,121,237,229,142,217,251,124,180,162,141,133,183, 31, 63, - 61,177,144, 1, 62,151,192,138, 73, 25,229, 57,201, 57,255, 0,103,240,208,221,251,232,197, 2, 50, 70, 0,235,156, 30,227, 61, - 50, 61,116, 50,192, 29,129,245, 39,203,236,252,116,170,117,249,219, 10, 40, 4,116,183,200,197,185,230,249,199, 41, 42,198, 70, - 82, 58,103, 25,238, 71,150,116, 51,141,184, 1,235,202, 2,112,144, 0, 36,143,159,167,158,174, 42, 0, 30,132,158,249,207,174, -132,121,178,164,158, 85,169, 7, 39, 24,254,119,219,234, 51,165,176,110,158,235,226,222, 82,148,255, 0,148, 36,147,212, 99,211, -208,244,239,165,175, 69,181,182, 0, 82,148,225, 61, 73,192,233,242,239,165,161, 99,233,140,227,210, 7, 92,249, 15,233,252,157, - 20,130, 49,129,223,185,251,245, 65, 32,224, 12,117,234, 63, 19,255, 0, 13, 86, 64,238,124,199, 76,122,104, 96, 96,148,167, 3, -175, 66,127, 28,126,227,253, 90,168,210, 0,200, 56, 61,207, 79,158, 58,231,243,223, 84,210, 73,233,142,131,166,126,239,219,162, - 91, 73, 57,233,223,215,207,166,147,112, 55, 61,255, 0,241,129,143, 96,121,224,159,199,161,251,180, 91, 63, 23,113,203,215, 25, -238,123, 13, 83,109, 35,160,235,215,175,223,141, 18,148,131,208,116,233,158,223,102,147,193, 77,141,238,118,193, 72, 79,216,122, -118,249,250,227,203,207, 85,146, 1, 56, 61, 61, 49,251, 7,109, 14,216,230,198,125, 50,122, 99, 68,160, 2, 64,198,125, 63,225, -164, 90,192,144, 62,122, 97, 28, 86, 29, 14, 58,140,121,159, 62,158,186,218,174, 11,120,121,159,197, 23, 18,123, 87,179,145,130, -147, 79,185,110, 40,206,220,178, 66, 73, 76, 27, 74,150,164,207,184,229,172,143,213, 6,158,202,219, 7,253,105, 35, 90,172, 1, -206,113,144, 59,143,159,245,234, 71,254,193,173,178, 98,146,141,245,226, 34,165, 22, 63,188, 82,169,144,118,234,211,150,250, 66, -158, 98, 93, 83, 19,235,142, 70,200,253, 26,253,223,221, 91, 42, 24, 61,198,152, 56,151, 50, 57, 86, 77, 91, 84,173,166, 80,186, - 80,142,161,155,107,143,122,130, 91,254,220, 76, 56, 7,134, 79, 24,113,142, 65,195,218, 75, 67, 95, 58,243,173,255, 0, 2, 48, -101,152, 92,116,213, 26, 20, 7,179, 48,196,149,103,214, 45,203,102,139, 77,179,109,136,172, 83,237,139, 54,149, 2,215,182,224, - 65, 9,106, 37, 62,145, 72,142,136, 76,165, 49,147,211, 5, 45,100,145,212,231, 39, 86,118,235, 42,143,200,227, 47, 37,210,234, - 18, 24, 83,124,167, 5,120, 37, 7, 39,169, 39, 31,142,154, 22,235,241,228,173,213, 7, 98,188,149,229,164,178,233,228, 89, 82, -186, 30,101,122, 21,107, 39,167, 33,181,182,204, 85, 70,113,109, 7, 2,195,161,204,169,167, 50, 20, 18,130, 15,196, 61, 53,201, - 85,114,187,206,236,205,119,148,147,111,221,239,252,122, 91,240,246,231,132, 50, 26, 12,191, 43,166,165,142, 30, 84, 80,168, 93, - 32, 13, 58, 85, 84,105,177,176, 1,109,176, 91, 3,211, 99,135,136,196,145, 38, 52,105,210, 76,121, 79,186, 10, 76,117,169, 45, -200, 65, 31,170,160, 65,233,140,104,132,199, 66,144,161, 62, 50,221,107,148,150,150,164,248,168,109, 67, 33, 74, 86, 6, 71,200, -131,160, 41,209,224, 56, 99,202,116, 72, 15, 50,217, 66,222,125, 75, 64,192, 24, 0,163,205, 35,215,229,172,162, 35,108, 56,218, -125,222,104, 97,121,193, 42, 81,113, 50, 18,162, 73, 1,181,118, 3, 58, 69,199,148,148, 66,227,107,244,216,237,190,219,127, 28, - 18,170, 83, 9, 43,230,178, 30,161, 74, 4,185, 54, 11,164,181,128, 27, 95, 77,200, 59,139, 97, 81,169,202,247,134,228, 67, 90, - 39, 71, 36, 55, 34, 19,199, 15, 6,193, 24, 91, 89,234,160, 7,109, 86,220,221,191, 69, 90, 85,181,115, 68, 96, 46, 68, 6,140, - 7,138,147,149,150, 82,160,166,208,188,140,168, 39, 39, 25,242,233,167, 58,137, 71,166,201,142,194,201,142,212,216,196, 6,229, - 50,121, 11,153, 61, 65, 3,161,199,207, 78,207,240,125,201,244,162,195,141,165,106, 65, 67,236,188,216,248, 92, 90, 48, 74, 84, - 7, 98, 83,144,126,221,106,152,228,100,145, 44, 64,101, 22,223,184,183, 79,141,173,235, 98,111,138,187,136,120,137, 99,171,130, -101, 58, 30, 38,100,109, 86, 82,202,195, 78,228, 88, 56, 32,141,236,172, 58, 16,109,124, 91,182, 90,193,101,183,152, 82, 35,165, - 30,248,200,113, 65, 41, 9, 79,140, 82, 57,198, 49,211,152,245,251, 78,155,223,104, 77, 33,251, 91,135,122,140,200,202, 44, 42, - 69,199, 77,109, 75, 9, 39,197,247,120, 85, 7, 27,105,208, 6, 86,128,176,147,145,219,151, 56, 58,220,141,174,167, 53, 29,232, -216, 70, 58, 14,152,232,133,143,214, 72, 31,205, 26, 97,253,170,148,143, 23,133, 86,229, 70, 46,101,187,202, 15, 56,105, 57, 89, - 75,148,154,162, 84, 79, 78,191,171,143, 92,159, 93, 75, 50, 90,104,205, 42,203,166,242, 70,111,241,189,135,243,239,235,142,124, -204,184,154,105,248,255, 0, 33,161,119,211, 75, 85, 83, 4,100,118,176,147, 86,254,237,133,254, 24,136, 5, 65,227, 38, 82,145, -202,226, 39, 41,110,184,151,185,156,241, 27, 46, 17,149,180,210, 23,200,250, 75,169,109, 32, 45, 42, 64,235,207,202,174,244,225, - 84,213, 6, 69, 67,223,225,189, 84,158,167,131,113,207,129, 29,150,216,138, 80,148,182,153,212,240,151, 19, 0,248,133,126,240, -180,243,120,152, 79,110,128, 7, 61,166, 95, 74, 93, 83,147, 93,247,105, 92,175, 73,101,190, 69, 71,105, 74,202,153, 10,108,130, -212,142,100,163, 40, 88,230, 36,130,160, 83,202, 52, 77, 26, 68,232,229, 30, 27, 79,123,184, 37, 79,205,166,196,101, 85,116,182, - 73, 71, 35,108, 72, 90, 68,166,220, 46, 4, 56,180, 23, 84,209, 5, 97, 7, 3,149,225,214,234,123,129,216,253,221,239,113,176, - 23, 3,174,219, 95,167,161,116,245, 3,200,177,221,159,162,132,176, 97,182,229, 73, 27,128, 53, 11,223,179, 1,176, 39, 14, 61, -179,110, 49, 87, 92,138,164, 73,146,233,178,165,150, 16,227, 84, 69, 42, 50, 94,109, 10, 71, 71, 96,168, 22, 37,159,133,105, 75, -193, 9, 83,132,168, 41, 95, 14,158, 74, 45, 26,235,147, 34, 76,184,244,134,171, 40,104,204, 83,146, 41,175, 68,162, 76,140, 26, -117, 76,161, 51,233,207, 31, 0,115,161,149,165, 62, 10,135, 57, 87,234, 12,157, 54,148,138,123, 5, 81,133,159, 38,108, 39, 22, -195,242,231, 68, 66,152,157, 2, 68,128,208, 83,174, 57, 5,247, 3,144, 18,140,142,105, 41, 91,107, 89, 89, 79,134, 84,158,109, -108,157,156,170,253, 2, 24,110, 77, 1, 74, 65,106, 28,151,106, 52, 57, 77,206,132,236,118,255, 0, 72,150,159,167,169, 41,148, -219,202,116, 37,124,170,241, 18,165, 16, 50, 10,136,212,110,190, 89, 0,102, 91, 57, 54, 10,173, 96,125, 45,246,150,247,176,217, - 88,139,245,185,184,195,137,205,164,100, 34,153, 99,169,146, 43, 14, 92,202, 82, 66,118,230,106, 62, 73, 25, 71, 75,134,111, 41, - 23, 70, 4, 1,238,148,138, 91, 79,179, 2,163, 42,161,107, 43,221,217,145, 13, 23, 52, 5,211, 28, 76,196,148,190, 35,243,188, -223,129, 37,188,163,195,105,198, 94, 1,193,212, 37, 68,105,199,141,108,212,103, 60,153,146,233, 80,100,164, 73,113, 42,158,134, -163,128, 66,210,128,223, 59,193,178, 90, 87, 40, 29, 82, 74,185, 79, 84,231,174,179,235, 33,170, 93, 82, 77, 65,154,147, 17, 46, - 76,178,176, 41, 85, 40,140, 45,104,144,248, 64, 74, 13, 62,115,105,115, 41,101, 46,164,185,225,171,144, 31,132,142,153,120,104, -155, 91,103, 58,196,127,118,165, 59,108,201,150,211, 50,140,139, 86,167, 83,165,188,209, 10, 66, 17, 17,112, 22,243,140, 60, 16, - 72, 81,231, 97,105,115,147,153, 93,245, 22,146,172,134,180,138,209, 72, 58,244, 55,189,174, 71,217, 35,212,143, 54,251,139, 30, -173,181,252,117, 14, 86,239, 28,240, 77, 72,225, 81,117, 42, 44,182, 50, 45,220,171, 22,130, 84,251, 42, 72, 28,237, 90, 65, 85, - 58, 66,227, 1,178,236,216, 17,129,148,194,170,116,121,146, 79,188, 38, 93, 38, 95,133, 10, 82,217, 78, 91, 18, 24,229,114, 60, -196,167,194, 87,134, 28,105, 10,115,149, 65, 71, 7, 26,218,107,126,109, 90, 10,162,154,132,152, 21, 33, 32, 55,133, 48,201,165, -212, 26, 80, 33, 63, 20,102,159,113,167,222, 82, 65, 82,130, 11,105, 73, 39,225,199, 46,172,180, 45,177,175,198,113,230,233,151, -117, 62,124, 98,178,148,183, 92,183,144,196,137, 9, 81,248,202,103, 82, 28, 65,109, 73,194,146, 20, 24,229, 74,149,158, 83,170, -151,157, 90, 22,218, 91,117,139,187,113, 17, 73,181,172,155, 85,134,101,215,110,181,213, 99,253, 77, 72, 98, 68,134,161, 70, 15, -171,149, 18, 12,199,165, 63, 30, 59, 44, 48,211,146,228, 58,240, 75, 8,112,149, 16,164, 80,243, 60,247, 50, 62,199,125,199,193, - 73, 23,219, 99,125,143, 82, 0,239, 80,241, 39, 21, 71,196,149,209, 83, 82,212,174,107, 81, 80,226, 56,226, 80,230,162, 70,147, -234,226,138, 33, 50, 71, 80,238,238, 21, 99,138, 13,122,152,170,128,194,195, 15, 28,122,147,162, 40,105,244, 58,132, 37,223, 18, - 3,231,194,234,242, 86, 28,114, 59,165, 43, 30, 26,249,214,164,228,128,219,188,202,202,185,192,213,242, 37, 81,151, 30,143, 37, -197, 57,226, 48, 3, 43, 43, 9, 11, 44,184,174,102,157, 83, 95,206, 90, 22, 66, 70, 64,200, 86,124,137, 13, 21,189,112, 82, 46, - 11,114,151,114, 91,117,216,119, 21,175,113, 83, 33, 86,232,117,120,238,174, 76,106,173, 26, 82, 67,145,101, 66,125,192, 11,141, - 45, 4,130,146,128,164, 41, 37,183, 57, 92, 66,210, 3,147,114,251,147,205, 46, 54, 83,202,178, 2, 20,226, 80,132,161, 96,169, - 73, 10, 36,120,173,129,204,140,147,204, 20, 64,198, 59,150,162, 37,117, 42, 5,134,194,253,108, 65,216,110,125, 71, 75, 11,250, - 92,139, 85, 45, 11, 75, 83, 85, 72,209,180, 51,196,206,140,172, 25, 25, 24, 29, 14,146, 35, 0,209,184, 32,134, 82, 46, 24, 18, - 55, 26, 78,240, 90,213, 31,208,130, 86, 9, 4, 18,130, 72, 73,229, 80, 42,230,108,126,177,199, 46,112, 65, 25,207, 93, 58,209, - 39,130, 16,145,159,214, 81, 60,157, 65,194, 72, 0,114,156,158,128, 96, 14,165, 71, 30,128,234, 46,217,220,212,153,116,202,237, -193,112,215,105,214,197,177,108, 64,126,171, 91,175,213, 37,166, 53, 46,151, 79,136, 18,100, 76,145, 41, 67,244, 76, 39, 45,163, -148, 5, 41,199, 22,134,154, 11, 82,210,147,121,177, 56,210,225,140,221, 20,202, 80,185, 43,180,231, 43, 85, 4,209,236,251,142, -240,181,165,219, 54,109,110,224,123,244, 52,198,233,213,121,111, 56,150,164,191, 39, 34, 8,154,220, 70,223,145,203,133,133,114, - 37, 82, 44,159, 40,174,158,140, 87,178, 8,168, 83,237, 72, 72, 38,202, 69,200, 91,220,219, 97,125,133,250,145,136, 77,103, 11, -113, 14, 98,249,179,100,188, 59, 93,159, 12,160, 94,161,169,105,165,154, 56,137, 78, 96, 87,150, 53,100, 83,203, 28,198, 91,150, - 88,129,148,174,133, 36,110,229,114, 79,128,205, 58,148,133, 31, 26, 20,100, 59, 45, 60,196,132,212, 39, 20,202,122, 50, 84, 70, - 84, 27, 10,142,218,188,129,109, 73,206, 70, 5,137,201, 14, 46, 63, 35,110,172, 30, 98,236,137, 60,136, 43, 66,208, 65, 73, 5, -196,225,111,114,171,166, 73,229, 9, 25,193, 3, 88, 95,215,200,158,183, 30, 67,206, 41, 43,116,248,202,117,107,231, 82,249,143, - 62, 86,165,101, 75, 43, 42,230, 4, 2, 9, 87, 55,198, 14,178, 38, 92, 98, 67, 32, 20,251,201, 8, 88,240, 16,146,164, 41, 67, -178,192, 65,194,147,145,216,231, 10,198,125,116,226,139,237, 51,153,109,101,216, 45,137,176, 85, 0, 40, 38,219,249, 64,243, 91, -246,186, 2, 70, 32,113, 80,251, 44, 81, 44,131, 83,130, 89,141,129,187, 49,212,196,131,181,139, 18, 64, 38,192, 90,228,140, 52, - 23, 71, 18,155, 27,182,247,133, 23,109,175,221,230,219,141,180,184,238, 72,209,228,209,169,247,213,194,220, 10,181, 86, 20,201, - 78, 65,135, 62, 60,103,163,251,172, 38, 37, 75,102, 75, 81,164,214, 36, 66,142,250,153, 91,141,169,214,146, 84,119, 30,147, 66, -165, 80,195,147, 41,232, 38,166,235,108, 25,149,121, 74, 76,250,173, 65, 50, 26, 67,141,184, 37,252, 94, 36, 34,194,208,182,218, -140, 81, 20,180, 82, 89, 10,109, 73, 89,131, 15,180, 99,113, 31,190,120,217,226,105,247, 21, 37, 48,237,189,193,122,201,132,220, -231, 27, 90,216,183,172, 58, 52, 11, 98, 37, 40,182,149, 41, 9,140,210,225,202, 12,167,155,149,105,150,162,177,158,154,222,143, -101, 55,180,158,109,129,120, 91, 92, 38,241, 1,118, 84,165,108,197,201, 83,133, 67,218, 59,194,177, 84,117, 3,105,238, 58,130, -145, 22,145,102,215, 42, 78,168,190, 54,130,167, 53,198, 99,180,128,239,129, 65,155, 33,153, 40, 74, 41,207, 76, 66, 18,163,204, - 18,106,169,105,103,136, 44,113,146,169, 37,205,135,152, 11, 55, 64, 21,137,251, 98,218, 65, 1,129, 26,156,119,103,137,223, 65, - 12,230,155,192,222, 23,241, 67,129,120,142,163, 57,207,166,202,105,115, 92,243, 34,120, 80,201, 36, 83,210, 71, 89, 57,203, 94, - 45, 47, 81, 37, 18,146,173, 69, 62,179, 89,161,231,164,145, 39, 16,209, 79, 40,202,229,206,203, 50, 92,167,210,208,107, 18,249, - 17,239,226, 44,119,234, 17,224,182,163,206,183, 36, 8,104, 87,141, 37, 68, 5, 37,149,169, 33,190,156,196,116, 73, 21, 52,233, - 79,123,195,137,167, 34,158,186,130, 89,101,234,213, 77, 81,234, 87, 35, 64,168, 41,152,136,167, 35, 45,198,233,144,132,186,180, -161,158,159,161, 42, 57,214,118,211,109, 82,144, 99,162, 60,122,107, 81,146,184,210, 98, 6,209, 25, 12,173,165,168, 41,185, 13, -180,145,149,165,224,224, 89, 57, 61,193, 61, 53,141, 63,114, 33,233, 11, 85, 22, 2,170, 6, 42, 84,212,185, 46,120, 80,168,201, -117, 77,148,182, 88,156,160,181, 73,125, 4,163, 41,105, 11, 32, 40,146,226, 20, 64,212,177, 40,249,104,218,136, 93, 29, 1,247, -238, 71,235, 92,237,232, 58, 18, 54,181,252,231,165,168, 98,130, 44,186,134,201, 24, 5,166,121, 54, 99,112, 87, 94,233, 10,130, -202,186, 81,249,136, 78,144,193,201, 44, 84,122, 5, 38, 28, 86,234,113,156,144,169,205,161,212, 57, 82,170,201, 76,201, 45, 60, -163,153,137,113,197,182,159,113,143,202,130, 20,219, 0, 33, 33, 33, 36,173, 0,232, 37,215, 92,148,250,153,181,195,113, 24,204, - 83,252, 40,144,178,220,218,116,212, 96,205, 77,188,203,169,196,146,181,168, 6,221,112, 41,150,139,220,205,165, 69, 32,139, 44, -136,107,113,106,122,179, 49,215,100, 48,241,113, 20,248,234,113,186,107, 6, 70, 20,166,155,136, 28,230,125, 10, 89, 0,151, 66, -148,164,164,149, 30,184, 24,253,199,122, 66,165, 47,234,152,208, 81, 88,170, 60,133,169,134,151, 37, 17, 89,142,182,144,160,195, -138,116, 16,184,175,115,146, 26,228, 35,152, 2,144, 10, 70,182, 97, 64, 14,163,229,113,223,173,246,245,220,141,236, 46,119,233, -208,144,112,239, 75,150, 79, 93, 50,162,150,205,103,109, 68,106,254,230, 52,186,181,201,144,170,200,168, 55, 28,194,177, 0, 89, - 74, 58, 49,195,130,197, 46,151, 71,143, 89,156,136, 50, 16,226,147,239, 45,220,146,230, 75, 91,181, 22,228,134, 85, 46, 53, 65, - 42,116,169,215, 27, 81,116, 21,143,136, 56,176, 83,223, 69,209,101,194,118,104,120,212,188,105, 41,116,182,242, 25, 83,206,149, - 54,218,214,160,181,186,242,194,131,168,108,182, 83,205,250,200,108, 3,147,240,233,134,126, 83,142,181, 21,235,160,213, 20,137, -105,109,136,245, 1, 33,149, 69,131, 86, 73, 74,228,162, 18,225, 47,194, 98, 66,176,143,133,208, 29, 73, 36,133, 44,128, 52,237, - 91, 17,157, 91,145, 84,244,169,143,180,227, 68, 21, 75,109,133,243, 33,111,129, 20, 74,114, 56,241, 39,182, 84,174, 82, 70, 20, -165,173, 69, 57,239,167,120,101, 42,241,198, 6,146, 55,181,138,219,126,164, 14,187, 16, 5,245, 16, 5,201, 45,115,133, 51, 76, -165,169, 40,229,154,170,189,170,102,150,227, 88, 37,145,130, 42,169, 88,221,140,154,183, 83,169, 71, 40, 43,236,138, 6,155,195, -227,233,107,174,155, 39,136,190, 10, 30, 97,107,118,164, 56,127,220, 70,158,146,160, 16,217,132,155,246,143,200,210,154, 35,155, -222, 4,191,120, 37, 71, 9, 82, 86, 10, 64,235,168,152,132,228, 28,164,164, 19,215,231,143, 77, 73,155,233, 79, 95,204, 87,248, -240,217,189,185, 66,217,147, 47,105,120,111,164,154,148,182,157, 83,138,126, 70,226,221,245,186,220, 86,150,133,146, 80,148, 83, -104,144,212,158,249, 18,186,147,129,168,234,237,246,223,222, 27,165,119,219,150, 21,133,110, 86,174,219,186,237,172, 68,160, 91, -118,213,189, 79,122,169, 91,174, 86, 39, 44, 34, 53, 58,153, 1,128, 75,239, 43,226, 82,212, 74, 91,101,180, 45,231,150,219, 72, - 90,211, 98,229, 79,202,203,150, 89, 92, 34,171, 76, 88,147,176, 28,199, 55,185,216, 11,111,185,252, 49,198, 60, 76,139,250,126, -189, 32, 28,197,102,132, 46,145,114,196,195, 16, 0, 0, 1, 44, 73,181,128, 4,182,214, 7,108, 96,193, 42, 89, 72, 66,114, 71, -100,165, 36,149, 99,176, 0,119, 58,237,167,177,211,217,215, 3,138,221,197,169,239, 54,241,210, 85, 43,135, 45,155,171,194, 77, -122,148,248, 83,108,110,166,227, 37, 13, 84,169, 27, 94,149,140, 21,219,145, 99, 42, 44,251,145, 77,156,169,135,162, 82,185,144, -185,207, 4,246, 39,129,175,163,187,181, 22, 69, 46,141,184, 92,116,214,164,223, 87,121,101,186,140,141,132,177,171,110,211,108, - 90, 17, 41, 14, 34,153,125,223, 20,181,162,117,229, 60, 3,201, 42, 45, 53,216, 84,224,161,200,151,229, 4,149, 43,177, 76, 91, - 27,113,181,244, 24,150, 14,210, 88, 54,166,216,237,189,188,185, 31, 81,216,214, 37, 26, 21, 6,221,166, 25,110,243, 75,144,204, - 24,141,132,174,107,238,225,201, 18, 29, 43,126, 67,129, 42,121,215, 23,130, 27,243, 44,205,164,167, 43, 26, 24,161, 39,118, 99, -165,220,118, 10,191,105, 84,157,152,182,150,181,202,117, 86, 19,158, 18,240,238,182,106,218, 90,236,242, 5,138,150, 59, 56,166, - 62,103,145,133,180, 9, 71,217, 84,185, 12,200, 75, 22,182,135, 80, 11, 12,100, 74,154,169,242,176,132, 54,203,109, 54,195, 44, - 71,140,203, 81,226, 70,137, 29,164,179, 10, 4, 72,236,165, 45,195,134,212,102, 91, 75,109,182,148,182,219, 76,161, 8, 74, 80, - 18,144,232, 90,112, 2,249, 93,117, 25, 66,146,209, 71, 66, 22,162,163,134,241,211,245,150,177,159,152, 58,106,104,113, 92, 82, -188, 39, 22, 57,159,117,107,144,172,114,134,208,144, 20,235, 77,249,242, 37, 62, 27, 96,249,156,159,144,217, 59, 62,158, 23, 33, -162,160,146, 26, 67, 60,168,236,129, 33,209,134,130,134, 48, 2, 26, 35, 31, 51,211, 77,180, 46,116, 52,199,224, 54,176, 30,128, - 14,214, 29,134,219,219, 98, 14, 47,113, 78, 21, 72, 3, 87,123,254,238,135,222,126,240, 59, 91, 14,157, 22,158, 26,105,164,172, - 5,168, 4,243,159,213,231,121,125,145,208, 99, 30, 93, 60,129,211,139, 26, 35,109, 54, 49,133, 17,220, 16, 79, 83,232, 60,250, -246, 31,187, 86,138,100, 68,165, 73, 8,229, 81,142, 64, 42, 86,112,183, 22,144, 21,130, 15, 85, 36, 19,242, 28,218,203,218, 78, - 49,240,169, 41, 70, 66, 74,122,165, 68,142,170,207,160, 57, 72,251,254, 88,216, 14, 90,230,251, 15,244,249,254,125, 48,211, 87, -166, 54,210, 5,205,133,251,123,192,239,235,247, 3,211, 99,142, 83,123,105,234,144, 40, 62,204, 78, 45,213, 56,172, 10,158,223, -193,161, 68,109,166,214,234,222,168,213,110,106, 44,120, 49,210,219,105,230, 42, 83,161,103,253,144,131,228, 53,249,148, 74,163, - 86, 33,178, 31,157, 73,168, 68, 97, 73, 37, 15, 75,136,244,102,150,130,114, 10, 29,117,176,149,119,242, 39, 7,166,117,250,228, -239, 21, 54,139,113, 81,162, 91, 21,234, 77, 58,187, 2,167, 53,185, 83, 41, 53,168, 81, 42,144, 36, 71,167, 16,227,102, 68, 9, -141, 45,167,146, 37,173,178,146,164,171, 5, 25,232, 70,154, 39,182,131,105, 43,148,145, 68,173,237, 86,217, 86,168,230, 58,226, -138, 93, 86,195,181,102,211,147, 24,131,204,194, 99,191, 75, 41,109,188, 19,219,175, 94,132, 30,186,205, 29,108,244,181, 21, 13, - 12,113,200,178,104, 7, 83, 48, 55, 91,237,178,176,177,213,114,119, 55,218,198,215,196, 43,137,120, 6,163,136,230,167,205,151, - 49, 90, 53, 72, 22, 32,134, 2,250,180,203, 43,106, 45,205, 75, 41, 46, 64,178,159,179,125,239,183,228,250,227,101, 60,188,224, -140,142,128,244,207,144,199,168,198, 48,126,122, 21,192, 0, 3,155, 35, 57,233,215,215,166,191, 65, 78, 47,125,129,220, 19,241, - 21, 2,167, 90,218,170, 35,252, 48,110, 99,233,144,252, 74,205,131, 29,202,134,222,212,103,172, 18,132, 92, 59,119, 53,242,134, - 99, 45,220,115, 59, 76,122, 43,169, 25, 41,109, 88,229, 48,230,227,131,217,183,196,255, 0, 1,119, 35,112,119,146,205, 19,108, - 74,180,247, 33,217,251,193,104,151,171, 59,105,118,144,165,248, 44, 49, 88, 13, 5,219,245,162,132,229, 84,234,138, 35,202, 73, -200,108, 58,145,204,100,244,217,164, 82,178,199, 50, 26,105, 9, 0, 92,221, 24,250, 43,250,158,193,130,177,236,164, 11,226,164, -206,184, 91, 56,200, 65,146,174, 1, 45, 32,219,159, 17, 47, 24,222,195, 93,194,188,123,216, 93,212, 33, 36, 42,187, 28,115,229, -210,158,163,169, 24, 62, 96,119,253,255, 0,215,160,212, 66,187,167, 24,232, 58,249,116,198, 49,219,174,141,117, 3,152,133,229, - 39, 56, 41,199, 80,122,227, 65,120, 97,165,169, 73,201, 43,238, 14, 79, 41,235,146, 61, 52,244, 14,192, 1,182, 35,160, 31, 92, - 14,231, 32, 73, 74,186,231,203, 24,251,137,244,208,101, 3,148, 32, 40,165, 57,236, 60,201,209,133, 63, 26,186,168,231,201, 71, -225, 29,187,121, 13, 81, 86, 50,122, 16,115,246, 12,124,177,163,142,222,236,103, 3, 40, 3,211, 29,186, 30,189,241,215, 57,208, -203, 24, 36, 15, 67,140,252,199,207,203, 69, 47,208,103,166,115,229,147,129,215, 62,186, 25, 64,244,230, 29,124,143,175,113,215, -212,233, 85,189,129,245,235,243,240,198, 69,172,126,125, 48, 42,129,193, 30,127,147,161, 85,246,156, 17,215,204, 2, 8,199,217, -162,148, 58,146, 20,122,103,207,167,159, 83,161, 92, 42,235,233,230, 71,159, 95,232,210,139,215,173,176,170,143, 95,157,176, 50, -206, 15, 76, 31, 80, 71,224,126,220,104, 85,168,227, 28,189,125, 61,126,206,154, 37,100,103, 3,200,156,244,243,249,232,117,227, - 57,235,233,242,251,180,182, 50,126, 54, 56, 25, 99,175,159, 81,231,229,242,210,215,178,172,119,200,244,198, 14,127, 31, 61, 45, - 40, 47, 97,229,191,200,255, 0, 79,155,224,126, 56,162,144, 64, 30,191,143,158,170,163, 62,125,137,232,115,220,250,106,159,236, -213, 69, 35,156,131,204, 71,166, 63, 63,156,233, 54,219,160,220, 99, 35,227,108, 20,131,208, 14,228,121, 99,231,251,116, 80, 56, - 35,184,249,250,104, 22, 57,146, 8, 81,234, 59, 31, 80, 60,243,247,232,209,216,117,207,207, 68,223, 77,200,244,254, 88, 24, 45, - 24,207, 92,231,203, 69, 35,207,183,239,208,173,124,207, 92,126,127,118,138, 64,232, 79,221,249,252,249,105, 44, 16,142,190,251, - 15,145,130, 80, 58,103,215,250,244, 66, 49,140,129,215,212,247,207,245,106,146, 48, 57, 79,150, 7,252,116, 64,193,232, 49,223, - 31, 97,210, 44, 79, 91,236,127,211,253, 48,153,183, 97,138,128, 40, 5,103,208,224,119,235,169,123,123, 41,104,112,173, 78, 2, -173,121, 73,134,167,220,191,111,139,158,183, 80,116, 97, 14, 1, 26, 65,131, 29, 41,199,146, 91,142, 0, 58,136,106, 65,193, 4, -140,224,156,227,211,175, 77, 75,111,217,163,113,199,172,240, 9,183,233,105,231,146,187, 86,241,187, 45,249,133,131,143, 9,213, - 78,114, 75, 97,196,121, 2,219,168, 32,158,224,244,213,121,226, 65,147,244, 28, 33, 13,148,206,186,191,254, 57, 45,142,131,250, - 49, 71, 12,158, 42,209,137,118,101,162,169, 41,214,225,249,148,226,226,196, 27,233, 45,211,181,251, 99,118,128, 83,114,214,210, -153,146,220,116,144,235,125, 10,212,129,205,144, 20,161,156,249,105,224,180,100,161, 50, 35, 25,130, 74, 80, 57, 85,206, 20,176, - 26,230,198, 22,164, 30,253,198,153, 40,181, 49,238,232, 92,122,195, 47, 73, 82,210,211, 81,100, 39,149,110,184,178, 82,218, 1, - 61,252,180,248,219,242,107, 80,222,162, 71,155, 77, 98,169, 61,192,124,102, 35, 56,130, 91,108,254,170, 94, 72,254,110, 58,245, -215, 54,213, 70,193,217,152,217,148,130,111,182,219,117,233,112,127, 28,123, 9,151,215,172, 84,113,194,236,164,181,215,237,232, -114,116,222,246,144, 11,142,228,222,194,248,216, 58, 84,210,135, 89,145,227, 49, 81,108,184, 26, 12,189,132,132,180,123, 21,146, - 58,249,103, 78, 29, 49,216,145,157, 46,202,141, 0, 50,165, 99,153,162,151, 0, 10,255, 0, 80, 14,216,207, 93, 55, 22,253, 58, -116,249, 14,180,186, 68,194,162,227,110, 41, 40,100, 22,154, 72,236,208, 41,238, 63,167, 78,237, 50,222,105,197, 50,210,160,203, - 5, 43,248,209,238,139, 82, 16,172,254,170, 84, 6, 15, 64,123,246,209, 97,137,100, 58,121,100, 21, 38,219,129,125,253,251,159, -203,124, 66, 51,202,138, 53, 13,169,202,221,119, 10,203,112,189, 71,216, 96, 1, 27,139,233,177,239,124, 60, 54,123, 86,252,196, -161, 45,162, 50,155,229, 7,170, 74, 10,129,238, 6, 71,112,116,252,211,104,240,209, 29, 41,140,174, 68, 20,228, 53,207,204,217, - 24,234, 19,232,174,250,105,109, 74, 83,112,209, 24, 57, 24, 70, 14, 44, 8,200,152, 24,136,167,206,112,124, 36,200, 90, 75,189, - 71,243,115,233,167,174,148,195,204, 73,247,101,182,182, 20,172, 18,219,237, 41, 33, 67,200,161, 67,203,168,237,167,136,114,230, -101,187, 11,252, 13,192,191, 66,125,255, 0,150, 57,147,139,234,195, 84,202, 96,169,114,138, 75, 0,206, 26,224,108, 77,134,219, -119, 54,216,237,113,131,109,233, 2,149, 48,165, 68,165, 30, 38, 65, 7,177,206, 58, 19,172, 11,142,250,104,187,248, 72,189,156, -100,243,201,160,212,173,234,211, 33, 37, 75, 0, 55, 52,196,120,156,116, 8,228,153,212,158,131, 26,214,142, 52, 56,200,162,240, -178,104,182,149, 18,205,170,110, 30,239, 93,144, 68,251,106,214,167,179, 37,200,145,162, 56,240,138,204,250,159,186, 52,167, 29, - 74,229, 97, 13,180,210, 74,150, 65,201, 72, 25,215, 24,110,255, 0,109,214,236, 89,181,169,123, 63,196,206,212,209,225,216,219, -139, 33, 54,133,121,152,140,200,163, 86,236,207,172, 95, 67, 44,213, 92, 50, 29, 90, 28,247, 39,220,142,243,241,228,161, 37,109, - 48,160, 22,133, 16,160,237,150,210, 77, 74, 30, 57, 24, 4,148, 29, 42, 55,123,122,233, 0,155, 3,252,176,190, 77,224,151, 30, -113,173, 21, 7, 27,228,116, 52,241,195,151,149,172,136, 84,213,193, 77, 53, 92, 16, 72,162, 73, 41,163,149,129,100, 44, 12,107, - 36,134, 56,222, 75, 34,185, 39, 28,240,171, 81, 92, 18,235, 15,189, 50, 83, 15,182,251,205,242,193, 1,135, 11,172,188,227,129, -215, 90,116, 41, 15,167,152, 55,128,160,127, 87,190,113,171,197,186,251, 84,199, 27,110,231, 91, 11, 8,109,105,102,164,211,204, -152, 75, 4,120,205, 50,166, 93, 67,142, 51, 33,194, 84,147,146,190, 85, 0, 82,178, 59,103,187,207, 96, 84,168,155,135, 92,164, -148,251,168,139, 80,118, 74,101, 49,206,195,115, 26, 83,165,196,200, 97,164,164,165, 44,172,160, 41, 39, 56, 83,110, 36,144, 0, -213, 45,183,165,251,180,225, 57,214, 41,211,231, 46, 59,134, 32,155, 57,137, 75, 47, 56,165, 48,251,207, 7, 20,216, 97,211,207, - 28, 22,210,121,212,147,204,148,242,228,105,122,137, 21, 98, 46,198,247, 22, 0, 1,112,118, 0, 3,218,222,150,216,220,157,247, -199, 91,101, 89,173, 61, 78, 87, 77, 84, 36, 38, 42,136, 21,215, 65,180,182, 96, 28, 89,154,203,123,157,181, 30,246, 5,126,214, - 30, 11, 94,207,114,229,117,201,237, 69,164,202,120,197,143, 54, 85, 82,157, 37,183,147, 22, 59,235,108, 65,134,165, 70,194,224, - 61,226, 33, 45,144,231, 55, 47,196,226,209,149,116,219,107, 39,110,107,207,161,154, 43, 53, 69,192,105,220, 59, 45, 51,224, 51, - 86, 64,151,226,135,152,104,200, 64, 67,211, 90, 7, 24, 74, 94, 41,111, 9,230, 0,233,156,176,182,201, 77,169, 18,170,137,115, -223, 42,193,152,112, 99, 91,243,158,143, 35,199, 74,144,226, 36, 74,147, 13,192,137,144, 80,224, 4,151, 2,137, 82,194, 64, 37, - 56, 27,217,102, 90,215,133, 41, 49, 27,133, 84, 98,165, 57,224,159,142,189, 5,146, 26,113, 35,153,236,152,138,109, 46,169, 69, - 25, 87,137,133,140,117, 36, 18, 53, 10,175,145,203, 5,138, 80,109,208, 48, 59, 17, 96, 8,190,160,123,246, 0,108, 20, 27, 91, - 12, 57,247, 17, 10,106,116,134,130,190,154, 78, 89, 80,156,196, 87, 1,193, 91, 30, 97, 18,163,152,205,238,197, 65, 6,218, 88, - 22,108, 90,237,237,189,152,234,185, 95,164, 89,245,210,228,149, 56,245, 82,107, 53, 74,100,246, 35, 52,164,165,243, 25, 77,135, -115,204,242, 70,121, 29, 74,177,211,148, 96, 43, 79, 29,187, 98, 95,172, 58,106, 17,164, 80, 67, 45, 56, 12, 74,109, 70,100,217, -240, 85, 24,171,153, 44, 69,113,113, 82,236, 53, 20, 4,149, 21, 41, 69, 5, 39, 41, 86, 6,179,123,118,157, 92,141, 29, 16,156, -183,161,203,117,169, 45, 41, 85, 8,181, 70, 27,109, 47,173,212,248,236, 71,106, 84, 99,132,175, 36, 36,133,242,100,225, 68, 4, -141, 58,241, 37,169, 36,181, 81,162,206,163,163,196, 75,109,173,245,177, 34, 3, 69, 39,152,189,239,177, 10,146,225, 89, 79,232, -208,128, 73,194,129, 72, 61,117,169, 79, 70,103, 39,152, 2,179,118,234, 61,230,215,211,210,196,129, 98, 64, 29,141,241, 79,103, -220,101,153, 30,114, 70,144, 85, 43, 2, 13,228, 73, 14,130, 64, 58, 33,230, 2,133,252,192,233,140, 21,185, 0,130, 72,108,110, -143, 14,191, 8,188, 39,209, 80,234, 30, 65,115,252, 6,171, 17,212, 71, 73, 7,149, 40, 68,198,155,113,192, 74, 65, 61,137, 39, -175,124,235,131,126,216,205,247,152,111,141,190,225,194,146,243,176,233,118,141, 10,155,186,215,228, 17, 33,165,138,133,245,119, - 54,244,107, 38, 20,208,210,212, 86,213, 50,201, 6, 83, 77, 44,254,130, 77,220,242,193, 10, 9, 34, 68, 98,167, 69,113,239,115, - 98,162,209,150,227,169,100,164, 50,250, 30,142,153, 10, 67,104, 47,161,113,185,149,250,217,193,234, 7,124,117, 58,132,167,180, - 11,114,157,191, 56,207,226,110,235, 91,220,193,123,191,119, 82,161,167, 35, 13,210,109, 57,205,218, 52,134, 80,174, 65,250, 54, -233,246,252,102,210, 48, 48,150,250,247, 58,147, 81,229,101, 16,136,212, 49,107,111,110,151,247,223,215,107,145,238, 29,206, 45, - 63,161,246, 88,153,247,139,149,156, 79,155,208, 8,233,184, 47, 46,150,174, 32,203, 38,147, 89, 80,241, 82,211,189,164,119, 95, - 36, 18,213,200,157, 74, 75, 28,114, 11, 50,130, 59,157,236,172,221, 24,215,231, 13, 23, 37,147, 81,118, 25,168,236,189,253, 46, -152,218, 93,144,151,101, 53,102,223,141,191,116, 91,190, 19,107, 28,209, 97, 71,172, 69,186,152, 65,253, 80,165, 4,167, 7, 26, -218,107,158,228,161,191, 61,218,125, 49, 94,245, 40,172, 37,210,202,148, 67, 42, 11,229, 81,117,224, 57, 60,114, 15, 92, 2,160, -149, 14,100,228,234, 49,124, 2,239,229, 79,110, 55,233,155, 77,234,234,233,116, 45,237,130,141,181,173,200,114, 66, 99, 70,106, -181, 46,104,159, 98, 79,117,194,147,225, 52,221,203, 17,152,171,112, 17,134,171,110,142, 96, 9,204,138,108,186, 50,226,248, 65, -230, 94, 18,210,234,138,218,116, 40, 56,144,201,253, 42,228, 2,144, 82,232,125, 39,155,155,185, 24,199,163, 70,113, 75, 61, 53, - 66,211, 24,192,102, 80,250,173,177, 4,158,128,236,109,107, 27,244,244, 55,216,120,245,195,212, 92, 51,226,119, 20,241, 60, 83, - 51,208,241, 68,223,164, 41, 96, 4,170, 44,179, 42,251,111, 53,134,197,189,176, 77, 41,141,108,170,146,160, 98, 5,181, 97, 28, - 75,220,181, 26, 38,200,211,104,247, 69, 74,235,183,182,170,177,190,251, 65, 11,117,110,107, 14,159, 10,179,117, 91,182, 75,207, -220, 78,183, 82,133, 14,168, 4, 79,171,216,186,153,183, 21, 41, 82,210, 98, 36, 41, 9,115, 46,170, 58, 78,196,185,236,244,224, -218,187,107, 59,115,220,156, 71,239,126,228,237,173, 2,138,187,170,107, 84,230, 45, 75, 86, 5,193, 65,109,135,229, 52,252, 91, -142,223,106, 82,213, 70,114, 67,192,198,106, 35, 40,154,243,242, 91,140,151, 91,112,244,112,233,245, 17, 14, 44,120,174, 52,203, -140, 76,104,179, 45,183, 16,135, 25,122, 52,130,142,120,210,155,117, 36, 60,203,137, 64, 5,181,165, 73, 88, 7, 57,232, 53,131, -111, 20,122,181,183,183, 23,101,181,105,248, 52,138, 5, 74, 76, 74,251,148,250,116, 97, 1, 16,222,167, 60,106, 47, 70,165, 53, - 21, 77,181, 6,159, 41,244,182,244,150, 67,100, 56,236,116,184, 10, 10,220, 42, 89, 95, 56,135, 46,142, 10, 39,138, 88, 81,180, -202, 38, 14, 74,164,134,226, 72,138, 50,168,146, 61,200, 73, 86, 72,223,161, 85,177,213, 91,112,255, 0,139,220, 97, 77, 6, 89, -195,156, 53,196, 21, 60, 22,207,152, 77, 60,242,208,138, 52, 21, 75, 82,148,144,150,121, 38,162,154,174,158,178, 4,129,185,117, - 52,245, 41,169, 36, 80, 81, 94, 4,118, 96,232,187,243,188, 52, 58, 53,183, 22,179,113, 84,169, 53,196, 81,160,251,245, 41,201, - 62,244,245, 37, 30, 24, 17,105,181, 9, 10,121,208,245, 77,152, 9,140,153, 37,110, 58,225,146,151,148,235,139,112, 41,106,217, -189,151,227, 46,253,131,118,219,180,250,252,122,125,201, 79,118,165, 17,114,150,164, 24,178,216,166,197,117, 15,212, 36, 41,109, -252, 46,145, 13,149,146, 84,156, 16,146,163,211, 58,229, 18,107,239, 62,242,147, 37,199, 31, 91,206,242,186,241,117,192,165, 58, -115,211, 39,155,149,210,121, 78, 15,117, 43,161,198,175,245,237,208,133,180,123, 77,185, 27,181, 83,195,175,211, 41, 12,109,245, -155, 17,197,165, 15, 85, 55, 47,117, 95, 93,149,109, 82, 48,149,164,169,198,162, 73,174, 84, 86, 89,234,134,109,247, 20,190, 92, -115, 20, 34,161,174,138,166, 35, 73, 52,177, 73, 35, 11, 42,177, 35,177,251, 38,224,129,110,227,176,216, 3,139, 63, 49,225,124, -159, 58,137,168,171, 50,122, 67, 83,155,200,176,199,104,150, 37, 89,170,228, 17, 68, 21,129,214,136, 36,145, 64, 37,137, 84, 80, - 88,147,124,113, 55,116,247, 70, 69,253,187,251,165,124,248,206, 6,183, 3,113, 47,219,205,230,124,103, 29,108, 53,115, 87, 43, - 21, 40,234, 47,172,146,232, 75, 18, 90, 9, 39, 39, 13, 39, 9,232, 14,172, 14,214,153,120, 48,183, 78, 92,152, 57,157, 10, 37, - 43,109,167, 26, 13,184,150,207, 80,131,206,176,172, 30,169, 9, 5, 24, 32,105,155,145, 77,159, 79,177, 55,214,248,122, 99,102, - 14,214,238, 37, 54,195,167, 33,244, 45,181,207,144,221, 5,213,204, 44, 21, 16,151,138, 88,241,164,244, 32,167,198, 64, 82, 64, - 41,200, 53, 27,141, 40,118,147, 76, 15, 45,169, 62, 12, 25,243, 2, 86, 20,234, 16,197, 62, 19, 65,165,164,117,229,247,167,138, - 73, 61, 22,177,202, 7, 66, 69,171, 7, 12,211, 48,141, 68, 97,196, 42, 34,118,176,243,125, 68, 82, 27,237,230, 26,101, 64, 77, -183, 59, 94,221,125, 38,200,188, 76,203,114,202, 54,165,142, 67, 20,116, 65, 22, 8,217,183, 68, 90,250,204,182, 21, 7,236,171, - 60,153,116,228, 2, 70,148, 58,202,134,186, 15,209, 95,217,213,187,149,126, 36, 56, 44,216,253,206,187,174, 26,157,110,227,126, -218,126,193,186,149,240,199, 84,155,163,109, 39,191,101, 84, 39,204,125,144, 23, 80,149, 50,149, 75,163, 76,121,231, 85,202,227, -245, 23,148, 15, 58,213,173,192,169,181, 57,184,233, 69, 62, 75, 17,217,117,148, 54, 25,157, 8, 41, 77,184, 20, 57, 18, 85, 21, -196, 40, 55,148, 36,167, 33,106,235,158,185, 26,226,103,176,146,232,171, 73,224,105,202, 90,107, 52,248, 49, 97,111,182,232,183, - 25,185,145,221,148,239,233,169,118, 36,151, 91, 74,223,144,136,236, 44, 74, 46, 41, 40,108,169, 68,173,101, 73,230, 86,187, 41, - 49,154,218,209,205, 42,173, 52, 52,180,165, 74, 68, 70, 98, 69,116,182, 9, 42, 83, 15,150, 84, 82,172,173, 43,228, 0,100, 3, -231,140,166,170, 86,154, 21,107,179,160, 10, 88,238,110,160,139,147,114, 77,254, 59,238,122,227,195,207, 25,248,114,151,135,188, -100,241, 27, 44,203,158, 10, 60,158,155, 59,204, 26,142,156, 69,166, 56,105,158,169,228,130, 24,163, 88,121, 65, 97,137,146, 53, - 32,147,100, 5,141,201,182, 5, 94, 69,230, 10, 94,145, 46,158,251, 79, 45,104,148,212, 6, 23, 14, 74,219,229, 12, 45,182, 36, - 58,225, 37,149, 97, 25,231, 83,121, 7,151,152,115,103, 88,171,145,168,116,244,134, 97,194,115,222,240,219,142,210,234,106,145, - 26, 99, 65,211,209,246,222,146, 74,159,116, 16, 64, 41,113, 93,130, 80,224, 61, 53,146,220, 18, 42,169, 71,189, 65,175, 23,224, - 43,196,110,100,138,180, 52, 73,141, 20,132,150,219,121,201, 49,146,211,140, 32,184, 66, 20, 84, 8, 65, 74, 73,198,117,138, 87, - 28,148,234,162, 34,187, 74,117,192,134,195,141, 85,221,124,204,165, 74, 66, 64, 8,106, 33,105, 1,113,212,225, 81, 86, 31, 66, - 49,205,221, 67, 11,214,189,142,171, 48,185,237,109,186,218,221,251, 94,219,220,117, 0,118,198,190, 89,205,228, 83,161,104,226, -136,234,212,180,224,194,199, 64, 4, 7,140,136,249,140,128,157,144,137, 21, 72,107,233, 54, 57, 45, 21,111, 50,239,128,212,167, -155,106, 99,237, 53, 50, 5, 82, 58,170,112,130, 22,133,248,114,226,201, 82, 20, 84,194, 84,162, 75, 79,133, 20,150,202,144,180, -144, 70,158,219, 70,151, 29,231,155,118, 60,104,204, 22, 63,193,222,142,151, 20,169, 10,146,203,194, 58,208,195,190, 63,232,220, - 83,255, 0, 26, 27, 64, 12,165, 9, 10,230, 9, 32,105,148,162, 91,141, 33,248, 83, 89,126, 99, 48,230,182, 20,180,198,150,244, -129, 79,113, 60,188,170,101,153,170,115,222, 32,173, 37, 93,149,240, 99,149,124,169, 9, 89,109,184,249,226, 98, 31, 5,220, 21, -239,191, 17, 15,200,136,155,150,213,178,166,210,246,246, 59, 73,141, 4, 86, 55, 54,239,228,181,236, 42, 83, 8, 90,185, 31,124, -220, 21, 40,178,202, 18,149,144,213, 45,220,101, 41, 86,157,232,209,181,169, 10,100,111, 40, 23, 59,177, 54,181,129, 23, 4,146, - 58, 1,212,220, 92, 98, 11,198,117,212,212,212,243, 58,213, 20, 77, 12,210, 54,146, 52,132, 30,109, 96, 29,244,170,155,187, 57, - 42, 0, 96,197, 77,204, 4,253,172,219,203, 47,139, 95,105,175, 18,183,101,176,204,138,245, 61,141,200,141,179, 22, 18, 41, 9, - 93, 86, 93,102,147,182,162, 46,222,210,152,166, 51, 24, 19, 62,108,219,142, 29, 80,176,134,211,151, 87, 57, 0, 2, 78, 76,168, -189,147, 30,205, 59,119,129,141,189,137,185,219,145, 71,167,212,120,177,191,168, 72,110,225,150,239,131, 57,157,155,182, 42,104, -109,241,183, 54,188,132,130,150,171,238,183,225,154,253, 69,162, 22,251,224,192,105, 98, 36,114, 29,230,127,176,159,128, 53, 76, -144,190, 60,247,198,152,229, 94,166,106,149, 39, 54, 34, 21,106, 58, 84, 43, 87,116,135,159, 77,209,188,211,162, 60,140, 58,227, - 18,159,150,197, 29,103, 9, 19, 37, 74,154,140,150,153, 34, 80,232,121,231, 86, 94,194,151,206, 84,165,229, 89, 83,132,156,149, -100,255, 0, 59,169,238,117, 52,214,174,144,192, 15,246,106, 75, 42,129,210, 73, 19,102,115,254, 20, 96,116, 95,171,221,172, 52, -163, 53, 11,192,252, 48,106,170,102,226,204,206, 29, 53, 57,147,188,180,145, 48,254,234, 41, 9,101,148,237, 96,238,166,209,126, -196, 86, 97,188,158, 91,213,199, 90, 49,104, 79,128,238, 30,144,121, 9, 61,192,192,201, 10,245,242,251,181,174, 71,196,148,241, -192, 74,219,247,143, 25,101,101, 88, 83,109,158,100, 32,143,231,159, 20,183,140,231,245,116,231,222,179, 3,236,178,194, 18,160, -158, 67,240,159,214,231, 63, 8,200,245,230, 7,246,107, 16,183,233,171,125,220,148, 41, 94, 26,193, 82, 72, 56, 30, 24, 42, 25, - 7,182, 93, 82,127,254,159,144,211, 69, 97,106,138,152,227, 83,176,254, 38,222,238,150,252, 15, 81,139, 78, 53, 68, 46, 72,176, - 83,107,124, 58,253,247,191,243,198,113,108,211, 19,227,169,194,215, 63,134,203, 99, 5, 93, 27,101,146, 22,246, 14, 62, 37, 45, -242, 7,255, 0, 71, 91, 55,104, 83,196, 88,200, 91,141, 21, 62,226,125,225,196,142,201,144,233, 1,182,178,161,208, 1,200, 7, -158, 18,112, 52,218,218, 20, 34, 11, 72, 82, 48,167, 29, 66, 86,162, 9, 37,168,227,198,115, 36,249,169,100, 15,158,126,122,216, - 74, 93, 56,165,176,160, 48, 80,160,230, 79, 96,234,193,228, 24,207, 80,150,250,245,243, 58,216,145,194,132,133, 59,122,123,247, -233,252, 61, 58,123,176,171,188,113,197,169,205,134,223,126,214, 23,251,250,216,250, 19,223, 23,184, 45, 45, 45,164,250,130,146, - 81,130,165, 58, 79,198,161,205,211,205, 71, 39, 29,135,217,171,242, 82,161,202,146, 14, 66, 64, 79, 92, 18,112, 18,132, 16, 7, - 82, 71,151,110,167,174, 79, 64,225, 49,204, 6, 74,148, 8,194, 60,151,142,203, 80, 0,244,206, 50, 62, 95,110,173, 87,197, 93, - 84, 74, 17, 76,101,242,212,170,171, 93, 62,154, 51,254, 77,126, 25, 50,166, 56,148,245, 8,102, 57, 81, 78, 59,184,180, 13, 2, -252,184,139,157,194,142,158,167,111,226,127,215, 17,237, 18, 87, 87, 69, 75, 8, 13, 45, 67,233, 30,130,251,146,127,194,160, 22, -111, 64, 9,233,134, 94,191, 60,214,174, 57,178,155, 80, 92, 88,138,250,178, 34,146, 73, 75,205,197, 89,247,133,181,215,245, 87, - 40,172, 41, 93,185, 91, 30, 93,117,113,101,178,148, 36, 20,167, 60,185, 33, 32,115,124,125,242,123, 32, 17,235,228, 58,103, 58, - 6,155, 5, 49,217, 1, 3, 41, 72, 72, 43, 80,202,251,124, 13,167, 57,231,230, 87,116,142,188,202,202,181,122,119,157,164,242, -182,128, 48,114, 74,210, 29, 82,148,174,231,149, 4, 14,112,122, 96,156, 36, 12,232, 82,130, 20, 22,181,207, 83,241,235,252,127, -134, 38,117,241,198,136,144, 66, 60,145, 40, 65,126,182, 80, 5,205,187,158,167,191,125,177,107,145,209, 56, 56, 42,192, 31, 7, - 50,136, 81, 39,245,114, 6,113,145,215,212,143, 62,186,109,183, 18,195,178,183, 58,203,185,118,235,114, 45, 74, 13,245, 98, 93, -244,185, 20,123,178,204,185,224,179, 84,161,215, 41,210,208, 90, 83, 50,227,188,143,209,202, 66, 15, 51, 50, 26, 45,202,140,234, - 80,244,119, 91, 90, 65, 46, 20,133,132,149, 18,121, 66, 82,146,158,167,227, 3, 9, 11,231,233,205,133, 28,116,233,240,231,231, -171, 4,167,130,146, 70,115,130, 7, 41,230, 1,190, 97,133,140,168,119,230, 25, 87, 47,167, 66,115,128,228,164, 50,233, 32, 21, - 35,161, 23, 7,226, 15, 81,234, 45,238,196, 78,170, 0,218,129, 93, 72,247, 12, 8, 22, 32,141,193, 7, 98, 10,220, 16,110, 45, -112,118,216,254,127, 62,215,111,101, 5,107,129, 75,173,157,208,218,223,173, 46,126, 22, 47,170,217,166,219, 21, 73,139,114,161, - 95,218,219,154, 98, 29,148,206,220,223, 83, 66, 63,194, 24, 91, 77,191,245, 45, 81, 88, 76,246, 99,150, 29,196,198,148, 28,226, - 11,202,192,207,250,185,206, 65,252, 7,207,183,227,175,213, 99,121,118,187,111,119,183,109,239,125,163,221, 75,114, 53,215,183, - 27,137, 66,147,110, 93,212, 9, 73, 66,132,168, 18, 70, 89,155, 1,197, 28,211,235,208,230, 33,137,116,249, 72, 41, 92,105,113, -154, 90, 84, 7, 50, 85,249,178,113,225,194, 13,235,193, 55, 17,215,238,197, 93,238,191, 80,167, 82,159, 69,111,111,238,242,201, -110, 45,251,182,117,197,186,245,165,117,196,233,203,239, 75,138,218,226,212, 26, 24, 84,122,141, 58, 75, 74, 74, 64, 71, 51,238, - 85, 86,192,138, 57,152,176,223,150,204,110, 72, 29, 81,137,234,203,216,159, 51, 46,237,118, 86, 99, 65,113,143, 12,174, 75, 50, -215, 81, 41, 25,101, 83,105, 43,215,145, 46,237,160, 27,127,116,226,230, 50,126,201, 86, 67, 97,203,213,166, 30, 57, 89, 86, 50, - 57, 63, 91, 35,175,110,154,250,115,156,144,122,249,254,255, 0,158,190,132, 99,161, 63, 14, 7, 46, 51,204,122,121,244,234,117, -245, 72,229, 29, 50,113,234,114, 6,127,226, 52,254, 46,118,196, 36, 11, 11,116,192,142, 40,231,160, 24, 29,207,175,231,166,135, - 82,137,238, 64,232,124,241,143,179, 68, 44, 19,211, 24,237,156, 99,160,245, 31,126, 52, 50,128,235,212,121,128, 78, 49,215,207, -246,105, 68, 59, 91,211, 6,181,253,109,251,240, 59,128, 1,240,171,174,122,121,121,246,207,159,246,104,101,244,200,243, 35,246, - 1,147,162, 21,140, 28,140,254,113,161,148,112, 8,235,215, 56,237,248,125,154, 85,112,176,189,136, 39, 3,168, 0, 15,145, 62, - 99,204,143, 35,249,242,208,203,229,235,235,211,242,126,225,162, 87,140,117,249,224,122,159,158,135, 88,233,231,247,118,251,254, -237, 44, 58,142,248,193,237,183, 67,243,247, 96, 69, 12, 31,183,175,217,165,175,171,198,113,140,126,255, 0,187,241,210,210,202, - 77,133,197,207,221,131, 99,202,112, 72, 7,242,117, 92, 15, 35,128, 60,190, 67,250,245, 69, 3, 39,236, 25,209, 40,239,246, 15, -207,219,164,143,175,174, 6, 42,164,124, 64, 14,131,166, 15,207,236,243,242,209, 35,215, 56,198, 62,220,124,191, 62,122,164,143, - 51,208,255, 0, 72,235,253, 31,213,170,160,100,227, 56,233,145,243,252,254,237, 17,175,109,186,223, 3, 4,160,140,231, 62, 93, -207, 79, 77, 22,130, 49,143, 63,233,251, 52, 26, 72, 30, 64,143,179,183,217,162, 1, 74,146, 72, 61, 65,252,115,142,159,159, 93, - 35,140, 48,184,235,108, 20,140, 18, 1,239,158,135,203,239,209,169, 7,166, 14, 79,145,253,186, 1,158,132, 17,149, 14,196, 19, -140,124,243,251,180,122, 72, 79, 76,145,211,160,233,147,164, 9, 36,220,225, 54, 29,199,206,216, 33, 4,224,142,153, 29, 85,219, -183,166,164, 73,236,110,220, 31,173,246,111,125,182,170, 68,175, 13,251,106,189, 68,191,169,177,199,196,183, 33, 84,227, 24, 21, - 2,134,250,229, 41,151, 17, 57, 35, 63,229, 6,117, 29,198,252,179,144,122, 1,230, 79,219,211, 93, 44,246, 85,110,228, 13,175, -226,214,210,164,215,229, 24,246,198,234,192,168,237,157, 95,227,228,108, 75,174, 32, 59,111,188,224, 39, 4, 38,172,195,104, 4, -246,247,157, 70,120,186,135,219,242, 26,232,130,234,146, 37,230, 46,215,221, 14,166,255, 0, 32, 97,247,226,198,240,131,136,227, -225, 95, 18, 56, 87, 54,157,180, 83,123, 64,167,148,237, 97, 29, 72, 48,220,223,107, 43,186, 57,255, 0,166,248,146, 36, 30,101, -188, 76,200, 92,160,148,190,196,228, 14, 82,218,114, 10, 92, 8,242, 87, 93,108,205,136,136, 94, 60,105,208,170, 83, 26,151, 9, -191, 29, 82,222, 74,157, 92,231, 64, 7,195, 90, 79, 64,192,244,244, 26,103, 63,131,149,104,117, 26,148, 68,184,195,109, 83,228, -173,134,209, 44, 2,226,202, 22, 82, 16,178, 79,234,114,242,159,179, 79,213,149, 33,113, 88, 77, 61,112, 27,121,229,248,106,149, - 58, 39, 41,101,148, 19,213, 63, 32, 79, 66, 62,237,115, 51,211,150,121, 6,155,219,175, 91,109,181,133,253,226,219,123,241,235, - 75,241, 11, 79, 76,188,137, 11, 48, 93,149, 89,118, 13,107,151, 89, 1,176, 11,212, 3, 98, 79, 75,219, 27, 67,183,181, 74,244, -214,231, 56,229, 74,158,135, 38, 41, 14, 18,160,166,156, 74, 16,156, 36, 32,118, 65, 62,159,191, 89,190,241,113, 11,110,112,191, -176,215,206,245, 95, 6, 20,202, 61,145, 74, 92,138,101, 45, 18,130,100, 92,247, 68,212,150, 40,116, 70,185,198, 84, 94,156,164, -120,132, 3,202,211,110, 40,118,198,137,219,165, 83,139, 76,133, 80, 28, 90,114,210,212,240,109, 10,241, 74, 15, 76,167,253, 94, -159,126,117,202, 47,164, 21, 92,174, 69,225,135,102, 32,209,169,178,160, 90,181,125,216,152,229,206,180, 71, 8,142,167,224, 81, - 11,148,102, 36,173,177,132,143, 17,201, 42, 66, 85,208,148,156,117, 26,113,203,168, 3, 58,157, 54,103, 33,125,118, 36, 94,196, -237,222,227,213,182,195, 70, 89, 79, 69,197, 92, 91,144,112,245,125, 61,168, 43,234, 1,157,252,177,147, 20, 49, 60,207, 26,149, - 58,245, 75, 28, 77, 18,149, 55, 93, 87, 27,139,227,130,123,191,198,175, 16, 27,247,184, 53, 45,208,191,119, 70,231, 85, 90,163, - 41,199,233,180,154, 61,106,117, 46,133,107,211, 84,247, 52, 26, 77, 22,153, 17,228, 34, 20,118, 27, 40, 72, 87, 47, 57, 41, 37, -106, 42, 36,235,167, 28, 15,251,109,119,107, 98,106,116,123, 7,136,169,179,119,107,102, 31,113,136, 72,172, 74, 90,101,223,214, - 83, 75, 33,180, 78,165,212, 93, 60,213,120,109,143,137,113,159, 82,138,146,217, 13,173, 11,198,163,142,186,235,108,188,164,169, -213,165,121, 56, 0,143,231, 19,148, 16, 58,242,145,159, 46,186, 6,109,204,220, 84,151,229, 73, 75, 76,165, 69, 13,186,181,124, - 13,149,252, 65,167, 20,122, 32, 43,175, 41, 61, 51,208, 28,156, 25, 60, 92, 63, 80, 37, 67, 1, 49, 19,208,129,189,141,182,255, - 0, 21,246,184, 55, 7,184, 56,236,142, 32,151,195,140,255, 0,133,223,133,248,147,134,104, 42, 50, 10, 88,196,113,162,172,112, -123, 24, 69,210,178, 83, 74,129,100,164,145, 7,247,111, 27, 39, 75, 54,164, 44,167,244, 98,220,125,244,218,109,207,181, 44, 93, -211,218,219,134,218,187, 42, 87, 53, 36, 51, 69,220, 10, 51, 17,100, 76, 69,191, 35,149,215, 40, 82,159,113, 5,234, 52,228, 57, -209,198, 86, 27,121,151, 16,161,243, 44, 38,219,240, 59,195,109,247,187, 50,119,219,118,236,200,251,153,118, 75,170, 65,173, 67, -182,174,118,154,153,103,210,171, 16,188, 32,197, 90, 69, 61,192, 77,102, 97, 83, 13, 41, 94, 54, 91, 36,117, 74,129, 58,135, 95, - 6,188,107,223,252, 45,110, 43, 52,233, 52,170,149,203, 96,222, 20,101,215, 83,103, 60,250,190,174,187,227,193, 5,199, 38, 91, -143, 44,148,196,174,178,208,123,149, 72,234,165, 37, 41, 87, 50, 84, 70,166, 95,193, 71, 19,251, 57,196,190,221, 82,183, 35,102, -111, 8,119, 37, 13,224,211, 21,170, 59,206,165,155,154,207,170,129,201, 34,143,114, 82,138,185,226,186,219,193, 72, 75,184,240, -221, 9,202, 85,215, 26,134,231,185, 70,123, 75,158, 38,105, 42,145, 71,202, 88,163,146, 50, 90, 29, 18, 16,197, 88, 92,133,119, -146, 38,219,245,140,108,190,102, 70, 11,198, 92, 75,194, 16,120, 95, 13,105,224,204,246,176, 46,111, 21, 85, 20,213, 74,239, 79, - 89,200,142, 74,121, 30,138,165, 99, 8,209,242, 82,106, 70, 89, 32,229,195, 52, 53, 48, 77, 24, 84,168, 68, 26,105,237, 7,217, - 19, 64,220,153,215, 20, 88,210,156,133, 88,145, 38,124, 79,119,101, 69,163, 18,166,128,243,109, 37, 40, 1, 44,161,169, 41,117, -174,100,245, 74, 25, 74, 0, 3, 3, 90, 51, 69,177,226,173,138, 60,234,204,122, 85, 38,221,129, 41, 51,103,211,161,176, 94,110, - 91,208,250,114, 84,204,148,115, 56,210,150,121,194, 65, 70, 22, 18, 73, 35, 82, 72,226, 42,210,160,110,117,160,197,162,168,115, - 29,188,213, 74,168, 86, 45, 9, 77, 65,126, 76, 10,156,120,126, 17,171,208,229, 78,105, 60,176,167,150, 84,151,226,161,194, 60, -101, 71,113,182,200, 89, 26,226, 82, 54,226, 82, 43,245, 56, 55, 19,146,165, 82,168,173,189, 53,234,122,121,219,167,174, 92, 53, - 21,161,215,162,173,172, 60,148, 33, 24, 82, 73, 88,113, 92,185,201,201, 27,117,108,244,241,194, 26, 80, 4,200,175,177, 5,212, -177, 33,144,129,246, 88,144, 74,234,211,113,184,242,225,135,128,248,146,174,159, 42,143, 44,172,115, 72,249,120, 15, 20,146, 35, - 63, 50,152, 72,218, 26, 20, 93,164,179,172,144,173,201, 8,234, 67,105,179, 12, 29,182,244,136,190,236,139,162, 43,211, 44,218, - 8,144,234,232,245, 56, 11, 17,235, 21,134,156,116,152, 20,134, 80,176,164, 56,209, 72, 43,143,200,135, 22,133,101, 74,113, 57, -214,238,237,187,251,130,203, 76, 67,151, 72,167, 84, 98,133,170, 91,213, 42,148,233, 12, 76,138,192, 82,148,219,210, 68,113,202, -170,138,219,193, 89, 73, 67,106, 72, 42, 40,200,248,181,222,133, 7,252, 38, 61, 94,168,236, 48,218, 34,198,106,222,121,215, 12, - 42, 5,177, 73, 72,109,202,131, 44, 54,165, 4,166,172,236,131,241, 5,128, 23,219,155,149, 1, 39,109, 54,169, 47,214,159,141, - 78, 48, 42, 53, 11, 73,106,126, 99,142,173,244,196,145,119,169,196,182,166,100,201, 84,167, 3,137,162,161,194, 72,100, 6,202, -154, 9, 82,143,134, 60, 50,195, 58,115, 25,121,138, 2, 2, 5,250,155,236, 2,134,216,220, 95,168,238, 13,133,186, 73,115,220, -216,213, 80, 74,207, 75, 13, 76, 72,128,234,144,106, 49, 40, 80,161, 99,149, 74, 52,149, 4,141,198,181, 87,112,116,142, 90,187, -151,130,212,169,221, 85,192, 81, 71,162, 69,143, 17,233,177, 66,234,213,121,210, 29,109,249,104, 83,136, 47,211, 99,197,142,149, - 42, 58, 27, 13,132,100,161, 42, 4, 36, 14,234,214,192, 82,168,207, 6,100, 72,146,243,115, 36,115, 37,223,120, 83, 66, 40,134, -150,151,200,182,225, 67,103,224,109,191, 19,152,143,214, 95, 97,205,166,202,221,175,203,122,100, 42,117, 14, 27, 48, 96, 45,217, -109,187, 93,144,132, 73,164,149, 65, 11,113,200,212, 8,170, 80, 21,149,224, 37, 41,120,242, 70, 10, 10, 9, 83,160, 99, 78, 43, -116,232,146, 18,162,237, 86,169, 54, 43, 79, 52,133, 63, 42,172,182,163, 42, 83,190, 32,120,165,166, 16,210, 27, 75, 65, 69,178, - 18,158, 64,162, 82, 50, 81,157,111, 81, 68, 21,129, 8, 22,227,101,189,237,123,109,114, 1,185,236,109,232, 47,107,226,137,226, -141, 77, 41, 30,203, 30, 87, 20,158, 96,168, 26,121,138, 19,111,172,118,118,179, 18,159,221,137, 20, 88,110,150, 85,193, 53, 73, -145,226,170, 46,101,196, 76,164,184, 28,240, 12,134,153, 95, 43, 10, 74,155, 46,181,207,144,121,194, 7, 62, 9, 82,143, 47,108, -234, 4, 62,210, 58, 72,219,158, 58,184,155,183, 37, 40,183, 29,237,225,189,234, 44, 58, 57,127,200,220,181, 35,117,198, 37, 8, - 56,229,118,159, 89, 74,128,242, 87, 67,131,157, 78,142,170,138, 83,209,158, 69, 30, 52, 6,160, 54,228,136,114, 46, 38, 99, 50, -181,206,146,133,248, 78, 67,166, 72,113, 37, 82, 16,149,149, 37,199,134, 91, 66,242, 26, 11, 88, 90,147, 16,207,164, 3,178,234, -161,113, 5,183,251,173, 73,167,134,104, 59,189, 97,210,168, 85, 9, 52,211,200,236, 43,223,109,162, 38,218,168,185, 41,231, 21, -137, 21, 23,168, 70,202,152,128, 87,226, 56, 92, 95,235,114,171, 51, 28,157, 98,150,190, 8,100,110, 92, 83,221, 79,199, 69,239, -185,177,177, 27, 15,128,189,142, 45, 63,163,127, 17,212,112,127, 20,113, 29, 53, 38,185,106,243,156,177,196, 81, 58,133,230,212, - 82, 85, 83, 84, 44,108,169,172,160, 52,166,171, 97,169,163, 3, 91,114,200, 24,226, 4,154,196,244,219,106,220, 88, 18, 36,123, -230,213,238,117, 58,151,184,116,120,110,184,212,168,118,117, 66, 76, 20,196,186,144,180, 43,157,136,145,234, 12,197, 91,146, 81, -132, 70,114, 83, 75, 43, 75,110,100, 74,151,217,207,198,213, 39,137, 54,238, 61,133,221, 10,180, 42,127, 21,123, 72,167,219,169, -193,146,168,241, 90,223,139, 2, 44,118,170, 52, 45,207,178, 66, 74, 81, 80,184, 88,183,166,211,141,199, 76,103,157,106, 33, 53, -232,129,216,210,102,162, 20, 59,161,215,121,234, 81, 43, 84, 91,170,177,103,222,204, 45,171, 98,241,138,155,114,161, 89, 69, 74, -148,180, 59, 78,143, 92,122,151, 17,151, 83,112, 82,132, 69,184,196,200,129,133, 59, 38, 25,125,133,176,243,141,180,149,244, 87, -132,222, 13,248,140,184, 47,203, 39,113,120,121,171,199,191,238, 93,185, 98, 53,251,111, 91,251, 99, 85,166,215,175, 87, 41,240, - 42,241,155,165,214,182,154, 47,191, 41, 91,145,104,211,234, 42, 83, 92,148,103, 83, 85,163,199,117, 84,250,197, 33,136,225, 97, -185,206,113,194,121,109,101, 27, 45,125, 80,163,171, 2, 95, 99, 38, 41,121,134,115,162, 78, 66,144,133, 38,141,138,205,202, 84, -102,150,120,231,139,150,134, 90,104,163,158, 75,196,249,142,105,226,180,212, 89,118, 93,165,163,138,170,138, 74,220,202, 74,236, -184,209, 80,208,200,239, 65, 46, 97, 87, 27,213, 71, 85, 72,252,182,203, 23, 53,133,225,134, 42, 12,195, 41,170,210,211, 69,154, -203, 85,150,205,166,227,165, 61, 6, 5, 54, 97, 74,156, 18,227, 69,110, 35,140,180,165,169,249, 82,156, 67, 13, 71,138,218, 85, -241,185,226,184,218, 91, 31, 9, 82,214, 50,122,244, 11,114,111, 27,114,131,182,251,199, 34,255, 0,136,154, 45,247,176,245, 58, - 22,218,111, 22,216,181, 81,143, 85,184, 45,221,195,188, 89,183,161, 89, 20, 42,100,159,117, 96, 92,148,187,141,187,194,223,118, -133, 84,102, 59,113,170, 72,126, 72,105, 41,114, 12,164, 55, 75, 99,119,122,224,174, 51,245, 7, 19,219, 89,112,112,215,186,220, - 60,220,144,175, 61,215, 77,193,108, 87,174,237,159,151,101,211,226, 77,189, 33,110,173,151, 93,162, 70,144,154,221,142, 81, 76, -164, 63, 80,165, 60,241,153, 77, 68,215, 72,114,100, 8,147, 31,135,146,113, 71,183, 59,103, 34, 92, 13,253,110,235,173,110,165, -205,184,176,173,202,147,143,193,221, 91, 86, 92, 45,209,191,156,186,104, 59,129,181, 86,205,199,245, 20,121, 48,102,109,181,175, -123,214, 32, 86,104, 82, 40,181, 28,208,209, 13, 52, 53,191, 38,135, 86,101,109,214, 19, 84,229,188, 53, 74,207,159,161,161,167, -175,150, 56, 86,121,140,113,211, 67,100, 55, 51,107,101,157, 73,146, 72,180,145, 11, 42,168,147,153,162,197,146,162,201, 56,112, -210,113,141, 46, 79,196, 20,245, 18, 53, 58,173, 84, 67, 46, 95,106,106,245, 73, 41,170, 2,208,207, 24, 52,245, 80, 86, 80, 37, - 72,165,150,158,114, 90,122,170, 9,135,212,151, 87,227, 20,104, 45, 87, 24, 85, 86,218,241, 42,148, 71,110, 43,170,211, 76,212, - 52,150,132,106,245,151,114, 85,109, 11,162,129, 84,104,168,251,149,106,157,112,209, 42,113,229, 48,188, 58,218,227,142,108, 33, - 77,169, 90, 21,237, 94,168,222, 22,133,223,195,254,202, 10, 93, 82, 93,177,180, 43,183,183,154,236,164, 81, 20,153,146, 98,238, -125,229, 73,129, 91,163,213,175,116, 52,191, 22, 53, 66, 29,188,253,173, 71,167, 81, 57, 76,150,133,213, 81,149, 33, 81,220,148, -211, 74,150,182,225,218, 92, 50,112,247,195,165,153, 77,165, 90,219,117, 99, 91,150, 60, 43,174,244,174,223, 49,109, 27,134,228, -218,202,205,255, 0,107,212,149, 18,116,251,243,114,104,207,201,168, 51,121, 72,220, 7,211, 38,169, 13,184,115,170,215,251,244, -217,244, 88,238, 70,155, 37,169, 49,121, 20,212, 93,185,118,222,225, 46,203,225,223, 98,183, 23,120,253,160,252,116, 84, 55,118, -117,213,191, 91,223, 72,247, 69,219,219,105,184, 23,221, 98, 20,254, 44,230,237,204, 42,236,138,109, 42, 84,217,212,251,153,118, - 17,144, 93, 52,138,101,143, 85,175,174, 58,252, 58,125, 67, 79,254, 28, 54, 93,153,214,174,113, 79, 20,121,133, 44, 97,185,112, - 9,150,105,100, 73, 41, 86, 94, 92, 38, 35, 21,167, 43, 81, 29, 57,169,144, 44, 20,142, 37,170,101,154, 49, 70,106,111,238, 14, -168,151,137,248,115,244,207, 19,210,215,101,116,144,212,140,186,131, 48,134,146, 36,164,139, 59,164,121,107,219, 53,204, 26,181, -229,163,139, 38,160,162,201,235, 36,205,169, 85,235,234,125,154,190, 36,140, 9,162,154, 90, 72,169,213, 45,253,208,118,151, 97, - 90, 91,181, 38, 13,167,103, 94,215,213,102,231,174, 55, 49,215, 31,172,238, 77,247, 17,216,119, 14,228, 45, 49,233,233, 9, 77, - 46, 21, 66, 69,159, 70, 41,134,135, 99,193,140,211, 84,180,200,231,102, 82,155, 18,155, 83,131,120, 85,111,219,154, 3, 50,105, -148,169, 19,160,193,160,214,170,113,194,103,214, 98,211,229,168,183, 62,159, 72, 66,178, 89,147, 84, 14,152,173,252, 45,248, 13, - 54,178, 84,149,147,169,133,123, 64,189,146, 86,255, 0, 13,187,109,182,187,145, 64,219,248,219,185, 14,215,178,234,116, 13,218, -222, 42,148,217, 2, 53, 42,184,204, 22,226,237,117,131, 14,206,132,240,114,194,225,222,157, 83, 53,138,149,106,161, 29, 14, 73, -171, 86, 42,171,153, 89,124,169,230,121, 34,177,182, 91, 65,116,111, 46,243,196,218,253,171,247,251,206,183,116,213,106,146,228, -110, 45, 77,182, 89,136,139,118, 28,148,197,186,119, 9, 54,243, 47, 6,109,107, 54,152,143, 26, 45, 38, 35,139,255, 0, 5,141, - 9, 78,190, 85, 41,232,140,170,115, 83, 86,212,245, 25,140, 21,212, 63,162,231,161,141, 36,125, 43,202,166, 45, 35,172,211, 73, - 10, 63,152,169, 40,176, 6,149,220,186,195,120,162,104,238, 34,191,184, 15, 62,224,252,219,132,178,206, 51,225,190, 45, 60, 75, -193,102,174,190, 55,168,174,180,249,164,116,185,109, 52,249, 86, 93, 75,153, 84,195, 32,246,103,141,107, 43,115,158, 82,101,249, - 74,150,205,227,150,183, 49,167,173,118,253, 35, 52,143, 98,189, 5, 54,159,179,243,109, 77,101, 98, 4,221,196,190,119, 71,112, - 90,102,181, 21, 8,139, 91,164,212,174, 88,182,196, 10,140, 85, 56, 18,219,240,220,254, 9,200, 41,115, 33, 74,231, 82,146,146, -218,155, 42,234,187,209, 27,163,184,237, 90, 72,168, 42,130,200,240,165, 64,143, 38, 82,158,160,173, 74, 13, 9, 84,182,157,124, - 46, 93, 57, 73, 90, 10,152, 73, 43,100,172, 41,160,180,115, 32, 49, 27, 9, 77,177,109, 93,139,217,139, 99,111,227, 72,143,183, -214,214,217,218,118,173,163, 6,173,153, 19, 88,131,108,210, 99,208,101, 65,174,135, 83,148,212,157,159, 79,150,244,181, 20,148, -123,204,229, 43,177, 57,114,208,124, 17, 57,202, 83, 14,170, 36, 5,137, 85, 10, 36,185, 75, 84, 55, 96,202, 71, 42,132,120,171, -113,106,241,219,116,146,219,173, 15, 11,186, 85,148,168,114,194,132,136,200,173, 31,158, 54, 80, 65, 3,168, 34,224,129,232, 65, -213,184,220,116, 23,199, 0,113,150,101, 55, 20,241,127, 20,113, 19,235,165, 25,245,125, 85, 67,198,196,108,179, 84,182,152,185, -133,129, 73,145, 89, 34, 14,220,203, 72, 8,103,229,150, 86,247, 81,110, 91, 49,167, 78,161,215, 37,212,219,113,213,165,218, 85, - 69,240,244, 26,132, 54,129, 11, 49,228,181, 29, 46, 66,168,140,245, 75,156,193,124,161,183, 27, 28,201, 86,190, 81,155,125,104, -135, 34, 12,114,220,121, 41, 40, 98,157, 53,228,170, 35,114, 20,230, 86,221, 26, 80,200,167, 40,169,103,158, 59,169, 8,202,112, -128,131,144, 60,211,163, 71,152,183,230, 83,229,191, 4,133,169,153, 76,134,179, 60,198, 89,109,232, 14,212,225, 62, 86,221, 65, - 13,185,148,165,196,101, 78, 32,243, 37,209,130, 19,153,208,146,134, 81, 41, 19, 11, 49,214, 86, 24,121,165,178,165, 69,168, 40, - 31,135, 1, 64,169, 46,149, 41, 36, 40,254,144, 5, 36,146,188,100, 38,134, 48, 25,152,141,172, 46, 77,136,220, 27,250,141,253, -222,226,122,130,193, 89, 80, 41,169,164,139, 72,146, 84, 43,112,200, 85,236, 84, 40, 87, 84, 1, 94,219, 21,144, 93,244,155, 22, - 69,101,209,125,183,168,209, 97,190,250,204, 70,152, 5, 64,200,140,166,150,203,176, 87,241,151, 94,136,160,178,134,218, 89,230, - 82,128,202,114,162,164,100, 2, 53, 28,111,107, 60, 59,251,143, 63,104, 23, 11,126,205,170, 3, 53,106, 46,201,109,173, 53, 27, -255, 0,189,117,166,249,216,137, 90,147, 49, 18,105,172,202, 66,146,174, 71, 98, 81, 45,102,106, 49, 24, 42,193, 53,155,189,229, -160, 5,197, 73,215,123, 47,141,211, 98,142,167,173,155, 89,193, 42,229, 25,106, 76,148,165, 47, 71,180, 91,112, 5,120,181, 23, - 14, 83, 34,182, 58,174, 44, 18,162,180, 43,149,249, 92,173,165, 40,113,184,160,218,118,243, 51,158,189,219,161, 64, 93,228,170, - 58,109,137, 55, 99,177,210,229,194,253,186,103, 61, 86, 93, 46, 69, 85,196,248,174,194, 85, 90, 68,169, 42, 65, 86, 20,243,235, - 89,234,113,167, 76,190, 73, 36,154, 36, 66, 2,174,204,196,216,168, 96, 86,235, 97,187,142,171,113,179, 0, 79, 96, 43, 78, 39, -200,167,207,168, 64,172,169, 48,195, 60,176,243, 35, 59,153,169,213,129,145, 9,184, 40,178,128, 35,189,201,120,217,238, 72, 33, -152, 74, 45,191,110,218, 20, 10, 5,159,104, 82,163, 80,109, 43, 50,145, 78,182,173,138, 20, 36, 37,152,116,202, 37, 38, 58, 33, - 65,136,219,104, 24, 24, 97,176,165, 43,186,214,165, 45, 89, 82,137,214, 66,192, 44, 56, 50, 64, 66,255, 0, 84,246, 74, 22,174, -188,167,230, 79,109,121, 92,114, 87,226,132,243, 5, 16,162,145,156, 45, 62, 69, 56,238,161,231,246,106,239, 2, 58, 29,109,109, -140, 45, 4,158,231,170, 65, 29, 58, 31, 49,251,181, 41, 93,150,200, 52, 42,216, 5,236,161, 64, 0, 1,233,167,107, 95,107, 15, -118, 6,132,133, 20,133,242, 45,129, 0, 88, 1,181,128, 29, 5,187, 14,150,219,160,198, 15, 92,140,185,115,138, 64, 42, 71,192, - 48, 51,148,245, 42, 81, 7,237,199,237,198,179, 75, 74,130,162,174,110, 64,124, 66, 48,124,213,215,155,149, 64,142,249, 35,240, -215,148, 83, 60, 73,124,161, 36,156,132,103,190,121, 71, 64,125,124,254,243,173,128,177,237,177,134,150,166,134, 7, 42,186,224, -143, 44, 12,121, 14,154, 67,202,160,201,111, 49,218,255, 0, 63,127,239,196,120,213, 0, 90,237,117,185, 55,251,239,238,249,252, - 47,182,197,185,224,181,226,148, 36, 57,202,148, 5,148,228,167,152, 5, 58, 79, 79, 76, 14,157,180,226, 8,126,236,203,104,229, - 60,234, 39, 41, 0,168,144,160, 20,178, 64, 31,173,203,129,242,206,178,138, 93, 27,145,148, 5, 35,225, 35, 39, 61,212, 7,196, - 78, 60,251, 1,143, 61,123,145, 19,153, 69, 69, 4, 41,106, 8, 66, 83,212,227, 32, 37, 32,103,190, 59,159, 85,124,134,144,177, -221,137,249,239,127,225,134,106,140,228, 77, 49,141, 79,213,198,127,211,243, 54,237,139, 84,118, 89,109, 14, 61, 41,212, 70,139, - 13,135, 37,204,148,176, 18,212,104,172, 36,184,227,206, 40,246,108, 37, 56,249,146, 7,158,181,250,179, 86,126,239,172,200,171, -165,165, 49, 78,105, 40,133, 70,101,239,129, 48, 41,109,171,225, 88, 0,126,146, 83,234,203,139, 61, 57, 66,130,124,177,167, 30, -243,170, 10,151, 53,173, 13,126, 37, 62, 51,173,185, 94,117, 25,228,155, 49,165, 7, 24,164,151, 19,254, 82, 35, 74, 8, 47, 36, -116, 83,129, 32,146, 1, 26,196,209, 13,152,192,120,189, 72, 36,248,109,160, 56, 2,128, 5, 63,163, 79, 92,103, 3, 39,160,236, - 58,233, 61, 70,161,194,166,241, 70,119, 63,180,195,227,217,127, 22,248, 41,196,175,135,160, 90, 56,228,204, 39, 66,107,106,150, -209, 41, 6,241,194,108, 75, 91, 99,174, 91, 3,191,217,140, 1,191, 54, 69,192, 76, 50, 27,111, 13, 54, 73, 64, 9, 75,139, 82, -155, 0, 43,169, 44,128, 9, 62, 93, 64,193, 61,206,129,152, 95, 41, 82,138,208, 22, 65, 72, 12,164, 32,165, 0, 36,148,163,152, -144,217,234,147,145,223, 36,228, 96, 13, 93,159, 83,174,103,149, 32, 40,182,126, 55, 51,206,132,145,201,240,161, 7, 35, 62, 99, - 32,129,158,249,214, 55, 45,212, 37, 96, 41, 41,120,167,152, 0,148, 0,129,149,167, 39,148,225, 32,224,247, 61, 71,166,116,224, -158, 91,109,185, 27,219,231,253,127,117,240,237, 35,179,146, 77,153,143,253,199,183,115,176,223,225,139, 75,238,163,147,144, 21, - 40, 96,142,116,142,164,165, 71,170,222, 82,187, 31,136, 4,140,243, 1,229,215, 88,252,183, 65, 72, 11, 82, 74,126, 16, 8, 28, -184, 82, 72, 9, 66, 86,188, 18, 18,124,176, 62,100,224,157, 92, 39, 56,224, 82,146, 23,204,162,174, 95, 9, 9, 79, 55, 83,240, - 40,169, 64,252, 33, 36,252, 92,160,245,192,214, 45, 49,208,142,112, 21,241,171,170, 65, 78, 85,128, 50, 82, 74,129,229, 60,160, -143,187,169,234, 53,176,135,175,112, 15,243, 31,187,175,201,195, 45, 82, 13,247,235,252, 62,255, 0,187,182,253,175,139, 84,247, - 82,160,163,130, 9, 39, 36,167,159,175,196, 10,138, 66,176, 19,215,191,145, 57, 25,215, 6, 61,188, 92, 35, 69,226, 19,132,201, - 91,199,110, 82,195,187,161,195, 10,102, 93,241, 28,140,192,126,125,115,105,170, 47, 48,214,226,219,142,184,128, 86,242, 33, 44, -195,173,196, 64,207, 34,224, 76,242,116,235,186,178,222, 24, 37, 41, 81,237,144, 82,160, 20, 48, 84, 0, 3,162,199, 82, 58,245, - 31,127, 70,250,191, 79,164,215, 96, 84, 40, 85,216,173, 79,160,215, 96, 84, 40, 53,232, 14,182,151, 35,203,161,214, 98, 61, 73, -173, 66,121,165,116,117,135,105,115,166, 54, 71,126, 85,224, 28,246,216, 14,203,105, 35, 63, 89, 25, 12,191, 17, 98, 47,238, 61, - 15,184,145,176, 59,197,243, 92,186, 44,214,138,175, 46,156,218, 42,180, 41,114, 7,145,137, 5, 36,183,172,110, 22, 65,210,229, -109,238,199,229,128, 82, 2,137,239,143, 49,212, 31,152,199,126,154,248,172,145,219,166, 51,147,251,191, 13, 61,188, 74,237, 67, -251, 7,196, 22,245,108,212,198, 21, 21, 91,103,185, 87,117,161, 21,133,168,173, 72,164, 83, 42,242, 5, 1, 65, 71,170,194,232, - 46, 83, 92, 10,235,144,230,114,115,146,198,169,106, 88, 4, 43,155,166, 71, 76,119,245, 30,186,153,211,202,179,197, 12,202,124, -178,168, 97,235, 98, 1,254,120,230,119,142, 72,157,226,149,116, 75, 17, 42,227,209,212,233,101,251,152, 17,138, 46, 16, 70, 51, -235,156, 28, 99,251,116, 42,177,142,195,148,103, 30,125,187,147,243,213,117,168, 30,224, 12,142,248,206, 79,217,161, 87,208, 31, - 60,156,126,255, 0,221,173,192, 44, 0,244,192, 29,190, 56, 29, 89,193,233,255, 0, 14,253, 52, 34,142,113,223,207,184, 3,240, -209,107,237,223, 29, 71,231,243,233,161,156, 32, 2, 51,147,231,142,191, 62,154, 85, 7,124, 42, 44,119,192,171, 35,203, 63,126, -113,231,228,117, 69,125,179,147,255, 0, 31, 93, 87, 95, 55,158, 49,229,249,245,208,235,199,207, 62, 94,159,126,149, 2,228, 99, - 29, 0, 3,231,255, 0, 24, 21,103,175,216, 49,159, 93, 45, 37,254,183,221,211, 75, 74,139,128, 0, 31,142, 13,143,168,198, 79, -124,227,238,199, 79,219,162,145,140,118,235,230,113,251,254,205, 8,223, 83,147,145,208,244,251,241,215, 69, 35,177,235,231,219, -247,232,141,107, 47,108, 12, 18,142,199,167,223,235,249,253,250,169,158,221,250,124,254,126, 94,154,164,140,245,233,211,215,247, -124,245,237, 36, 40,144, 15, 99,131,223,161,210, 78, 54,248, 96, 99,223,140,142,249, 24, 0,103, 25,202, 78,139,108,149,129,212, - 0,124,241,215,168,233,211,239,253,154, 16,180, 1, 56, 0, 36,228,159, 79, 44,147,243,254,189, 86,109, 65, 36, 14,184,198, 2, -143,203,212,253,218, 64,155,117,192,193,237, 39,151, 3,175, 66,123,119, 63, 63,144,209, 8, 95, 51,137, 73, 78, 57,115,241, 30, -221, 60,178,126,122, 8, 60,140,148,130, 85,216,224,117, 87,159,124,253,167,240,209, 63, 11,137,248,186, 28,252, 35,168,207,219, -248,233, 22,234,113,131,235,243,233,139,187, 64, 43,162,136, 63, 49,147,235,233,247,106,247, 70,169,212,104, 85, 90,117,110,145, - 41,200, 53, 90, 68,248,117, 58, 92,198,148, 80,236, 90,141, 62, 75, 82,225, 74,109, 67,170, 84,137, 44,180,175,184,141, 88,152, - 10,229, 79, 96, 48, 57,177,219, 35,167, 79,219,162,211,156, 40,118, 30, 71,184,249,245,242,233,162,144, 24, 21, 97,112,118, 32, -239,132, 15,196,169, 30,155, 16, 71,112, 71, 67,137,193,240,233,185, 20, 62, 44,120,124,219, 61,240,167, 76, 71,191, 84,105,140, - 81, 55, 14,155, 5, 64, 73,165,223,148, 54,155,135, 89,139, 53, 8, 57,103,197,121,191, 25, 25,253,100, 72, 65, 4,131,173,161, -180,210,245, 40,183, 10, 44, 52,248, 14,171,153,247, 36, 40,150,208,211,100, 16,181,171,201, 93, 7, 79, 83,168,161,123, 40,248, -226,137,194,214,237,191, 97,110, 76,199, 6,196,111, 20,202,117, 42,239,113,106, 82,155,179,174, 82, 83, 18,135,123,178,146,127, - 69, 25, 42,113, 12, 78,199,254, 43,149,211,158, 67,169,140, 46,220,104,182,207,128,184,210,104, 79,178,197, 70,159, 80,128,226, - 36, 70,171, 65,146,132,189, 18, 92,121, 77,168,165,248,174, 52,182,212, 10, 73, 7,155, 84, 39, 16,240,233,203,115, 25, 99, 88, -201,130, 67,170, 35,216,169, 61, 47,220,173,244,155,247,243, 17,102, 24,239,143, 11, 60, 80,110, 39,225,218, 88,107,103, 15,152, -229,170,144,213, 33, 98, 60,234, 0, 89,236, 55, 34,117, 93, 98,219,115, 3,198, 8,209,135, 82,196,175,212,218,113,133,198, 84, -117, 38, 71, 32, 67, 78,101, 4,182,142,157, 7,255, 0, 22,125,124,255, 0, 13,121,226,147, 97,169,220,100,236, 45,251,195,253, -214, 96, 83, 89,184, 96, 55, 58,221,184,156, 71,138, 45,139,210,151,207, 34,220,169,161, 93,196,113, 36,248, 82,113,221,137, 11, -244,198,172,116, 62,102,100,181, 29,160, 61,231,149, 60,142, 99,224,101,164,246, 3, 29,128, 25,233,173,128,164, 74, 18, 99,198, - 73,116,183, 25,181,114, 60,178, 57, 76,151, 16, 50,162,162, 14,124, 60,129,246,235, 82,158, 2,165,118,210,203, 98, 45,216,245, -190,219, 94,253, 7,223,139, 66,108,214,122, 57,232,179, 76,177, 18,150,182,141,214,104,102,243, 49, 73, 35, 33,209,244,220,171, -217,133,180,176,210,230,225,188,151,199,230,211,196, 86,208,238, 55, 15,155,153,121,237, 22,231, 81,100,219,215,221,143, 82,149, - 79,168, 71,125,106,110, 52,230, 88, 90,132,122,157, 46,106,128, 76,202,124,136,220,143, 71,121, 63, 11,141,186,146, 8, 36,141, -107, 90,238,137,210, 99,242, 84,194, 39,208,228,243, 69,156,165,101, 50, 16,209, 35,156,184, 17,212, 56,158,138, 66,198, 72,229, - 26,253, 19,125,160,126,206, 29,169,246,133, 88,112,226,214,219,129,100,111, 5,191, 18, 68, 91, 19,116,219,132, 28,148,220, 38, -208,181, 53, 65,186, 99,180, 66,170,182,233,119, 30, 25, 39,198,138, 86,165, 50,121, 74,144, 97, 29,196,223,179,219,138,238, 14, -171, 85, 42, 30,238,109, 69,202,253,158,137,146, 26,165, 95,150,229, 61,202,229,149, 91,134,219,133, 41,155, 18,173, 13,165, 6, - 91, 82, 48,172, 57,202,180,231, 5, 26,179,178, 42,250, 57,225, 72,106,149, 86,169, 74,233, 44,116,220, 29,175, 27,118,123,216, -133,216,130, 59,142,146,250,158, 42,173,226,215, 74,204,190,189,178,218,167,133,214,182,141,111, 32, 18,142,242, 68,219, 84,208, -202,162, 69,119,250,199, 68, 58, 38, 17,181,158, 86, 98,205, 98,245,184,155,179,246,190,133,117, 81, 43,212, 69,205, 93,107,111, -171,201,247,180,220, 22,125, 75,170,221,143, 77,172, 67, 70, 41, 51,212, 66,147,225, 62,180,195,146,121,152,117, 41, 82,145,153, - 39,123, 14, 56,116,186,118,163,136, 57,119,139, 91,231,181, 82,105,117, 56,211, 85,187, 59, 81, 50,174,154, 46,225, 86, 41,142, -178,236, 71, 96, 81, 44, 39,154, 15, 79,169,138,138,154,146,169,140,169,198,154,240,202,146,121, 8,214,156,123, 19,246,162,147, -184,219,245,181,214,173, 74,157,114, 91,212, 68, 94,177, 46, 9, 87,209,164, 82, 35,166,152,213, 40, 26,147,148,152, 53,249, 12, -182,135,161, 77, 92,118,163,188,212,150,221, 87, 43,171, 72, 10, 95, 41,212,194,248,217,224, 59, 96,239,203,211,110,184,157,163, -220,219,119,195,142,224,236,189, 90, 53,199,112,238,141,180,213, 54,131, 86,184,173, 90, 80,241,158,162,204,105,137, 44, 68,247, -146,216,120, 38, 83,136, 82,185, 95, 91,106, 14, 36,132,105, 42,177, 85, 95, 69,196, 84,180,235, 13, 45, 13, 59, 8,229, 63, 84, -100,153,228, 44,254,209,101,229, 8,180, 29, 45, 34, 57,120,102, 98,238, 84, 54,248,177,115, 46, 32,224,110, 24,171,225,142, 26, -226,122,217,198,119,199, 25, 21, 76,116,245,242, 71, 93, 93, 67,144, 67, 83, 72,217,122,208,154, 38,146,170, 74,254,122,137, 97, -203,171, 80,123,126, 86, 13, 50,114,230,134, 52, 43,104,160,110, 52,106,229, 82,239,218, 10,165,197, 42,143, 92,155,112, 63, 79, -182,109,170,172, 86, 42, 53, 42,212, 72,110,166, 83, 17, 83, 38, 18,137,166,133, 50,164,172, 60, 85,240,145,228,123, 92,248,153, -225, 90,117,139, 14,223,186,217,144,212,184,247, 13, 37,217,245,234, 50, 30, 68,154,188, 47,118, 5,245,153, 13, 36, 5, 84,225, -248, 64, 45,114, 16,133, 4,120, 5,183,210,145,135, 23,170, 17,120,166,246,122,210,239, 8,251,245, 73,221, 42,108,202,125, 54, - 85,110, 12,136,116, 25,110, 42,164,252,181,186,183, 36, 84,100, 71,157,200,243,176,212,251, 97, 40,154,128, 27, 80, 87, 42, 0, - 73,215, 28,248,248,246,138,238,223, 31, 27,209,100, 13,189,190,175, 61,174,217, 13,133,184,168,247,110,220, 46,215,168, 72,182, - 43, 50,175, 26, 23,136,134,174, 58,133, 66, 41, 14,213, 96, 61,144,143,113,148, 85, 17,198,121,155,117,149,165, 68, 30, 78,240, -151, 41,171,203,168,248,214,139,140,242,218,147, 61, 39, 46,146,154,176, 74, 94, 58,115, 70,238,237,110,102,210,194,237, 49, 74, -101,167,176,152,106,242, 71,253,233, 17,120, 7,226,111,137,188, 85,195,180,126, 29,112,252,188, 55,150, 71, 72,245, 89,147,103, -144, 54, 91, 11,230, 13, 18, 65,236,212,236,144, 84, 78,202,220,184,170, 37,144,199, 57,137, 21,156, 76,199,149, 3,245, 94,101, -153, 14, 91, 11,118,106, 60, 38, 42, 50, 98,248, 52,232,255, 0,224, 76,210,169,176,210, 23, 58, 67, 75, 75,170,196,215, 65, 90, - 66,200, 82,134, 70, 57,121,122,190,116, 74, 93, 58,224,113, 52,104,137,117, 22,180, 38, 41,236, 84,166,201,117,250,127,189,196, -138,202,165, 63, 77,135, 61,213, 5, 70,128,166,194, 12,199, 18,144,165,140,160, 16,130,179,166,155,101, 55,170,133,187,214,166, -214,220, 55, 67, 20, 74, 22,231,223,150, 76, 91,182, 85,181, 1,133, 66,160,215,231,197,159, 82,164,204,170, 90, 80,221, 39,244, - 42,118,154,185, 47,211,155, 89,114, 42,164,175,221,144,228, 84, 39,195,216, 74,124, 72,107, 67,204, 60,133,205, 66,221, 76,153, -140,248,200,105, 21,106,162,212,144,195,107,125, 39,244,116,228, 20,254,149, 32,124, 73, 74, 16, 82,160,149, 5, 73,200, 40,225, - 8, 33,133,138,157,182, 82, 3, 95, 73,181,137,216,116,212, 13,238,110, 49, 90,230,167, 55,225,188,207, 50,225,188,237,100,164, -205,114, 10,186,138,102, 10, 67, 66,181, 20,181, 15, 75, 52,145, 56, 33,102, 11, 36, 14,177,206, 9, 14, 84, 59, 29,188,174, 84, - 59,173,112, 93,143, 85,131, 21,160,229,114, 44, 58, 45,153, 66, 12, 7, 27,139, 74, 91,136,101,170,139,205, 35,148, 83,216, 89, -109, 47,175,160, 45,198, 97,150, 17,149, 40,129,153,191, 33,138, 45, 46, 76, 10,157, 73, 53,234,220,249, 45, 83,233,211, 28,109, - 44, 82,226, 34,114,131, 18, 43, 40,129, 31,153, 48, 97, 70, 47, 36,186,181,120,174, 58,242, 82,209, 95, 50,212, 18,208, 73, 83, - 80, 80,204,199,127,194, 85, 21,242, 79,187, 56,168,170,169,212,221,108, 50, 91,138,234,193,240,227,178,130, 24,101, 57,229,108, - 41, 75, 86, 74, 20, 9,139,172, 74,165, 58,245,126,172,220, 89,142, 26,131,177,226,196,130, 86,202, 30,125,154,122,189,198,155, - 17,167, 0, 8,166,198,149,239, 78, 60,238, 79,139,135, 31, 80, 75,139, 70,183,210, 72,208, 37,152, 14,131,107,157,246,216,129, -183, 77,134,221,141,183, 54,195, 12,185,100, 85,145,194,212,139,125, 68,121, 69,150, 73, 36, 70, 28,168,213,141,221, 80, 38,242, -239,121, 25,155,153,118, 55,137,194,174, 84, 41,148, 85,183, 64,162,120, 21, 9, 84,184, 49,145, 29, 46, 45, 79, 64,165, 64,110, - 50,132,154,165, 69,214,148, 82,194,220, 74,138,147, 28,101,231,150,232,192, 66, 9, 86,185, 17,237, 36,216, 24,156, 79,108, 45, - 91,106,157,145, 17,119,146,170, 52,251,163,110,235,115,214,150, 35,192,191,179, 38, 60, 55, 42, 47,160, 19, 2,219,168,211, 29, -118,157, 56,164, 20, 50,202,227,203, 3,158, 10, 73,232,220,233,143,193,167,180,203, 82, 67,210, 37,192,145, 88,170, 20, 52,150, -230, 54,253, 90,120,113, 41,119,149, 69, 38,115,235, 1, 12,182, 7,193, 25, 9, 82,185,130, 82,117,175,119,139, 85,218,217,157, -245,121, 66, 42,143,213, 32,176,154,170,185, 28,143, 69, 75, 2,115,178,106, 74,141,250,175, 22, 25,108,248, 12, 35, 8, 91,142, - 54,181,252, 5,122, 88,213,203, 28,145, 75, 78,229, 37,167, 97, 34,183,236,148, 33,148,223, 96, 69,197,183,176, 63,102,214,216, - 58,240,190, 68,114,250,243,152, 23, 19,199, 8,114,242, 72, 72,231, 22,188,108,205,176,101,137,213,157,138,160, 37,149,131,121, -245, 2, 96,171,183, 20,137,123, 31,191,149, 91, 47,123,232, 85, 27, 62, 93, 6,181, 34,220,190,237,155,214,132,186,220, 88,179, -217,150,220, 71,128,149, 75,125,138,149,169, 90, 75,203, 96,211,110, 42, 91,143,176,165,184,194,229,195,126, 59,201,121, 83,127, -216,175,102,198,192,241,189,192, 78,211, 93,151,173, 66,131, 11,121,110, 27,122,109, 78,202,226,103,134,152,244,170, 29,255, 0, -106, 75, 77, 80,127, 7,147,118,200,183,170, 81,169, 27,137,124, 65,102, 20, 38,171, 53, 4, 24,110,205,241, 18,226,164,123,227, - 13,202,211, 37,186,124, 33,108, 79, 16, 66,211,103,113,182,182,139,118, 84,173, 7,156,166,216,183, 99,192, 67,187, 32,202, 95, - 52,202,236,231,238, 88,201, 46,213,173,214,193, 83,203,133, 49, 50, 99,173,245,243, 52,203, 11,115,159, 93, 2,225, 42,126,233, -240,185,105, 84,108, 74, 45, 95,108, 43, 59, 35, 69, 97,250,141, 10,138,230,217, 90,251, 48,139, 9,233, 47,173, 83,167, 92, 23, -133,177, 85, 69, 46,182,212,244, 48,183, 86,228,216,112,223, 43,138, 95,241, 29,230,228, 19,170, 78, 41,201,115, 12,218,154,183, - 54,203,228, 66,244,207, 79, 57, 83,174, 48,118,211, 36,113,139, 51,236,182,144,200,197,209, 89, 4, 74, 66, 18,100,220, 71,196, - 25,253, 47,135,176,101, 60, 41,197, 99, 32,207,114, 92,228,102, 52,138,194,116,168,154, 25, 34,146, 41,169,214,165, 68,180,176, -199, 36,210, 6,122, 3, 28, 20,213, 45, 28,143, 83, 37, 84,238, 34,143, 74,120, 89,225,111,121,247,111,121,238, 89,155,225,184, -220, 82,237,142,251,112,146,253, 17,207,229,239, 14,200,188, 40,150,199, 16, 91, 53,100,203,106,223,161,219, 59,177,105,238, 28, - 8,141,191,184, 84,122,123,188,237, 86, 66, 93,102,187, 65,135, 61,155,146,157, 54, 68,117, 85,170, 29, 5,246,132,237, 76,171, - 94,215,181, 54,235,103,182,227, 99,237,219, 50,147,100,221,151,117,186,253, 38,155, 38,143,114, 90, 87, 4,106,212, 53,220,242, -118,242,194,180,160,179, 75,166, 81, 39, 84,235,112, 68,217,140, 61,226, 50,212,247, 22, 89,118, 35, 77,235, 83,184,202,246,199, -112,111, 70,219,122,181, 6,171,108, 65,226,231,125,105,213,122,204, 75, 11,108,236, 27,130,252,141,176,118,155, 98, 2, 33,193, -175,238,213,251, 13, 81, 98,223, 52,197,206, 75,206,187, 71,165, 38,170,196,168,241,155,138, 85, 9,111, 46, 98, 52, 47,111,189, -188,183, 37,209,109, 10,103, 17, 22, 2,110,109,194,146,227,138,131,118,219,246,163,116, 11, 98,132,235,103, 52,122, 75,118,253, -157, 38, 77, 80, 90, 17,210,101,178,248,116,206,118, 75, 83,212, 28,101,175, 1,149,162, 45,226,190, 70,185,231, 0,203,149,228, -121,123,231,153,198,105, 91, 28,230, 88, 16, 36,112,211, 70,154,212, 24, 39,149,165, 18, 74,198, 72, 89, 35,105,100, 12, 41,231, -158,112, 57,145,137,231, 10,100, 94, 51,241, 87, 23,112,111, 30,211,112, 52,153, 38, 73,225,242, 10, 90,124,155, 50,146, 42,116, - 99, 45, 52,112,243,178,218,153, 12, 21, 85, 52,171, 42,205, 88,212,181,201, 75,149,209, 37, 91, 81,100,148, 51, 81, 75, 49, 50, - 6,217,173,183,155,188, 84,118,173,158, 32,172,235, 87,118, 54,166,179,183,149,203,134,222,225,242, 30,215, 80,233, 54,151,241, -165,100,213,106,245,122,156,138,221,227, 2,160,150, 46, 42,164,235,130,161, 57, 86,251,132, 51, 77,169, 64,173,174,167, 38, 59, - 85, 4, 56, 26, 3,109,118,123,135, 41,252, 96,110,135, 23,245,109,254,221,189,165,168,219,173, 91,123, 97, 87,216,251,190,175, -183,219, 85, 99,219,212,155,126,209,183,217,137,183, 10,131, 66,169, 76,169,205,176,225, 70,165,194, 83,180,116,125, 88,219,175, -148,178,243,175,199, 75,173, 59, 29, 61,249,246,206,238, 94,228,237, 61,211,181,155,117, 97, 50,205, 62,247,110,151, 14,183,114, - 57, 71,149,102, 55,111,211, 40,145,161,125, 74,213, 25, 54,141,222,227,180,202,188,130,169, 82, 23, 30,151, 57,136, 16,218, 83, -108, 72, 50, 38, 25, 64,114, 67,110, 47,253,229,176,174, 10,205,199,103,238,253,237, 99, 85,238,119,154,122,231,157, 75,174,215, - 74,238, 7, 25, 46,152,207,214,220,157, 58, 73,170, 74,109, 18, 30, 75,110,190, 29,121,180, 44,165, 42, 9,232, 21,240,162,151, - 56,225, 46, 16,143, 36,205,178, 88,214,186,130,176,206,181, 50,212,206, 37,168,141, 97,228, 37, 63, 46, 9,201, 90, 37, 96,103, -142, 25,155, 74,243, 26,157, 97,150, 33,237, 83,203,114,127,162,199,141,220, 86,188, 75, 85,151,241,125, 31, 2,167, 23,193, 83, -150, 54, 91, 79, 78,166,152,101, 85,109, 75, 81, 85, 61, 59, 60, 98,150,158,166,174,122, 58, 72, 42,106,150,136,102, 51,123, 10, - 85,205,152, 73, 43, 44, 16,206,123,218, 61,196,127, 12, 59,235,177, 53, 46, 29,169, 86,189, 55,136,234,109,215, 88,166, 26,197, - 38, 53,233,116,109,198,223, 91,198,222, 80,171,209,234,119, 5,221, 67,164, 25,151, 10, 5, 85,136, 33,154, 93, 49, 37, 18, 15, -233,100,202, 97,150,139,131,132,251, 87,179,251, 79,179,194,224,147,101,216,244,202, 5, 90,229,159, 17,119,149,211, 72,110, 69, - 46,248,110,163, 29,217, 43,129, 66,171, 79,122,116,167, 35, 90, 76, 72,147, 37,216,236, 37,215, 98,203,117,126,245, 45, 50,100, -114,186,222,133,219, 60, 77,113, 16,220,102, 29,123,136, 11,214,170, 86,194,217,230,148,229, 46, 98, 20,211,128,115, 50,125,254, -146,190,100,228,116,200, 4, 30,163, 7,187,151, 72,226,234,249,165, 72,105,119,173, 54,145,119,199, 91,105,138, 42,209,169,240, -173,203,214, 44,100,188,211,178, 16,205,110,152,208,135,112, 48,176,215,197, 10,171, 13,109,124, 69,109,200, 97, 95, 24,214,226, -126, 46,204,248,131, 53,169,253, 34,207, 26, 53,144, 71, 4, 79, 21, 56, 17,133, 22,229,150,231, 57, 26, 1, 47, 34,187, 2, 44, - 52,198,170,139, 50,202,126,130,126, 47,120,111,192,109,194,252, 57,154,229,220, 65,148, 9,205,116,180,137,154,214, 10,186,170, -162, 10,137,109, 91, 69, 71,150,198,235, 25, 10, 22, 25,169,163,100, 69,105,125,166,116, 70,126,237,240,173,188,242,233, 18,100, -237, 93,235, 42, 60,202,109,114, 92,138,190,220,221,209,196,104,148,181, 76, 74, 16,170,157,149, 92,105,110,132,210, 43,242, 74, - 19, 42,158,164,115,198,158,234, 36, 48,143, 6, 66,144,210,247,177, 85,202,124, 85, 41, 50, 23,238,234, 96,171,220, 84,131,201, - 81,167,186,242, 66,220,103,194,112,116,136,167, 49,204,218,135, 38,114,149, 36,142, 82,142, 24,109,205,249,100,111,109,188,154, -141,169, 87,121,132, 69,149, 25,154,133, 12, 70,102, 35,244,170,162,202,228,211,227,215,160,171,156, 70, 90,220,109,197,198,112, - 60, 25,150,134, 86, 98, 60,242,193, 74, 54, 70, 21,203,185,137, 49, 41,209, 55, 38,242,181,228,211, 26, 17,157,129, 46,114, 42, -180,121, 76,135,128,240,207,214,112,156,148,134, 86, 18, 75, 79, 49, 33, 50,163,165,120,248,146, 57, 73,105,106,159,147, 26, 7, - 37, 20,121, 74,249,129, 29,199, 81,176, 38,192,147,176,176, 11,229, 39, 28,113,196, 92, 57, 81,148,103, 21,249,110,121, 69, 46, - 69,155, 81,200,201, 87, 73, 60,114, 67, 44, 19, 46,155,235,139, 65,117, 46,165, 73, 11, 30,131,175, 80,250,185, 64,199, 74,170, -247,117,187,111, 83,215, 94,171,203,137, 65,135, 79, 67,143,174,161,207, 41, 13, 62,140, 15, 16, 83, 24,105,167, 37, 84, 28, 81, - 82,130,227, 69,105,245, 45, 71, 41, 66,191, 91, 76,133, 87,124,171,187,130, 29,167,217, 76,213,237,251,106, 66,189,205,119,162, - 28, 98, 37,199, 86,142, 16,162,185, 54,235, 12, 41,106,181,161,242, 45, 99,199,119,154,162, 48, 80, 81, 16,158,154,182,205, 62, -117, 86,178,221, 66,238,151, 81,166,214,156, 82,227, 66,168, 73,171, 77,171,198,152, 82,188,180,236, 27,145,222, 95,115, 36,148, -242, 70, 81,136,160, 29, 56, 67,138, 29, 54, 42,202,179,153,139, 37,154,143, 44,138, 93, 90,115, 13,179, 42, 84, 55, 84,228, 58, -130,154, 32,177, 34,167, 76,116,248, 83,164,158, 85, 21, 58, 66, 29,194,202, 84,242,134, 53,191, 74, 37,168,148, 34, 92,139,239, -126,187,219,125,133,150,228,146, 47, 98, 55,179, 1,136, 86,103, 62, 91, 69, 8, 36,153,106, 8, 60,182,111, 58, 40,216,157, 54, - 98, 36, 0,234,243,171, 58, 3,101,229,106,179, 43,139,104, 91, 70, 44,120,176,217, 45, 59, 21,146,164, 50,232, 71, 43,133,111, -117, 90,230,100,144,252,149, 40,149, 41,210, 74,150,181, 21, 44,149,171, 39, 97,160,209,196, 74, 98,138,211,204, 1,101, 39, 41, -232,160, 84, 80, 91, 86,122, 5,117,207,217,171, 93,167, 74,230,109,190,118,227,151, 50, 18, 67, 73, 80,101,207,212, 10, 45,182, -190,169, 65, 32, 16, 14, 72, 61, 50,113,157, 59,206,211,128,167,184,215,134, 84,218,139, 67, 9,202,136, 9, 81,207,134, 79,235, - 28, 17,243,252,113,169,165, 53, 56,166, 68,176, 35, 72, 23,245, 29, 5,183,191, 78,155,254, 24,174,234,171, 13, 76,138,146,157, -228,111, 49,216, 94,228,111,219,173,201, 22,181,250,250,130,207, 61, 76, 83, 78,129,201,136,206, 30,102,214, 63,241, 74, 61,219, - 81,242, 79, 81,141, 92, 33, 83, 11, 11, 43, 74, 70, 79,235,128, 48,146,159, 95,183, 89,187, 48, 16,248,113,190, 78,100,130, 82, -160,176, 65, 32, 28, 5, 99,215,168,252, 53, 65,216,162, 34,146,199,235, 39, 31, 2,200,193,233,215,144,231, 79, 81,206,164,117, -233,252,125,253,240,213, 89,206, 82,241,176,243, 14,190,132,117, 7,227,110,189,143, 94,183,197,134,155, 9, 14, 77, 73, 35,160, -115, 31,105,236,123,140,118,214,207,217,208, 91, 67, 45, 2, 19,212, 36, 12, 14,163,212,156,142,135,247,233,135,163, 69, 10,155, -158, 95,135,196,200, 0,103, 57,200,252,115,173,138,183, 84,150, 18,214, 79, 47, 42, 82, 64,200,200,192, 25, 63, 34, 51,173,102, -107,129,181,255, 0,158, 33, 53,234,201, 4,224,108,194,246,251,207,207,175,124, 57,232,109,180, 51,202, 72,248,130,113,142,248, - 78, 0, 31, 35,235,246,233,191,188, 42,206, 66,108,193,167,132,253,103, 41,181, 0, 71,255, 0, 2,140,174,134, 73, 35,245, 92, - 39, 33, 30,121,235,229,171,141, 90,228,106, 11, 32, 52, 80,236,183, 73, 12, 70, 4,229, 74, 7, 30, 43,152, 63, 3, 41, 29, 84, -123, 28,224,100,235, 5, 13,173,197, 57, 46, 67,138,125,249, 46,120,146, 95, 88,253,117,156, 97, 40, 39,245, 91, 0,225, 35,176, - 29,180,142,179, 80,220,168,205,149,126,211, 15,223,164, 16,122,250,158,195,208,145,134,108,155, 45,116,149,107,106,210,241, 41, -186,161,255, 0,120,194,221, 71,236, 47,127,218, 35, 79, 77, 86,176, 66,163, 8,205,225,197, 43, 56, 37,105, 65, 56, 36,252, 75, - 82,212,174,171,112,149, 28,156,245,207, 93, 15, 45,216,241, 57,146, 57, 27, 56,200, 72,192, 89, 78, 15, 85,168,159,128, 99, 39, -226, 63, 33,223, 89, 20,167,114,130, 10,130, 80, 72,248, 26, 31, 30, 65, 0, 16,165, 3,208,231,174, 61, 61, 53,129,212,188, 52, - 7, 20, 82,214, 78, 74,148,226,186,164,228, 18, 84,181,103, 36,244,238,122, 30,157, 53,185, 26, 44,106,170,160, 1,238,236, 54, -253,214,249,247,206,169,100,122,153, 25,234, 36,251, 71,160,233,212,122,216,124,236,119,197,146,116,196, 43,156, 23, 20,234,176, - 66, 83, 24, 44, 50, 18, 79, 66,235,132,167,159, 61, 50, 50, 18, 9,206, 15, 83,172, 58,116,165, 37, 64, 4,182,218, 73,199, 59, -139, 10, 82, 73, 66,186, 33, 13, 30, 94, 96,174,108,228,231,168,198,123,139,140,202,131, 79, 30, 70,148,227,238, 33, 74, 65,102, - 43, 97,196, 54,147,211,226, 81, 41, 74,129, 0,103,226, 56,236, 70, 51,172, 78,114,228,243, 5, 43,193,100,115,243, 36,120,134, - 75,201,194,128, 42, 71, 54, 17,204, 60,206, 74,114,122, 18,116,112,214,210, 59,223,241,219,240,190,226,251,116,251,158,201,176, - 10, 23, 73, 61,143, 95,141,182, 61, 58, 16,167,226,118,197, 23,220, 24, 42, 82,202,147,250, 50,234,130,146,217, 45, 36,168,133, - 45, 94, 71,175,197,215,174, 49,223,174,177,233, 50,208, 66,131,105, 61,214, 66, 64, 78,114, 64, 32,244, 61, 27, 42, 36,100, 30, - 80, 0, 29,250,232,185,104, 66, 49, 33,199, 21,150,220, 43, 66,158, 90,158, 9, 94, 72,229, 74, 84,180,165, 36,173, 63,234,146, -156,146, 6,173,114, 20, 80,180,165, 72, 80,112, 20,145,206,164, 41, 92,139, 1, 96,182,144,172, 56,130, 20, 14, 50, 0, 39, 56, -233,141, 46,141, 98, 54,244,254, 95, 29,247,198,133, 76, 90,206,166, 58,175,233,178,237, 97,238,254, 93,189,215,178,204, 42, 33, - 93, 64, 42,248,136, 81, 57,235,147,209, 95,205, 61, 51,156,117,229,239,140,107, 16,158, 7, 42,147,206, 74,138, 85,241,171,148, - 17,140, 96,145,216, 96, 12,125,253, 6,178,233, 89, 1, 42, 89, 0,224,140, 40, 16,146,179,204,164, 55,201,216, 60,158,153, 29, -114, 59,100,118,197,106, 10,207, 40, 35,170, 73,230, 36,114,149,103,155,161, 9, 87, 86,241,147,231,213, 88,193, 58, 92, 49,218, -223,135,110,159,187,221,238,253,216,103,145, 0, 34,219,123,186,124,143,147,136, 13,251,114,237,134,237,143,105, 46,242, 73, 13, - 22,133,233,109,109,125,248,227,197, 1, 40,126, 69,118,199,166,197,148,182,249, 0,241, 0,122,146,174,101, 31,136,168,158, 98, - 78,117,200,194,180,168,126,137,101, 88,239,233,246,107,183,127, 72, 24,180,175,104, 99,158, 27,161,215, 19,195,254,205, 37,246, -129,255, 0, 34,180,195,184,124, 52,148, 17,150,202,152, 45,175,169,201, 11, 7, 0, 99, 92, 70, 83,105,199, 81,140,246,229,242, -249, 29, 75,178,155,181, 13, 41, 59,217,109,211,176, 36,116,235,219,242,199, 51,241, 50, 44,124, 69,158, 34,159, 47,181,212, 31, -255, 0,116,172,199,247, 18,113, 76,168, 40,116, 72, 29, 62, 47, 63,188,117,208,235, 35, 24,207, 92,244,254,221, 86, 40, 35, 62, -152,207, 95,232,251,116, 51,133, 67,168, 78, 71, 81,243,251,244,236, 6,194,221, 48,206,160, 29,173,211,161,253,216,162,179,229, -143,191,211,175,217,170, 11, 0,227,176,245,245,199,175,207,160, 58,244,188,254,177,201, 82,124,188,177,231,246, 29, 81, 39, 39, - 58, 93, 70,194,221, 63,158, 20, 24,164,230, 60,136,232, 72,244, 39,183,109, 12,178, 9, 61,242, 59,122, 30,223,214,116, 74,241, -130, 73, 3, 7,167,246,245,213,189,240,234,136,240,212,148, 97, 95, 22, 70, 74,128,236, 58,249,233, 68,235,140, 3,126,155,227, -193, 36,156,254,113,165,175, 10, 63,237, 99,238,206,116,180,125, 62,182,191,207,191, 25,199,180,146, 15, 65,159,151,174,171,165, - 93,142, 58,142,227, 61, 70,135, 31,120,254,145,251,117, 92, 96,245, 30,127, 46,250, 37,188,191, 15,195,231,231,124, 12, 86,241, - 19,156,117,235,231,142,159,126,136,111, 10,193, 74,187, 28, 99, 24,201, 62,191,136,252, 53, 65, 9, 0,131,220,244,251, 58,232, -164,225, 61,178, 7, 94,221,254,236,246,210, 76, 24,139,124,252,223, 25,219,239,197, 69,160,168,119,233,221, 93, 78, 6, 49,216, -125,186, 33,164,115, 36, 40,247, 29, 66, 71,160,233,235,170, 64,133, 15,207,113,215, 69, 36,242,224,244,244, 35,208,105, 34, 0, - 39,190, 49,143,104,101, 42,238, 57, 85,215,168,198, 72,251,188,244,123,104, 72, 72, 24,201, 79, 78,191,187,166,132, 65, 39,226, - 72, 25,244, 39,167,152,251,180, 90, 22,144, 1, 87,195,147,231,252,236,250,124,244,153, 23,216,158,159,233,140, 17,124, 28,214, - 58,114,244, 24, 61, 62, 93,191,167, 70, 32, 12,103, 39,230, 60,137,199, 94,154, 13,178, 23,215,168, 29,253, 59, 99,250,245, 93, - 11, 73, 95, 47,114, 62,127,102,127,103,150,147,194, 39,221,190, 13,108,129,145,140,228, 16,160, 70, 82,164,158,133, 36,121,130, - 9,200,212,133,253,149, 30,214, 40,187, 66,197,191,195, 39, 20,245,169, 15,236,235,143,162, 14,220,110,140,213,189, 54,163,181, -211,100,184, 17, 30,135,114, 58,162,165,203,177,148,226,240,211,164,149, 65,206, 21,150, 70, 83, 30,118,242, 14,122,121,126,206, -218, 33, 39, 37, 68,227,168,229, 32,128, 82, 65,232, 65, 7,184, 56,237,231,157, 55,102, 89,109, 54,103, 78,208, 84, 37,251,171, - 11,106, 86,236, 71,240, 32,236, 71, 81,211, 14,249, 22,123,153,112,230, 99, 22,103,149,205,202,158, 63, 43, 43, 92,199, 44,100, -130,209, 74,160,141, 72,214, 29,195, 41, 1,144,171, 0, 71,233,189, 78,163,199,149, 6, 5,118,137, 50,159, 88,161, 86, 97,179, - 50,145,112,209,228,179, 81,164,214, 32,202, 66, 93,106,101, 62,161, 25, 74,109,214,150,210,146, 82, 66,186,115,105,198,165,210, -220, 45, 54,156, 0,210, 18,130, 16,156,144,132,160,130,113,234,163,215, 63,102,191, 63,142, 13, 61,168,188, 90,112, 88, 35, 91, -187,121,119,179,119,109,106,165, 54,185,123, 83,184, 1,218,213,172,195, 74,112, 25, 31,193,231,222,112,191,110, 58,164, 21,224, - 48,176,215, 49, 7,195,198,117, 59, 45,161,226,130,149,124,109,157,131,126, 59,105, 34, 25,190,109, 42, 53,196,184,241, 30, 15, -198,138,237, 78, 35, 82, 31,140,211,167,245,219, 66,220, 41, 7,190, 19,170,167, 56,203,165,200,101,140, 85,149,104,230,213,203, -101,189,155, 78,155,220,117, 82, 3, 46,198,227,123, 43,181,137,199, 98,248,121,226, 4, 60,107, 28,144, 81,211, 52, 25,134, 94, -168,243,195, 33, 13,165, 88,233, 15, 20,151, 2, 68,212, 8, 23, 84,117,184,212,128, 27,157,174,166,211,138,218,110, 68,166,202, - 12,226,136,177,129,232,166,216, 72,248,148, 83,159,213, 41, 3, 58,199,247,101,136,115, 44,202,189,191, 58, 53, 62,165, 75,147, - 13,232,255, 0, 85, 84,225, 70,168,193,124, 22,212, 1, 92, 57,109,173, 42, 25,207, 92,107, 7, 94,247, 82,222, 44,120, 49, 37, - 54,166,153, 62, 27, 97,162,180,183,147,212, 19,228,122,244,251, 53,166, 60, 82,241,139, 69,219,203, 98, 69, 54,140,180, 86,247, - 30,234,150,139, 66,201,183, 25,149, 29,233,234,185, 42,196, 70,134,169,113,219, 89,247, 70,154, 91,161,107, 46,114,242,132,100, -244,206,153,205, 97,168, 2,158, 4, 44,100,219,125,135, 64, 78,228,219,222, 73,244,222,221,174, 76,131, 35,204,179,124,218,130, -135, 45,164, 51, 85,202,227, 76,106, 62,206,255, 0,109,219,126, 90, 70,190,103,145,136, 84, 93, 78, 72, 23,191, 48,247,123,113, - 54,107, 98,106,146,105, 9,180, 41, 21,123,162,141, 80,151, 62,153,110, 91,228, 81,105,212,218,178,156,241, 34, 77,169, 72,130, -226, 75, 2, 57,229, 90, 91, 71, 95, 19, 25, 61, 49,174,102,239,183, 16, 27,245,196,245, 64, 82,110,171,182,181, 46,217, 96, 6, - 35,218,212,137, 51, 32,219,108,198,105, 92,201, 85, 69,199, 30, 6,166,164,128, 10,220,112,144, 72,251, 53,214,202, 31,178,178, -163,118, 58,154,214,227,110,196,250,141,229, 94, 90,234,215, 82,232,240, 89,168, 70,166, 84,170, 4,190,168, 41,121,249, 0, 76, - 90, 29,119,151, 56, 9,248, 73, 25,214,146,202,219, 91, 51,104,184,161,111,104, 55, 2,101, 83,114, 54,198,194,191,169, 77,110, - 68,221,177,164, 63, 85,175,214,237, 88,241,211, 82,147, 76,141, 78,128, 22, 91, 87,142,150, 98,205, 74, 85,132,248,171,248,142, - 53,173,150, 83, 84, 83,203, 81, 44,142,139,160, 27, 2,160,233, 3,114,117, 16, 12,141,127, 70, 80, 9, 35,125,241,233,239,130, - 41,224, 38,103, 13,117, 54, 67,153,205,226, 87, 28,112,190, 95, 45,125, 92,210, 83, 86,187,242,226, 42,178,174, 80,149,113,165, - 44, 65,229,100,134, 4,141,150,122,141, 81, 51, 73,162,237, 30,168,196,225,210,109,131,180,183,158,251, 93,182,173, 90, 77,131, - 96, 89,181, 75,242,173, 86, 98, 49,102, 9,183, 41, 18, 99, 82,213, 61,169,147, 28,108, 26,115,213,233,208, 41,241,139, 73, 89, -155, 50, 88, 98, 57, 82,144,225, 71, 44,173,110, 47,174,107,174,254, 98, 13, 58,249, 85, 6,131, 87,171, 39,220, 44,241,181,244, -153,180,166, 32, 5,149,154,122, 42,162,227, 19, 75,165,128, 71,188, 56,178,174,115,204, 82,145,128, 36, 3,237,235,223,234,222, -215,112, 55,182,219, 31, 86, 98, 61,181,187,220,112, 95,208,183,126,253,180, 97, 54,220, 21,109,191, 13,155, 89, 33,113, 54, 95, -106,218,165, 50, 18, 40,148,150,231,154,107,198, 55, 42, 67,242, 41,179, 93,113, 42,113, 74, 86,162, 97,177, 48,209, 39,113,161, - 58, 64, 13,211,225, 75,148, 51,140, 36,165,190, 84,143,159, 65,171, 75,135,178,168,107,242, 90,172,214,180, 51, 59,234, 16,134, - 17,190,133, 64, 20, 55,158, 54, 2, 70,146,225,136, 0,174,157, 43, 97,185,243, 63,233, 63,244,231,241, 66,159,196,102,225, 15, - 14, 51, 37,224,188,143,132, 9,142,161,114,156,207, 55,165,122,154,211,180,201, 83, 95,148,230, 89,116,181,212,212,192, 8,224, - 5,150, 25,142,186,190, 84,124,245,138, 25,117,109,141,230,157,201,225, 47, 99,174,184,147, 81, 37,251, 42,185,185, 27,109,239, -116,234,109, 66,219,122, 4,155, 82,247,170, 85, 97,120, 77, 63, 82,121,198, 42, 45, 83,110,106, 65,247,182, 36,165, 14,184,226, -150,194, 25, 9,113, 3,110,182,151,139,125,212,183,132,104, 23,139,113, 55, 18,137, 24, 33, 42,171,202,150,138, 77,231, 10, 58, - 80,148, 41,215,106,105,101,113,238, 23, 2, 0,109, 6, 99, 41,127,224, 0,190, 84,115,174, 89,251, 50,110,182,111,109,161,226, - 3,101, 36, 58,211,149,138, 21, 94,218,222,203, 78, 35,202, 81, 46, 82,231,199, 69,129,126,193,167,180, 63, 93,214,103,194,179, -170, 50, 48, 15, 42,103, 21,168, 17,147,174,130,217,182, 49, 51,154, 91,177,188,102,144,164, 58, 35,144,191,242,169, 25, 99,159, -148,124, 72, 7,226,207, 80, 49,207,131,216, 83, 92, 69, 69, 29, 6, 99, 95, 73, 34,235, 8,250,148,236, 9, 14, 17,197,138,133, - 2,215,210,116,217,110,164, 91, 97,105,119,134, 62, 33,208,248,151,225,118, 89,196, 28, 81, 28, 85,249,213, 91,213,189, 89, 99, - 36,143,237,143, 83, 41,169,117,146, 89,165,169, 6,105,139, 75,170, 73,228,145,245,134,150, 73, 9, 44,122, 97,110,111,221,149, -120, 67,165,189, 58,161, 34,214,201,105,134,233, 55,148, 69, 83, 11, 50,221, 90, 92, 68, 40,213, 72,110,200,135, 46, 73, 41,108, -171, 14,167,245, 84,130, 65,200,211,166, 94,171, 84,102, 51, 47,194,143, 89,131, 9, 5,184,240,105, 85, 40,147,218, 74,222, 40, - 89, 97,227, 2, 67,137, 97, 78,252, 5,254,110, 85,114,132, 39, 9, 72, 32,233, 93, 14,201,122, 65,143, 22,156,212, 69, 86,100, - 46, 44,135, 38, 57,135, 33,219,180,231, 22,234, 83, 60,161,192, 10,170,170, 8,144, 33,178, 71,233, 29, 30,242,191,208,181,133, -191,182,125,129, 22,137, 24,184,219, 16,105,244,122,116,229, 24,172,196,140,227, 51,106, 82, 37,172, 0, 92,153,226, 37,249,213, - 57, 83, 22,165, 18,225, 82,222,113, 69, 74, 9, 71,234, 68, 9,208,198,209, 94,219,218,228, 15, 83,112, 65,184, 62,227,110,189, -109,178,169, 62, 83, 5,218,149,249, 37,181, 42,198, 87, 89, 80,199,253,217, 86, 70, 70, 98,204, 20,146, 89,197,201,101, 22,230, - 59,242, 41,215, 69, 77, 73,128,236, 67, 18, 58,167,154,138,231, 60, 4,102,158,150, 80, 82,130,218,157,115, 45,198,101,174, 84, -165, 1, 68,114, 52,130,156, 99, 89, 45, 34,212,134,228, 73, 16,146,227,205,181, 1,201, 78, 77,171, 38, 42,218,143,227,144, 4, -201, 12,201,115, 36, 71, 12, 32,165, 43, 3,226,248,212,144, 10,146, 53,126,180,172,233, 73,154,154,212,168,202, 93,197, 80, 97, -136,104,140,211,242,100,192,162,196,109,194,166, 41,208,221,148,163,201,135, 23,227, 62,232, 78, 95,127, 36, 0,218, 27, 1,238, -160, 90,138,170,136,112, 34,196,122,116, 24,179, 26, 97,224,201, 66,151, 91,158, 22,121, 26, 8,112, 2,184,136,155,133, 28, 30, - 89, 15, 32, 1,204,132,117,220,138, 25,100, 69,141, 33, 42, 95,185,185, 36,108, 64,216, 41, 3,125, 76,119, 96, 54,234,214, 58, - 53,249,220, 11, 78,232,142,144,194,128, 23,101, 1, 6,175,214, 62,103,112,219,249, 82,197, 84,238,108, 17,110, 52,139,118, 47, - 29,184,225,215,110, 42,187,173,184,204,207, 72, 80, 85,167,183,182, 36, 9,173, 70,184,111,106,192, 66,170,116,219,106,146,227, -200, 80,164, 50,235, 10, 77, 66,191, 84,117, 10,106,153, 79,228, 73,241, 36,174, 36,119,184, 21,190, 59,243,185,156, 69, 84,159, -170,238, 77,125,233,212, 64,224,114,153, 96, 80,157,149, 74,219, 91,113,168,200, 9,139, 79,161,218,173,191,225,204,247,118,130, - 18,103,207, 18,106, 18, 92, 10,125,231,194,214, 80,151,139,218, 61,196, 11, 91,199,196,197,237, 22,149, 81, 84,157,189,217,229, -191,180,182, 2, 88, 11, 17,100, 68,160,212, 84,221,239,112,178,210, 9,241,102,214,111,225, 52,151, 48, 84,168,148,168, 76,161, - 74,109,180,160,115,231,137,235,103,118, 56,127,147,104,217, 55,156,251,107,111,175,235,178,220,141,117, 86,109, 75,154,123,113, -238, 29,183,163, 87, 2, 87,106,211,239, 74, 50,150,145, 64,189,234,148,231, 29,158,154, 36,149,174,165, 75,167,166, 52,138,188, - 24,138,159, 21,133,236, 83,112,252,185,180,169, 8,169, 20,176,234, 0, 18, 88, 7,176, 39, 89,211,114,119, 4, 70,189, 44,161, -148, 22,190,159, 75,188, 43,225,207, 12,190,140,158, 22,229, 62, 49,120,177, 11,207,199,124, 79, 74, 43, 96,166,138,138, 92,199, - 54,166,167,120, 99,153, 50,252,166,134, 37,121,162,150, 40, 36,137,243,154,231,228, 65, 75, 44,172,185,141,117, 61, 12, 49,202, - 64,184,109,119,103,132,181, 74,129, 79,134,194,135, 43,190,237, 21,191, 29,100, 96, 37, 40,117, 73, 82, 99, 35, 32,124, 88, 42, - 63,170, 53,226,221,219, 54,154,144,210,159,144,184,110,188,191, 9,111, 50,130,176,158,110, 80, 84,251,171,202,128, 1, 93, 73, -229, 25, 56, 37, 0,140,233,155,215,238,236,178, 81,245, 6,230,196,184, 38, 72,117,114,146,204, 10,157, 18,124,222, 68, 55,238, -229, 13,192, 85, 62, 51,171,139,134,207, 35, 41,140,233,231,202,146,147,144,117, 96,166,239,230,251, 91, 78,170, 52,187,154,100, -238, 69,175,198,143, 95,161, 83,106, 18,154,101, 79,165,231,152,117,164, 67,133, 45,134,212, 82, 91,194,156, 5, 45, 44,164, 2, - 66, 84,155, 34,147,133,243, 36,165, 20,116,217,188, 35,151,238,126, 97, 4,254,177,125, 68,239,211, 82,223,173,172, 0, 24,167, -179, 47,246,170,125, 30,232,243,104, 31,139,124, 24,227,142, 30,161,169,102,142,147, 50,172,203, 50,121, 41,229, 42, 69,218, 3, - 30,118,241,202, 0,243,200, 41, 94,165,129, 22, 42, 88,227,163,116,203, 17, 8,185, 93,183,106,208,252, 38,221, 75,239, 69, 82, -148,212, 98,226, 86,217,118, 44,165,167, 9, 65,101,223, 60,148,144,181, 96,168, 43, 0,252,174, 91,214,181,183, 10,117, 86,179, - 50,153, 73,166, 83,194,214,252,233, 83,209, 26, 43, 44,162, 64,140,219,206, 58,234,210,112,235,191, 11, 64,100, 44,244, 4,168, -145,172,123, 98,119,186,189,184,148,118,141, 70,148,197, 50,191,111,207, 66,201,167,161,249, 52,249,241, 42,212,229, 7,204, 15, -126, 66, 92,110, 3,140,161, 73,118, 19,202, 81, 97,108,148,161,199, 27, 91, 78,107, 86,119,238,216,221, 43,230,252,250,182, 13, - 58,183, 46,147, 70, 13, 38, 4, 56,116,185,179,162, 69, 46,180,223,141, 81,142,184,140, 41,147, 41,114, 84,242, 75,171, 82, 84, -194, 91, 72,230, 64, 90,214,181, 33,200,201,170, 43, 89, 94,208, 24,128, 15,166, 66, 20,216, 3,112,111, 96, 88,110, 78,159,118, -155,220, 99,160, 60, 98,250, 99,112,207,134,255, 0, 71, 46, 29,250, 64,120, 83,195, 50,248,169,148,241,245, 69, 30, 93,144,193, - 67, 79, 83, 28, 82,215, 85,189,122,153,115, 32,105,154,178,134, 26,105,168,101,163,146,156,211,189, 75,102,130, 44,173, 68,114, - 77,207, 71,110, 15, 18, 59, 61, 18,251,183, 45,234,180,107,233,187, 1,250,171, 17,238,235,214,213,164, 83,170,247, 53, 22,146, -247, 59,114, 43, 22,149,141, 85,159, 17,119,100,134, 63, 68,234,163,187, 34, 18,164, 53,206,152,138,117,244,161,183, 58,193, 87, -225, 15,135,235,154,206,165, 93,187, 71,198, 37,215,186, 16,174, 74, 84,106,197,183,252, 7,217, 27,135,115, 66,233,111,133,248, - 82,110, 88, 27,108,185, 18, 44, 98,226,138,217, 76, 74,176, 98,168,211,208, 31, 14, 67,113, 0, 40,199,138, 77, 58,219,219, 50, -244,105,201,133,114, 94, 12, 56,227, 82,225, 41,246,106, 20,107,126, 74, 1, 10, 21,105,145, 29, 83, 87, 29,105,183,135, 90, 99, - 14, 24,108,168,230,161, 33,210,145, 21,121,134,197,241,157,196,167, 13,119,204,187,239,101,247, 94,228,180,103, 85, 93, 74,238, -122, 27,239, 11,130,196,190, 89, 74, 3, 65,139,247,111,234,106, 52,187,152, 37,129,200,203,193,152,211, 98, 54, 3,112,101,197, -108, 4,133,235, 56, 58, 10,228, 87,202, 71,178,152,134,242, 75,119, 19, 27,222,225, 88,150, 31,254, 96, 54, 34,214,141,213,129, - 30, 77, 63,251, 74,190,146, 28, 63,196,245, 21, 94, 41,241, 81, 90,138,137,238,120,103,135,232,114, 90, 51,145,166,250,161,204, - 42,243, 28,191, 56,115, 80,172, 17, 36,201,106, 30,171, 49,165, 99, 58,215,215,101, 85,180,199, 46,155,165, 84,250,206,231,112, -167,186, 84,202,229, 58, 84, 41,147,169,133,248,238,197,175, 91,119, 93, 18,221,187,232,146, 84,224,168,218,183,125,171,122, 80, -169,146, 69, 62, 91, 77,165,197, 50,182,199,186,202, 90, 37,197,125,153, 76,161,221, 73, 67,102,161,181,186, 27, 75, 97,238,133, -149, 75,174, 53,111,223, 86,211, 87,109, 54,213,185, 35, 77,146,237, 17,137, 14,200,167, 84,169, 77, 86, 23, 24,190,212,104, 85, - 56,114,217, 98, 72, 75,241,159,101,166,228, 0, 16,240, 9,226,206,213,123,125,246,154,253,183, 26,179,248,203,225,125,202,139, - 46,178,168,179,235,251,104,229, 22,255, 0,179,166, 52, 82,164, 41,247,246,211,115,158,110,161, 69,150,180,149,143, 14,155, 84, -150,134,210,172, 54,180,249,236,206,213,123, 69, 61,143,214,236,216, 85,123,123,115, 55,238,195,166,195,122, 53,197, 19,108, 46, - 26, 79, 16, 44,236,253, 26,226,128,250,223,131, 85,141,183, 84,234,188,232,106,173,199, 90,212, 89,142,137, 15, 83, 81,144,125, -209,101, 40,228,141, 47, 10,102,180,149, 86,154,156, 24, 92, 29,108,129,135,154,226,204, 2, 44,137,115,111, 54,226,254, 93,182, - 24,147,120,185,244,188,240,119,233, 7,195,249, 54,103, 93, 17,224,159, 17,114, 33,203,106,209, 45, 37, 92,121,173, 8, 71, 34, -150,170, 58,150,200,101,166,150, 41,220, 61, 44,139, 5, 76,112,171,213, 71, 20,136, 39, 4,118, 6, 29,186,134,194, 27,148,195, -193, 62, 44, 68,187, 21,106,102, 84, 30, 70, 85,205,142, 80,158, 87,201, 81, 7,153,192, 0,192, 80, 64,211,149, 66,165,180,203, -136, 67,104,240, 27, 90,130,130, 17,226, 37,166,148,162, 1, 67, 73, 94, 66, 83,252,227,140, 39, 39,160,215, 35, 46,223,110, 95, -179,178,219,105,233,244,219,195,120, 47,233,139, 89,112, 67,182,118,102,191, 77,247,149, 21,115, 41,196,213,175, 41,244,200,241, - 80, 85,142,139,201,194,137, 9,207, 77,115,159,136,255, 0,164,222,229,137, 30,163, 15,134,190, 13,228, 85,153, 9, 87,213, 91, -165,191, 87,204,167, 45, 40,174, 45, 76,182,204,169, 86, 14,216,198,101,228,255, 0,133,202,109,178,212,219,137,132, 41,194,148, -158, 96,180,131, 37,202,248,118,182, 90,133,138, 42,118,185,221,117,133, 75,133, 32, 29,216,168,185,189,236, 14,163,109,129, 0, -219,143,243, 63, 16,184, 90,150, 55,105,115,232, 42,165, 31,169, 77, 42,212,177, 32, 14,130, 18,226,224, 0, 53, 57, 0,216,238, - 55,196,195, 45, 68, 22,211,205,146,176,133, 54,151, 20,132, 15,133,229,231,144, 40,224, 37, 5, 65, 39,151,155,148, 18,158,152, -235,167, 48, 77, 75,205,166, 35, 10,241, 36,158, 64,164, 52, 60, 79, 9, 9,207, 48, 83,160,114,149,103,148, 96,103,182, 73,215, -230, 7, 43,219,203,237, 79,157,190,246,230,253, 61,196,180,212, 75,181, 94,156,213, 51,101,233,182,221, 22,223,225,210, 69, 2, -168,227, 11,169,218,181,125,167,162,176,212,122,212, 25, 8,142,218,126,176,154,244,170,211, 68, 7, 88,168,182,234, 82,177,213, -203,167,233, 12,113,211,199,133,235,182,188, 54,240, 99,176,227,101,238,251,254, 37, 46,135, 81,183,246,214,113,190,247, 95,112, - 47, 39, 98, 37,203,129, 54,157,199, 86,136,195, 22, 53,140,193,106, 91,252,225,149,204, 98, 19, 75,118, 84,180,165, 7, 18,169, -178, 74,170, 69, 51, 56, 73,209, 23, 81,210,224, 42,219,115,204, 50, 5,109, 34,219,149, 87, 3,115,219, 16, 36,241, 71, 32,204, - 22, 85,167,138,163,219, 12,129, 32,128, 37,228,152,177, 1,116, 88,216, 92,246,107, 17,218,230,195, 19,125,171, 92,246,205, 30, - 90, 32, 84,171,244,168,149, 5, 16, 61,205, 83, 89,247,180,147,216, 56,218, 23,148,121,247,198,178,122,125, 22, 5,114, 40,154, -138,154, 22,210,134, 80, 99,180,183,112, 79,162,136, 1, 95,118,123,235,152,220, 17,123, 63,247, 3,103,237, 26, 77,219,197, 85, -255, 0, 51,114,119,174,160,202, 42, 21, 90, 12, 74,180,170,149,181,104,202,120, 37,197,211,222,171, 73, 81,114,229,171,182,181, - 40, 63, 37, 88,100,184,149,120, 41,228,194,143, 75,153,101, 48,185, 91,107,153,134,155, 1, 8,109,165, 41, 41, 74, 64, 1, 32, - 4,224, 99, 3, 80,103, 78, 51,204,101,157,185,180, 57, 21, 10,146, 34, 81, 20,149, 19,184,236,206, 95,148,177,131,216,104, 15, -110,168,167,108, 60,209,182,123, 57,246,138,169,146,133, 91,117,142, 38,105,152,127,215, 43, 89, 24,145,251, 10, 7,241,197, 84, -154,117, 14, 91, 72, 18,147, 35, 46,114, 97,104, 83,107, 42, 39, 25, 0,249,254,115,167, 66, 11,229, 77,120,141, 0,191,209, 21, - 33, 25,229,241, 84, 82, 74, 83,146, 59,103, 90,221, 94, 77, 82,101,118,154,148,130,244, 86,221,202,228,255, 0, 60, 39,160,229, - 89,254,119,200,247,211,203, 6,164, 88,105,150, 65,236,148,131,147,213, 56, 24,206, 62,221, 45,195,237,153,206, 43,169, 51,119, - 73,100,164,125, 34, 72,211, 64, 97, 96,110, 1,191, 81,243,214,210, 12,210,138, 24, 41, 40,102, 89, 57,178,213, 33,105, 1, 32, -244, 32,111, 96, 45,125,246,219,221,139,140, 97, 48, 58,236,154,131, 46,153, 46,146, 87,204,146, 82,132, 15,242,109, 36,167,167, -132, 6, 59,119,206,190,200,170,100,132,160, 21, 41, 56, 1, 36,134,210,133,100,156,114,158,195,191,225,170,166,170,211,105,248, -149,212,255, 0, 59, 56, 36,156,100, 15, 64,113,246,235, 24,171,213,226, 60, 10,142, 60, 84,244, 75,137,232,164,103,245, 65, 82, - 71, 80, 58,100,117, 7, 79,209, 82,242,147, 69, 59,116,245, 27,159, 93,250,111,240,235,241,195,116, 85,144, 77, 56, 50,195,229, - 27,121,122, 40, 22, 2,202,123, 1,254, 33,247,226,229, 38, 74,212,210,138,159, 75, 96, 2, 2, 89, 3,156,146, 72,192, 46,118, -242,234, 6,176,138,131,208,130,143, 59,105,144,180,243, 97,114, 84,183, 74, 71,117, 30, 85,124, 41, 72, 32,103,160,201,234, 15, - 82, 53,100,169,214,165, 52,218,131, 78,182, 91, 7, 5,229,115, 43, 41, 62,101, 9,253, 85, 99, 29,115,128,122, 16, 53,132, 78, -168,190,250,242,169,137, 87, 33, 4, 48, 26, 80,111, 0, 28,172,132,175,226, 56, 4,128,162, 71,159, 77, 32,237, 34, 54,153, 1, - 86, 59,239,247,110, 15,243,248,219,221, 40,164,162, 89, 84,201, 21, 66,136,191,195,112,122,116, 32, 11,143,131, 90,221, 78,196, - 28, 93,170, 53, 86,220, 45,182,214,121,193, 56, 75, 24,202, 63,156,175,242,120, 8, 79,194, 49,147,208,172,140,107, 28,144,185, - 14,165,196,243, 54,128,227,107, 95, 40, 1,247,148, 10, 82,160,148, 36,114,161,156, 18,146,126, 53, 99, 7,225,193, 26, 21,201, -165,223,209,170, 87, 43, 69,196,145,224,199,109, 32, 21,142, 84, 37, 68,147,135, 50, 73, 61, 7,235, 99, 61,180, 42,150, 9, 83, -110, 45,199,193, 66,138, 91, 83,156,173,178, 57, 84,149, 20,132, 36, 4, 47, 4,158,234, 33, 74, 7,212,107, 34, 85, 36, 91,174, -195,111,187, 14, 2, 4,136, 88, 88, 50,239,114, 9,216,252, 64,239,107,131,210,253,111, 96,106,135, 9,241, 91, 90,152,154,224, - 81, 10,117,183, 66,150,132,132, 32,132,199, 90, 18, 18,211, 62, 25,202,136,229, 86, 80, 71, 55, 78,180, 86,211,138, 90,218,109, -210,132,173, 42, 40,195, 97,226,160,188,146,149, 61,202, 17, 24,252, 7, 4,147,128,148,146,114,179,143,162, 72, 66, 20, 93, 82, - 91, 32,243,151, 0, 13,184,226,121, 87,250, 54,210,216, 3, 57, 40,248,112, 84, 48,188,119,233,112,142, 86,234, 29, 75,124,173, -161,158,235,112,133, 50, 75,156,174, 56,246, 66,135, 48, 3, 10, 10, 0,128, 64, 10, 4, 29,108, 70,250,118,191,227,252,183,237, -110,134,223,125,175,163, 80,140,221,139, 15, 94,194,214,251,186,251,205,239,140,110,108, 82,150,189,228, 33,212, 54,225, 10,142, - 29,108, 40,168, 1,209, 40, 65, 63, 3, 28,169, 5, 42,200,193, 95, 80, 71,124, 14,168, 18,210, 86, 21,203,202, 82,160, 8, 0, -169, 41, 24, 9, 81, 60,184, 87,196,165,224, 12, 28, 28,231,190,156,202,203, 43,100, 60,180,187, 46, 83,142,128, 90, 68,167, 20, - 70, 74,148,144,167, 1,235,149, 35,157, 71,249,216, 72, 0, 37, 61,155,106,154, 76,153, 41,136,149, 4,169,231,163,196, 66,202, -129, 9,117,245, 33,158, 98,160,112, 71,136,224, 32,158,132,126, 26, 84, 48, 2,250,134,223,233,191,126,157,125,253,112,216,241, - 18,202,161, 65, 55, 29, 0,222,246,181,135,238, 29,126,252, 64, 99,219,127,112,181,112,123, 74,183,173,166, 28, 82,255, 0,130, -214,206,212, 89,178, 82,176, 66, 90,159, 67,176,105, 47, 75, 67, 68,147,204,215,137, 82, 24, 35,204, 30,154,228,170,206, 51,216, -231,166, 58, 99,237,251, 53,183, 60,121,238, 60, 93,220,227, 99,138,189,200,132,233,122,157,114,111,133,244,154,114,249,150,180, -154,125, 6,168,171, 94, 25,104,172,228, 50, 89,161,161, 72, 29,130, 92, 0,116, 26,212,101,246, 56, 61, 59, 96,227, 63,241,212, -247, 43,140,165, 5, 18,176,179, 8,144,144,122,130, 84, 18, 62, 32,155, 28,114,150,121, 50, 85,103,185,197, 66, 29, 81,207, 87, - 80,202,123, 21, 51, 57, 82, 15,189,108,126,252, 8,178, 15, 79, 76,232,117,245, 36,142,192,224,252,191,179, 85,214,174,254,137, -207,231,246,104,101,224, 28,231,161,235,248,233,200,126,252,104, 1,220,109,129,221,230,199, 97,142,189,189, 51,215, 63,159, 61, - 14, 64, 0, 96,247, 29,126, 71, 68,169, 89, 62,120,252,245,208,202,238, 79,204,253,154, 92,108, 5,240, 48, 58,192,202,135, 67, -215,243,231,249,198,133, 81, 3, 57,249,224,119,237,229,162, 28, 39,169,249,249,126,125, 52, 26,200,251,199,127,179, 74, 45,198, -227,126,216,200,253,248,160,178, 50, 58, 3,211,207, 63,184,253,186, 90,240,163,147,159,195,236,210,210,184, 24,175,170,168, 61, - 49,215,167,225,161, 16,112,122,156,116,213, 97,248,103,161,251, 51,164,216, 90,227,174,173,255, 0, 60,100,245, 38,214,190, 14, - 73, 56, 0,142,152,239,145,247,116,213, 66,176, 7, 82,172,142,216,249,246,207,222, 52, 58, 84, 83,211, 29, 7,111,236, 58,242, - 80,162,174,101, 47, 8, 61,128,206, 71,222, 7,174,116,131,222,222,236,101, 69,254,127,150, 46,141,168, 96, 0, 57,137,206, 73, -254,145,243,192,215,213, 44,173, 73, 8, 39, 9, 56, 87,124,103,247,245,254,141, 80,105,188,242,146,174, 81,158,128,117, 61, 49, -215, 25,244,209,205,167, 57,192,206,127,164,117,237,249,237,164,172, 79,207,166, 48,109,219, 21, 90, 56, 35, 35, 32,143, 46,221, - 61,125, 15,125, 28, 57, 72, 79,160, 62,127,205,251, 62,125,244, 50,121,112, 0,252,253,190,154, 37,176, 85,142,192,124,135,244, -231,207,166,177, 97,123,227, 24,184,178, 15, 76,159, 82, 63,163,247,234,184, 24, 57, 24,201, 57, 7, 31,135,219,161, 16,175, 35, -231,219,250, 49,162,146,113,220,245,232, 65,198, 59,246,199,175,246,233, 22, 22, 36, 97, 50,187,220,155,223,231,255, 0, 56, 37, - 43, 8,199, 58,186,159, 32, 59,244,249,104,146,238, 70,113,140,249,250,227,183,159, 77, 4,113,144,190,153, 63, 44,227,184,200, -252, 53, 81, 36,116, 32,231, 29,201,251,125, 7,150,146, 98, 58,223,225,130,219,221,123,117,193, 41,119, 24,248,249, 64, 32,224, -227,175, 94,160,122,244,206,167, 39,236,166,220,118,247,115,129,157,165,148,252,148, 73,171, 88, 74,169,237,245, 93, 33, 73, 46, - 54,186, 44,133, 38, 1,113, 61, 74, 65,132,228,126, 92,227, 35,168,212, 42,118,215,108,110,189,211,185, 98,219, 86,181, 49, 83, -231, 73, 5,229,186,227,137,139, 78,167,194, 66,128,145, 85,173, 84, 93, 79,135, 74,164,183,252,247,156,234,162, 66, 26, 67,174, -148,160,203, 23,217, 2,214,215,112,241,106,238,110,209,215,119,102,143, 34,181, 87,151, 2,239,168, 76,172, 75,110,139,108, 53, - 53,136,201,133, 34, 21,179,239,238, 5,184,218, 82,218, 11,139,119,149,215, 15,196, 91, 66,126, 17, 4,227, 9,104,167,142,154, -137,228, 6,169, 95, 86,155, 95, 74, 21, 96, 75,158,136, 11, 5, 3, 81, 26,142,194,230,246,184, 60, 26,124,214,135,136,167,204, - 41,105,100,124,178, 88, 36,167,158, 80, 44,129,137, 73, 35, 0,159,180,193,212, 2, 20, 18,129,238,218, 65, 23,235,214,231, 75, -174,219, 59, 83,184, 21,235, 93,151, 30,184,224, 91,147, 13, 27,193,104,188,236,105,178, 18, 35, 38,162,134, 82, 50,234,163, 33, -213,188, 0,207, 86, 70,181,171,102,120, 8,183,217,222,155,115,124, 46, 59,138, 53,229,105,208,108, 90,123, 86, 21, 10, 66,223, -155, 42,179,121,215, 33,166, 69,211,124,221,210, 95,234,244,211, 45,231, 83, 25,177,128,216,198,122,164,107,107,162,239,150,195, - 32,148, 57,188,187,110,233,193, 75,141, 34,227,167, 60,130,146, 48,180, 45, 33,226, 20, 8, 39, 35,207, 26, 14,226,227, 7,134, - 29,183,182,107,183, 12,173,200,163,213,169,246,180, 23, 39,205,163, 89,141,125,115, 86, 84,102,186,172, 83,169,144,129, 84,133, -127,178,128,126,237, 65,225,142,150,158, 82,226,162, 33,169,116, 0, 89,111,114, 69,200, 23, 59,157,133,183, 61,135, 91, 99,179, -242,190, 62,226, 28,135, 33,205,114,204,161,165,203, 70,109,205,246,202,132, 82, 30, 74, 87,138, 56,249, 76,250,117, 70,177, 5, -155, 76,136,234,116, 85, 84, 45,129,101, 97,144,207,224,179,103,238,181, 56,183, 81,123,208,158,152,250,158,156,245,169,125,220, - 20,116, 60,235,202, 42,121,197, 48,137, 42, 66,150, 73, 60,184, 78, 0, 56,244,208, 91,129,114,240,113,236,166,216,187,155,114, -235, 20,202,117,183, 21,229,201,153, 69,162,189, 37,138,222,236,111, 13,232,227, 74, 84, 26, 29, 62,109, 77, 74,149, 44, 56,247, - 39,140,233, 40,139, 17,165, 41,231,112, 0,207, 27,248,128,250, 66,114,226, 82,170, 52,190, 16,184,115,190, 43, 19, 3, 14, 52, -141,201,220,155,106,174, 41, 84,247,112, 66,100,195,183, 41,209, 86,185, 78,160, 14, 96, 30,113, 8, 56,248,186,103, 81,143,226, - 11,136,157,247,226,127,114,100,238, 30,253,238, 45,126,244,188,158,105,214,162,199,173, 62,168,205, 81,169,238, 40,172,211,168, - 86,223,192,221, 6,154, 50, 7, 43, 76,160,168, 1,206,181,158,186,127,203, 56,124,207, 46,161, 18,211, 34,253,166, 54, 14, 6, -215,180,103,204, 24,247, 50, 42,129,179, 89,197,215, 20,239, 27,253, 36,248,135,244, 13, 71, 12, 80,113, 94, 97,196, 20,179,105, - 38, 7,168,168,108,188, 50,127,118,243,135, 96,181, 38, 34,111, 20, 96, 58,169,220, 60,100, 95, 24, 39,180,115,137,253,201,226, -247,127,170,251,223,186, 82, 27,254, 16, 94, 74,118,124, 26, 44, 87, 92,118,155,105, 91, 81,121,162, 91, 54,141, 31,196, 63, 13, - 58, 13, 59, 9,230,192, 47, 62,243,210, 23,241,186,117,175, 92, 57,196, 97,202,237,211, 57,208,178,252, 42, 34,147, 24, 1,211, - 46,149, 5, 18, 60,253, 6,173,251,228,231, 53,219, 29,128, 65,247, 42, 12, 6, 79, 41,200, 5, 73, 4,129,215,191,174,178, 14, - 26,216,118, 93,122,230,134,202,121,164,204,167, 68,139, 29, 9,238,183,223,119,194,101, 41,207,153,113,104, 31,126,172,212,141, - 41,120,124,197, 24,209, 26, 34,128, 46,118, 28,192,119, 59,147,183, 82, 73, 39,169, 36,239,142, 53, 53,117, 21,115,214, 86, 85, - 74,211,213, 84,180,178, 72,231,118,103, 42,204, 73,176,238,123, 0, 0,232, 0, 27, 98,109, 63, 71,223,128,234,125,203,195, 15, - 16,156, 74,220,244,174,123,199,114, 99,200,218,237,155,145, 45,177,136,116,123, 98, 92, 90,221,217, 83,134,149,167,225, 85, 82, -187, 18, 29, 56,186, 15,197, 30,152,164, 14,138, 57,216,168,246, 17,161,213, 31,142,228,117, 50, 90,146,235, 97, 10,230, 75,225, - 8, 56,228,115,185, 67,169,229, 41,229,239,204,112, 8, 58,236,151, 0,219, 99, 15, 98,184, 76,225,239,107,105,113, 83, 17,187, - 99,109,109,231,167,180,148,132, 41, 85,138,164, 38,234,181,105, 14,116, 28,206,174,124,199,201, 39,174,123,233,168,226, 23,134, -171,150, 93,110,226,220, 91, 38, 61, 58,161, 65,144,255, 0,214,146,168, 44, 62,182, 43,237,206,148,240,247,152, 52,168, 9,103, -146,167,207, 53,197, 58,202, 3,136, 63,166, 80, 94, 2, 65, 52,151, 19,209, 54, 99, 28, 89,138, 38,170,131,118,127, 82,142,117, - 40, 61, 55,137, 74,160,247, 13,239,215, 29,145,225,180,210,240,102, 89, 6, 69, 36,194, 24, 42,163, 73,100,212,214, 95,105,101, - 94,110,228,237,169,174, 22,254,128,108, 0, 3, 82,108,234, 84,116, 52,134,210,201, 41,147, 33, 50, 29, 8,240,203,143,186, 2, - 0, 83,220,201,207, 58, 67, 40, 7, 36, 0, 19,132,156,107, 99,104, 52, 8,210, 93, 98,116,150,210, 36,193,113, 47, 65, 13,129, -225,199,203,101,135,198, 79,235, 74,113,133, 41, 10, 89, 5, 32, 16,148,242,167, 36,170, 87, 15, 59,203, 71, 82, 20,230,223, 76, -148,128,134,151,205, 74,153, 75,168, 33,105,194, 64, 39, 19,144,162, 0, 37, 71, 41, 4, 99, 28,189,244,241,218,123, 83,186, 79, - 41,180, 35,109,238,133, 20,114,133, 45,113,162, 37, 61, 14, 28, 74,221,114,104, 72, 79, 81,147,216,245,198,162, 81,100,213, 74, - 64,146,146, 66, 91,182,134,244, 22,232, 13,237,215,211,210,214, 24,178, 78,125, 70,186,229,108,198, 24,237,177,102,158, 32, 0, - 54, 4, 18, 91, 96, 64, 3,222, 5,177,113,161,208, 12,134, 16,211, 10, 90, 34,143,242,202,115,224,151, 49,158,230, 50, 29, 74, -147,238,236, 18,160, 10,191, 89, 64,114, 35, 1, 74, 86,178,171,163,112,237,237,158, 85,185, 95,170,208,239,234,203,242, 38,132, - 82,227,109,214,216,222,251,153, 34, 51,212,224,196,176,253,106,153, 99,209,229, 46,149, 79, 64,228, 45, 41,208,217,144,176, 88, -142,149,168, 40, 7,150,209,216, 45,211,158,164, 57, 54,149, 73,183,217, 80,229, 46,213,234, 77, 72,113, 41, 0,142,127,114,166, -182,234,138,136, 63, 8,231, 66,124,250,119,214,136,251,111,106,123,151,194, 15,179, 87,116,183, 91,103,247, 82,225,178,183, 81, - 55, 54,223, 91, 16,111, 43,121,168,212,249,212,202,101,201,112,177, 6,177, 22,136,227,168,117,112,106, 47,198, 43, 67,115,185, -253,229,144, 74,152, 83, 75,194,132,166,147,135,179, 55,167,146,177,104,218, 8,163, 49,131, 44,171,101, 82,242, 36,105,101, 37, - 93,174,238, 0,210, 13,137,213,184,190, 34, 25,199,137,124, 27,150, 48, 25,157, 89,207,105, 98, 73,154, 90, 74, 25,209,101,153, - 68, 78,197, 69, 87, 38,162, 8,201, 42, 11,115, 17,137, 23, 64, 22,225,150, 51,124,116,238, 62,206,240, 93,121,221, 53,125,139, - 98,254,183,183,166,236,173,213, 46,123, 18,139,190, 78, 91,107,223,205,183,143,115, 74,157, 85, 27,132,254,217,209, 34,200,137, -176,244,148, 57, 59,154,223,149,118,189, 34,254,168, 6,195,212,202, 37, 1,178,229,101, 17,220,184, 46,123,134,236,174, 85,110, -107,134,183, 87,184,110, 58,228,233,117, 42,229,201, 93,156,253, 74,191, 90,168,206,125,114, 39, 77,169, 84,100,184, 86,235,239, - 72, 90,214,224, 4, 37, 74, 86, 72, 39, 36,218, 42,181, 73,149,138,165, 74,181, 92,157, 58,167, 88,172,212,165, 86, 43, 53,106, -148,217, 85, 42,173, 98,179, 80,115,198,159, 87,171,212,230,186,183,234,149, 55,158, 37, 78,200,125,199, 29,112,245, 90,142, 6, -128,109,101,110, 97, 36, 6,179,241,128, 71, 49, 62,185,242, 26,176,114, 30, 31,163,201, 33,178, 14,117, 76,191,106, 66, 5,197, -194,141, 9,251, 40, 52,128, 22,229,136, 85,214,206, 85, 72,164,252,120,250, 73,120,157,244,128,204,169, 36,227, 28,238, 99,195, -217, 60,113, 67, 69,150,137,165,120, 17, 41,193, 88,102,171,119, 98,213,213,195, 83,191,180, 77,245,112, 73, 61, 64,160,130,138, - 25,228,133,136, 90,148,234, 57, 93, 9,121, 9, 80, 90, 91,144,148,188,144,176,114,149,165, 14, 2, 18,224, 80, 4, 40, 96,130, - 50, 8, 58,204,169,155,143,113,209,211, 21,169,110,192,185,160, 68, 11, 17,232,183,173, 53,187,170,154,198, 82, 82, 61,205,249, -174, 9,212,229, 15,255, 0,131, 48, 54, 63,248,163,211, 24, 96,228, 10, 88,201, 41, 7,162,137,244,238, 63, 57,213, 53,164, 43, - 36, 14,185,200,252,159,150,159, 39,166,130,161, 52, 77, 10,202,163,166,160, 13,137,238, 13,174,167,222, 44, 71, 99,138,111,135, -120,167,136,248, 74,170,106,190, 27,206,170, 50,105, 42,192, 74,133,134, 66,176,213, 68, 13,249, 53,148,230,244,245,180,228,253, -170,106,184,166,129,255, 0, 94, 54, 24,116,231,239,189,238,150, 89,133, 64,254, 15,237,252, 36,248,206,123,141,131, 77, 48, 29, -151, 33,230,210,209,151, 80,170, 84,195,206,184,250, 26, 64,229, 8, 74, 50,160,149, 45,107, 8,109, 8,177,171,117,119, 10,108, - 7,169,170,189,110,207,170,159, 74,208,253, 57, 21,201,173, 71,113, 46,161, 40,144,133, 73, 74,196,165, 54,232, 78, 92,111,222, - 60, 37,149,168,148,124, 74,206, 0,166,219,230, 33,120, 36,117,206,124,251,143,219,175,170, 91, 74, 90, 19,207,241, 32, 19,200, -147,240,156,250,254,205, 37, 29, 21, 36, 32,133,167, 64, 24,223,236,130,111,182,228,145,114, 71, 98, 73, 54,218,248,156,102,190, - 58,120,209,157,242, 99,172,241, 87, 62,130,146,154,148, 80,197, 71, 69,153,213,101,153,108, 20, 34, 40,225, 52, 84,185, 86, 89, - 37, 30, 91, 75, 70,241, 68,139, 37, 45, 45, 36, 84,242,232, 13, 44,108,196,177,172,227,188,193, 37, 92,169, 75,105, 8,109,150, -208, 16,219,109,131,209, 13,161, 0, 37,180,228,147,128, 7, 82, 79,114,117, 72,146,163,205,129,140, 14, 81,216,140,129,158,184, -237,223, 94, 84,177,158,216, 4,224, 31, 32, 73,237,246,107,233, 9, 80, 79, 50,129,198, 79,194, 64, 35,215, 61,126,205,109, 95, -111, 47,109,189,216,170, 85, 2,233, 91,105, 10, 6,221, 0, 3,160, 30,158,131,165,177,229,212,133,160,131,128,125,112, 51,211, -236,243,208,105, 11,230, 60,201, 8,109,191,139,226,248, 78, 71,159,207,251,116,122, 20, 20, 50, 7,145,200, 61,199,151, 95,191, - 67,169, 36, 55,151, 49,215,161,201, 4,252,137, 0,246,233,161,179,111,219, 6,177, 6,221,251,126,255, 0,227,138,110,123,186, -192, 82,130,150, 8,200,194, 73, 3,182, 73, 31, 61, 75,227,232,215,112,195, 99,223,219, 35,198, 38,227,110,133,131,105,238, 13, -175,184,202,183,248,125, 93,173,121, 80, 32, 92, 54,253,118,207, 69, 45,203,170,246,167, 78,131, 84, 97,109,174, 60,137,213,122, - 35, 78,132,242,171, 48, 16,160,164,173,180, 40, 68, 24,149,143, 8, 54,158,138, 74,147,205,144,144,181, 99, 24, 3, 29, 15,109, - 77,123,217,103,184,103,103,189,143,246,187,116, 6,164, 81,171,123,149,186,219,227, 85,173,205, 79, 52,105,170,164, 82,174,168, -214,139, 78,199,144,180,167,195,143, 48, 82, 93, 67, 79,160,169, 10,102, 26,210,135, 57,138,185, 98,156, 99,155,193,146,101, 73, - 89, 80, 12,138, 37, 10,177,139, 6,150, 66,173,201,141, 9,232, 76,161, 9, 36, 16,136, 25,200, 33, 72,197,129,225,126, 86,115, -110, 47,162,164, 72,185,210,136,228,101, 7,117,187, 20,132,234,244, 26,101,111,190,214,223, 28,193,223, 63, 97, 79, 4,115,184, -194,185,209,179, 27,239,185, 54,175, 14,116,135,150, 47, 93,165,163, 83,105,149,186,237,191,122,205, 66,164,162,196,218,237,215, -185, 31,144,220,155, 36, 48,243, 62, 60,137,208, 39,207,167, 56,164, 69,140,229, 65, 78,120,204,111, 6,212,251, 26,125,155,123, -125, 58,216,185,109,203, 55,136,138,110,227, 80, 37,198,122,216,220, 26, 55, 21,119,221,175,121,219,245,200,177,194,145,114, 81, -170, 86,149, 42, 2,105, 21,166,212, 60, 80,227, 40, 75, 45,172,132,134,150,223,194,108, 27, 71,113,203,157, 91,184, 42,197, 34, - 81,147,122, 93, 21, 71, 34,115, 36, 46, 82,152,170, 10,100, 82,181,243,128,150,154, 17, 84,177,200, 6, 11,105, 81, 80, 1, 58, -222,155, 74,229,118,163, 38,164,121, 90,136,212, 8,204, 83, 34,180,202,131,110,158, 98, 36, 84,159, 83, 97, 28,172, 45, 43, 91, -109, 37, 72,230, 95, 43, 74, 4,164,144, 53, 71,103,220, 99,198,175, 58,200,217,245, 68, 48,132, 0,197, 3,242, 22,221, 8, 44, -154,100,147,169, 93, 83,188,174, 86,218,156,144,111,212,220, 79,225, 79, 9,228, 78,100,161,201,225, 89, 2,172,143, 33, 82, 89, -164,178,130,234, 9,180,107,204, 58,149, 35, 85, 80,157, 55, 14,113,212,219, 99,136,234,228,106,101, 18,155, 87, 66, 43,171,106, - 35, 20,230,230,213, 86,165, 86,106, 81,233,145,219,143,245,157, 94,162,202, 82, 39,213,158, 8, 74,228, 72,240,144, 31,125,213, -185,225,160,171,151, 78,181,189,187, 22,141,226,232,140,220,143,169,234, 75,115,193,110, 28,247, 27, 75, 82, 94,236, 27,137, 40, - 30, 71, 22, 72,232,147,202,162,122, 0, 78,185, 81, 30,244,240, 36, 85, 11, 97, 75,143, 66,134,205, 38, 36,144,114,151,170,110, -182,100, 75, 96, 4,171,162,144,234,163,165, 65, 32,245, 74,178, 8, 26, 10, 61,219, 41,136, 17,203,239, 31,124,142,204,154,156, -175, 13,210,158, 95,136, 52,201,108,142,169, 62, 50,148,126, 69,191,150,148,202,184,199, 54,167,208, 37,169, 53,106, 7,153,101, -243, 27, 0,162,250,143,152, 27,234, 59,146, 0,182,199, 21,248,142,186,130, 68, 16, 73,204, 22, 91,197, 37,200, 58,148,200, 0, - 63,105,108,186, 23, 99,179, 29,212,244, 27,233,106,113,119,182,151,183, 20,183,231, 10, 22, 90, 95,184,110,205,174,179, 85,117, -110, 45,213, 17,214, 92,183,173,234,168,126, 51, 38,204, 66,193,230,145, 91,105, 50,153,247,130, 7, 35, 78, 18,214, 74,210,172, -108,130,235,136, 99,157,106, 88,230, 57, 24,206,126, 30,184, 29,122, 99, 35,174,184,239,193,253,153,180, 27, 99,196,214,228,110, -244, 17, 42,218,187,248,132,179, 97,219,181,104, 40,144,201,180,230,222, 73,172,174,167, 38,226,195,235, 46,192,175,213,208,195, -104,125, 33, 94,236,228,180, 23,194, 91,114, 74,129,232,125,205,113, 42, 50,221, 64,113, 73, 41, 74,147,200, 62, 21,165,105, 39, - 60,201, 61,142, 2,178, 62, 90,181,184,106,180,102,212,111, 59, 48, 18, 60,132, 50, 0, 46,130,202, 66,144, 55,247,134, 61, 71, -223,105,215, 25, 75,194, 85,210,100,173,193,144,212,211,209, 46, 91, 68,149,130,172,222, 99,154, 8,239, 94,118,188, 98, 35, 41, - 2, 1, 17,229,242, 66,157,152,184, 14,149, 74,248,109,178, 71,136, 2,123,168,115, 2, 14, 14, 57,186,118, 32,228, 31, 62,191, - 45, 97, 51, 47, 98, 23,151, 29, 87,134,165, 30, 85, 12,144, 73, 56, 9, 36, 28,115,140,128, 50, 48,190,217,242,214,190, 84,238, -181,120,174, 53,206, 10,138, 20,251,121, 81,248,208, 14, 28,111, 62,153, 35,167,145, 94,177,148, 93,188,217,104,175,152, 41, 36, -165, 46, 12,115, 32, 15,137, 25, 36, 18,180, 96,127,181,202,144,175, 93, 74, 99,129, 80,108,110,126, 63, 15,221,249,252,113, 22, -167,164, 88,198,195, 87, 75,254, 23,239,215,227,252,142, 54,149,187,161, 46,158,100,184, 10, 85,203,158,101, 4,148,156,144,121, -194,199,192,114, 21,229,141, 90, 42,114,158, 91,107,145, 76, 8,113,208, 10,213, 17, 74, 45,161,212,100,229, 76, 41, 32,144,224, -234,174, 78,161, 92,159, 14, 20,113,166, 18, 37,213,201,202, 92,120, 40, 0, 57, 92, 36, 41, 65, 39, 56, 67,160,145,146, 15, 76, -158,152, 57, 32, 19,157,102,144,110, 4,175,225, 82,207, 50, 70, 72, 4,148,117, 57,200,207, 83,144, 6, 64,237,203,243,234,149, - 69, 58, 78,154, 36, 23,244, 61,193,236,111,235,211,249,140,110, 67, 81, 45, 20,162,104, 13,237,177, 83,114,174, 63,101,198,215, - 30,253,136,189,193, 83,190, 47,109,215,101,185,200,130,228,102,194, 92, 90, 75,164, 58,231, 42,146, 73,229, 80,113, 35, 60,189, -138,136,248, 74,128, 86, 58,234,234,212,199,221, 1, 78,200, 88, 33, 68, 16,142,102, 27, 82, 21,132,242, 40, 55,146, 82,112, 59, - 17,133, 39, 33, 64,231, 88, 13,198,183, 11, 6,169, 79, 9, 91,204, 2,185,108,130,176,149,181,132,149,201, 71,135,250,206,161, -180,146,226,123,173, 0,158,139, 29,113,232,181,233,174, 28,169, 77,128,142, 71, 27, 45,169,120, 83, 43, 79, 55, 50,121,143,249, - 64, 84,147,211,161, 24,193,202,134, 98,211, 43, 81,204, 98,153,246,107,216,216, 88,131,109,238, 59,250,223,241, 6,248,157, 80, -188,121,165, 42,212, 83, 34, 68,192,217,212,145,169, 24,117,235,185,235,117, 35,175,186,197, 67,227, 22, 64, 10, 60,141,168,243, -128, 10,146, 74,212, 91, 65, 32, 37, 74, 41, 42, 91, 32,227,252,152,234, 9,207, 49, 35, 87,149, 84, 92,140,217, 90, 25, 74, 60, -117, 4, 33, 47,165,213,199,195,201, 42,109,160,129,149,198,144,226,142, 19,206, 49,147,240,163,148,243,105,158,139, 82, 82,138, - 1,113, 92,142, 19,203, 33,183,156,229, 70, 87,204,203,109,242,184,163, 29,174,101,225, 33, 28,203, 82,148,148,148,231, 35, 87, -196, 84,214,134,138,188, 73, 40,112,151,217, 83,209,203,109,180,180,164,252, 94, 34, 22,162,183,100,103, 28,223,168, 83,130,148, -143,136,157, 47, 28,195,190,192, 88, 95,247,119,235,183,190,247,177,191, 77,244, 42,224,209,114, 95, 93,183,232,119,183,196,245, - 29, 59, 16, 63, 12,178,167, 82,117,101,214,158,116,143, 5, 24, 90, 23,206,135,176,149, 30,171, 28,152, 67,133,148, 37, 68,130, - 72, 82,136,233,216,106,111, 20,187,199, 75,216, 78, 31,183,187,123,107, 14, 3, 11,107, 54,178,243,187,194, 90, 57,118, 69, 74, - 29, 37,232,118,227, 17, 80,181, 15, 26, 67,151, 45, 70,140,218, 83,159,252, 98,186,121,105,253,153, 86, 47, 7, 9,115, 32, 43, - 45, 41,124,222, 48,200, 88, 62, 39, 83,200,159,140,117, 57, 42,192,233,231,168,229,253, 33,126, 36,209,101,112,247,183,156, 51, - 81,166, 20,220,123,253,118,139,190,234,105, 14,114,189, 19,107, 54,170,107, 47, 14,101, 54,172, 24,245, 77,192,149, 76,140,166, - 92,229,230,106,223,125, 65, 36, 5, 99,118,157, 26,170,122,122, 52, 39, 85, 75, 0,125, 66,117,118, 29, 62,202, 6, 59,122,116, -190,198, 41,159, 87,166, 83,147,230, 89,163, 16,134,138, 38,100,189,183,152,128,144,169, 29,124,210,178, 41,223, 96, 73,219, 16, -244, 92,153, 82,150,236,202,131,161,234,140,247,159,157, 80,125, 32, 97,234,132,215,151, 38,107,224, 96,116, 92,167, 94, 87,207, -155, 66,172,131,211,207, 61,115,246,127,110,136,115,169, 29,135,115,161, 87,230,174,152,245,239,216,121,254,124,181,105,160, 0, - 11,108, 63, 45,182,199, 34, 42,236, 13,205,207,174,253, 14, 6, 86, 50,113,249, 63, 47,150,135, 81, 10,242,192,235,159,159,204, -250,104,133,250,130, 20, 72,252,244, 26, 21, 71,161, 62,125, 79,223,165, 20, 18, 70, 21,192,234, 32,117,249,224,103,231,246,124, -180, 51,131, 57,234, 1, 4,245,209, 90, 17,194, 14,122,247, 57,199,203,231,165,199, 81,129,129, 85,211,167, 82, 79,115,242,244, -199,166,116, 42,200,207,108,117,199,219,215,207, 68,185,242,238, 7,159,111, 95,223,160,150, 79,126,152, 61,193,243, 61,127, 63, -118,148, 65, 97,210,247,249,255, 0, 92, 12, 82, 36, 2,122,129,247,254,255, 0, 61, 45, 81, 95,235,119,242,252, 62, 95,159, 93, - 45, 31, 3,108, 86, 29,251,103,229,162, 52, 42, 87,219, 61, 15,145,199, 76,131,229,170,129, 68,158, 94,108,116,207,111,159, 94, -190,189,244, 71, 2,221,108, 70, 14,195,173,190, 63,195, 7, 54,123, 21,125,223, 63, 67,162, 7, 95, 35,246,121,232, 38,240, 58, -100,147,243,252,247,254,173, 22,149,245,244, 62, 94,126, 95,102,146,193, 58,116, 56, 41,161,203,212,156, 99,200,252,243,216,104, -214,200,243, 0,253,248, 39, 64,165, 89, 29,191, 17,231,231,131,157, 86,108, 20, 44,168,172, 16,172, 1,159, 47,179,238,210,109, -233,109,135,242,198,113,112, 10,193, 1, 67, 4,249,129,223,237, 35,243,215, 68,167, 3,168,200, 39,161, 29,191,102,122,118,208, -169, 81, 32, 12, 12,140,119,237,140, 1,140,143, 60,232,128,172,100,156,100, 96,228, 96,147,246, 99,229,253, 58, 79, 24,193,141, -168,119, 61,113,211,239,233,131,248,104,132, 28,224,245, 56,235,243,233,235,143, 45, 0,133,103, 3,168, 4,250, 14,255, 0,105, -213,126,108, 17,133, 41, 57,207,234,250,255, 0,195, 72, 55, 94,183,198, 45,251,240, 96,194,212, 65,206, 15, 99,156, 99,167, 83, -223,166,178,107, 86,133, 46,228,174, 83,168, 84,230,131,242,231,203,102, 43, 41, 89,195, 69,215, 20,122,190,224,255, 0, 37, 29, - 13,165,110, 56,175,230,182,210,136,235,140,226,141,149,172,148, 40,242,164,140,243, 0,115,229,231,167, 83,107,106,201,163,215, - 27,102, 59,168,106,161, 80, 68,168, 17,165,168, 14,120,254,244,202,121,148,223, 55,119,212,203,110,165, 63, 53,159, 44,231, 74, -177,164,138,154,105, 34, 0,200,138, 72,248,250,159,147,183, 77,240,231,146,208,195,153,231, 25, 94, 91, 81, 57,166,167,174,158, - 24,157,199, 85, 87,117, 86, 43,125,181, 16,108,183,219, 81, 23,218,248,222,138,101,205,111,109, 53,188,139, 14,206, 6, 92,185, -106, 97,219,158,165, 20, 33,169,181,218,147,105,229, 75,211,229, 39,172,106,107, 74, 42, 76, 88,249,229,105,177,148,165, 78,169, -197,168,202, 52, 58,189,201, 45,107,152,251,134, 43,136,241, 26,136,133, 56,212, 96, 73,206, 22, 82,160,183,187,255, 0, 56,129, -159,230,233,172,181,109,231,101, 77,113,174, 96, 84,151, 11,234, 90,143, 58,214,238,114,165,184,181, 28,173,106, 39,185,234,115, -211,167, 77,109, 61,163, 22, 44, 22, 27, 91,137, 83,171, 74,128, 82, 1,207,234,158,188,201, 56, 29,255, 0, 15,232,173, 43,102, -142,152, 57, 86,230,207, 39,153,152,245, 98,109,185,219,238, 30,131, 97,176,176,238, 92,135,135, 96,160,165,130,158,154,139,217, -233,169,194,164, 80, 40,217, 20, 91,173,247,102, 39,119, 98,117, 51, 18,204, 75, 18,113,157, 88, 27, 77, 6,162,243, 10, 91, 45, -173,210, 17,204,134,249,192, 79, 80, 63,214,237,246,249, 13,116,123, 98,182, 58, 4, 74,205, 30,167, 79,136,195, 21, 8,242, 27, -109,110,132, 5, 41, 73, 87,235,167, 43, 4, 56,130,140,228, 96,131,208, 99, 90,225,182, 40, 67,142, 48, 16,148,176,211,139,108, -165, 13,164, 41,196,146, 1, 0, 28, 0,122,103,200,227, 93, 65,218,186,205,175,107,194, 23, 45,203, 58, 29, 22,218,182, 96, 72, -174,220,149,170,131,237,177, 22,155, 74,165,199, 84,185,211,101,200,116,132,182,210, 35, 52,242,142, 78,112,156, 0, 78, 6,171, - 12,238,173,234,222, 88,228,156,164,106, 9, 35,215,160, 2,195,177, 61,189, 58, 92,224,103,185,230,105,150, 32,167,167,102, 26, -193, 82, 7,165,183, 6,219, 90,219, 1,190, 56,205,197,103,181,207,127,173, 13,203,184,118,215,133,170,141, 31,104,108,203, 18, -227,169,219,114,110, 38,173, 59,114,175,120,222, 85,138, 12,199, 41,181,154,156,153, 53,154,123,241,232,148,133, 84,163, 74,110, - 60, 86, 88, 82,220,105,176,227,238,146,190, 68,232,182,233,123, 64,184,141,223,154, 60,154, 6,249, 57,181,123,167, 78,146, 84, -227, 18,107,187, 67, 98, 81,110, 42,116,165, 0,145, 34,159,117,218,148,120,114, 99,114,227,163,101, 42, 70, 84,115,229,173, 86, -221,155,170, 61,231,185, 27,133,121, 69, 66, 4, 43,174,251,188, 46,104, 37,150,148,210, 87, 78,184, 46,106,173, 86,152,226, 26, - 95, 86,138,160, 76,140, 84,147,241, 37, 74, 32,128, 65, 26,194,202,138, 27, 72, 66, 66,146,164,249,147,216,250,231,207, 87, 69, - 31, 7,240,224,142,134,170,163, 33,165,108,202, 5, 70, 19,180, 17,154,132,144, 1,186,205,167,154,132, 27,219, 75, 46,158,139, -101,216,113, 46,113,196, 25,150,101,152,213,213, 75, 88,211,164,146,185, 69, 33, 74, 4,212,116, 0, 45,109,150,194,253, 77,174, -196,146, 78, 25, 29,226, 14, 57,121,205,113,232,130, 3,142,211,225,184, 35,161,210,251, 60,158, 24,194,153,113, 74, 39,194,232, - 48, 51,240,246,211,245,236,251,162,194,185,248,143,179, 45,121, 83, 19, 21,250,213,203,107,181, 9,165, 71,118, 87,191,186,213, -102, 27,130, 3, 81,152, 66,148,243,239, 41, 41,105, 3, 24, 5,238,101,124, 41, 58,101,247,161,159, 22,181, 69,168, 39, 42,110, -109, 13,166,193,234, 48,228,124, 36,164,245,239,145,174,129,251, 9,174,186, 5,165,237, 66,225,233,203,134,153, 75,169,179, 93, -122,232,183,105,102,171, 29,185, 77,211,107,245, 27,114,161,245, 77, 90, 19,110,130,148, 84,153,121,149, 6, 86, 70, 82, 94, 37, - 63, 16, 4, 76,106,145,166,225,202,216,163,115, 19,154,118, 0,141,244, 17,182,175, 48,111,179,107,216,131,211,124, 55,240,245, - 50,102,121,237, 29, 36,238, 33, 74,218,128,140, 64, 27,115, 13,172,189, 64, 38,246, 91,130, 3, 17,112, 70,216,253, 60,108,203, -170, 61, 38,218,163, 69,169,210,215, 6,123, 52,168, 12, 42, 18, 30, 74,149, 13, 45,197,109, 30, 2,136,232, 84,156, 96,142,195, - 24,211,173, 99,205,135, 95, 67,163,195, 82,216,105,226,174, 71,124,148,149, 2, 51,235,129,141,105, 44, 90,227,175,203,110, 58, -159, 60,234,145,200,227,139, 86,113,133,225, 74, 81,201,236,156,159,187,231,170, 28, 4,113, 50,246,254,220,188, 78,211, 27,167, -174,157, 67,217,253,200, 98,198,160, 62,226, 84,149,213,154,110, 59,134, 85, 65, 74, 80,193, 38, 67, 46,128,145,156, 36,167, 56, -206,171,117,160,130,138,122, 97,237, 82,206,210, 2,164, 74,193,245,233, 0,234, 42, 2,170,144,127,100, 1,189,173,233,213,116, - 57, 94,103,152,229, 89,246,102,140,213, 17,228,201, 12,179, 73, 36,128, 58, 9,234, 18,153, 52, 40,182,162,210, 72,183, 8, 0, - 85, 5,141,128, 24,234, 84, 22, 97,190,160,211,140,160, 37, 73, 9, 37, 39,151, 35,203, 4,118, 61, 53,114,153, 78,153, 71,107, -235, 40, 14, 61, 50,158,222, 60, 88,104, 36,186,207,108, 43,161,248,155, 29, 63, 29, 97, 20,201,202, 47,103,152,116,235,202, 79, -126,158, 94,167,229,242,211,203,110,200,247,142, 86,186, 45, 43, 28,139, 74,199, 69, 36,140, 40, 28,142,185,211,232,142, 26,149, -210,124,143,250,172, 54, 32,246,233,212,123,143,108, 87, 57,193,168,203, 88, 74,126,186, 30,174,140,110, 24, 27, 95,115,186,183, -163, 11, 88,251,182, 38, 90,149,147, 81,103, 43,113, 42, 36,101, 41, 4, 97, 63,236,131,246,106, 57,159, 74,191,116, 98, 90,254, -207, 59, 39,109,189,229, 13,212,183,107,126, 44,232,173, 70, 10, 79,139, 34,151,103,194,170,220, 21, 37, 33, 4,228,182,151, 83, - 3,152,129,211,196, 79, 81,158,178, 30,102,146,109,219,145, 41, 96, 40, 65,169, 43,197,142,145,209, 8,117, 68, 7, 25, 3,237, - 80, 32,127,181,168, 24,253, 41,190, 42,105,187,177,198, 54,217,240,225,110, 85, 81, 54,139,195,101,145, 34,125,214,152,206, 7, - 99,181,184,187,128,182, 37, 59, 9,124,170,199,189,197,183, 98, 83,146,176,122,161, 83, 8, 58, 74, 58,202,145, 17,201,101, 26, -102,168,170,131, 88,244, 90,105, 22,173,158,223,176,226, 5,136,155, 90,243, 32,234,192, 98, 1,158, 71, 76,139, 85, 95, 79,189, - 36,176, 18,155, 91,205, 48,228,232,235,246,147, 91,189,183, 39,148,198,196, 2,113, 23,105, 12,224,142, 92,114,128, 57,115,230, - 60,193, 31,158,218,166,220,116, 96,148,167, 35,185, 0, 30,135,231,131,219, 70, 58, 91,112,228,147,129,219,200,129,212,245, 26, -163,239, 1,162,164,182, 58, 16, 2,148, 48,123,246,233,248,234, 69,123,110, 78,199,253, 49, 95,238,192, 91,182, 41,184,218,146, -112, 2, 85,145,205,128,115,240,232,117,175,166, 2,185, 84,122,144,123,252,146, 48, 58,249,126, 26,246,165,183,205,207,226,242, - 41, 68, 0,146,160, 57,188,186,141, 8,236,164,182,248, 10, 66, 79, 40,192, 24,234, 78, 51,205,246,235, 5,182,178,131,140,233, - 61,206, 62, 37, 37,100,130, 84,143, 85, 20,247,251, 9,215,196, 52,218, 22, 28,108, 23, 20, 73, 10, 73, 32, 16, 58,117, 3, 29, -117,111, 83,203,146,247, 41,116,161,190, 96,162,140,245, 64, 79,113,246,247,209,173,134,220,112, 58,130,174, 68,156, 21, 96,167, - 56, 29,142,124,186,235, 23, 38,226,214,237,108, 24, 0, 8,223,231,108, 84,202, 80,181, 45, 75, 37, 10,236,140, 14, 84, 19,208, - 21, 19,249,206,145,240, 91, 89, 35, 4,168, 2,181, 39, 36, 1,143, 63,207,219,175, 14,180,248, 91,135,225, 44, 44, 19,203,230, -113,158,202, 35,190,147, 72, 75,188,184, 10, 97,180,167,149, 94,101, 68,116,193,200,235,219, 67,113,176,234, 62,253,255, 0,241, -140, 88, 27,158,199,247, 99,223,138,128,176, 16, 74,202,192,200, 64,234, 51,216,159,151,174,144, 56,112,168,255, 0,226,210, 65, - 39,211,169,193, 30,191,219,161,201, 91, 97,101, 11,229, 33,124,169,112,164, 97, 67, 25, 41,193, 29, 62,221, 18,149, 30, 64, 28, - 41, 83,138,201, 81,233,203,131,211, 7,167, 95,158,178,160,129,238,248, 99, 4, 11,219,211,111,159,187, 23, 91,122,216,174,223, -151, 45,171,103, 91, 30, 48,173, 94, 23, 45, 2,211,161,169,134,124,101,166,185,117,214,160,219,116, 71, 18,206, 63, 72,148,213, -170,176,202,135,110, 84,156,234,116,188, 70, 90, 86,214,200,237,141,191,195,253,145, 22, 45, 26,196,217,203, 30,212,219, 59,118, -140,216, 15, 52,105,182, 85, 52,210,220,144,228,146, 7,188, 57, 58,187, 14,173, 81,121,213,101,199,100, 86,221,117,213, 5,175, - 81, 5,246,122, 41,151,120,231,225, 49,165, 45,167, 25, 70,253,237,171,138,109, 68, 6,138,152,185, 35, 72, 66, 58,164,128, 60, - 86, 81,140,142,248, 24,212,167,184,174,185,213, 80,146,133, 73, 46,189, 42,116,101,176,243,171,116,136,206,165, 92,181, 24,242, - 29, 66,122, 56,175,137,244, 12,128,174,102,202,115,202, 19,170, 83,197, 9,101,168,206,184,107, 46, 36,242, 99,215, 57,177, 27, -176, 33,119, 7,246, 0,242,159,241,145,183,126,148,250, 56,229,176,205,157, 87,230, 36, 3, 52, 82, 67, 18,237,186, 42,142,113, - 96, 78,222,114, 22,253,238,138, 65,198,134,236,221,125, 48,227, 85,230, 51, 33,182, 20, 46,139,193, 78, 71,146, 11,172,173, 49, -107,213, 39, 22,218,176, 65,104, 45,181, 17,240, 28,231, 10, 57,192,214,224, 91, 87, 56, 52,186,124, 87, 37, 60,195, 17, 27,114, -181, 86,168, 52,165, 33,208,211,232, 84,135, 35,180, 82,172, 45,194,149, 57,206, 62, 17,225,181,156,149, 19,174,110, 88, 21,191, -119,114,244,165,183,202, 67, 27,155,118,199, 87, 58,178, 4, 89, 50, 96,212,208,176,140,117, 30, 4,208, 18, 6,122, 47,168, 24, -193,216,148,220,233, 17, 19, 8, 58,234,126,185,152,195,115,214,218,208, 94, 77, 49, 13,178,244,133,248,196, 0,223,193, 29,180, - 33, 36,116, 68,133,242,242,101, 71, 81,250,188,185,106, 15, 67,113, 99,239,183,107,245,232, 9,183,107,219,224, 58,227, 63,165, -142,190,158, 48, 77,158,254, 98, 55,217,118, 36, 14,246, 5,200, 7,112, 64, 22, 35,166,219,210, 47,185, 82,233, 80,131,107,114, - 60,217, 83, 30,159, 55, 1, 97, 10,126, 99,143, 59,200, 93, 39, 36,248, 79, 52,216, 74,146, 85,208,149, 28,227, 87, 58,150,229, - 67,154,202, 4, 96, 35, 72,171, 77,110, 44, 73,100, 36,180,229, 58,157,136,136, 91,136, 10,230,111,157,193, 37,215, 17,208,101, -244,168,228,117,214,181, 64,187,158,122, 93, 82, 99, 15, 54,251, 37,214,153,128, 31,117, 72,105,199, 39,177,225, 23,146,164,156, - 48,194, 20,135,157, 91,128,140, 41,148,243,100, 17,156, 82,117,230,220,185,110, 46,150,234,204, 86,210,213, 38, 18,207, 68,178, -246, 20,194,221,232, 57,159, 45, 69, 67,133, 75, 72, 8, 74,217, 4,243, 28,107, 65,114,134, 28,192, 19, 72,150,215,216,116,216, -247, 29,143,240, 35,215, 20,246,103,146, 44,245, 78,252,176,174,237,171, 80, 54,208, 8, 14, 67, 30,182, 4,169, 0,130, 8,141, -150,215, 27,108,165, 82,240, 65, 91,130, 60,226,182,132,167,101,192,151, 29,238, 83, 25, 20,197,120, 81,158, 74,218, 87,253,240, - 30, 74,156, 5, 56, 40, 82,144, 70, 78, 52,237, 90, 94,211,206, 31,238, 61,215, 87, 13,251,187,120,211,246, 99,125,216,166,219, - 53, 27, 46, 70,225,213,169,180,173,188,223,218, 29,126, 20,116,211,238, 11, 14,254,117,214,224,219,183,114,235, 2,165, 77,157, -110,215,151, 5,255, 0,172, 41,143, 26,124,233,201, 95,132,215, 47,235,155,134,253, 49,169,137,139, 33, 17,217, 13,120,112, 82, - 15, 49,240, 35, 44,163,195,112,169, 32,252,110,120,100, 14,255, 0, 6, 84, 78,117,197,111,105,134,220,238, 93,231, 65,219, 45, -247,167,109,213,197, 90,217,251, 58,155,114,237,149,225,186, 16,105,102,169,111,209,111, 26,133,206,237,223, 6,220,186, 37, 68, - 46, 57, 71, 74,105,117,120,239,199,126, 99, 76,195, 90,234,170,101,153, 10,125, 14,182,139, 3,128,178,227, 14,113,200,102, 49, -197, 94,146, 41, 26,186, 58, 14,100, 76, 1, 54,102, 4, 50,105,239,205,107, 48,109,241, 25,226,106, 58,222, 29,225,154,236,230, -154,152, 85, 54, 88,209,177,136, 41, 60,216,218,101,137,193, 42, 24,198,232,143,175, 85,138,168,137,139, 93, 73, 6,112,183, 37, - 78,163, 2, 75,208,150,135,161,212, 82,216,153, 17,169,141,173,151,176,166,195,172,115, 50,232, 25,142,243, 42,192, 88,248, 20, -135, 67,169, 82,146, 1,214, 30,110,102,229, 6,164, 37,229,248, 15,167,153, 14, 21,167,199,131, 45,149, 41,178,218,193,232,133, - 37,208,234, 20,133, 14,138, 74,146,161,200,172,136, 53,240,131,237,106,226,159,133, 24, 84, 59, 53,218,219, 59,239,178, 52,133, -176, 33,109, 62,233,213, 42,115, 87,110, 83,210, 19,207, 27,108,183, 21,133,187, 86,176, 89, 90, 16,222, 98,161, 83,232,235, 9, -248,233, 74,207, 48,145,223, 13,254,212,238, 15,184,152,159, 78,162,209, 47,183, 54,118,249,175,188,219, 14,237, 94,249, 74,164, -218,245, 37, 92, 79,169, 49, 99, 27, 63,112,216,112, 91,183,164,105,106, 74, 80,226, 84,253, 38,123,107, 83, 14,125, 94,162,183, - 66,108,186,204,183, 48,166,102,149, 71, 62,156, 30,169,168,233, 30,174,159,105, 0, 23, 14,192, 50,168, 43,245,131, 77,196, 95, -135,248,215,135,243,244,142, 40, 42,125,147, 48, 63,251, 60,246, 73, 9, 31,170,141,253,220,164,236, 80, 35,107,102, 86, 28,176, - 93, 65,235,149, 54,227,231, 82,252, 98,143,120,111, 30, 50, 3,153, 10, 74,242,148,190,207, 95,141,149, 1,219,201, 64,160,158, -157, 92, 10, 45,120, 41, 72, 30, 42,210,211,129, 60,138, 36, 39,194, 40, 56, 9,201,199, 34, 15,194, 82,125, 71, 47, 98, 51,173, - 78, 57, 42, 4,150,225, 74, 68,136, 85, 24,204, 38, 66, 27,148,194,153, 91,140, 60,112,210,188, 53,165, 42, 92, 71, 18,144, 65, - 31, 2,199, 43,141, 41, 93, 9,204,232,245,213, 45, 41,192, 82, 28, 24, 15, 5,245, 67,125, 1,240,211,143,214, 37, 36, 97, 93, -148, 8, 56, 7, 58,212, 89, 53, 45,155,126,155,250,244,189,247,220,131,214,195,222, 7, 80, 36, 83, 0,111,109,143, 66, 55,176, -233,219,176,244,244,232,113,182,208,103, 41,109, 2,130, 8, 28,170, 10, 7, 24, 72, 25,194,155, 35,170,130,179,216, 16,115,215, - 3, 58,111, 43, 10,114,143, 57, 62, 8, 83,116,247,138,158,104, 35, 42,247, 7, 50, 75,237, 35, 36,226, 62, 87,206, 17,241, 16, - 21,132,140, 32, 1,125,182,231,180,168, 76, 58, 9, 40, 84,116,130,133, 30, 98,133, 5, 4,164,144,145,213, 29,122,131,213, 61, - 0, 36, 29, 13,118, 6,157,142,165,164,161, 74, 66,131,137, 36, 16, 75,137, 11,198, 66, 58, 1,225,133,117, 7,177,199, 76,105, -179, 52,167, 21, 20,206, 20, 94, 88,188,203,247, 14,159,247, 13,175,219, 99,141,204,138,188,229,245,233,172,222,154,164,132,144, -123,143, 71,223, 96, 84,155,244, 59,106, 94,135,127, 84,218,177, 40, 8,109, 77,171,152, 21,173,176,163,224,169, 71,153, 72,125, - 10, 73,232,160, 71, 80,122,228,147,140,224,235, 37,102,160, 10, 82,164,185,132, 45, 57, 74,215,202,149, 96,228, 37, 5, 93, 73, - 30, 65, 68,115, 96,128, 73,233,134, 98,157, 41, 13, 56, 75, 78,101, 30, 32, 41,200, 60,139,109,106, 31,174,223, 79,137, 36, 30, -189,207, 76,140,117,214, 72,221,101, 45,182,162,165, 36, 32,100,243, 41, 75, 81, 70,115,204, 0,245,193,235,219, 60,157,117, 24, -134, 67,166,254,131,225,214,223,195,240,185, 63, 9,141,122, 6,118, 85, 58,239,247, 92,246,191,191,212,255, 0,166, 51, 26,229, -207, 71,161, 82,171, 21,250,253, 86, 21, 10,222,160,210,170, 53,218,245,110,162,164,183, 78,161,208,104,176,228, 85, 43,117,153, -206, 45, 73, 9,137, 18,151, 18, 91,238,228,225, 72,142,160,158,165, 57,252,241,248,236,226,198,175,198,143, 19,187,139,190,210, -211, 34, 37,167, 54, 67, 54,134,209, 80, 36, 40,149, 91,187, 67,106, 59, 42, 29,153, 29,224, 82, 63,247, 86,123, 78,203,172, 84, - 21,128,163, 54,224,117, 10,232,210,117,219,143,110, 55, 31,168,247, 9,220, 13,237, 45,117,106,153, 60, 65,155,196,245,118,153, - 33, 73,250,186,148,129, 22,167,110,108,123, 50,218, 88,204,249,174, 8,181, 59,157,180,158,102, 99, 49, 2,144,247, 42,222,154, -216,140, 58,201, 42, 87, 55, 92,245, 24,242, 62, 93, 51,208, 99, 86, 23, 10,101,174,168,115, 74,133,179,204,161, 98, 4,110, 35, -184, 38, 79,255, 0, 83,109, 63,224, 1,129, 34, 76,115,135,139, 28, 75, 29, 69, 68,124, 51, 69, 46,168,168, 95, 93, 91, 41,184, -105,192,178, 67,126,252,133, 36,200, 55,250,214,208, 64,120,119,164,226,207, 66, 6, 58, 99, 61,253,127,110,168, 40,146, 14, 79, -145, 3,176,234,117,236,175, 32,140,119,245,254,173, 14,178, 50, 7,166,115,251, 53, 54,197, 56, 6,195,215,223,143, 26, 25,222, -163,190,112,127,103, 95,199,190,136, 80, 4, 28,249,117,233,242,208,171,236, 62,223,191, 74,170,144, 55, 30,252, 27, 3,172, 12, - 19,233,219,241, 26, 21,194,122,100, 96, 15, 50,122, 99,167,203, 68, 45, 88, 7,168,198,127, 12,119,207,207, 39,246,104, 39, 14, - 65,238,122,244,207, 92,117,243,209,240, 49, 73,194,122,158,135,167, 78,221,191,225,160,214, 70, 49,230,127,175, 85,214,124,179, -246,254,237, 12,162,115,131,131,230, 15,203, 74,168,176, 3,231,255, 0, 56, 24,164,161,156,124, 57,251,241,165,175, 42, 81, 4, -128,123,105,104,248, 61,215,161,234, 61,195, 9, 4, 17,131,140,142,223,159,183, 85, 65,193, 7,254, 56,208,233, 56, 57,252,117, - 84, 28,245,242,237,243,207,245,104, 16, 14,221,176,115,176,176,216,246,251,173,130,144,113,212,117, 31,209,147,251, 52, 64, 81, - 7, 3, 57,199, 92, 12,227,237,208,169, 35,151, 56,237,220,122,227,174,171,161, 97, 64, 96, 17,233,247, 31,233,206,144, 35,125, -251,225, 50, 15,218,181,186,127, 44, 28,217, 61,137,207, 79,219,211, 69,160,115, 4,228,115, 96,228, 12,227,183,110,191,142,129, - 66,176,164,143, 53, 1,246,117,209,136, 61,199,167, 81,162,144, 13,182,219, 5,193,232, 56,201, 61,187,103,231,233,170,157, 57, -128,201,237,219,190,122,158,195, 61,244, 58, 14, 70, 85,219,229,220,254, 78,137, 78, 6, 9,248,142, 58, 30,199,229,215, 73,176, - 32,251,176, 49, 85,178, 80, 71, 49, 24, 29,179,128,122,159,234,206,170,161,228,172,227, 5, 63, 51,208,106,130,129, 57, 36, 12, - 43,246, 12,103,250, 53,245, 33, 41, 28,169, 39,168,200, 39,169,243, 62,154,215,113,110,214,192,193, 69, 75, 80, 41, 11, 40, 72, -242, 79,235, 44,117,198, 14,142,138, 84,193, 74,208,181,165,208, 82,164,172, 44,165,214,212,133, 5,182,227,107, 79, 84, 56,149, - 0, 82, 71,108,122,116,213,184, 21,116, 32, 12, 36, 16,175, 92,121, 99,240, 58, 41, 11, 82,192,198, 50,156, 1,158,159,143,207, - 73,144, 8, 32,238, 14, 5,200, 32,131, 98, 8, 32,251,198,227,247, 28,108, 53,141,190,213,107,108,134, 43,180,182,171,204,124, - 41, 19, 35, 60,136, 85, 18,145,128, 11,205,175, 13,186,160, 60,210,164,149, 28,156, 13,108,141,181,197, 54,220, 70, 82,197, 66, -151,116,195,121, 72,202,146,221, 49,185,109,229, 32,244, 75,141, 75, 60,221,199, 95, 93,115,201, 4,164,124, 94,189,207, 82, 7, -168,253,186, 37,176, 66,144, 22, 84,164,142,169, 32,227,161,236, 8,243,244,251,245, 28,174,225,188,174,181,153,164,137,162,103, -235,203,114,160,244,191,151,117, 31,114,140, 91,121, 55,141,220,125,147,211,199, 74,107,169,243, 88,225, 80,170,107, 41,214, 89, - 52,139, 90,242,161,142, 87, 35,177,119,115,110,248,235,133,191,199,206,218,219, 45, 52,170,125,157,118,214,229, 55,146,132,186, -136,148,166,213,201,219,244,179,102,224, 18, 71,250,170, 3, 29,180,196,241, 5,199, 86,232,111,197, 1,251, 8, 50,221,147,182, -143, 56,211,211,237, 58, 60,167,100, 74,185,156,140,226, 94,138,213,215, 87, 83,109,251,229, 61,183,144,219,158,226,195,104,140, -227,141,161,111,151,249, 82,145,162, 3,148,130, 92, 5,192, 20, 20,148,231,148, 55,212,227, 4, 14,186, 61,162, 86,176,146,225, - 80, 56,228,194,113,201,219,161,207,235,116, 56,211,117, 47, 5,112,245, 21, 84,117,201, 69,207,170,132,134, 71,149,218, 77, 12, - 8, 33,149, 73,229,134, 82, 46,173,163, 82,145,169, 72, 32, 28, 53,241, 15,138,188, 97,196,116,243, 82,213, 84,195, 69, 77, 80, - 10,200,180,176, 44, 69,212,245, 83, 35, 25, 38, 10,219,134, 85,145, 85,193, 42,192,169, 32,158,135, 75,235,241, 20,165,243,156, -130,149,228,227,191,234,252,191,175, 69, 53,226, 20,169,146, 9, 42, 80, 87, 50,134, 0, 79, 79,192,118,208,142, 44, 52,130, 84, -175,137, 56,248,146, 49,143, 64,122,117,233,170,145,222, 81, 66, 66, 73,248,178, 73, 87, 82, 79,108, 12,246, 29, 53, 36, 61, 54, - 29, 62, 70, 43, 94,183, 35,123, 91,175,205,241,136,238,148, 54,166, 91, 20,250,139, 88, 47,209,166,170, 59,233, 79,254, 76,255, - 0, 80,172, 99,160,230, 39,240, 58,198,120,103,221, 57,187, 25,196,150,199,238,244, 21,134, 94,176, 55, 62,210,175,186,181, 28, - 15,112,143, 87,142,138,146, 84,113,217, 84,215,101, 39,255, 0,165,167,117,218,108,106,205, 62,177, 68, 90, 2, 93,157, 79,120, -165, 71,245, 68,134, 82, 86,218,243,228,123,254, 61,245,167, 85, 38, 11,109,188,210,135,233,152, 91,140,184,160,122,120,145,212, - 83,145,142,255, 0,171,251,117,187, 66, 18,104,170, 41, 36,251, 18,234, 83,255, 0, 68,162,196,254,253, 93,251,227, 20,149, 82, -101,249,133, 45,100, 91, 73, 4,145,202,189, 62,212,108,174, 63, 16, 49,250,180,211,238,200,245, 37, 67,171,211,156, 15,194,174, - 65,129, 89,167, 45, 4, 20,189, 10,173, 21,153,145,214,133,121,160,178,242,122,249,231,190,180,239,217, 89,188,242,168, 28,101, -113,223,195, 53, 74,165, 21,248,241,110,200, 59,151,105, 48,148, 54,212,150, 99, 85, 66, 25,171, 70, 90,211,133, 72, 8,121,198, -149,215, 37, 35, 61,129,214,138,112,241,237, 18,181,246,247,217, 85,195,199, 23, 55,221,185, 92,188, 87,110,170,222,216,155,158, -135, 70,113,168, 85, 74,133,213, 66,154,237,182,137,209,228,212, 2, 90,247, 81, 18, 12,119,150,178,172, 40, 40,165, 36,172, 99, - 92, 76,225,195,218, 43,112,108,191,180, 68,241,163, 87,137, 53,218, 13,213,121, 85, 13,251,109, 69,117, 79, 59,252, 93,220,210, - 61,214, 85, 57,148,140, 9,179,169,240, 12, 87, 90, 24,253, 35,176,207, 39, 85,140,213, 94,201, 95, 89, 89, 81, 50, 68, 88,229, - 41, 44, 77, 97,114,211,137, 33, 50, 70,130,251,177,141, 24, 11,126,210,130,124,216,234, 92,247,139,178,110, 30,135,135, 86, 26, -240,171,156,212, 69, 53, 68, 96, 18, 70, 89, 60, 14, 18, 89, 46, 45,161,102,104,166, 0, 18,247,167,107, 0, 6,255, 0,166, 5, - 42,103, 57, 65, 82,185, 64, 32,133,247,194,134, 58, 28,253,191,183, 79,189,167, 40,130,133, 15,136,130, 15, 48,207, 92,244,234, - 62,127,191, 90,215,182,213,122, 45,249,108, 90, 55,197,175, 49, 85, 11, 94,248,160,211,110, 91,114,123,145,228,195, 92,170, 77, - 82, 51,114,163, 41,232, 51, 90,109,232,174,134,220, 0,165,196, 37, 67, 29,181,181, 22,173, 32,176,218, 22,172, 0, 58,144, 15, - 48, 35,161,232, 51,211,182,149,165,204, 0,210,250,182, 96, 8, 55,216,131,107, 17,234, 8,177, 7,208,223, 12,252,106,244,209, - 69, 44, 79,229,112, 89, 74,158,160,131,165,148,142,161,131, 2, 8,234, 8, 32,216,139, 99, 84,189,166, 92, 73, 94, 92, 36,240, - 71,190, 60, 72,109,253,170,139,190,243,218,251, 81,202,181, 6,152,247, 63,185,197,151, 53,246,105,136,172, 84, 2, 7, 50,224, - 67, 84,180,200,117, 35, 4,165,140, 2,158,227,242,123,220, 13,193,188,183,102,246,187, 55, 70,255, 0,174,202,185,175,125,193, -184,106,119,117,217, 95,154,225, 92,154,165,106,179, 33, 82,165,200, 61,127, 70,202, 74,130, 26, 64,248, 91,109,180, 33, 32, 37, - 35, 95,176,103, 17, 91, 65, 79,226, 3, 96, 55,155,100,106, 73,104,195,221, 29,180,188, 44,162,167,194, 11, 49,228,215,104,147, - 33, 65,146,176,160, 71, 43, 83, 28, 97,207,145,107, 58,252,126,111,173,183,174,109,101,223,114,237,205,200,243, 14, 87,172,107, -134,183,104, 86, 21, 21,196,191, 31,235, 27,118,163, 34,153, 41,108, 62,142,143, 50,181,199, 42, 74,135,250,248,242,211,205, 11, - 23,205,103,169,168,185,146,170,158, 46, 83,159, 68,102, 90,132, 67,211,202, 69, 43,202,122,183, 50, 37, 98,121,105,106, 87, 55, - 74,198,201,233,231,141, 79,232,234, 57,204, 82, 16, 6,132,158, 85, 50, 83,153, 27,174,169, 99, 74,129, 10, 55,149, 68, 19,180, -118, 47, 41, 56, 67,100,168,171,151,155, 61, 79, 95, 60,122, 15, 61, 35,130,164,243, 43,195,200,232, 85,144,149, 30,190,103,160, -235,163,138, 10, 81,148,161, 61, 1, 57,207,196, 1,237,229,215, 58,179, 73, 73,100, 1, 32,169,109,175, 10,108,133,117, 65, 61, - 64, 35,211,190,164, 33, 71, 78,184,138, 6, 12,221,108,127,211,249, 99,203,205, 18,188,146,148,164, 30,157,114,114, 49,212,122, -121,235,227,237, 45,212, 2, 7, 84,167,184, 57,230,251,255, 0,214,210,105,196,231,225,201, 72, 78,112, 71,161,193,239,249,235, -162,163, 54,227,231, 9,229,102, 56, 25, 86,126, 37, 18, 58,142,158,154, 26, 64,223,165,177,147,211,115,112, 58,252,252,223, 22, -213, 70,117,150,146,176,201, 81, 88,230, 39, 35,152, 1,253, 61,115,159,248,104,168,146,144,231,232,202,255, 0, 85, 56, 40,229, - 0, 30,157, 78,124,245,114, 83, 5, 65, 72, 11,202,122,142,131, 4, 30,196,245,208, 41,136,220, 55, 57,130, 80,160,172,229, 74, - 5, 71, 24, 57,192, 61,188,255, 0, 13,102,195,174, 10, 13,246,245,219,231,231,243,194, 75,106, 66,138,139,202,121, 62, 73, 39, - 41, 64,244,249,235,195,175,165, 29, 16,164,129,215, 3,176, 10,244,237,242, 58, 13,247, 86, 20,162,210,241,205,219, 9,199, 76, -118, 57,252,252,244, 57,121,183, 22, 18,162,114, 8, 46, 36,167,166,122, 30,132,122,147,160, 1, 61,122,224,218,109,176, 59,124, -252,244,193, 73, 62, 42,249,210,160,160, 6, 10, 58, 4,243,117,237,215,174,169,202,116,144,148,163, 9, 35, 41,232,112, 73, 35, - 26,244,226,149,225, 44, 52,218, 83,202, 50, 6,112, 73, 3,166, 20, 60,186,106,200, 38, 56, 22,159, 25, 41, 42, 74,136,229, 35, - 39,237,230, 7, 25, 25,253,154,205,172, 79, 99,140,129,115,240,254,120,124,184,115,189,156,218,173,243,217,253,196,140,226,154, -114,201,221, 29,189,186,157,144, 2, 28, 76,104,148, 91,202,137, 62,170,234,144,226,146, 10, 19, 71,106,164, 78, 72,192,235,229, -214, 89,252, 84, 79,135, 38,165, 91,167, 64,144,125,222, 21, 90, 83,212,194, 9,203,148,103,102,202,149, 75,147, 29,226,231,198, -199,134,165,180, 86,174, 83,250, 48, 82,145,204,117, 12,134, 36, 32, 58, 89,144,219,141, 68,148, 28, 97,215, 25,112,135,124, 41, - 13,150, 30, 13,148,156,182,191, 13,197,224,142,160,224,143, 93, 73,106,193,222, 9,123,221,195,158,213,110, 37, 84, 5,220,177, -173,145, 99,221,170, 9, 90, 82,245,211, 97, 33,139, 66,186,235,106,113, 41, 18, 89,144,221, 38,151, 80,109,206,169,241,170, 79, - 3,133,165, 68,213,126, 32,229,133,243, 12,131, 53, 81,228,136,205, 3,157,175,169,213, 36,139,223,107, 71, 40,244, 5,135, 82, -109,142,146,250, 55,230, 49,199,158,230,217, 92,205,165,166,142, 42,152,199,111,171, 99, 12,173,241,188,212,235,255, 0,117,239, -229,177,215, 10, 45,116,211,119, 43,112,233,170, 37,182,230, 76,183, 43,177, 16, 48, 67,141,212,104,203,167, 84, 84,210, 85,250, -200,247,186, 39, 42,135, 76,169,127, 17,201, 25,126, 41,181,229, 37, 94,246,130,227,139, 83, 98,158,134,210,180,160,134,139,132, -169, 8,228,234, 57,157, 60,196,119, 33,160, 58, 3,173, 54,220,106,162,232,187,147, 64,173, 32,128,221,114,157, 86,182,101,168, - 2,112,236, 98,110, 58, 71, 42, 0,200, 82,156,139, 85,108,168, 12, 37, 47, 14, 99,215, 89,237, 42,241,122, 42, 89,121,149,120, -143, 68,240,228, 71, 67,193, 97, 42,112, 20,248,104, 82,146, 14, 81,149, 36, 43, 61,130,149,202, 79, 77, 54,154, 98,201, 79, 48, - 93,157, 23,215,245, 64,140,254,242,183,247, 3,113,214,216,234,185,107, 85, 90,190,153,200,103,134, 73, 8,185,181,196,141,207, - 0,122,217, 95, 77,199,166, 54, 18,161, 94,151, 79,143,238,201, 90,156, 74, 11,144,195, 67, 45,167,222,100,242,185, 41,107, 79, - 47, 68,161,128,211, 94, 17, 4,143,139,237,214, 33, 94,188,163, 65,166, 48,194, 95, 91,117, 54,202,144,132, 54,165,128,183, 95, -199,188,184,162,159,133, 33, 12,114, 39, 3,184,113, 99, 62, 90,108,110,125,200,155, 57,192,243,237, 54,135, 98, 37, 65,105,104, -184, 83, 38, 67,170, 74,157,117,106, 82, 65,231, 43, 42, 36,158,164, 28,103,182,152, 91,179,113, 22,203, 82, 31,144,227,141,177, - 29,133, 60,243,188,138,117,126, 27,202,229, 79,134,132,140,173,213,186,224, 64,230, 35, 28,249, 82,146,156,168,109, 83, 80,180, -133, 70,155,131,247,250, 91,173,253,215,233,123,143,190, 31,153,230, 40,116,234, 94, 76,155, 11, 13,199,112,250,136, 0, 48,181, -193, 30,164,142,215, 14, 21,209,121,205, 91,172,198,128, 37,214, 37,203,151, 18,147, 71,162, 69, 74,158,159, 91,173, 84, 31, 76, - 74, 61, 38, 10, 82, 57,149, 46, 76,199,210,132, 36,116, 79,141,204,122, 13, 72,111,103,182,153,253,140,217, 59, 59,105,234,166, - 43,245,214, 40,146,102,238, 75,165,136,243,169,213, 75,230,241,120, 86, 47, 54, 36,211,230,178,227, 21, 26, 75, 53, 55, 26,167, - 24,207,180,236,119, 35,210, 16, 22,218,146,117, 21, 91, 99,137, 58,134,192,111, 54,211,110, 76,122, 84, 42,181,197,100,221,246, -174,224,205,167, 84,216, 19,169,212,123, 66, 37, 89, 42,151, 77, 97,181, 39,195,159,114, 79,128,212,245,169,240, 22,212,111,116, -105, 13,225, 69, 58,152,173,218,236, 42,179,108, 87,233, 14,186,253, 46,181, 6,157,112, 82, 30,120, 56,211,238,209,110, 10,124, -106,204, 5, 62,219,128, 41, 18, 61,194,107, 60,193, 64, 44, 45, 4, 30,186,117,106,119,163, 48,188,177,253, 92,232,116, 31,218, -177, 26,182, 29, 0, 5,108,118, 44, 24,145,181,142, 35,114,231,116, 85,239,152,101,148,181,162, 92,195, 43,146, 35, 87, 18,135, -188, 13, 42, 22,128, 23, 42, 35, 98, 66,200, 24, 35, 57,137,208,164,161, 30,202,120, 41,197,183,177,147, 96, 55,194,117, 82,245, -225,250,163, 11,134,125,197,158,169, 14,206,182,216,166, 75,169,236, 93,114,190,156,248,141,189,108,196, 90,166,237,169,121,196, -181,250,106, 40,147, 79, 30, 49,116, 81,219, 78,117, 26, 30, 33,248, 90,223,142, 22,238, 53, 90,251,235,183, 21, 75, 77,169,146, -228, 66,162, 92,232, 13, 87,118,250,239,240, 22,241, 75,150,189,233, 78, 11,167,214, 10,153, 99,198, 17,203,141,204,109,181,161, - 79, 69,104,144, 53, 62, 58,210, 27,142,235,239, 21,135, 25, 12,160, 78,108, 32,130, 2, 20,150,218,156,215,108, 60,148,173, 41, - 88, 7, 42, 65, 24, 28,201, 25,193,174,203,122,131,116,219,213,139,110,241,182,232, 55,173,161,112, 70, 84, 43,170,207,186,169, - 84,234,253,183,113,211,152,109, 97, 46, 84,104,245, 86, 28,142,237, 70, 59, 5,226,196,128,132,200, 66, 22,182,154,125,146, 80, -180,201,178,222, 38,170,167,211, 29, 71,246,200, 86,223,104,218, 69, 29, 1, 87,177,189,186,233, 96,214, 30, 85, 40, 0, 56,170, -184,143,195,156,143, 60, 18, 84, 69, 23,232,156,193,247, 18,194,160, 70,237,183,247,176,221, 84,146, 79,219, 83, 27,110, 29,203, -146,109, 13, 30, 23, 61,163, 28,100,240,219, 38,149,107,237,182,228, 73,189,236,148, 58,150,218,218, 61,216, 67,151,221,136,166, -144,210, 25,240, 41, 6,169, 45, 53, 11, 53, 66, 58, 57, 80,186, 76,248, 97,190, 98,160,218,142,164,109,178,158,214,237,167,175, - 65,161,127, 41,109,181,191,248, 74,174, 85,212,196, 72,247,141,118,159, 86,189,184,118,184, 38, 56,243,200, 67, 20,205,205,163, - 65, 92,187,103,244,108,243,134, 42,113, 37,120, 42,121, 41,114,160, 80, 84,117,167,220, 73,251, 19,182,242,247,150,245,217,194, - 29,220,173,162,186,165, 45,185,180,237,176,187,166,214,235, 27,115, 85,154,242,203,141, 53,105,221,169,247,138,213,131, 33,111, - 58, 60, 24,243, 19, 85,132,218, 80, 19,227,198, 71,195,173, 7,218,190, 57,120,161,246,121,238,117,107,135, 46, 42, 54,246,212, -222,125,182, 66,215, 76,220,221,149,190,133,155,115,191, 81,182,165,170, 84, 41, 82,173,155,198,146,212,216, 50,159,240,155,121, -200,241,235, 44, 76, 97,206, 80,135,152,140,178,151, 90,121,170,146, 44,222, 17, 46, 79, 77, 21,101, 90,144,210, 68,210, 26, 90, -141, 23, 26,157, 24, 36,177, 72,226,224,221,193, 66, 60,166,100, 39,106,230,105,184,247,129,158, 20,172,144,102, 25, 56, 96,130, - 73, 11, 77, 13,172, 72, 85,114, 4,208,176, 63,238,220,198, 0, 12,193, 90,219,205,107,111, 55, 22,222,185,109,106, 77,203,105, - 92,212, 27,170,209,172,183,227,209, 46,123, 90,179, 79,185, 45,186,219, 47,160, 44, 55, 78,175, 80,230, 63, 25,215,130, 20, 20, -227, 72,116,188,206, 64,121,180, 19,141,103,175, 87,204,134,148,133, 47,152,148,124, 42, 90,135, 81,202, 0, 79, 42,142, 57,128, -233,159,246, 64, 39, 57, 58,138, 47, 16, 27, 71,120,112, 95, 98,211, 61,164, 94,203, 13,207,174,217,124, 50,238, 29,187,102,110, - 70,229,240,243,119,189, 42, 85,155, 77,162,222,245, 72, 16, 41,117, 22,108,155,169,231, 90,184,109, 7,235, 46,162,151, 58,152, -243,203,175,208,101,130,245, 6,171, 58,144, 89,145, 18, 68,155, 3,127,214,247,155, 98,118,115,120,231, 91,109, 90,114,247, 99, -108,236,173,194,145,108,177, 83, 77, 90, 45,188,253,219, 67,139, 87,122,147, 14,164,243,190, 44,248, 45,185, 37, 98, 59,143,101, -242,194,155, 18, 15,188, 7, 73,143,214,196, 35,167,138,170, 9,185,212,211, 51, 37,153,116, 75, 28,128, 41, 49, 75, 29,205,152, - 95,170,150, 83,177,218,235,123, 43,134,115,213,207,218, 72,189,141,233,170,169,213, 93,148,221,209,145,142,149,120,220, 40,189, -200,177, 4, 41, 27, 0, 8,185,198,215,109,149, 22, 37,219,112, 75,167, 73,165, 92, 21,191,118,183,110, 26,195, 20,107, 85,228, - 68,174, 84,165, 82,105,206,202, 98, 44, 87, 92,162,212, 48,165, 45,180,169,192,152,142,168,161, 4, 36, 36,229, 99, 64, 56,226, -223, 77,219,218,203, 74,243,176,184,111,131,100,212,184,131,106,210,106,188,182,174,237,198,176,104,236,108,117, 26,191,107,238, - 45,231, 67,159,114, 83,238, 42,188, 53,220, 59,203, 46,201,218,125,206,169,219, 54,146, 99,166,100,164,216,146,234, 18,227,161, - 2,157, 2,167,204, 14, 62, 61,170,123,199,195,134,245,239, 23, 13,187,105,102,194,182,165, 83,246,238,171,105, 84,183, 81, 53, -244,170,245,137, 87,220,107, 45,183,233,117,187, 54, 41,166, 73,133, 64,143, 76,250,217,135,130,156, 67,211,229, 61, 20,165, 50, - 32,160,164,235,150,155,127,199,229, 2,218,166,220, 17, 47,141,155,184,239,201,213, 27, 39,106,105,180,122,212,125,229,250,134, -170,214,227,109, 78,199,111,230,200, 68,190,174,249,149,109,181,172,187,121, 82,106, 16, 56,129,184, 42,147, 41, 97,218,124,229, - 79,183,224, 36,215,213, 28,203,110, 70,206, 69,195,144, 85, 69, 5, 70, 98,154,105,203, 23, 84, 82, 9,145, 88, 2,188,203, 43, - 29, 22,223, 64,107,155,217,130, 11,134,211,227, 63, 18,206, 91, 83, 89,150,100, 83,153,115, 5, 2, 9,166,100,112, 41,101, 77, - 75, 50,195,172,141, 83, 43,150, 83, 39, 47, 66,149,186, 60,183, 82,141,110,225,240, 39,196,221,155, 81,191,231,222,141, 89,213, - 55,237, 88,247,245,205,127,221,171,222,173,181,185, 61,226,240,182,175, 86,237, 91,186,211,159, 89, 98,236,113,202,246,245, 75, -190,106,209,152,110,218,100, 61,112, 84, 36,212, 28, 91, 16, 22,220,105,170,139,127,159,236,242,222,186, 77, 26,239,166, 87,232, -112,233,215,213,183,115, 90,106,118,188, 55, 27,106, 92,217,154, 61,128,237, 3,137,199,119, 10,177,114,223, 77,221,139, 75, 53, -122, 53,223,195, 53,253, 73,112, 71,241, 98,181, 54,200,172, 83,221,113,115,223,163, 51, 57,230,147,199, 5,183,187,182,199, 20, -139,188,118,233,203, 98,159, 84,186,183,115,137, 91, 34, 52, 27,238, 84,170,188, 61,236,220, 94, 32, 44,203,171,108, 40,237, 75, -107,110, 95,141, 88,160, 80,145, 95,186, 77, 97,137,205, 83, 25,174,211,162,188, 99, 84, 40,149, 52, 64,143, 46,157, 75,218, 83, -101, 77,186,105, 19,162,236, 45,249,108,218, 84, 43,254,198,220, 58,109, 34,211,226, 14,155, 2,237, 19,173,203,215,141, 77,199, -186,173,217,247,125, 99, 98,170, 16,170,182,125,110,232,227, 78,236,167,187, 2, 77, 5,212,166,211,181,219,161, 84, 87, 88,151, - 81,153, 91, 22, 42,173, 58,216, 2, 66,109,243,176,249,247,227,159,188,172,197,153,181, 23,220,146, 73, 36,158,189,183, 55,238, -119,191, 83,134, 79,133, 94, 26, 54,163,119, 40, 23,245, 15,114,220,191,142,226,213, 56,139,225,227,133,189,165,172,237,181,249, - 97,155, 30,221,191,119,242,131,196, 96,167, 93,151,172, 39,236,250,202, 55, 62,208,102,241,218,107, 53,128,138, 37,126,130,149, - 83,107, 53, 9,204, 84,230, 17, 17,189, 55,212,190, 3,248,146,172,211,160,212,169,214,189,181, 33,186,142,219,211,247, 54, 44, - 95,227, 14,196,106,162,186,125, 98,181,178,180, 58, 45,166,105,207, 92, 9,120,110,100,217, 28, 70,108,107,177,109,190, 79,173, -221, 99,115, 41,203, 76, 94, 97, 37, 17,242,109,137,226,246,211,217,104,251,163, 81,127,101, 62,187,186,171,187,235,180,188, 70, -108,210,237,235,249, 22, 93,137,180,219,153,179, 84,221,245,137,101, 55, 93,179, 23, 99,212,230,110, 13,155, 14,126,244, 71,153, - 30,155, 22,183,110, 58,135, 44,136,172,191, 58, 84,105, 79,178,151,218, 87,181, 90,244, 52,109,183, 49,108, 26,164,171,191,110, - 45, 11, 30,153, 2,181,115,110, 83,149,219, 97,171,198,196,221, 46, 9,183, 14, 21,126,223,177, 98,217, 80,152,183,109,137, 17, -184, 39,182,216,149, 73,247,169,115, 94,157,126,212, 38,174,188,170,109, 62,145, 66,136,100, 17, 21, 93, 71,204, 47,211,227,220, -219,115,111,195,225,108, 1,107, 11,252,252,239,134,106, 63,179,199,115,133,155,125,215,171,187,135,179,118,237,197,106,110,150, -201,109,205, 10,223,153,185,246, 52,250, 21,249, 15,122,172, 61,215,189,169, 23, 85,173,123,210,110, 87,226, 85,161,161,221,180, - 69, 50, 35, 16,154,153,245,133, 70,101, 86, 39,143, 18,101,191, 50, 43,173, 61,131,193, 94,250,238,142,241,110, 54,200, 89,144, -172,105,247,150,215, 94, 63,197,253,209, 54,126,230, 88,150,253,156,245,230,245,238,157,187,165, 91,118,205,231,112, 87,162,211, -175, 26,213, 74,234, 15,179, 73,139, 75,126, 92,138,179, 48,164, 75,167,183, 38, 43, 46, 58,157,172,107,218, 71,106,187,184,205, - 93,151, 6,202,110, 37,197,110,209,175, 29,134,190,172,246, 39,241, 13, 5,253,203,160, 93, 60, 62,109,135, 18,118,213,139,112, - 73,220, 10,142,200, 73,165, 84,170,177,119, 63,136, 8, 23, 60, 70,218,180,225,210,217,143,182,241, 40,114,169,117, 3, 80,155, - 86, 12, 7, 9,252, 89,216,124, 52,223,247, 21,199, 92,217,203,159,115,109, 71,183, 27,106,119, 94,200,183,218,221,216, 86, 93, -205,110,222, 91, 37,184,134,249,219,247, 46, 91,196,109, 93, 86, 53,227, 71, 49,101, 84,161,213,227,179, 69,164, 59, 61,217, 13, - 76,139, 38,154,150, 85, 17,245,109, 21,212, 94,194,230,253,122,118,237,252, 63,118, 51,229,219,231,249, 97,202,188, 61,155,155, -199,118,239,117,185,183,155, 45,111,219, 48,169,151,253,165,181,247, 29,144,197,255, 0,186, 86, 69,154,185,177,175,167, 54,191, -110,233, 53, 41,149, 43,218,189, 9,184,108,215,247,190,249,155, 69,160, 50,234,210,253, 65,250, 53, 77,200,172, 42,159, 74,151, - 45,166,227,134, 30, 29,118,127,120,246,186,191, 46,244, 59,148,198,229, 93, 91,162,198,209,109, 69, 98,214,187, 45,122, 85,145, -109,220,147, 54,155,112,111,218, 69, 66,255, 0,180,170,251,125, 80,157,121, 82,101,220,150,181, 18,154,240,167,215,104, 46, 83, -162, 85, 36,212, 19,245,147,172, 55, 5,237,158,182,189,170,118,111,241,175,183,251,177,186, 92, 50,213, 47,138,213,133, 67,216, - 27,113, 74,181,183,186, 14,223, 84,174,122, 47, 11,119,174,202,223, 59, 29, 14,226,170,191,178,245,148,204,114,158,230,219,222, - 52, 89,210, 61,212, 74,157,109,221,244, 74,100,119,233,207,218,140,207,171,105,175, 15, 60, 86,219, 59, 19,183, 23, 37,185, 55, -107, 42,215,157,246,197,244,141,202,218,155,189,189,196,135,110,218,246, 85,232,222,219,222,187,117, 26,163,120, 88,142,109,229, - 70, 70,225, 69,136,139,192, 85, 33, 71,143, 94,160, 33, 53, 10, 36,116,205, 53, 8, 43,126, 27,135, 2, 45, 74,111,229,107,222, -224,251,173,219,227,235,252,241,159, 47, 99,243,255, 0,140,109,229,209,192, 61,139, 67,254, 54, 13, 55,134, 30, 56,238,159,226, -247,134,189,165,221,155, 88, 82,239, 26, 58,127,141, 58,134,224, 29,184,254, 17,110,133,181,238,252, 37, 74,228,217,202, 39,240, -190,165,239, 17, 99,253,100,191,208, 49,227,221, 17,185, 92,241,117, 46,135,178,187, 35, 81, 28, 31,213, 31,183,183,186,171, 31, -122,172,157,204, 93,241,102,218,215,157,151, 58,233,188,119, 54,204,184,111, 91, 90,206,160,237,157, 94,102,218, 53, 31,110,232, - 55, 5,201, 73,181, 97, 62,229, 82, 21,212,253, 17,170,156,202,136, 53,143, 5,170,122,233,238,255, 0, 21,182, 21,251, 73,221, - 38,109, 61,163,187,173, 42,230,243,109,206,204,217,215,189, 66,226,221,186, 53,235, 74,102,187,180, 15, 88,202,106,225,181, 40, -212,205,160,161, 61, 71,164,207,141,102,114, 42,155, 50,125, 77,232,203,169,120,130,166,250, 89,240,157,111,237,173,252,177, 83, - 70,217,139, 67,114,246,121,205,192,178,182,194,199,221,235, 38,179, 78,133,124, 51,107,215,171,138,221, 10,189,205, 93,167, 93, - 54,173,114, 93,149, 85,143,101, 93, 20, 42,173,118, 11,240,157,147, 78,174, 70,121,218, 70, 95,139,225,190, 91,109, 66, 82,230, -223, 59,143,119,166, 50, 8,184, 3,231,127,135,166, 49, 78, 42,118,162,139,177,156, 68,238,246,208, 80, 63,132, 77, 83,182,246, -242,168, 91, 74,166, 93,239, 65,153,117,219,117, 40, 41,100, 86,172,219,150,169, 75,166,194,137, 94,175, 81, 43, 42,159, 72,151, - 83,133, 10, 28, 42,156,138, 35,149, 8, 81, 34,197,146,211, 13,173, 88,184,129,221,147,190, 91,193,122,238,130, 40, 10,181,162, - 92,146,233,172,210,109,231,107, 47, 92,147, 40,244, 11,118,135, 75,181,237,216, 53, 75,142, 68, 40,170,184,107, 72,161, 81,105, -222,253, 60, 68,134,137,147, 11,242, 90,133, 13,183, 81, 21,165,172, 21, 55, 58, 70,221,186,116,193,180,169,223,215, 31,255,217, +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, + 73, 72, 68, 82, 0, 0, 1,245, 0, 0, 1, 26, 8, 6, 0, 0, 0, 8, 90,206, 70, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, + 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156, 24, 0, 0, 0, 7, +116, 73, 77, 69, 7,217, 11, 23, 13, 49, 40,184,203,133,107, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,121,148,101,199, 93, +231,249,137,229, 46,111,201,151, 75,173,218,229,146,188, 27, 27, 83, 50,244,216, 24,170,161,212,110,179, 13, 91,137, 99, 6,204, +176, 73, 3,211, 51,109,250,140, 37,205, 52,115, 12,167,177, 81, 21,208, 6, 26,152,163,106, 24,186, 27, 24,104,149,221,192, 48, +199,224, 86, 25, 4,182,161, 1, 23,182,177,145,109,217, 42,107,177, 84,107, 86, 86,102,190,229, 46,177,204, 31, 17,239,229,171, +116, 45, 89,155,164, 18,247,171,243, 78,170,222, 18, 55,226,222,136,248,254,126,223,223, 47, 34,160, 65,131, 6, 13, 26, 52,104, +208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, + 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,120, 78,160,158,227,235,137,248,202,129, 29, + 82,178,197,123,134, 64, 29,223,111,208,160, 65,131, 6, 13, 26, 92, 3, 16,128,148, 82,220,254,175,247,188,238,247, 62,241,243, +223,126,252,211,191,248, 29,139,239,249,190,175,250,195, 84,203,157, 83,223,105,208,160, 65,131, 6, 13, 26,188,192, 61,117, 1, +164, 63,254,214,151,191,251,231,191,251, 21,111,223, 86,143, 58, 91,122,157,214,155,191,230,165, 47,255,218, 87,108,217,253,145, +207, 28, 61,186,212,175, 30, 3,124, 67,238, 13, 26, 52,104,208,160,193, 11,155,212, 37,208,254,250, 91, 91,223,245,207,182,154, +215,140, 78,156,162, 94, 90,196,140, 74, 94,246,178, 91,230,191,251,107,111,251,214,207, 61,179,164, 62,255,236,202, 39,129, 81, + 67,236, 13, 26, 52,104,208,160,193, 11,219, 83,207,254,250,137,149,163,155,102,211,215,190,233,182,222,118,111, 60,118,117, 5, +179,186,202,252,214,173,250,109,223,248,170,175,183,206,188,244, 35,143, 30,253, 56,176,216, 16,123,131, 6, 13, 26, 52,104,240, +194, 36,117, 0,225, 61,171, 31,120,116,249, 19,199, 70,118,211,157,175,156,123, 89,174, 52,245,104,132, 61,125, 10,178, 54,119, +190,233, 85,175,124,237, 45,179,187,254,252,211,207, 62,209, 47,204,225,230, 17, 53,104,208,160, 65,131, 6, 27,247,158,159,235, +235,229,192, 44,112,227,215,222, 62,243, 3,191,253,182, 29, 63,114, 75, 75,231,195, 97, 13, 74, 33,175,191,149,252,166,155,120, +252,217,197,149,123,126,229,145,159,253,208, 39,158,249, 53, 96, 53,254,222,191,144,111,166,247,126, 39, 48, 31,255,121, 88, 8, +241,162, 54, 74,254,177,181,183,193,186,231,191,111,215,153,207,255,222, 71, 14, 95,203,215,105,208,160, 33,245, 75,135, 4,122, +192,182,237, 61,253,109,255,249, 7,110,251, 87, 95,187,189,179,189, 24, 89,192, 33,182,221, 72,235,230,151, 80,121,199,255,246, +155, 31,253, 79,255,238, 15, 63,245,147,192,211,177,190,151, 77,236,222,251, 29,192,142, 13,126,125, 73, 8,113,104,131,229, 62, + 12,236,142,255,188, 95, 8,177,247, 69, 78,234, 47,138,246, 70,227,100,119, 36,142,157, 83, 31, 29, 2, 14, 3, 7,132, 16, 75, + 87,224, 58,235,203,231, 74,247,193,203, 32, 75,128, 67,226,222, 71,150, 46,226,247,103, 62,255,123, 31,185, 42,207,255,185,186, +206,243, 96, 16,237,158,106,215,184,191, 29, 18,247, 62,114,160,161,166, 6,151, 10,125, 25,164,236,128,153, 77,221,228, 43, 54, +117,244, 38,231,133, 56,195, 82, 16, 32,132, 16,126,252,142, 24,191, 63,249, 84, 3,237,218,250,209, 79,124,224,248,159,252,226, +183,223,244,237,111,220,218,153,171,106, 15, 75,139, 20,237, 46,201,166,109,252,242, 61,187,222,190,243,246,109, 47,127,199,131, +127,241,206,211,253,234, 35, 87,136,216,247, 0, 15, 92,196,100, 12,112, 0, 56, 40,132,216,223,116,155, 23,141,202,176, 39,190, +206,101,224,141, 39,220, 7,189,247,251,163,225,114, 57,228,190, 19,120,248, 18,126,119, 16,184,243, 10,147,202, 60,240,177,117, +111,239, 5,238,111,122,199, 85, 37,243, 29,192,131,235,200,252,140,254,230,247,237, 58, 12,220, 35,238,125,228, 96,115,199, 26, + 60, 23,164, 46, 0,209,201,212,206,159,121,235, 45,239,121,219,235,182,238,154,109, 37,169, 19, 50, 16,182,148,225, 37, 4, 66, +171, 51,254,141,148, 8,165,214,254, 45,194,103, 14,225,107, 47,156,209, 26, 57, 85,142,177, 53,110, 36,248,129, 59, 95,243, 53, +175,191,125,203,251,127,248,189, 7,223,245,177,199, 78,252, 38, 80,242,220, 75,241,123,128, 61,222,251, 61,192, 93, 87,194,115, +107,240,188,226, 99, 23,249,253,187,129,221,222,251,187,174,134,215,252, 60, 96,207, 57,218,216,144,250,213,245,206, 31, 94,167, +142,156, 13, 59,128,135,253,190, 93,247,136,123, 31,105,156,136, 6,207,137,167,190,101,223,183,190,228,189, 63,254,198, 27,222, + 92, 13, 29,222, 9,148, 20,193,129,247, 34,188,144, 8, 39, 2,245,122, 64,138,224,219, 59, 15, 10,132, 16,193,223,247,160,132, + 16, 90, 10, 21, 61,226, 64,234, 30,240, 30, 39, 4,229,176,226,181,183,108,221,242,240,123,190,243, 87,126,252,215,254,236,165, +191,251,167,143,253, 44,112,226, 10,121,237, 99, 79,136, 11,120,107,211,255,126,216,123,127,103, 67,236, 47, 26, 28,138, 74,204, + 33, 33,196,193,232,201,207,199,103,125,247, 84, 31,216, 1, 60,228,189,191,227, 10, 61,251,253, 4,121,255, 66,184, 26,253,236, +238,179,188, 55,239,247,237,218,211,200,191, 87,133,208,231,207, 66,232,247, 3, 7,196,189,143, 28,142,159,143, 21,196,241,119, + 30,244,251,118, 29,110, 60,246, 6, 87,221, 83,207, 18,185,227, 91, 94, 57,255, 6, 63,168,169,139, 18,156, 11, 36, 61, 81,214, +199,254,188, 88,227, 93, 37,145,155,182, 70,114,119, 8, 9,184,168,226, 11,152, 48,188,116,129,248,165, 4, 75,200,207, 23, 80, +149, 53,179,105, 42,255,159,123,191,233, 39,222,240,242,237, 95,241,191,255,250, 71,239, 45,107,251,137, 43, 65,236, 66,136,243, + 74,155,209, 59,127,128, 53,153,118,103,156, 20,247, 54, 93,232,154,198,126, 96,255,217, 60,239, 72,218, 7,128, 3,222,251, 7, +167, 72,112,199, 21,124,246, 7,198, 70,196,243,224, 49,238, 92,103,212,238,158,242,224, 27, 82,191,242,120, 96, 29,161,223, 33, +238,125,100,210,239, 98, 46,195,126,191,111,215, 1,130,138, 52,158,107, 30, 4,110,107,110, 95,131,141, 66, 94,194,111, 84, 85, +187,197,223,251,251, 19,127, 45,100, 73, 39,181,116, 90,208,206,125,124,185,181,255,207, 28,185,172,192,214,136,172, 29, 72,222, + 57,112,142,137, 87, 14, 64, 5,174, 0, 55, 2, 95, 0,101,248,183,175,226,247, 61,222, 59,106,235, 48,165,229, 39,190,235, 13, +187, 31,222,247, 93,127,112,235,182,222,119, 70,218,151, 87,243, 38, 9, 33, 14, 16, 98,154,211, 30,211,158,166,251, 92,211,184, + 83, 8,113,207, 70,164,116, 33,196, 61,235, 60,234,251,174,241,182,239, 89,167, 82, 76, 75,188,123,162,215,216,224,202, 25, 81, + 59,214, 41, 35,247, 79, 19,250, 25,125, 45,144,251, 61, 83,111,237,240,251,118,221,221,220,197, 6, 87,211, 83,199,195,226,125, +127,248,196,187, 62,240,233,147,223,249,202,237,173, 91, 4, 72,231,189,139,221, 18,231, 3,101, 15, 43, 39, 95,127,243,204,171, +126,244,235,110,223,145,235, 92, 58,231, 64,169,224, 91, 59,135,175,250, 8, 37,144, 55,189, 14,185,229,118, 68,111, 59, 34,239, +129, 41,113,131, 19,248,213, 35,184, 19,143,129, 25,129,104,225,177, 88, 15,174, 95,241,230,215,220,124,243, 7,247,125,215,111, +252,243,251,255,139,250,226,145,229,247,179,150,188,119,181,136,253,176,247,254,192,212,224,220,121, 69, 6,252,151,103, 68, 31, +186, 66,153,214,211, 25,254,151,180,220,236, 74,148,241, 92,180,119, 93, 61, 55, 84,222, 37,120,200,251, 89, 75,174,156,247,222, +239,188,134, 99,235,211, 36,177, 95,220,251,200,129,152,156,181, 99,234,243,171,166, 66,173,203,186,191,168,140,251,243,144,230, + 90, 63,189,132, 37,111,151,187, 18,224, 34,140, 40,214, 25, 81,103, 35,246,131,126,223,174, 67, 83,227,100,247,133,126,211,160, +193,229,144,186, 5, 6,192,103,254,252,241,254,123,255,252,241,126,139,179,111, 98,179,233,173,175,221,250,195,223,121,199, 75, +174,107,203, 84, 26,231,131,244, 94, 20,248,114, 0,118,128,122,217,155,209,119,124, 47,234, 37,255,228,156, 18,130, 63,245, 4, +230,241, 15, 97,159,252, 40, 66,165,224, 61, 94, 64, 53,172,120,217,245,155,102,255,224,167,255,251, 95,253,198,119, 62,116,234, +228,114,241,167, 92,185, 24,251,185,112, 69,214,199, 70, 98,187, 59, 14,246,157,103,249,252, 48,107,210,240,210, 57,202,120, 96, +234,183, 7,132, 16,251,167,202,189,155,117, 25,221,177,204,189, 27,201,222,247,222,223, 29,189,209, 29, 23, 91,175,171,209,222, +243,180,245,190, 88,238,244,100,124,197, 51,197,167, 60,218,105, 92,147,222,172,223,183,107,207,186,186, 31,152,250,123,223,149, + 32,117,191,111,215,153,207,235,222, 71,246, 71,226,189, 47,246,129,249,117,223, 63, 8,236,189,152,216,113, 84, 19,206,222,215, +131,129,178,247, 92, 73,102,241,183,227,229,100, 59,207,101,160,199,114,246, 71,195,231,114, 8,126,154,212, 15,108,176,172, 3, + 83,245,218,227,247,237,154,191,130, 70, 70,131, 23, 49, 46, 69,182,118, 64, 65,144,162,143, 17,214,143, 63, 9, 60, 21, 95, 79, + 10, 65,103,223,158,151,253,212, 7,238,249,202,239,191,165,157,118,140,181,248, 98,128, 59,117, 28,183,116, 20, 95,173,144,190, +229, 94,178, 61,191,124, 86, 66, 63,195,106, 93,184,149,228, 13, 63, 76,242, 53, 63, 6,222,131,176,129,183, 5, 84,195,154,215, +190,244,186,205,239,253,177, 93,251,128,155,185,250,235,238,167, 39,163, 75, 26, 96,222,251,221,192,227,209,235, 59,151,183,191, + 35,126,254,177,184,244,234,108,152, 94,231, 58, 31,191,247, 48,103,198,254,215,151,249, 96,140, 15,159,147,124,189,247, 15, 17, +226,120, 59,206, 83,175,135, 35,169, 62, 87,237, 61, 91, 91, 31,143, 36,209, 72,197, 87,134, 96,166, 9,112, 71,244, 92, 47, 21, +103, 62,175, 80,214,199,206, 98,128, 49,229,137, 62,236,247,237,218, 80, 88, 99, 42,139,252,252,125,125,223,174, 7,207,163, 84, + 60, 20,255,158,175,157,227,126,249,248, 21,184, 31,231, 50, 14, 55,106, 68,238,108,186,110,131,171,229,169, 19,189,225, 58,190, +152, 34, 83,117,203,230,252, 91, 31,124,219, 43,246,190,229,101,155, 95, 90,142, 28,214,214, 80,142,192,212, 32, 60, 34,129,236, + 59,126, 22,245,154,111,158, 20,182, 50, 42,249,224, 39,158,224,131,159,124,130, 83,253, 17,137, 18,188,242,250, 5,190,237,142, +219,249,170,219,174, 11, 5,223,244, 6, 68, 58, 67,253,145, 95,128, 84,135, 42, 72,129,233,151,124,223, 55,190,230,245,191,253, +161,207,254,240, 7,255,246,137,119,115,149,150,187, 69, 18,219,179,206, 35,188,216, 50,246,196,201,100,253,224, 61, 56,101, 36, + 76,123,179, 59, 88,203,180, 63,116, 1, 99,227,161,169, 9,238,192,212,164,176,115, 93,189,239,246,222, 31, 62,199, 70, 49, 15, +156, 69, 42,156, 46,107,207,148,103,243,208,243,212,222,245, 89,196, 75, 83,245,219,113, 21,199,202,238, 11, 76,186,151,211,175, +174,120,248,229, 28,100,184, 99, 61,169, 79,140,231,144,129, 61, 45,249,222,205,153,177,221,203, 49,132,167,159,215,217,250,211, +164,255,249,125,187,150, 46,176,140,235,226,250,122,200, 30,223,123, 1,245,237,240,186,241,188, 35, 62,239, 29,211,109,240,251, +118,221,113,177,210,190,223,183,235,146,250, 77,148,224,215,147,122,147, 5,223,224,170,145,250, 25,253, 47,146,232,236, 91, 95, +179,240, 19,251,239,122,249,189, 55,118, 91,173,209,192,226,109, 9,117, 25,175,164, 16,102, 64,242,166, 31, 57,131,208,255,219, +231,143,240,206,223,249, 48,135, 79,174,146,103, 9,137,150, 72, 15,159,124,250, 20,239,251,171,207,242,173,119,220,198,255,185, +231,205,180,179, 4,185,237, 21,232,215,220,133,249,248,111,194,204, 54,192,135, 32,186, 23,252,244,219,223,248, 35,255,245, 99, + 79,188,207,123, 62, 77, 8, 17, 92,105, 66, 95,239,189,238,191,200, 50,198,155, 78, 76, 79, 38,247,156, 37,182,187, 55,122,183, + 15,197,201,100,124,237, 59,206, 83,252,125, 83, 19,220, 61,235, 73, 33, 94,251,161,169, 9,244, 62,239,253, 25, 82,119,148,220, +239, 94, 55,249,220,181, 46,142, 62, 93,183,221,207, 83,123,239,155, 42,239,254,152,196,184,254, 89, 93,109, 15,247, 74, 17,239, + 67,103,243, 92, 99, 56,226, 0, 33, 28,113,248, 42,181, 97,233, 44, 75,215,206,144,124,175, 16,169,223,119, 70,127, 58,147, 20, +247, 70,210,155,190, 15, 15,250,125,187, 14,158,135, 60,207,236,235,235, 36,233,104,184,156,217,215,247,237, 58,155,124,190, 55, + 42, 21,135,206, 67,200,119,179,150,181, 62,238,151,119, 62,135,243,243, 82,163, 68, 53,184, 88, 92,110,214,248,152,208, 95,242, +142,111,184,225, 87,127,255, 7, 94,249,174,235,178,180, 53, 44,107,188, 25,130, 41, 67, 28, 93, 9,192, 34, 54,223,132,254,234, +183, 79,126,252,249,163, 75,188,253, 87, 63,200,167,142,172,224,211,156, 90,165,144,100,164,173,156, 78,183, 67,222,233,240,254, +191,254, 2,239,121,255, 71, 39,191, 81,183,255, 83, 68,251, 58,176,195,112,117, 9,166,170,121,253,109, 91,183,127,245, 43,183, +191,133,201, 34,184,139, 34,220,251,206,243,122, 24, 56,181,110, 66,188,231, 18, 18,173, 30, 92,231, 93,222,113,174, 50,226,251, +211,217,246, 59, 35,233,158, 15, 7,133, 16,103,221, 20, 39, 18,195,253,235,188,157,221,231,152, 44,199,132,121,231,217, 8,101, +170,110,207,103,123, 15,199,242, 14,156,165,172, 43,238,229,122,239,239,187, 28,131,238, 2, 94,231,217, 48,142, 63, 63, 30,175, +125,165,112,247, 5,218, 48,253,222,252, 21,204,186, 14,253,233, 44, 68, 29,227,232,119,158,167, 47,158,189,175,223,251,200, 93, +103,139, 49,199,107,156,183,175,139,123, 31,217, 43,238,125,228,254,243, 17,122,252,222,126,224,174,105,181, 38, 26, 13, 23,131, +157,103,105,239, 70,113,232, 60, 74, 81,131, 6, 87,156,212, 5, 32, 22, 58,122,247,239,253,143, 47,255,253,247,126,203,173,255, + 3, 53,148,174, 14,203,209,132,133, 68,130, 22,160, 5,158, 10,245,178,175, 67,116, 55, 79, 10,184,255,119, 62,202,231,191,180, +204,178, 17, 28,233, 27,158, 94,174,248,194,201, 17,135, 79,142, 88, 42, 44, 94,107,102,103,187,252,193,223,124,158,131,159,252, + 98,100,117,141,218,241,117,248,149, 19,160, 36, 8,143, 19,144,182, 82,190,103,215,203,119, 19,246,148,191,216,216,250, 3,231, +121,237, 94, 55,233,221,121,177, 91,197, 78,237, 45, 62,105,250,133,200, 39,202,207,251, 47, 98, 80,223,115,129,242, 14,174,155, + 36,118, 76,213,111,253, 86,169,123,207, 87,191,179,212,237,185,110,239,222,231,106,227,159,216,150, 7,214,121,233, 87,130,212, +199, 27,222,220, 63,245, 58,192,151,231,106, 60,112,190, 60,136, 13,183, 35,196,132,119,172,243,202,215,147,216,210,186,247,175, +212,178,205,189,231, 75,242,138,228, 58,125, 79,239,190,192,178,186,123, 46, 64,198,231,236,235, 23, 61,201,125,121, 89,205, 82, +214, 6, 47, 58, 82, 31,239, 40,211,125,243,109, 51,255,234,163,255,243,171,223,247, 61,175, 92,120,221,112,104,177, 88,112,117, + 40, 85, 9,132, 18, 8, 45, 16, 74, 34,180, 64, 94,255,154, 73, 33, 95, 60,118,154, 63,254,196, 83,208,110,133,101,110, 82,130, + 82, 88, 36,171,165,229,139, 39,134, 28, 62, 62,164,246, 2,167, 20, 31,250,212,147,107, 21,216,124, 59,126,180, 2,152, 88, 27, + 15,198,241,138, 27, 23,110, 3,174,227,234, 37,204,237,137, 94,228,197, 74, 98,211, 4,181,116, 17,164,112,112,131,147,201,161, + 13,202,180,231,178,252,119,175, 35,216,141,212,239,192,243,212,222,195,207,213,254,251, 49,132, 48,189, 87,251, 18,151, 39, 73, + 47, 69,242,190, 77, 8,113, 71, 84, 86,246, 78,189,238, 18, 66, 44,196,239, 44,157, 65,114,193,240,186, 82, 94,250,161,243,120, +169, 7, 46,211, 51, 61,151,199,123,177,253,105,207, 57,251,250,198,226,218, 87,210,203, 61,176, 1,117,165, 65,131, 23, 4, 46, + 54,166, 62,150,219,175,255,161,127,178,229,167,126,237, 91,111,249,209,196, 41,134,149, 3,229,193, 59,132, 7,225, 4, 94,137, + 32,189,139,240, 19,161, 83,228,252,205,147,130,158, 56,177,194,104, 88, 67, 47, 91,179, 19,198,233,109, 82,130,247,156,238,215, +212,149,225,198, 89,205,106, 81,175, 85, 98,102, 27,160,160, 28, 34, 90, 51,120, 60, 24,195, 75,182,205,108,205, 82,181,189,172, +236,103, 46,178, 93,231,219,239,122, 58,105,102, 62,122,109,123, 46,114,155,216,221,231,152,108,184,144,119, 61,189, 73,207,121, +214, 70,111, 84,210, 59,124,158, 54, 94, 84, 89,235,235,246, 28,182,247, 57, 89, 27, 30, 13,183,245, 49,239,251, 47,103,109,122, +252,237, 70, 54,187,217,235,189, 63,200,153,251,211, 63,192, 37,238,244, 54,181, 5,233, 5, 13,178,184,102,125, 58,150,187,135, +203, 91,179,190,177,254,244,229,137, 97,243,151, 83, 30, 23,177,252,116, 74,197,216,177,129,254,220,100,161, 55,120,209,144,186, + 0,152,201,213, 27,127,238,155,111,220,119,207,206, 45,111,170, 42, 40,146,176,229,171,183, 30, 81, 59,210, 84,178,108,173,107, + 33, 37, 90, 77, 86,176, 11, 0,111, 38,133,109,157,109,163,210, 4,235,136,251,197,251, 72,234,241,175, 23,160, 36,131, 97,205, +147, 69, 65,246,186,169,170,122, 11,190, 6, 83,128,236, 33,188,195, 59,199, 66, 39,105,207,182,211,249,227,213,232,162, 20,136, +141, 28, 25, 26, 99,155,227, 37, 84,227, 37, 53,119,108,240, 18,211, 19,193,142, 24,167,191, 20,204,159,199, 3,188, 28, 92, 18, + 9,199,239,238,124,142,219,123,213, 73, 61, 18,250,195,235,218,113,207,115,121, 66,159, 16,226,144,247,254,126,214,164,255, 29, +222,251, 61,103,203, 35,216,160,194, 52,191, 65,149, 5,130, 20,126, 69,214,172, 95, 70,127,218,125,142,235, 94,145,176,203,212, + 58,247,102, 89,100,131,127,116,164, 62,150,178,147, 87,108,203,191,247,119,190,231, 37,123,191,106,107,123,235,168,114,144,233, + 64,232,181, 67,215,142,180,165,248,215, 31,122,230,147,183,204,165,115, 63,186,115,203, 45,133, 7, 49,246,214,235, 26,119,242, + 11,200,155,222, 0,192, 43,111,216,196,215,188,116, 43,127,249,153, 19,160,117, 32,113, 25, 9,125,188, 47,156, 11,191, 45, 78, + 13,120,233,246,181,113,231, 87,158,133,114, 5, 95,206, 33,226,137, 49,222,141,141, 2, 36, 87, 65,126,143,222, 19, 83,147,236, + 78,239,253,221, 27,156,232,231,215,121,197, 59, 94,192,125, 98,233, 10,124,247, 90,106,239, 70, 8,253,254,231,233,200,221,233, + 93,236,184,140,251,184,126,109,250,133,188,216,233,141,104,118,248,125,187,118, 95,198,161, 34, 75, 87,233,187,151, 67,232, 27, + 61, 45,237, 90, 29,151, 13, 26, 82, 63, 47,161,123, 96,235, 93, 95,185,240,206, 95,250,166, 27,255,215,237,121,146, 14,157, 64, +180,131, 11,238, 43, 71,238, 60, 69, 10,255,203, 31, 61,249, 71,251, 63,122,252,247,127,227,174, 91,239, 21, 62, 42,239, 42, 30, +240,162, 37,254,216,167, 39, 5, 75, 41,248,201,239,184,131,111,122,244,255,131,162,134, 44,141,167,187, 69, 82,119,128,119,208, + 31,242,250, 87,221,192,247,127,253,171, 39,191,117,199, 63,131,247, 53,194, 86,225,139,222, 35,133,231, 84,191, 24,173, 12,171, +213,171,232, 61,237,141,187,155, 77, 79,150, 23, 59,217,143,215,197,254, 99, 25,216,215, 90,123,215, 19,250,254,141, 40, 57, 87, +169,191, 45,121,239, 55,226,189,158,143,192,118,172, 83, 98,118,250,125,187, 46, 86, 57,217,195,139,100,141,244, 89, 78, 75, 91, +138, 99,248, 16, 97,139,217, 67,103,249,205,125,235,140,171, 75, 86, 42, 46,210, 64,186, 84, 5,173, 65, 67,234,231, 36,116,161, +149,120,217,187,255,249,245,191,244,206,255,110,251, 91,140,129,161,150,136, 76,226,157,199,143, 44, 29, 45,120,162, 52,197, 15, +254,246, 23,127,253,145,199, 86,126, 7,112, 79, 45,215,199, 16,254, 21,126,226,169, 3,121, 27,251,196, 71,208, 75, 79, 32,230, +111, 5,224,173,175,191,149,253, 63,246, 79,121,199,111,124,152,225,233, 18,242, 44,100,180,123, 15, 85, 13,195, 17, 95,245,138, +109,188,239,157,223, 76, 39, 79, 66,173,234, 17,246,209,247, 35,210, 44,100,216,123,135,119, 22,164,228,241,163,167, 79, 20,149, + 61,193,213,221, 89,110,250, 68,171, 75, 73,192,121,222, 72,226,121,194, 53,211,222,152,101,190,158,208,239,121,158,171,117,185, +134,205,250,132,179, 75, 81, 78,246,248,125,187,238,127,145,108, 83,122,247, 58, 66,191,243, 66, 75,219,174,240,243,219,216, 78, +140,205,161, 58, 13, 46, 17,242, 2,164,190,245,129,111,186,225, 87,239,125,211,246,183, 20, 6,234,182, 70,180, 20,222, 1, 67, + 75, 39, 87,252,217,179,131, 99,187,126,237,179,239,122,228,177,149,255, 11,120, 2,120,230,115, 39,139,207, 33, 5,216,152,244, +164,100,144,216, 77,159,250, 35,239, 61,227, 34, 63,250,141,175,230,175,126,246,187,121,199,183,124, 5, 47, 89,200,200,125, 77, + 87, 90,222,248,210,205,252,202,143,127, 3,127,241,238, 61,188,100,219,236,228,251,230,111,127, 29,127,250, 9, 72, 50,124, 76, +194,195, 88,144,130,207,125,105,233, 73,194, 57,235,238, 5,118,159, 95,232,235, 77, 47,181,126,187,175,209,246,158,139,208,239, +126,129, 17,250,149, 34,177,203,197, 60,151,190,148,235, 82,251,211,213, 34,218,233,118,236,221, 32,161, 95,206,146,184, 67,151, + 88,214,206,243,121,252, 13, 26, 92,138,167,206, 77,243,233,174, 31,252,138,133,111,172, 10, 7,221, 4,145, 10,124,229, 81,133, + 33,235, 40,126,235,147,139,159,253, 23,239,123,226,231, 86, 70,246,195,192, 34,225,160,151,252, 47, 30, 95,253,155, 35,171,245, + 15,109,110, 39,218,122,191,182, 8,174,213,198, 61,245, 23,152,143,254, 34,250, 77,239,152, 92,231,181,183,108,230,189, 63,244, +117,252,236,247, 27,142,158, 26,144, 38,154,235, 23, 58, 95, 86, 31,251,232, 31, 98,254,254,183, 32,111,135, 1, 35, 21,222, 58, +132,117,212, 69,201,251, 63,252,248, 71,129,213,171, 76,234,151, 50,192,207,144, 80,189,247,243,207,213, 58,235, 13,226,240, 84, +253, 54,148,221,123,158, 61,233,175,133,246, 94, 75,132,126,201, 68, 23, 15,111,153,238,175,247, 95,100, 25,247, 77, 93,255,110, + 46,109,211,157,157, 27,172,235,206, 43,172, 80,108,164, 62,135, 46,225, 25, 92, 10, 14, 76, 25, 19, 27, 93, 77,112,230,178,208, + 75,207,105,104,208,144,250,218,103,183, 46,100, 47,157,207, 20,163,154,224,117, 15, 45,169,243,184, 76,240,206, 15, 62,125,240, +231, 31, 62,242, 94,224, 31,226, 0, 28, 68, 50, 85,207,158,174,254,230,253,159, 89,250,196,191,248,154,173,119,152,194, 34, 82, + 25,101,120, 9,237, 25,236,223,255, 39,252,232, 36,250,141,239, 64,180,215, 54,163,201, 19,205,173, 83, 94,249, 4,245, 8,251, +119,191,137,249,196,127, 64,100, 41, 72, 5,206, 66,146, 65,109, 72, 36,124,248,115, 71,142,254,229,163,199, 14, 18,246,126,191, + 42,164,190,238,136,207,139,153, 20, 14,174, 35,141,171,122,180,229, 37,224,224,212,164, 51,239,189,223,189,129, 29,243,118, 95, +195,237,189, 38, 8,253, 44,187,234, 93,108,110,194,122, 98,184,156,120,252, 78,191,111,215,142, 75, 56,214,116,126,131,113,228, +221,103, 33,194,231,255, 25,132,109,108,119, 92,193,241,181,209,251,184,231,133,118, 47, 26, 92, 27, 56,159,252,174, 30, 61, 54, +122,236, 75,149, 53,237,182,162, 93, 91,218, 10,250,202,249,239,123,232,240,239,254,252,195, 71,126, 10,248, 36,112, 50, 18,122, + 60, 62,141, 26, 56,246, 75,127,126,236,192,114,109,209,181,133,218,133,172,185,184, 41, 13,157, 25,220,227,127, 76,245,254,183, + 99,255,225,253,248,149,103,206, 62,160, 6, 39,112,143, 31,164,250,253, 31,194,124,252,223, 67,158,131,210, 97,179, 25, 33, 16, + 50, 65, 20, 53, 40,207,207,252,222,199,127, 31,248, 66,188,254, 21, 39,245,169,117,203, 23, 61,241,196,101, 72,211,131,248,190, + 11,120,186,207, 53,214,239,100,118,223, 6,238,197,125,215,112,123,207, 69,232,135, 56,255,158, 5, 23, 52,250,214,109, 49,188, +123,221, 61,187,216,254,246,192, 58,207,117,195,147,251,212,146,173,137,177,114,137,253,130,117,198,217,165,224,190, 13,212,117, +250, 59, 7, 47,229, 76,244, 13, 98,105,163, 30,120,172,215, 3, 87, 97,124, 61,112,129,235,174,223,150,184, 33,245, 6, 87,132, +212, 89,236,155,191,253,158,223,253,226,222,135, 30, 59,253,216,135,142, 14,143,253,202,161, 19,135,190,246,223,125,246,167, 15, + 28, 58,245,115,132,163, 47, 23,129, 17,103, 30,160, 98,129,209, 23, 78, 20,127,252,238, 63, 61,250,112,146, 41,124,223,224,107, + 7,196,229,109, 66, 64,187, 7,102,153,250, 35,239,161,122,255,247, 82,253,191,247, 96, 62,178, 15,243,223,126, 25,243,151,191, + 64,245,129,127, 73,245,190,183, 81, 31,188, 31,223,127, 2, 58,179, 97, 83,154,113, 10,156,147,248, 82,144,228,146,255,120,240, +115,143,254,215,191,123,230,119, 9,210,123,125,165,189,243,232, 49,125,140, 51,165,187,165,139,156, 40,167,189,191,112,234,211, +212,164,191, 17,162,184, 90,157, 32, 74,227,211, 94,220,238,115,109, 77, 58,181,228,107,254, 90,109,239,121, 8,253,206,203, 12, + 19,140,143,234, 28,191,166,251,203, 78,239,253,195, 27,217, 25,110,234, 24,221,233,123,124,177, 91,227,238,185, 92,207,247, 10, +110, 27,187,251, 92,199,160,158, 37, 27,157,171,172,234, 76,183,231,238,115, 29,169, 58, 85,175,203, 54, 70,227,125,156,110,211, +158,115, 29, 51, 27,149,129,245, 6, 78, 35,189, 55,216, 48,206, 39,191,215,192,169,191, 58,188,250,127,255,213,225,213,135,129, +153, 72,226, 71,129,101,160, 31,191,179,126, 91,177,241,121,235, 71,127,225, 67, 71,222,251,250,155,218, 47,121,219,235, 54,221, + 62, 90,169, 16,189, 20, 50, 25,118,154,195, 67,146, 32,146, 36,100,176, 47,126, 18,115,252,208,164, 56, 33, 53,232, 20, 58,221, +117,189, 30,168, 44,222,181,200,179,148, 67,159, 63,182,244, 47,255,253, 95,239,139, 94,250,122, 3, 99,163, 19,252,165, 28,213, +122,207,197, 76,178,113,183,180,123, 88, 59,185,108, 76,116, 7,163, 60,183,126,175,234,177,244, 57,158, 84,238,191,202,125, 97, + 63,103, 30,133,121,119, 36,225,253, 83,117,219,205, 90,246,240,225,104,216,236,188,214,218, 27,219,117, 54,175,243,161,139,232, + 10, 7, 46, 97,237,250,238,104, 48,141,143,250, 60,188,238, 62,140,143,181, 93, 79,158,135, 46, 97, 5,193,116,251, 14, 95, 70, +134,247,116, 60,120,135,223,183,107,207, 89, 78,119,219,200,239,239,142,132,117,174,254, 52,233,135, 87,153,196, 14, 76,221,155, +121,224, 99,126,223,174,253,172, 29, 7, 60,222, 92,106,186, 94, 7,184,204, 61,223,197,189,143,236,141, 57, 14,227,254,253, 64, +188, 31, 99, 85,107,126,234,126, 76, 59, 14, 47,134,100,205, 6, 47, 16, 82,183,145,184, 77, 36,113, 25,223, 43,227,203,114,238, +115,203, 13,208,119,222,127,234,127,250,189, 47,254,204,166,142,126,247, 63,187,125,246,134, 98,185,130,153, 4,145,171,181,245, +235,129,193, 33,205,207,191, 14,205, 3,206, 67,105,113, 43, 21,173,235,182,241,153, 35, 75,253,187,246,254,249,222,229, 65,253, +225, 41, 35,227,106,227, 80, 36,244,139,158, 36,133, 16,251,167, 54,176,153,159,158,232,159,239,142, 16,215, 68,223, 21,189,147, + 29,235, 60,207,245, 88, 34,156, 94,245,192,181,218,222,179,224, 98, 61,178,203, 33,158, 29,108, 92,202,222,127,177, 6, 78,244, + 62,119, 94,142,151, 62, 69, 70,103,219, 54,246,192, 69,142,151,131,172, 29, 93,252,192, 5,238,233, 85, 53, 94,227,118,180,211, +198,230,216, 0,186,251, 60,138,211,229,100,255, 79,227,206,117,222,255,249,198,194,120,185,221, 97, 26, 52,184, 8,200, 11,208, +168, 33,196,203,151, 8,199,143,158, 6,134,241,125,127,129,223,150,192,242,202,200, 62,242, 29,251, 31,251, 63,126,235,227,139, +159,205, 83, 73,178, 82,227,150,107, 40,220,164, 20,129, 64,136,179,188,226,127, 88,160,114,248, 21,131, 88, 42,105,205,207,241, +200,225,229,163,111,121,215,193,119, 29, 62,214,255, 47,177,110, 67,174, 94,214,251,193, 56,185,222, 21, 15,226,184,156,253,191, +247, 19,182,151,221,207,198, 50,124, 15,196,137,229,170,239,104, 22, 15,133,185,227, 2,215, 58, 72, 56,246,244,208,181,222,222, +231, 24,227,120,253, 70,251,206, 1, 66, 56,224,158, 75, 8, 9,236, 57,139, 97,112,185,222,237,164,236,139, 93, 67, 29, 15,116, +185,147,115, 39,250, 45, 1,247,139,123, 31,185,243,185, 88, 11, 63,117,164,234,225, 11,246,243,141, 29, 70,179,209,235, 46,137, +123, 31,185,131, 47, 63,176,231,108,134,220,109, 87,121,253,124,131, 23, 41,196, 85, 46, 95, 1,237,104,233,190,250, 7,223,184, +245, 71,254,205, 91,111,248,182, 27,102, 83,109, 74,143,209, 2,114,133,208, 50,120,238,114,170, 58,222,131, 5,111, 28, 20, 22, + 85, 59,146, 68,176, 98,225, 61, 31, 62,245,103,255,246,143, 30,127,176,182,238,111, 89, 91, 74,103,174,197, 7, 16,165,224,245, + 94,226, 97,194,233,102, 7,159,199,122,141,229,240,233,141, 58, 14,110,240, 52,184,107,174,189,207,211,115,223,193,151,231, 38, + 28, 34,200,237,215,236, 70, 47,113,199,186,177, 7,122,255,116,214,125, 84, 17,118,175,123,246, 7,159,175,141,109,162, 4,190, +115, 93,125, 14, 61, 23, 30,242, 57,174,125,240, 69,178,201, 79,131, 23, 41,169,143,137, 61, 7,102,129,237, 55, 47,100,223,112, +247,155,183,126,251, 15,236,220,252,213, 55,206, 36, 9, 94,224,189,199, 9,129,155,170,141,244, 32,189, 15, 91,205, 10, 88, 44, +172,251,207,159, 60,245,169, 7, 63,122,252,143,254,254,233,193, 7,128, 47, 69,229, 96,116,173, 18,122,131, 6, 47, 74,131,229, + 60,164,222,160, 65,131,171, 11,253, 28, 92,195,178, 38,217, 23, 79,157, 42,223,247,147,127,248,244, 71,254,237,135,142,124,229, + 87,223,218,253,234,239,126,221,194, 27, 94,119, 67,251,186,249, 76,117, 58, 90,164, 90, 10,105, 28,126,104, 93,181, 92,185,225, +231,143,143, 78, 28,248,196,169,191,251,203,195,253,191,121,246,116,117, 8,120, 6, 88, 33,196,208,175,218,154,244, 6, 13, 26, + 52,104,208,160, 33,245,115, 24,239, 64, 53, 38,118,160,127,170,111,158,253,147, 79,159,254,240,159,124,250,244, 2,176,173,157, +201, 77,185,150,189, 68,137,212, 56,111, 10,227, 87,135,165, 93,244,158,227, 4,137,125, 37, 26, 7, 3, 46,156,168,215,160, 65, +131, 6, 13, 26, 52,164,126,149,137,221, 18,228,242, 50,122,218,167,129, 99,192,227,195,210,233, 97,233,212,212,247, 29, 33,155, +189,142, 6, 65, 25,141,130,134,204, 27, 52,104,208,160, 65,131,231,153,212,215,147,251,120,121,156, 96,237, 12,116,185,142,212, +253,212,223,134,200, 27, 52,104,208,160, 65,131, 23, 24,169,175, 39,248, 49,113,195,153,137,123, 13,137, 55,104,208,160, 65,131, + 6,215, 16,169,159,141,228, 27, 52,104,112,109,227, 0,107,155,243, 52,107,173, 27, 52,104,208,160, 65,131, 6, 13, 26, 52,104, +208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, + 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 94,124, 16,223,251,117,175,243,166,191, 74,119,110, +150,185,133,121,146, 44, 35, 77, 83,250,171,167, 57,125,114, 57,156,128,106,106, 90,169,230, 85,175,126, 25, 69, 97, 24,150, 35, +110,184,233, 6,172, 51,124,250, 83,143,209,106,229,204,204,244, 40, 71, 35,182,109,219,202,204, 92, 11,179,184,140, 82, 18,169, + 19,150,158, 57,194,233,197, 37, 86,170,154,194, 91, 90,105, 14,194,147,181, 59,164, 89,142,183,150,178,191,202,112,233, 4,175, +126,249,237,188,246,245,175,225,115,143, 61, 70,127,185,196,107, 65,214,238, 50, 51, 55,207,169,147, 39, 73,211, 4, 33, 53, 43, +253,146,225,168, 64, 56,203,246,249, 46,155,102, 51,158,126,250, 36,127,249,232,103,153,155,233, 34, 60,120, 45,217,241,170,151, +211,246, 32, 60,216,225,128,147,199, 79, 50,119,195,117,232, 86,142,176,142, 98, 56,100,241,228, 18, 91, 59, 25,249,168,207,202, +137, 37, 78,215,150,190,117, 88,173, 24, 33, 24, 26, 11, 66, 80,149, 6,161, 60,183,110,218,202,188,146,100,206,210,109,207,146, +221, 48, 79,237, 61,127,245,241, 71,209,194,211, 94, 94, 69, 46,151,168, 77,179,116,175,219, 6,198,144, 88,199,104, 48,160,191, + 60, 36,105,167,228,221, 22,179, 11, 61,182,110,221, 68,213, 95,229,115, 79, 30,230,248,192,209, 91,152, 99,219,245,219,152,153, +155,103, 88,244, 57,114,116,137,214,112,133,217, 78,139,124,118,129,103,250, 35, 4, 48, 63,219,230,228,241,147, 84,195, 17, 69, + 85,179,108, 44,105,171,195, 13,155,230,216,218,206,232, 42, 15,163, 17,162,170, 65, 9,172,169, 49,198,209,175, 12,171,166,102, + 88,213,220, 52,215, 65,229, 57, 54,209, 12,156,229,139, 79,159,100,101,165, 68, 41,129, 21,146, 44,209,244,186, 29, 78,245, 87, + 41, 43,199,214,182,228,214,110,206,233,213, 17,171, 85,133, 19,208,202, 83,110,156,153,165,141,226,200,112,196,103,142, 45,226, + 80,108,206, 53,121,166,145, 74, 65,170, 17,157, 14,165, 79, 89, 58,125,138,165,229, 62,165,181, 56,239,145, 78,160,149,100,100, + 13, 42,145,180,179,140, 20,129,198,163,240,164,137, 70, 75,137,115, 14,149,104,242, 44,163,221, 74,201, 19, 9, 2,172, 19, 8, +175,152,219,210, 98,243,214, 77,116,187, 57,167, 79,247,249,135,207, 62, 69,127, 48,100,199,173,215,115,235, 77,215, 33, 19, 5, +120,180, 16, 8, 33,169,234,138,162, 95,132,227,125, 5,232, 92,211, 91,152, 37,239,180,144, 94, 32,132, 64, 72,137, 80, 18, 41, + 36, 2, 1, 66, 32,180, 68, 10, 69, 85, 84, 88, 99, 64, 72,140,181, 96, 60,197, 96,128,148, 96,107,199, 39,254,230, 16,171,139, + 35, 22, 54,207,178,101,203, 60,105,162,104,205,180,201,218, 41,189, 94,206,252,194, 2,115,243,219, 57,117,228, 8,253,163,207, +224,218,115,108,222,124, 19, 71,159,252, 2,253,211,139,204,222,122, 19, 35, 83, 99,150, 87, 88, 58,252, 20, 89,103, 6,151, 38, + 56, 44, 46,205, 80, 73,130, 43, 28,197,114,159,178, 44, 41,107, 11,222,210,109,181,168,133,103,197,212,116,178,156,249, 78,135, + 76, 41,122,179,109, 28,158,194, 89, 84, 59,167, 59, 63,199,204,182, 57, 58,173, 28,101, 61, 30,144, 90, 33,132,192,185,176, 19, +179, 0,132, 16, 88,231, 16, 2, 60, 14,239,194,126, 81,222, 58,156,247, 8, 17,246,139, 18, 2,240, 22,231, 60, 8,144, 94,224, +140,193, 88,131,181,177, 60, 33, 81, 82,132, 45, 37,157, 5,239,192,135,107,120,239,113,238,204,179,153,188,119,241,229, 39,159, + 43, 41, 67,159,138,239, 25, 99,112,214, 78,213, 99,237,239,248,119,147,178,189, 7, 31,234,225,177,120, 15,136,184,227,149, 23, +120,103,241,227,223,226,145, 50,252,245,206,199,251,178, 86, 23, 33, 68, 60, 30,218,175,213,211,121,140,119, 72, 49,238, 63, 2, + 41, 4,214, 58,140, 13, 7, 73, 74, 41,113,214, 82,151,134,149,229, 1,194, 58,180, 84, 12, 7, 37, 10,104,101, 9, 82,101,212, + 3,131,178,134,153, 86,135,180,149, 48,234,175, 66,191, 64,117, 58,148, 85,129, 82,154, 36,105, 83,121,207,169,122,192,178, 31, +226,171, 26,239, 44,173,118, 11,239, 44,189,249, 46,174,246, 32,161,211,203,240,174,198, 57,143,243, 80,140, 12,197,176, 64,106, +133,197, 83, 87,158,227,167,134,156, 60, 61,162,172, 44,131,194, 48, 50,142,109, 89,155, 77, 51, 93,102, 23,122, 8, 37,192, 58, +234,186,166,246, 53, 2, 75,101, 61,139,131,154, 39,142, 45,210,175, 12, 74,105, 64, 80, 20, 37,206, 3, 72, 16, 2, 45, 61,219, +186, 29,242, 44, 67,107,133,180,150,133, 94,155,185,217, 14,139, 75,171, 60,249,204, 49,188,140,125,206,131,119,142, 86,158,179, +121,243, 2, 58,145, 8, 60,121,222,230,233, 99,139,100,221,140, 60, 73,241,214, 49, 44, 75,172,181,220,122,219, 45,140, 70, 21, +167, 78,173, 80,123,135,247,130, 44,207, 25, 21, 5,185,134, 68, 41, 60, 26,167, 51, 28,158,118, 42, 88,152, 93,224,216,169, 83, +124,233,216, 73,138,210,160, 50,133,183, 22,172, 37, 77, 18,188,115, 12, 71, 37,105,150, 48, 36, 52, 20,175, 0, 0, 32, 0, 73, + 68, 65, 84,211,235,210,206,114,250, 43, 43, 20, 69, 65, 34, 36, 72, 65, 85, 91,172,115, 36, 90,113,221,246, 45,156, 90, 58, 78, + 53,180, 92,119,221, 22, 84, 28, 79,139,167,150,217,118,221,102, 94,254,138,151,226,156, 99,121,101, 25,132,167,149,229, 88,103, + 57,117,226, 4,163,193, 0, 41, 21,121,171,195, 96, 84,112,252,196, 18, 89,174,153,153,233,178,121,203, 60,155,103,122,156, 60, +126,156,147,139, 43,120, 47,184,249,182,109,220,254,242, 27,200,116, 74, 81, 12, 88, 25,140, 24,149,142,178,116,200,186, 40,144, + 90,147, 38, 9, 82, 42, 18,157,146,104, 77, 93,213, 56,231,144, 82, 81, 27, 71,187,149, 35,165,164, 54, 53,121,158,161,181,100, + 84,150, 20,163, 17, 74,105,164,148,120,225, 72,114, 13,198,226,141, 5, 37,177,117, 77, 85, 91,156, 23, 8,231, 72,128,196,123, +148,243,104, 33,145,113, 79, 57,103, 29, 82, 10,102,123,109,188,173,232,175,174, 34,180,196,216, 10,157, 42,138, 97,129,179, 30, +143,167, 54,150,202, 90, 16, 30, 37, 32,209, 26,111, 61, 95, 58,126, 2, 37, 53, 90,106,202,202, 48, 63,191,128,118,113,226,112, +146,209,176, 32,107,229,232, 86, 27,143,199, 26,203,242,210, 50,157, 68, 51, 99, 42, 76,127,149, 85,111, 49, 78, 96,128,210, 91, +138,218, 0,130,186, 54, 56,227, 89,104,117,232,117, 91, 72,231, 81, 82,147,116, 91,100,121,139, 47, 62,115,132,178,170,232,162, +144,181,165,206, 32,105,181,195,196, 37,194,150,121, 35, 83,129,146,200, 68,147,104, 69,183,221, 34, 77, 52, 43,195, 1,101,191, + 2, 15,121,183,131,212, 9,214, 26, 70,163, 10, 95, 22,100, 90,145,100, 41,125, 35,233,247, 71,180,103,123, 12, 6, 35,234,114, +132,113,150,162,182,120,167,152,233,116,153, 85,138, 92, 25,148, 51, 96,106,164, 6,111, 44,198,193,168,170, 25,212,134,190,177, +108,154,105,147,165, 26,167, 36,131,170,230,248,201,101,250,163, 18, 41,193,163, 16, 2,242, 52,161, 40, 10, 10, 99,233,166,138, + 27, 59, 9,253,225,136,126, 85, 99,164, 39,211,138,205,173, 46,109, 4,203,163,146, 47, 44, 46, 99, 17,204, 39, 10,165,100, 36, + 69,133, 73, 83, 42,149, 50, 28,174, 50, 24,149,212, 54, 82,134,243, 36, 74, 80, 59,131, 80,138, 44, 73, 73,165, 64, 8,135,199, +147, 42,133, 84, 30,231, 61, 58,213,164, 89, 66,154,100,100, 73,168,159,247, 2, 33, 96,102,174,197,230,235, 54, 49, 55,223, 97, +121,117,149,207, 31, 62,198, 96, 80,112,253,117, 91,185,233,166, 77, 36,169, 68,198,201, 91, 41,133,173,106,138,213, 81, 32, 38, + 60, 73,146, 48,211,155, 33,111,229, 8, 60, 50, 18,135,148, 42, 76,208, 82, 34,165, 68, 72,144, 8,156,117, 56,231,208, 90, 3, +158,186, 40, 41, 6, 67, 0,210, 44,229,217,167,158,101,249,248, 42,157, 94,206,236,236, 12, 66, 64,154,167, 36,173,132, 60,149, +204,204,180,233,206,204,178,186,120,146,254,201,163,168,110,143,238,230,235, 88, 57,121,132,211, 71,159,101,126,251,117, 12,157, +197,218,130,213,167,143,146,182, 59,160, 53,206, 59, 72, 19,116,146,226,173,160, 88,233, 99,171, 26, 39,194, 1, 9,157, 52, 3, + 1,165,181,100,105, 74, 55,111,161,188,160,211,206,241,194, 83, 58,131, 76, 53,173,217, 46,115,155,231,232,117, 59, 72, 17,140, + 21, 41,215,118,104,150, 82, 78, 72, 41,242, 94, 32,235, 56,217,186, 41, 66, 23, 66,226,189, 99,237,155,113, 60, 71, 2,180,241, + 94, 57,111,215,136,154,177,145, 48,222,109, 74, 76,174, 57, 33, 98,231,176,117, 53, 33,111,107, 45,222,173, 17, 38,145,168,167, +119,171, 26,183, 97,124,109,177,174, 93,227,115,156,165, 20, 40,169, 16,200,201, 38,212, 34, 78,210,227,122, 4, 67, 46, 24,116, +161,222,161, 95,140,235, 55,105, 39,145,228,227, 78,215, 74,105,148, 80, 8,169, 16, 94,224,172,141, 6,194, 90, 57, 8,168,108, + 48, 42,164, 82,193, 96,244,158,112,103,198,134, 72,168,152, 71,224, 92,104, 19, 66,224,157, 67, 56, 49,233,143,241,233,160, 0, +225,195,253,247,241,187,196, 18, 60,110, 98,204, 72, 25,198,130, 82, 30, 33, 5, 2,143,150,225,124,108, 33,195, 75, 74,137,148, +144, 68,187,197,225, 49,214,162,149,140,229,133,235, 78,158, 21, 46,212, 7,144,241, 83,165, 20,227, 26, 8, 60,198, 25,106,235, +113, 16,250, 14,146,170, 54,184,218,210, 74, 83,178, 44, 9, 23, 11,246, 21, 78, 10, 42,107,168,157, 93,123,124,210,145, 9,129, +179, 53, 8,143,136,247, 52, 73, 18, 60, 2, 99, 76, 48,188, 67, 47, 64,137,112,223,157, 15, 6,153,179,161,159, 10, 41,169,107, +139,245, 21,237, 52, 65, 41, 21,142,253, 22,177,143,120, 98,159, 14,125,205, 91, 38,134,157,138, 6,165,137,125, 47,204, 13, 2, + 99, 13,131,193,144, 44,111,225,189,153,140, 23,132, 32,107,101, 12, 7, 35,202,170, 38, 73,211,216,143, 68, 52, 82, 21,105,146, + 0, 18,103,195,189, 74,211, 4, 37, 84,176,121,189,163,170, 42,106, 87,163, 83,133,210, 18, 47,160, 28, 85,161, 47, 0, 74, 18, +250,169, 23, 56, 15, 18,107,145, 74,161,147, 36,144,114,166,241,117, 77, 89,153, 80, 39,173, 48,117, 69,150,101, 32, 4,198, 56, +178, 44, 67, 32,169, 7, 35,164, 55,104,169,112,206,209,202, 58, 36,173, 22,222,122,132,179,225,102, 89,131, 53, 53, 94,132, 9, + 81, 75,129,116, 22, 37, 4, 34,118, 12,129,192,151,134, 86,222,102,211,230,205, 44,175, 12, 41, 87, 43,188,135,218, 38,100,105, +139,178, 28,133,251,237, 60,214, 24,172,247,120,111, 73, 21,180,146,224,185, 31, 61,117,154,153,118, 6,222,161,149,100,166,211, + 70,198, 78, 98,170,130,213,193,128,214,204, 44,202, 7, 66,233,247,251,212, 85, 77, 71, 38, 80,148, 84,101, 77,133,103,136, 9, +167,201, 24,176, 30,172,117, 88,227,200,243,140,109,243,179, 72,235,241, 78,144,164, 57,189,205,179, 60,123,244, 4, 79, 61,123, +130,185,118, 70,207,123,124, 21, 6,149, 76, 19, 4, 14,225, 61, 85,109,176,206,162,180, 32,149,130, 86,158,145,181, 51,234,186, + 98,101,117,192,106, 85,146,119, 90,228,121, 11, 41, 21, 85, 93, 83,141, 74,242,106, 8, 90,225,178,148,149,178,143,110,231,228, +169,100, 56, 24,226,140, 13, 68,141, 68,183,115,230, 82, 77,166, 28, 93, 45,241,197, 8, 41, 60,214, 57,172,119,140,172,101, 24, + 61,134,185,118,206,108,150, 97,165,166,116,150,213,126,193,234,234, 48, 60, 55, 37,113,194,145, 37, 26, 39, 4,131,178, 66, 34, +185,190,173,209,149, 99,165,168,169,241, 72,169,153,239,204,176, 41, 73, 40, 75,195, 23,151,250,244, 71, 37,243, 73,138, 86,129, + 8, 85,162, 41,148,198, 38, 25,101, 49,162, 95,148,212, 85,141,136, 30,142,150, 10,188,195, 75, 73,158,104, 50, 41, 81, 94, 32, + 60,164, 90,144, 72,129,112,130, 44,145,228,105,130,214,138, 60, 83, 40, 68,244,227,161,221,205,216,122,221, 60,237,118,135,126, +127,192, 83, 79,159,226,212,210, 50,155, 23, 22,216,113,235, 86,210, 44,197, 1,194,121, 18,169,168,202,138, 97,127,136,181, 97, + 10, 85,137, 96,102,174, 75,187,221, 14,147, 43, 18, 47,195, 4,143, 12,131, 86, 8, 17, 39,124, 5, 94, 80,149, 21, 58, 73, 16, + 73,206,104, 80, 96,134, 37,194, 25, 18, 45, 89, 29, 20, 60,251,212, 51, 40, 37,233,180, 91,104, 45, 73,210,132,180,219, 38, 73, + 20,189,110,139, 78,111, 22,129,100,229,248, 81,146, 36, 97,118,203,245, 36,198,176,248,204, 51,108,186,225, 58,202, 44,193, 72, +193,232,217,163, 8, 82, 72,114,140, 4,180, 64,232, 4,129,164,236, 23,216,178,196, 11,207,106, 85,211,213,154, 86,162, 24, 58, +139, 87,138, 78,171, 69,162, 36,173,150, 70,104, 69, 97, 45, 94, 73,178, 94,151,222,150,121, 58,189, 46,137, 84, 36, 82, 33,181, +154,120,233,193,171,245,193, 9,181,246, 12, 47,215, 71,143, 93,140,137, 53, 78,158, 99,178,155,246,180,199, 4, 37,165, 64,105, +133,214, 58,148, 63,158, 52, 93, 32,251,200,179, 56,107,227,191, 99, 29,140, 5, 39, 3,241, 73, 25, 72, 66,202, 64,246, 54,120, +212, 99,130, 87, 74,157, 97, 20,172,121,250,107, 4, 19, 62, 7,149,132,191, 94,128,148, 4, 98,147, 2, 49, 38, 9, 17, 9,212, +135,207, 38,237,137,215, 29,183, 59,144, 89,184, 23, 14,130,154, 17,141, 2,175, 2,181,249,104, 92, 76, 27, 74,227,251,235, 76, + 80,169,148,148, 88, 31,188,231,208, 30, 66, 93,132,192,187, 72,242,128,183, 22,161,166,141,150, 48,177, 73, 69,244,112,199,134, +192,152,207, 93, 56, 72,195, 59,198,187,112,143,175, 47,165,152, 24, 82, 82,202, 48, 23, 11, 27,201, 80, 32,124,112,184, 52,114, + 98, 32, 56,231,145, 82, 33,100, 84,108,198, 50, 7, 2,235, 45, 40, 80,145,100,133, 8, 14, 26,113, 44, 35, 2,181, 91, 31,158, +175,139,207,207,213, 22,227, 28, 42, 87,164, 89, 18,239,235,216,187,135,218, 90,106,107,226,184, 12,207, 90,167, 58, 24, 83,222, + 35, 84,184, 95,202,134,154,152,186, 6, 31, 8, 78, 18, 13, 51, 33,194, 61,116, 2,103,205, 68, 29,242, 66, 82,212,193, 9, 77, +180, 66, 6,179, 6, 4, 24, 1, 99,187, 72, 8,129,243, 46, 42, 80,138, 36, 77,226,253,112, 88,231, 80, 50, 60, 67, 60, 20, 69, + 69,171,213, 70, 72, 25, 12,112, 66, 57, 73,162, 24,141, 74,234,162, 68,107,129, 74,194,181,172,245,144,128, 76, 18,148,212, 19, +162, 79, 83, 69, 43,211,224, 28,206,122,156,245, 20,117,137, 74, 52, 90, 43,140,116,172,142, 6,152, 50, 24,136, 90, 42,100, 52, +164,141,247, 72,103, 61, 89,158, 33,181,194, 35, 72, 90, 25,195,170,196,213, 53, 66, 8, 76, 89, 34,157, 37,207, 51,172, 21,224, + 29,105,154,226,188, 15,147,155,151,164, 74,131,117,164,105, 66, 42, 45,222,213, 72,173, 81, 74, 99,107, 67, 93,135,137, 92,120, + 23, 60, 29, 4, 94, 41,156,144, 88, 33,112,222, 82,148, 3,102,186, 9,221,133, 14,167, 79, 45,146, 70,139, 76, 8,208,194, 82, + 87,101,176,178,156,199, 24, 71,226, 29,218, 43,178, 36, 65,101,154,163, 39, 79, 81, 90,143,214,146,218, 89,122, 11, 61,210, 86, +130,246, 30,229, 28,102, 48, 64,102, 18,221,107,225,165,167, 26, 13,233, 47,173,146,183, 91,180,234, 62,101, 49,160,111, 45,206, + 41,172, 3,107, 28,181,115, 88,103, 49,181,195, 58,197,230,110,135,118,162, 73,108, 24, 84,105,187,131,149,130, 47, 28, 61,134, +196,179, 32, 19,188, 49, 24,239, 73, 68,130,212, 42,116, 80,231, 48,117, 9,206, 35,149, 38, 83,138,118, 39, 67, 41,137, 41, 12, +171,203,167,177, 42, 33,239,117, 72, 18,141,195, 83,186, 10, 51,236, 35, 49,248, 68, 81,251,140,254,234,144,153,153,156, 65,127, +132, 41, 10, 42, 3,149, 11,210, 86,175,149,145,136,138, 78, 55, 65, 21, 22,111, 28, 66,133,142, 51, 50,158,126, 81, 82, 24,131, +206, 52, 51,121,138,147,130,194, 89, 6,131, 17,171,253,130,170, 12, 3,209, 10, 80, 8,100,170, 40, 76, 69,225, 44, 91,219,154, +205,194,115,178,168,169,156, 67, 75,193,124,154, 49,151,164, 56, 83,243,196,242,128, 35,253, 33,115,121,134,150, 30, 47, 60,105, +162, 24, 73, 73,157, 36, 24,235, 24, 12, 71, 84,149,193, 56,143, 5,148,112, 8,233,168, 68,176, 84, 51, 37,208,194,131, 51,164, + 16,228, 45, 33, 72,147,132, 60,107,161,165,164,149,104, 82, 21,102, 99,135, 39,205, 53, 91,183,111,102,102,161,135,169, 43,158, +124,250, 20, 71,142,158, 98,110,174,199,205,183,110, 34,111,181,192, 71, 79, 77, 9,108,109, 40, 6, 35,172, 11,147,179,210, 9, +157,217, 30,173,110, 14,202, 7,226, 22,114, 34, 59,135, 73, 80, 76, 60, 62, 33, 20,181, 49, 72, 37,201,219, 57,195,213, 21,250, +171,171, 72, 9, 42, 73, 72,243, 22, 79, 61,246, 24,253,149, 1,237, 94,135,118, 43, 67,107, 77,187, 59,131, 74, 60,237, 92,211, +233,205,210,206,186, 44, 31, 61,134,199,209,154,219, 2, 66,115,252,201, 47,210,154,233,194,252, 12, 21, 37,238,217, 19,212, 75, + 35,124, 59,195, 75,129, 84, 18,149, 5,175,162, 42,106,204,234, 16,161, 52,149,177,116,164,100, 62, 73, 25,120, 75, 9,228,145, +208,211, 76,211,107,103,212, 56,156,148,164,221, 46,179, 91, 54, 51,219,235, 5,131,123,236,233, 10,129,159, 34,176,208,222,224, +133,143,137, 90, 68,246, 13, 10,182, 95, 39, 69,199, 50,226,251, 19,210,145,225, 89, 41,169, 17,168, 72, 4,209,211,141,247, 84, + 42,133,144, 2, 99, 45,214, 90,140, 9,114,125, 80, 9,163,194,226, 61,194,123, 84, 12, 5,248,248,185,139,239,143, 73,127,218, +139, 30, 27, 36,227,231, 40,165, 68,235, 4, 41, 53, 66, 41,132, 15,207, 83, 64, 84, 94,130,236, 59, 14, 7, 72, 37, 39, 78,199, + 52,177,251,169,144,195, 88, 69, 24, 27,128, 99,165,194, 57,183,230, 45,143, 13,153, 41, 37, 1,239,241, 54, 56, 77,225, 61, 57, + 49, 78,148, 82, 19, 47,216,137,105,149,129,120, 47,192,121, 23,148, 1, 1, 78,196,126,171, 64,170,177,163,196, 68,101, 16, 4, +197, 64, 10,206, 8, 69,140,219, 17, 8,201, 79,188,122, 33, 4,210, 11,146, 72,136, 53, 62,212,223,249, 9,233, 78,238,137, 8, + 70, 87,232, 35, 14,169,228, 25,106,136,148, 49,238,233, 1,161, 48, 46, 26,137, 30, 28,142,186, 54,152,218, 34,140, 32,213, 26, + 37,166,119, 45, 23, 56, 47, 48,149,141, 36, 31, 60,110,165, 84, 12, 1, 9,146, 36,143,161, 18,135,244, 2,107, 28,120,131,132, +160, 0, 11,135, 18, 18,111, 67,245,189, 15,252, 49,134, 53, 38,140,219, 68, 7, 47,217,157,249,172, 33, 26, 60,147,126, 93,133, +144,178,140,134,130,117,103,244,151,178, 44,176,181, 39,109,183,130, 3,167, 52,198, 88,148,214, 56, 43,232, 15, 11,132, 20,104, +157,196, 62,228,193, 10, 18,157,144, 36, 65,169,112,198,146, 40, 69,150,167, 65, 77,182,193,120,176,181, 33, 77, 20, 89,170,208, + 22, 68,237,113,133, 37,145, 10,225,195,124,233,157,197,121,135,148, 90,211,106,183, 48,198,144,104,141,140,158,136,113, 46,116, + 46, 99,144, 4, 9,175,170, 74,210, 36, 37, 75, 52,214, 58,138, 81, 65,170, 4,105, 26,226, 40, 82, 43,148,140,158,186, 86,120, + 9,166, 10, 49,143,224, 28,187,201,137, 45, 82, 37,184,104, 61,123,107,169,234, 58,120, 48, 94, 81,142,134, 8,157, 80, 87,134, +118, 59,167, 24,148,216,170, 70, 69, 43,175, 46, 43,188, 9, 30,126,170, 21,117, 49,226,153, 99, 39,104,231, 57, 42, 78, 68,221, +153, 25, 20, 50, 12,130,186,100,117,184, 66,119,102,150, 84,181,168,171,154,165,211,167, 81, 82,209,118, 14, 81,140, 40, 11, 67, +233, 36,198,132,184, 96,225, 61,149,245, 88, 23, 58,224,124, 59,103,161,213,194,214, 22, 13,180, 36,180,231,230,248,194,211,199, + 56,189,218,103, 78, 39,104,235, 41,141,161,176, 6,223, 73, 16, 42, 13,138,134,177,212,214, 34,145,228, 90,145,229, 9,173,118, +155, 68, 40, 86, 7,171,156, 94, 25, 34, 50, 77,187, 51, 19,172, 64,235,168, 7, 37,118, 52,130, 52, 71, 38, 41,253,209,136, 44, + 75, 73, 18,197,240,244,105,172, 49,140,170, 10, 3, 36, 73, 74, 7,207,108,158,210,147,146,170, 44,144, 82, 97,106, 79,101, 29, +131,218, 80,214, 53, 82, 73,122,237, 22, 41,142,218,195,106, 85,177, 58,172, 40, 70,101,176,229, 69,152, 96, 84, 42,113,214, 49, +170, 12, 51,137,230,134, 12,150, 70, 53,171,166, 70, 72, 65, 59, 77,217,156,181,200,140,231,169,211, 21,143, 47,173, 48,147,105, + 50, 45, 2,161,235,148, 74, 37,140,148, 70, 72, 69, 49, 42, 48,166, 14, 19,182, 19, 8, 44, 82, 75, 28, 2,157,104,180, 18,232, + 24,203,149, 82,144, 36, 73,152, 20, 82, 73,187,157, 35,149, 36,209,154, 44, 77,131, 90,228, 13, 73, 91,114,221,205,219,233,206, +245, 40,139,130,163,199, 78,241,236,179, 39,201, 90, 9,183,222,188,133, 45, 11, 29,164,114,177,175,169,208,158,193, 8, 83,135, +193, 42, 37,180,102, 58,116,123, 51,160,130, 92,170,116,156,240,199,146,180, 80,209,139,137, 3,221, 90,140,179, 36,173,156,202, + 25, 78,159, 90, 36, 65, 32,148, 36,235,182, 88, 62,185,204,211,143, 63, 67,146,165,116,187,109,116,146,210,153,153, 33,109, 41, +242, 68,208,235,245,232, 44,108,102,249,196, 34,253,165, 37,122,115, 91, 81,173, 14, 75,207, 62,141,119, 21,201,182,121,138,186, +134,149, 33,197,209, 19,208,234,224,132, 8, 6, 71, 34, 16, 42, 9, 74,193,233, 17, 66, 73, 42, 27,194, 80, 51,121, 78,129,165, +239, 44,173, 60,163,173, 52,153,144,204,116,114,140, 10,132,157,180, 90,244, 54, 45, 48, 59,215, 67, 39,145, 96,165, 12,100, 46, +196, 25, 19,218, 68, 70, 23,107,222,102,240, 30,153,120,119,114,226,149,177, 38,249, 78,123,200,206,225,173, 59,227,132,166,137, + 4,205,154, 52,238,195,108, 59,241,100,199, 6,132, 82,106, 50,169,213,117, 61, 33,202, 9, 89, 75,249,101,134,196,152,192,215, +164,127,251,101, 68, 44, 68,148,169,165,159,120,219,161,156,160,104, 77,134,129,152, 18,154,207, 80, 38, 34, 57, 68,245,199,199, +235,142,229,103,239, 61, 42,106, 21, 34, 90, 9,225,239,218,157,245,214,225, 29,209, 99, 14,100,172,148, 66, 43, 53,165, 48,172, + 93, 95,198,178,188, 20, 49,140, 17, 13,169, 88, 95,188, 71, 4, 22,195,141,115, 15,148, 66, 74, 61, 49, 70, 17, 42,146,109,112, + 52,164,208, 32,124,176, 71,132, 68, 40, 29,115, 13,130, 1, 44,162,145,224,241, 8,233,214,194, 47, 49,124,176,102,111,132,156, + 3, 28,104, 41, 73,148, 68,138, 96, 68, 72, 37, 38,125, 73,122,143,141,249, 22, 30, 79,109,253, 36,148,227,189, 37,209, 10,149, +168,181,147,189,132, 4,124,200,201,112,193,225, 16, 68,135, 99, 28,134, 16, 30,165, 52, 58, 73,131, 55,109, 12,194,129,154, 50, + 78,181, 86, 19, 99,196,186,160,238, 6,131, 85,224,106,131, 18,146, 86,158, 34,132, 15,132,232,131, 65, 96,173,139,170, 70, 36, +120,235,112,181, 69, 43,133,214,161, 77,214,217, 96, 84, 2, 74, 73,202,194, 82, 85, 21,105,146,226,157, 69,105,137, 53,134, 44, + 17,120,225, 88,237, 15,240,214,135,112,113,236,119,206, 57,148, 86, 36,137, 70,107,129, 53, 21,206, 65,158,231, 33, 84, 24,115, + 82, 42,235, 49,150, 48, 95, 38,146,218, 65,191, 24,196, 48,129, 67, 8,135,242, 14,172, 69,182,187,109,178, 44,167,174,107,242, + 44, 18,104, 89, 5,175, 82, 4,107, 70, 42, 73,146,166, 88,107, 73,242, 52,120,216,182,166, 42,170,144,176, 99,195,195,206,178, + 12, 41, 61,206,152,137,197, 89,151, 85,140,127,173,197, 83,226,236, 16, 30,140,247,224, 44,104,201,220,150, 89, 6,131, 1,171, +171, 37, 66, 43,106, 83,162,179,140, 97, 81,130,179, 40, 1,214, 88,170, 24,239, 23, 2, 82,165, 56,121,122,137,165,213, 1,121, +146,128,131,222, 76,143, 44, 77,195,192,247,158,122, 56,162, 86,146,172, 61,131,243,150,193,106,159,114, 80,144, 73, 65, 86,140, +168,107,203,168, 50, 24, 36,181,135,194, 67, 97, 93,240, 30,156, 35, 17,146,249,118, 27, 77,236,176, 74,211,154,155, 99,213,151, + 60,254,244, 51,244, 18, 77, 90, 91,234,186,198,216,112,147,117,146, 35,165, 10,147, 82,244, 62,180, 80,100, 74,146,116, 90,232, +110, 72,104, 90, 92, 94,193, 56, 79,187,215, 35,205,131, 7,234,165,160, 26, 14,130, 97,149,102,120,165, 41,170,154, 52,207, 40, + 87,135, 20,197,128,210,212, 88,239, 81, 82,161,164,160,155, 74, 54,119,115,234,149, 33, 54, 14, 60, 99, 45,131,170,166, 40, 43, +140,128,153, 78,139, 84, 73,140,119,140, 76,205,112, 88,178, 58,168,168,156,139, 19, 70,240,206,164, 86, 84, 85,141,198,115,125, + 43,195,149,142,126, 85, 35,188, 37, 81,146,217, 44, 39,151,130,147, 69,197, 23, 22, 87,104, 39,138, 76,135, 88,147,214,138, 82, + 39,172, 2, 40, 77, 93, 27,108,204, 71,176,149, 5,111,208, 82,131,144, 40, 29,146,224,116,180, 50, 21,225,121, 74, 60, 90, 41, + 58,173,118,144,109,165, 39, 73,195, 4,101,241, 40, 13,219,183,109,163,183,208,163,246,134,147, 39,251, 60,253,204, 73,156,183, +220,114,227, 22, 54,111,158, 11,147,152, 3,129,192,213,142, 81,191,160, 54, 38,144,147, 18,180,123, 93,122,189, 25,148, 92, 75, +136, 11,241,196, 64,210,194, 71,209, 79, 6,111,221,123, 65, 93, 91,180, 78, 73,146,140,165, 99,139,193,170, 78, 82, 84,150,162, + 84,202,231, 31,253, 44, 30, 79,167,219, 34,203, 83,186, 51, 93,242,110,142, 74, 60,189,153, 25,230, 54,109,194,247,135,244, 79, +157,162,213,155,167, 51,187,153,193,137,147, 12,150, 22,201, 54,205, 83, 89,139, 43, 42,250,199, 23,241,173, 28,167, 84,152,248, + 19,137, 72, 18,132, 75, 25,156, 26,224,157,193,224, 25, 86, 21,221, 52, 35,147,146,190,169,209,105, 74,158,166,104, 60,157, 86, +134, 64, 80, 88,139,208,146,206, 66,143,249,205,243,228, 99,153, 19, 63, 49,178,197,148, 84,189, 38,211, 2,110, 45, 89,206, 57, +127,134,172, 56,150,179,189, 63,147,216,148,148,200,104, 0,121,107,113,198, 68,239, 65,158,225, 53,135, 4,180, 64,198,214,216, + 73,204, 90,235, 64,110,107,177,240,232,109, 71, 15, 84, 69,163, 75, 76,201,239,211,222,231,216,107, 87, 83,101,140,219, 54, 81, + 95, 98,142,128,247, 30, 41, 98,157,101, 24,219, 83, 84, 53,145,211, 93,244,112,199,178, 53, 8,188, 35, 24, 1,129, 45,130,158, + 63, 86, 52, 98,125,199,247,108,146,112, 24,243, 2,156, 5,103,125, 80, 41,196,152, 40,131, 81, 97, 38,161, 15, 31,149,226, 24, +107,117, 98, 18,166, 16, 72, 60, 14,227, 45,214, 59,188, 8, 42,198, 90, 34,224, 90, 61,156,240,161,106, 62, 18,186, 80, 65,129, +241,145,233,164,192,199,159,138, 73, 92, 61,148,161,132, 64, 69,246, 14,247, 63, 42, 23, 30, 68, 12,175,184,113,243, 17, 40, 37, + 80, 2,164, 8, 30,186,148,227,103, 21,140, 20, 27, 67, 12, 32,168,106,131,241, 34, 36,166,121, 31, 56, 38,209,107, 33,217, 24, +166, 49,206, 97,173,137, 33,147, 96, 32,105, 41, 98,174,146, 64,105,141, 74, 2, 73, 90, 99,241, 54,134,131,198,164, 47,197, 90, +238,134, 7,231, 44,222,133,123,111,125,184,175,121,150, 34,188, 65,122,113,134,218, 66, 52,222,198, 70,171,115, 22, 45, 4, 90, +141,199, 80,232, 39, 72,208, 90, 35, 19, 24,141,138,144,107, 19,251,128,192,227, 44,180,243,148,193,104,196,168, 52,164, 58,137, +138,213, 56,227, 32,168, 90, 82,235,192,145,206,145, 36, 58,120,239, 34, 40, 73,198, 58, 28,144,166, 41, 58, 9,210,124, 49, 42, +227,115,146,104, 9, 82, 6, 35, 68,102,237, 22,206, 90,242, 36, 33,201, 50,234,170, 12,129,100, 31, 72,221, 91, 27, 46,160, 67, + 12, 83,167, 9, 94,132,100, 53, 91, 27, 68,146, 6, 9, 8, 73, 43,207,113,174,196,155, 26,161,130,181, 86,246,171,137, 69,134, + 15, 94, 67,240, 30,228,196,130,173, 77, 77,150,231,204,206,245,232,175, 14,168, 29, 24, 66,103,213, 74, 83,150,101,140,215,132, +108, 87, 19, 39, 1, 37, 64,103, 9,199, 23, 87, 16, 66,163,181,196, 90, 79,222,106,133,137, 33,140, 14,202,225,136,206,204, 28, +105,214,102, 52, 42, 88, 93, 94, 38, 87, 26,101,107,146, 98, 72, 89, 27,134,198,134,172, 80, 7,133,247, 24, 31,100, 39,129,160, +157,231,244,178, 20,137, 71, 9,137, 76, 19,218,179,115, 60,246,212,211,148,206,176,169,149,227, 70, 67,156, 8,217,175,169, 82, + 40, 21,172, 63,227,130,172,136,135, 84, 73,180,212,180,230,186,120, 17, 6,240,233,211,167,145, 90, 51, 51, 51,143,240, 18,227, + 45, 85, 89, 80, 23, 69,152,200, 85,136, 89,123,225, 73, 50,205,104,117,128,171, 13,133,117, 32, 53, 18, 79, 38, 5, 91,123, 45, + 84, 89, 81, 87, 21, 72, 65,105,106, 70,117,205,160, 50, 84,206,210,106,231,116, 82,141, 53, 21,165,243, 12, 70, 37,195, 81, 69, + 85,213,120, 25, 36, 66, 27, 45, 78,103,131, 74,177, 37, 79,233,224, 88, 46,106, 42,225,208, 90, 49,155,230,244,100, 66,191,168, +120,108,105, 9,180,163,157, 40,132,119,168, 36,193,234,132,190, 16,212, 66,226, 76, 72,242,176,206, 83,213,150,218,185, 40,201, +129,144, 58,196,221, 67,150, 36, 74, 16, 66, 41, 66,146,104, 69,167,149,145,199, 12, 84,173, 36, 73, 26, 60, 55, 39, 61, 91,175, +223,202,220,252, 60, 88,195,234, 82,159,103,158, 57, 65, 93, 57,110,186,105, 43, 55, 94,191, 16,173,115,133, 20, 9,194, 67, 49, +232,135,164,171, 56, 81,183, 58, 45, 58,179, 51, 72, 61, 78,238, 89,151, 80,133, 8,153,190, 82, 4, 15, 94, 37,212,181, 65, 74, + 73,150,231,172,158, 92, 98,184,184, 74,158,230,168, 52, 97,102,126,134,199, 31,125,140, 35, 79, 29,161,221,106,211,110,183,233, +245,186,116,123, 93,148,246,228,185, 98, 97,118, 30, 73,194,202,179, 71,209, 73,194,204,150, 77, 44, 46, 30,167, 60,125,154,238, +252, 28,190,221,194, 85, 53,163,197,211, 24, 3, 86,133,196, 85,157,134,248,190, 18, 9,102, 84, 97, 6, 53, 8,193,234,104, 72, +174, 52,243,173, 54,253,178,164, 78, 20,121,222, 66,121,200, 91, 25,105, 43,163,118, 22, 39, 53,121,175,203,220,230,121, 90,237, +108,205,211,140,147,230, 56, 73,107, 34,165,159,145,125,238,195,164, 25,147, 6,253, 84, 50,156,159, 34,143, 49,105, 78,164,119, +231, 38,222,164, 24, 43,211,172,147,111,109, 72,128, 12, 82,180,195,198, 44,118,239, 60,182, 54, 24, 99, 38, 49, 98, 21, 37,122, +169, 36, 90,107,148,214,129, 28,166, 60,252,105, 79,122,252,222,196, 0,136,159, 57, 31, 18,207,164,138, 74, 67, 84, 97,252,132, +168,253,148,162, 16,141,133, 9,161, 75,156, 35, 42, 11,193,203,146, 74, 79, 18,233, 38, 4,185,214,131,214,254, 29, 61,191, 16, +175,247, 33,233,214,251,104,148,248, 53,195, 69,201, 72,146, 46,132, 40,125,120, 70,214, 56,108, 84, 61, 66, 22,125, 36,216, 24, +167, 70,128, 66, 77, 72,116,236, 55,249, 24,162, 24, 39,213,249,113,111,143,158,180,144, 65, 62,247, 83,121, 18,147,241,128, 64, + 75, 21,194, 96, 99,189,192,218, 73, 2,223,216,107, 15,202, 64, 80,217,117, 36,117, 49, 86, 98,116,184,238,120,158,247,128,137, + 9,129,149, 13,121, 81, 46, 26, 88, 82, 66,162, 19,116, 52,116,240, 65, 37, 8,234, 94, 72,150, 19, 42, 60,115, 37, 98,216, 38, +206, 87, 73,150, 96,106,139,117,225, 53, 81,103,188,159, 36,123,218,113, 95,139,202,208, 56,133,175,172, 43,218,173,140, 68,130, +247,246,140, 80, 4, 49,180, 17,114,122,131,225,104,129, 68,199,100, 55,130, 97,231,199, 43, 99,132, 96, 52, 24,162, 0, 37, 85, +140,251, 43, 76,109,201, 82, 69, 93, 85, 12, 7, 67,116,154,134, 92, 10,235,162,161, 37, 67, 98,165, 84, 65,193,142,206, 81,162, + 53,146,240, 61,107, 45,214,212,228, 90,147, 37, 41,206, 67, 89, 86, 56, 19,212, 10, 37, 69,136,215, 75,137,204,178,140,162,170, + 72, 91, 45,188,115,177,195,173, 37,130, 20,101, 65,167,211,194,137,176,228, 69,107, 29, 6,111,109, 24, 21,101,144, 54, 5, 72, + 13,237, 86, 59,120, 99, 66, 32,148,198, 26, 67,109,106, 32,100, 7, 58,192,122,129,209, 10, 39, 37, 94, 72, 16, 26, 83, 87,244, +102,218,100,121,139,213,254, 0,157, 36, 84,214,161,179, 78,204,244, 43, 65,170, 16, 99,177, 54,100,193,123, 71,170, 37,163,210, +114,244,216, 34,157,118, 32, 81,153, 39, 36,105,130, 20, 2,229, 28, 85, 89, 82,122, 79,222,155,195,225,233, 47,175, 96,170,154, + 68, 74,124, 57, 66,186,154, 65, 85, 81, 75, 69,109,106,202,104, 45,187, 56,160,242, 36,165,215,110, 35, 99,236, 95, 43, 77,187, +219,230,153,165, 69,158, 57,113,130, 45,179, 61,228,160,164,176,117,200, 19,240, 30,153,166,136, 44,129, 52, 26, 33, 54,196,161, +211, 84,211,158,237,146,168, 12, 83, 11, 86, 86,250,156, 94, 89,166, 61,211,161, 59,211, 13,241, 41, 99,168,202, 17,117,101, 67, +242, 34,130,218, 88,178, 60,165,168, 10, 70,163, 17,198, 10, 16, 58,100,198, 90,216,222,109, 51,159, 38,148,253, 17, 94,130,119, + 33, 4,176, 92, 25, 10,107,113,105, 66,119,166,133, 51, 21,181, 51, 12,235,154,209,168,100, 80,212, 49,228, 44,176, 46,198, 81, + 21, 84,198,208, 75, 21,155,180,162, 95,140, 24, 58, 11, 18,218, 73,206, 86,221, 66,213,130, 47,157, 94,101,169,182,204,170,168, + 14,107,133,215,138,190, 72, 40, 33,198,184,130,151, 86, 91,199,176,172, 66, 50,141, 86, 8, 45, 16, 50,116, 88,176,136,177, 33, + 36, 5, 73,162,232,180,115,218,157, 22,142, 48, 91,100, 73, 18, 38, 50, 41,216,186,125,129,217, 45,179, 8,105, 24,246,135, 28, +251,210,169,152,233,190,192,173, 55,111, 33, 73,114,156,181, 99,247,147, 81,127,136,169,234,104,117, 11,242,118,139, 94,175, 11, + 82, 96, 8, 18,180,144,225, 89, 75, 47,145, 81,141,241,193,109,143,131, 47, 40, 45, 82, 75,234,106,196,234,226, 34, 82,134,208, + 65,103,166,203,104,101,200,231,254,254,147, 36, 74,211,110,119,152,155,155,163, 55, 59,139, 74, 37, 58,177,204,206,206,209,234, +204,178,122,114,145,202, 84,204,110,221, 70, 85, 25,134, 75,139, 36,237, 12, 57, 63, 67, 81, 21,212, 43,125,138,165, 21,156, 76, + 80, 42, 33,203, 82,156,242, 40,157,224,107, 40, 6, 35, 84, 34, 41,170, 2, 89, 91,230,178, 22,163,170, 98,224, 44,237,118, 72, + 10,205,180,102,166, 59,131, 21, 14,167, 4, 89,183,205,236,182,205,116,123,221, 32,125,122, 31, 60, 18, 31, 38,239,105,217, 28, + 49,118, 63,162,151, 34,229, 68, 95, 95, 35, 11, 49,201, 10,102,146, 48, 44, 38,147,161,243,107,222,125,240, 98,198,196,105,163, + 28,110,177, 38, 76,188,184, 40,239, 59, 23,194,100,209, 81,152,168,121,177, 62,211,158,246, 36, 46, 60,158,124,215, 43, 12, 83, +177,239,181,236,250, 53,111,107,236, 45,143,201,212, 58,247,229, 75,231,162,116,111,140, 9,177,125, 33, 39, 30,234,218, 50,185, +144,153,236,198,249, 4, 34,146,113,108, 11,209,179, 12,147,125,240,142,199,247,109,156,167, 16,150, 60,201, 64, 62, 34,198,193, +165, 12, 70,135, 8,201,168, 99,153,119,220, 38,198,203, 11,163,122, 20, 18,200,166,226, 32, 49, 86, 27,200, 44,100,112, 43, 29, +146, 1,153, 34, 88, 33, 68, 48, 4,198,223, 31, 75,241,113,137,104, 72, 54,243,104, 29,250,136, 84, 97, 14, 31, 43,254,227,251, + 23,171,132, 20, 33,132, 38,133,140, 89,248, 62,182, 65, 50, 9,193,199, 36, 68,231, 29,131,186,192,184, 49,137, 70,181, 71,138, +184,162,100,220,174,224, 96, 24, 23,157, 0, 27,140, 24, 41,130,234,224,189, 71, 69,101,198, 24, 19,140, 0,103, 34, 17,135,126, + 42,163,193, 98, 76, 48,202,133, 27, 39, 16, 6, 71,166, 54,134, 52, 77,104,103, 45,240,225,217,137,216,241,156,247,129,108, 17, +147, 28, 14,188,159, 40, 65,222,199,254, 3,193, 0,215,154,178, 42, 66,168, 51,134, 15,148, 86, 24,107,208,137,198, 58,203,112, + 52,138,170,118, 50,233,115, 66,168, 16,102,147,129,220,125, 12, 93, 40, 29,115, 44, 28, 56, 23,140, 27, 41, 64,199,132,201, 81, +109,169,203, 26, 23, 21, 11, 29,201, 93, 10, 28,101, 89,160,211, 20, 83, 87, 96,106,106, 87, 35,156, 71, 74,143,177, 21,121, 43, +167,182, 54, 72,161, 42,116,236,209,104,132,117, 6,149,104,132,119,100,185,128, 44, 16,144,244, 33,113,168, 44, 11, 74, 99,113, + 8,106,103, 49, 34, 76,210, 10,137,139, 3, 16,231, 40, 77,193,204,252, 12, 74, 58,134,253, 21,112, 80, 89,135,200, 82,202,225, + 0, 41,100,200,132,198, 97,235,160,247, 24, 39,232,100,146,163, 39, 22, 41, 44, 49,174, 15,105,158,160, 85,156,140,189,163, 28, + 12, 73,186, 93,100,154, 51, 44, 86,233,159, 94, 34, 87, 41,174,170,104,153,146, 62,138,161,241,120,161,168,140,167,180,150,218, +133,120,150, 18,130,217,118,139,182,214, 40, 28,162, 12, 75,203, 68,154,241,196,145, 99,228,105,198,246,222, 28, 43, 39,151, 81, + 42, 65,235, 4,239, 5, 42,203,145, 50, 44,179, 51, 85,133,112,150, 60,209,164, 42,165,213,107,199, 36, 23,205,210,169, 83,216, +170,162,189, 48, 15, 58, 36,145, 81, 25,220,104, 4, 74, 32,117, 18, 38, 9, 45, 81, 42,101,184,180,138,183, 5,149, 31, 75,117, +134,153,150,226,134,173, 51,140, 70, 67,156,175,249,255,217,122,175, 30, 89,178,236,222,239,183, 93,152,116,229,142,237,238, 25, +154, 11,233,251, 63, 10, 16, 32,225, 62, 8, 50, 23, 2,174,112, 65,145, 20, 41, 82,156, 33,123,166,187,143,169,170,204,112,219, +234, 97,237,136,204,115,200, 1, 26,152, 54,167, 42, 77, 68,236,181,254, 22,107,153,163, 28,162, 83,200,228,172,120,184,219,209, +250, 68, 72,153, 37, 41,230, 37, 51, 76,194, 85, 41, 99,137, 21,206,179, 90, 19, 67,162,100,197,219,214,145,162,103,140,145,140, +166,211, 29,119,174, 69,229,196, 31,206, 47,252, 58,120,158,156, 1,109,113,218, 80,140,227,172, 45, 99,169, 98,219, 20, 33, 69, +116,201, 44,139,108,235, 86, 25,208,174,114,124, 1,136,152, 34,214, 56, 99, 12,141,209,236, 90,195,126,223,161,141, 12,143,206, + 90,172,117,160, 21, 15, 79, 71, 62,188,187,199, 22,205, 48,204,252,252,167, 23, 62,191,190,242,240,246,142, 15, 63, 62,210, 52, + 45,105, 19,246,192, 56,142,162,191, 40, 34, 24,234,250,158,195,195, 9,213,218,170,250,149,233, 56,223, 76,218,235,255, 12, 34, +240,138, 73,208, 6, 99, 29,104,184,124, 57,227,115, 65, 57, 71,191,235, 56,220,159,248,175,255,251,223, 48, 79,153,246,216,113, +127,127,228,238,238, 1,211, 58,180, 77, 28,142,119,220,221,191,225,242,252,204,252,250,137,253,155, 55,196, 98,184,252,249, 55, + 26,101, 81, 15,123,198, 16, 40,151,137,241,243, 87,146,113, 20, 5,109,231, 40, 54, 97, 48,152,220, 49, 93,102,177,206,228,200, + 48,205, 60, 29,142, 88,165,248,205,143,152,187,131, 64,112, 37,112,218,183,160, 18, 20, 3,198,114,247,225,137,247,239,238,113, +198,144,114, 33,107, 81,107, 43,193,237, 4,165,209,144, 85, 22,100,106, 93,175,111,132, 96,155,130,187,226,180, 87, 78, 92, 96, +207,117,155, 53,133,234, 76, 88,185,119, 75,201,213, 53, 86, 32,151, 72,142,114,168, 22,174, 16,127,174, 91,163,179, 86,108,132, +218,214,237,209,108, 63, 99,227,206, 43,220, 95,170,176,238,214,139, 30,110, 32,120, 81, 45,215,131,189, 62,107, 84,213, 14,228, + 20, 55,248, 93,161,235,230, 45,206, 15,149, 5,238, 68,233,202,235, 42,148,184,103, 49,170, 10,167, 86,251, 88, 81, 50,152, 86, + 40, 91,175,214,180, 10,187, 27,165,170,126, 78,188, 26, 69, 33,215, 90, 54, 98,169,211, 5,140, 60, 11,149,210,104,163,208, 90, +212,204,214, 32,202,246, 18,200, 49,138,224, 51,101,200, 81, 22, 12, 34,232, 34, 52, 81, 73,104,179, 30,204,130, 46,161,174, 54, +173, 21, 29, 81,245,181,172, 67, 73, 34,145,148, 80, 39,242, 90,179,104, 13,180,108,197, 90, 23,186,166,161, 20, 77,171,148,104, + 1,182,109, 63, 67,209,248, 92, 8,213,223,111,172, 70,185, 2, 86,120,102,141, 12,234, 74,201,118, 78,253, 46,100,128, 86,248, +156, 48,165, 34, 45, 81, 80, 51,227,234,103,142,104, 95,114, 41,132,148, 40,170, 30,248,197,139,186,254, 70,124,104,156,173, 57, + 1,245, 13, 43, 65, 49, 98, 1, 83,106, 86,192,205, 16,168, 74,217,174, 47, 31,146, 32,112, 59, 11,161,212,103,147, 80,145,169, +104, 76, 17,161,166, 12,159,162,177, 82,230, 58,124,164,141,198,145,127,150,149,102,156, 2, 69,105,113,103, 89, 69, 40,178,245, +234,198,241,114,121,169, 52,165, 35,248, 32,127,214,104,148,181, 68,228,158, 20,123,184, 32, 55, 90,107,172, 82,152,168,136, 65, + 16,108,227,100, 40,153,199,200, 60,205, 20, 43,239,201,162,208, 37,163, 83, 8,236,118, 59, 9,248,136,162,158, 43, 21, 38, 47, +185,144, 74,161,233, 58,161, 48, 42, 44,133,129,101, 94,190,241,129,182,141, 64,127, 37,136,245,194, 24,195, 50, 45,132, 20,100, + 94,214,154,108, 44,217, 88,176, 2,141,171, 82, 40,113, 65,165,204,211,227, 29,195,203, 72,240,158, 84, 18,161,120,250,182, 39, +120, 47, 40,136, 49, 84,189, 2, 73,116, 46,228,172,120, 62,191,224, 90, 39,147,145, 50, 56,231, 68,116, 80, 10,105,241,204, 41, +209,236,118,152, 18,184,188, 12, 85, 8,173,201,179,112,234, 75,202, 68,228,194, 25,147, 8,203, 74, 77, 64, 56,116, 45,135,166, +197, 85,219,137,113,145,254,238,192, 63,254,249,103, 46,203,200,199,183, 79,204,159,190, 50, 79, 3,218, 57,225,165,211, 36,155, +186,113, 36, 47,162, 55,163, 53, 77,211,210,223,237, 81,189, 35,148,200,197,143, 60,191, 60,211,238,247,236, 30, 31,201, 33, 19, + 82, 96,246,139, 12, 52,213,187, 88,170,191,116,188, 12,248, 37, 80,180, 17, 53,100, 74,168, 8, 31, 79,123,246, 25,226, 16, 81, +198,146,189, 80, 9,151, 32, 28,208,225,208,178,183,154, 16, 68,185,238, 67, 98,153,102, 38, 63,163,180, 28,232,185,126,190,168, + 66, 76,153,155,251,126, 8, 0, 0, 32, 0, 73, 68, 65, 84,135, 86,209,231,204,101,246,248, 36, 23,215,125,107, 57, 41,195,191, +141, 51,255,250, 58,208, 55, 22,167, 52, 78, 65,114,154,139,117, 4, 20,148,132,174,124, 84, 6,150,152, 54, 59,134,118, 34, 80, +171, 43, 29, 38, 37, 26,173,105,172,208, 59,125,219,112,220,237,113,214,137, 61, 5,196, 66,162, 97,127,234,121,120,127, 79, 81, +150,156, 3,191,253,246,149,207,159, 94,184, 63, 29,249,139, 31, 30,185,235,123, 20, 50,204, 25,165,152,135,145, 48, 45, 98,171, + 81, 10,183,107, 57, 60,221, 97,187, 6, 84,221, 68,170,133, 73,124,203,213, 78,100, 86, 56, 87,182,138,101, 17,215,130,109, 52, +126, 88,240,211, 34,215,251,190,227,253,239,126,226, 95,254,225,159,248,227,223,255, 63,180,206,113,255,240,192,221,211, 3,182, + 53,104, 93,216,117, 45,111,238, 31, 40,203,194,240,245, 19,221,221, 19,237,195, 91,198,151,223,200,241,130, 57,237, 68,156, 57, + 6,150, 95, 94,152, 82, 38, 24,197,110,215,161, 28, 36,173,176,182,197, 79, 35,197, 39, 76,210,124,157, 47, 28,119, 61,251,166, +231, 57,204, 52,251, 29,141,181,176,120,118,187, 61,182,105,137, 57, 19, 84,226,254,237, 3,111,223,188,161, 32, 3,175,209, 34, + 28,189,133,204,215, 65,198, 84, 91, 12,122,229, 2,175,138,244,245,122,187,110,158,106,219, 72, 75, 17,139,105, 76,137,196,245, +193,249,125,240,203,250,151, 4,209,136,144, 12, 37,155,174,232, 28, 64,217,170,154,222,230,138,132,210,165, 10,174,202, 6,237, +175,170,253,111,160,245,155,127,119, 11,193,223, 66,242, 70, 95, 45, 78,171, 71, 88,215,205,104, 67, 46,180,132, 11,217, 85,207, + 64, 65, 64,215, 10, 83, 27,131,177,102,179,137,149, 27, 84, 83, 14,237,245, 0, 43, 27, 7, 93,170, 69,174,177, 13, 68,136, 41, +212, 67, 88,158, 99, 37,177,121,200,203,250,249,101,181,169,248, 83, 78,215,208,158,154, 17, 32,135, 83,229,182, 85,222, 60,234, +171,214,160,108, 40,134,250, 70, 95,112,117,114, 8,103,174,179,186, 18, 6,202, 86,104,190, 30,188, 70,139,133, 12, 97,100,229, +115,191, 21,254,149,106,247,170,249, 1, 90, 73,246,136,210, 66, 5, 80,137,122,173, 43,100, 46,238,133,156, 10, 6, 67, 74,224, + 83,196,106, 69, 41, 87,199,131,181,213, 98,136, 32, 40, 57,103, 97,132,149,198,100, 39,232,134,186,126,175,182, 42,226, 75,181, +204,149,148, 40,213,225,178, 90, 26,114, 89, 55,237,250,202,181, 80,108,113, 9,228, 12,125,223,215, 47, 99, 35, 79, 68,221,174, +111,134,220,250,123,149, 46, 87,139,230,154,161, 80,105, 34, 99, 45,243, 60, 19,179, 12,140,214, 88,114,200,168, 92,232,173,101, + 25, 39,150,217, 99, 91,139,178,215,231,187,213,171, 40, 87,161, 52, 56,163,101,249,173,122,167,164, 16, 42, 55, 67,227, 26,180, + 19, 33,244, 52,121, 84,178, 85, 66, 40,223,137,206,177,208,118,157,220,124,117,242, 37,203, 47,202, 49,211, 54, 13,174,233,182, + 15,176,148,140, 74, 10,239, 61, 5,133,173, 30,213,182,237, 81, 70,145,115,148, 27,199,128, 31, 39, 92,117,118,164,146, 81,198, + 80,234,244,145, 75, 68,229, 76, 12, 1,107, 21,167,195,137,229,121, 36, 44,133, 20, 2,170,104, 9,213,240, 97,155,222, 98, 20, + 40, 23, 10, 70, 37,190, 94, 70, 62,191,188,210,183, 13, 80,112, 77,131,209,141, 64, 35, 41, 17,231,133,102,119,192,237,118,132, +193,243,114,121,198, 24,141, 31,207,232,156, 40, 40,166,152,209,198, 16,115,102,142,149,203,162,208, 40,195, 97,127, 64, 87,101, +182, 74,137,221,241,192,243,226,249,127,255,248,103,222, 62, 61,242,238,116,228,151, 95,126, 38, 33, 63, 67,165, 66, 14, 6,109, + 45, 16,136,113,166,164,133,214, 26,186,174,165, 59,236, 73, 62,227, 83, 98,248,250,194,249, 60,112,255,246, 45,221,161,149,128, + 24, 31,240,203, 82,175, 31, 43,240,115,245,168, 78,227, 40, 9, 90, 89,208,144, 28, 19,247,189,227,253,195, 29,227,121,168, 10, + 85, 24,150,192,197, 71,124, 44,216,198,113,119,220, 9, 23,155, 18, 75, 76, 76,190,112,126, 93, 4, 41, 49,134,165,134, 75,168, +234,181, 61, 56,197,163,214,156, 23,207, 28,229,162,126,106, 28,119,198,242, 60,121,126,254, 50, 96,173,198,104, 9, 61,200,206, + 48,219,142,133, 66,200, 69, 66,132,170,136,165,160, 89,124, 66, 43,133,115, 18, 70,147,138, 8, 95,116, 22,200,189,113, 6,103, + 53,251,198,114,216,119,180,187,166, 6, 69, 36,218,182,193, 52,134,110,215,240,244,230, 65,224,232, 24,248,243, 47, 47,252,250, +235,153,118,215,241,195,239, 30, 57,157, 14, 20,165,200, 74,110,196,249, 60,178, 76,139,216,150,180,166,233, 26, 78,143,247,184, +206, 65,201, 24,170, 55,153,171,224, 10, 4,142,219,212,221, 40,162,247, 34, 14,117,150, 56, 78,204,227, 36, 1, 23, 26,222,191, +123,207, 52, 37,254,207,255,249,127, 69,107,184,123,124,224,253,219,247, 52,125,135,115,176,107, 12,135,211,145,198, 90,198,223, +158,113,125,203,238,237, 59,166,151,175,148,113,193, 30, 14, 68,103,153, 39, 79,248,250,194,171, 15,148, 98, 57,117, 61,205,206, +145,116,193,154,142, 18,192, 79, 30,148,226,235,112, 97,135,227, 77,215,243,178, 12, 76, 6,220,190, 37,251, 64,215, 26,142,187, +158,162, 10,197,104,238,158, 30,120,250,233,157,120, 98, 43, 60,123,171, 46,215,122,133, 73,215,237, 70,127,227,247,198,232,205, +187,174,111,108, 86,183, 57, 46,249,134,131, 20, 49,118,217, 32,197,245, 16, 95, 15,147, 24,195, 85,196,180,254,153,237,255,139, +101,169,160, 69, 12,165,203,166, 12, 79,213, 6,181,250,148,111,135,133,111, 14,238,239, 32,250,252,157,111,126, 11,194,161, 84, +229,185, 6, 45, 15,251,245, 65,159, 75,174,126,117,110,148,217,171,101, 77,125, 11, 85,107, 13,170, 14, 26,138, 42,170, 83, 98, +121, 50,186, 34, 1,121,123,221, 24, 65,195, 54,165,254,122, 24,213,231, 46,100,180, 2,167, 76, 29, 88, 76,101, 66,106,162,221, +141,144, 79, 87,202,104, 61,248, 76,133,139,215,175,103, 29, 88, 5,238, 23,181,181,254,142, 46, 81, 21, 29, 49, 78,116, 1, 34, +142,187, 6,251,104,165,112, 70,134,109, 9,103, 17,107,213,170,168,171, 49, 46,132, 36,124,191,169,215,147,174, 7,184,208,226, + 34,120,213,170,106, 27,140,170, 7,147,252,174, 41, 69,150, 84,233, 10, 32,167, 40,180,150,181, 87, 29, 64,185, 94, 83,169, 92, +245, 10,235,231,161,129,214,181, 87,250,164, 14,108,235,192,180, 81, 65, 57,147,183, 33,161, 6, 25,105, 3,186,176,196,133,166, +113,228,162, 43,101,177,218, 34, 43, 21,189, 58, 65, 42, 10,163, 87, 81,160,174,174,137,213,130, 89, 97,249,121, 9, 44,222,139, +235,164,181,144, 19, 41, 70, 58,215,145, 19,156, 47, 23,122,215,201,242, 18, 99, 21,186,105,140, 66,212,235,136, 87,221, 90, 75, + 8,249, 27,145,102,204,162,115,105,156, 80,189,222, 71, 74,138, 88, 43, 30,118, 65,186,156, 92, 0, 41,198, 77,198,191,197, 46, +230, 76,107, 28,182, 49,219,164,155,115, 65,101,185, 73,215,112,142, 12, 88,231,136, 41,225,103, 81,255,229,164, 8,227, 34,170, +204,152,133, 11,170, 23,156,170, 1, 7, 84, 24,237,254,254, 14,173, 53,195, 40,129, 42,115, 88,112,198,146,163,192, 11, 86,107, +200,133, 24,101,147, 36, 38, 82,138,252,250,252,140, 54,226, 85, 95, 31, 62, 78,139,122, 58,122, 79,136,158,118,183,195, 40,195, +121,120,133,201,163, 20,204,195, 72,111, 20,175, 49, 51,229, 76, 86,154, 57, 38, 22,174, 15,164, 67,211,210,174, 23,151, 2, 21, + 19,238,208,241,175,127,250, 51, 86, 43,126,120,247,142,175,127,250, 21, 63, 77,216,178, 78,109,145,214, 88, 17,200,148, 53,172, +162,208, 55, 13,251,227, 1, 85, 55,230,100, 20,151, 97, 32,229,196,225,225,129,156, 33,196, 72,240,158,114,163, 20,150,233, 18, +249, 51, 81,148,142,193, 7,114,204, 52,218,240,225,233,128, 74, 19,209,123, 81,172,231,200,107, 8,140, 33,129, 86,236,247, 29, +217,123, 73,245,139, 5, 31, 11,195, 52, 51,199,140,118, 13,177,110, 9,235,198,106,148,230,104, 45, 37, 69,230, 24, 41, 26, 78, +206,114,111, 44,193, 71,126,126, 61,163,173,190, 66,106,218, 48, 27,199,108, 20, 49, 43,146, 15,232,146, 55,231,131,143,145, 16, + 34,206, 53,226,237,172,159,173, 42,153, 70,107, 90,231,104, 27, 71,223, 52, 28,118, 61,251,190,147, 8,214,106,191,107,219,134, +182,109,184,127,251, 64,127,236, 73, 33,242,245,229,194,111,191, 61,163,117,225,199, 31, 30,120,247,116,218, 14, 0, 85, 52,203, +180,176,204, 11,171,166,203,118,142,227,189,100, 22,128,192,149, 26,228, 97, 99,213, 22,232,177,218,125,214, 3, 47,166,196,178, +120,156, 19,177, 93,152, 22, 66,140,196,156,121,120,124,228,233,253, 91,254,183,255,241, 63,243,242,233, 43,221,126,207,199, 31, +127,160, 57,180,184, 70,211, 53,176, 63,116,220, 31,239,184, 60,191,128,201,236,239,158,136,139, 39,190, 14,168,174,129,110,199, +236, 3,105, 24, 24, 47, 19, 99,206, 52, 93,203,225,216, 19, 17,135,128, 45,134,113,152, 41,192, 56,143, 76,203,204,125,191,195, +199,200,179, 31,233,118,123, 88, 50,174, 36,142,119, 7, 17, 37, 25,131,217,245,188,249,241, 3,251,187,131, 28,242, 55,135,241, +150,152, 86,211,254,244, 26,181, 87, 55,205, 82,214,192, 19,121,176, 27, 99, 54,222,114,245,214,150, 92,237, 98, 27,193,202, 38, + 64, 42, 85, 25,118,245,183,223,192,211,183, 73,117,107,128, 72,133,184, 73,108, 73,117,107,164,236, 10,141,223,122,206,111,125, +196, 49,198,237,231,234,237,245,241, 77, 96,142,186, 81,200,167, 28,101,184,216,160,252, 76, 81,121,243, 86,175, 60,117,206,169, +134,225,212,135,248,205, 6,157,146, 88, 51,115,221, 10,169, 7, 79, 78, 2,207,174, 1, 50,101, 13, 44, 89, 63,131,234,220, 9, +113,141,139, 53, 91,216,136,216,223, 86,120, 59, 95,225,242,122, 24,173,239, 35,167,184, 89,201, 84,169,220,186, 82, 91,160,206, + 22, 30, 83,131,190,214,225, 75,107, 81,222,175, 67,220, 54, 36,173,223,199, 54, 20,148, 45,165, 81,163,234, 97, 99,132,195, 85, + 98,237,149,247,189,218, 9,229, 59, 75,148,186,208,138,234,206, 42,189, 5,232, 40, 84, 85,140, 27,114,169, 73,122, 89, 80,138, + 80, 18,177, 14, 9,206, 58,124,140,178,176,213,195,113,117, 60,164, 92,200, 74,174, 57,185, 95, 87,244, 65,161,235, 16,150,235, +240,167,202, 42, 0,213,219, 97,172, 37,109,134,180, 10, 34,139, 44,116, 74,107, 98,132,236, 11,187, 93,183, 9, 39, 85,229,206, +101,224,147, 77, 61, 38,249, 62,115, 69,154,140, 54, 88,107, 54,231,200, 45,191,175,200,204,227, 68,201,133,198, 53,114, 56,167, +132,107, 26, 98, 44, 12,195,132,174,232,100,222,206, 69,176, 90,161,106,124,114, 41,101, 19, 7,167,152,234,103,169, 43, 53, 4, + 77,227,240, 37, 51,123,137,171, 86,149,131,183,206,160,117, 21,180,229,213, 58,112, 51,177,230, 36,211, 99,107,221, 38, 12,144, + 9, 61, 50,207, 11,218, 74,136, 73, 99, 45,182,107, 73, 49, 49, 79,115,221, 90, 51,203,235, 92, 21,232, 2, 63,216,149,119,171, +188,171,162, 80,130,231,254,254,129,146, 11,227,101, 32,149,140, 47, 9,109, 69,237,171,171,248, 2,168, 34,185,132, 42,224,125, +228,121,156,232,251,174, 66, 63,149, 83,119, 26,149, 11, 75,244,168,174,195, 52,162,158,127,121, 62,211,105,195,242,122,166,164, +196, 78, 41, 46, 49, 11, 84,153,225, 18, 35, 81,240, 68,118,218,176,239, 59,156, 54,152, 26, 37,169, 93,195,207,207, 23,126,254, +252,149,223,125,124, 71,223, 24, 94,126,249, 36,147, 17, 26,171, 37,220,196,180,118,243,154,231, 20, 41, 41,179, 59,236, 57,222, +157,196,171,157, 50,211, 18, 88,150,133,253,225,200,241,233,158, 56,207,132, 20,197, 81,176,138,132,168, 98,157,148, 55,238, 37, +198, 32,200, 69,209,188,123, 56,240,112,236,137,227, 34, 15,230, 92,120,141,145, 87,239,137,185,208,237, 58, 92, 3,121, 89, 72, + 57,227, 83, 97, 90, 18,195, 52, 64,107, 41, 74, 56, 86,189, 66,118, 40, 14,198,208,231,204, 16,196, 46,215, 27,203, 99,211,162, + 82,225, 95,191,158,153,235, 67, 69,139,236,148,197, 52,204,198,177,228, 44, 7,113, 46, 52,213, 26,134,210,132,232,177, 78,196, + 64, 37, 43, 82,138,148,148,104,141,161,117,150,182,177,180,206,114,232, 59,118,125, 71,107, 45,139,247,132,152,233,250,150,174, +115,220, 63,156, 56, 60,236, 41, 41,115, 57, 79,252,242,219, 43, 49, 37, 62,124,120,224,237,211, 73,172,107, 74,166,119, 63, 44, +194, 49, 85,129,148,117,150,195,233, 64,183,107,235,123,212, 2,185, 90, 43,252,232,141,221,104,221, 70,149, 82,164,152,152,198, + 9,165, 52,174,105,241,211, 76, 10,162,208,182,189,227,247,127,245, 87,252,237,127,251, 27,254,225,191,254, 55,250,190,227,135, +223,253,142,221,221, 9,109, 21,141,131,182,117,236,143, 71,150,243, 5, 63,205,116,119, 39, 84,187, 35,156, 47,114,205,239, 90, +166,152, 40, 75,196,191, 14,156,125,166,115,150,211,177, 39,106,241,209, 54, 52,132, 41,144,114, 97, 9,145,243, 48,112,191,239, +113,192,231, 97,164,189, 59, 9,204, 58, 39,238,143, 71,218,174, 1, 45,208,240,219, 31,223,177,127,188,163, 36,245,157,184,235, +250, 87,170,150,179,149, 11,222,212,188, 73,108, 82, 41, 70, 73, 52,219,134,124, 54, 88, 86, 40, 58,234,193, 94,190, 57,112, 75, +253,119, 43,100,153,162,228,145, 43,110, 82,231,138, 40,141,115,172, 86,165,178, 50,116,234,102,163,148,111,108,165, 79,110,183, +244, 91,218,160,220,136,228,110,173,121,155, 57,233, 54, 16,231,102, 75, 93, 55,218, 45,113,102,181,120, 81,237,183,155,191,157, + 77, 92, 87, 84,169,127,102, 77,161,187,254, 44, 85,174,191,175, 20,217,196, 55,186,146,245, 51, 43,164, 40,135,162,196, 40,171, + 45,212,199, 88,179,241,223,121, 75,107, 43, 91, 6,189,174, 30,245,245,208,205, 41, 95,115,246,213,234,235,174,222,247,154,128, +184,122,247,175, 67, 75,217, 62,207,219,239,136,205,106,168,106,202, 30,117,195, 23, 74,206,213,236,143,235,107,187,138, 6, 67, + 12,226,211,182,122,243,230,155,245, 25,177, 70,198,106, 89, 4,200, 16, 99,253, 30, 42,107, 30, 98,220, 80,151, 88, 23, 75, 99, +106, 2, 97, 93, 34,115,205, 76, 73, 37, 75, 18, 31,171,109, 78,180, 91,117,102,194,104,179, 81, 5,165,210, 44,235,123, 45,155, +157,154,141, 58, 82, 40, 92, 99,137, 33,210, 56, 71,223,239,214,201,247,102,128,188, 58, 69,114,186,217,202,111,220, 21,226,224, +144,131, 87,144, 9,197,112,190, 16,130, 12,231,109,103, 37,196,205, 26,186,182,101, 24, 22, 66, 72,180,173, 35, 5, 65,158,181, +169, 26, 12,117,117, 74,216, 70,186, 51, 66, 12, 98, 65,212,245, 41,166,180, 4,198,169, 76, 72, 17,239, 43,101,172, 53,202, 26, +137, 37,218,110,244,156, 5,150,173, 83, 86, 46,153,126,183,163,105, 13, 69,235,141, 15, 75, 33,202, 70,222,200,135,104,173,165, +105, 27,210,178, 8, 87,165, 20, 33,204, 4, 63,139, 95,186,138, 59, 44,224,114,174,124,184, 28,160, 93,111,120,247,225, 61, 41, + 21, 18,154, 57,101,230,156, 80,218, 16, 22, 9,190, 81,213,171, 25, 98, 16, 72, 36, 39,166,121, 34,204, 11,189,147,248, 90,140, +112, 18,214, 42,114,240,196,144, 49,109, 7, 10,198,215, 51, 75, 88,208, 57,115,254,250,204,161,181,132, 12,115, 22,123,196, 20, + 19, 83, 29,235, 52,176,215,134,198,216, 13, 89, 0, 77,208,138, 63,126,254,196,227,241,192, 95,124,248,145, 79,127,252, 85,144, +133, 2, 69, 37, 76, 85, 72, 98,244,182,237,144, 35,251,182,229,244,120, 36,107,205,248, 58,224,115,102, 14,145, 97, 28,121,120, +247, 6,213, 56,188,247,228, 34, 80, 86,174, 81,133,165, 42, 94,115,206,196,224, 73, 57, 49,123, 79, 6,238,143, 61,143, 15, 59, +244,226,165, 16,194, 89,198, 20,121,153, 2, 83, 44,184,214,176,223, 59,212, 28, 73, 41, 50,135, 72, 42,145,243, 60,225,179,162, + 24,139,223,242,148,197,187,221,105,195, 14, 17,133, 45, 9,156, 82, 60,184,134,198,192, 47,151,145, 47,161, 78,183, 74,130,133, +188,211,140,206, 18, 18,248,217,163,115,192, 84, 8,175, 32, 34, 62, 86,149, 42, 10, 31, 19, 41,100, 73, 75,178,154,190,109,232, +156,227,208,182,236,251,150,166,177, 44,185, 48,197, 72,183,107,232, 58,199,225,180,227,244,102,143, 74,112, 25, 38,126,249,244, +194, 56, 45,188,125,119,207,135,143, 15, 34, 94,171, 15,255,121,152, 89,134, 1, 34, 53, 64,199,114,188, 63,210,239,251, 26,248, + 85,243,190,141,100, 39, 23,173,234, 97,182, 70,164,106, 76, 13,224, 88,230,153,130, 98,119, 56, 17,198, 25,191,120,161,125, 50, +124,252,248,145,203,243, 23,254,151,255,225, 63,163,172,230,233,135, 15,124,252,248, 65,160, 83,167,232, 27,195,225,116,194, 36, +136,227,192,225,238,136,219,239, 9,203, 76, 73, 51, 28,122,150, 84,200,243, 76,184, 12,124,253, 58,144,149,226,225,254, 8, 86, +145, 83,193,169,134,101, 73,204,147,132,229,140,227, 76,223,180,220, 53, 29,151,176,160, 14, 59,108,215,176, 44, 11,167,125,195, +110,215,203, 96,105, 26,142, 63,188, 21,216,189, 78,246,183, 94,237,219, 96,150,117, 11, 44, 49,111, 89,237,235, 70,184,110,114, +101,181, 1,149,235,131,117,117, 21, 84,139, 76, 61,252, 89,195, 76,175,106,248, 53, 20, 69,169,239,252,239,215,131, 93,173,233, +114,100,114,142,117,219,170, 48,234,246,247, 10,138,222, 84,215,183,138,247,239,223,219, 74, 31,172,162,253,149,207, 94,249,246, + 53, 58,116,133,131, 75, 41,117,208, 83, 53,108, 38,111, 62,230, 53, 21,109, 69, 29,228,103, 72, 50,154,169,207,134,237,117,168, +111,109,114,235,161, 79,165, 23, 82, 74,162, 29, 77,200,161,100,244,182,105,230,186, 29, 91, 91,245, 38,101, 85,175,235, 42,254, +186, 70,191,202,134,107,174,246,188, 34,161, 35,234, 38, 45, 14,117,221,192,245,237, 38,126,141,229,255,246,117,235,155, 97,128, + 43, 7,173,149,108,138, 74, 75,168,204, 70,133, 84,248,121, 45, 93, 9,181,252, 71, 87, 45,138,209, 2, 77,111, 37, 72,154, 90, +166,148, 4, 9,190,141, 18, 46,226,191,214,107, 16,108,165,221, 74, 41, 27, 4,191, 22,229,168, 82, 40,166, 82,133, 85, 55, 99, + 42, 50,149,235, 18, 36,185,232,130,178,149,237,218, 96,227,253, 75, 46, 53, 63, 63, 82,195, 85, 48,214,224,189,199, 41,205,126, +215,214,159, 95,135,203,122,175, 24,189, 14, 88,137,148,227, 70,245, 88, 35,136,196, 74,247,220,126,230, 33, 75,138,166, 54,142, +166,115,248, 16, 37, 45,179,113, 92, 46, 47, 44,211, 68,223,183,130, 28,145,177, 86, 87, 10,199,136, 88,179, 46, 37,125,223,212, +236,253, 88, 45,182,106, 11,213, 81, 90,208,159,148,228, 28,163,162,142, 58, 87, 37,170, 15, 30,165,244,198, 91,160, 33, 1,251, +211, 94,236, 4, 10, 98, 20,190,220,123, 79,136, 81,226,238,138, 36,128,181,214,224,151, 73,126,110, 99,241,203, 44,242, 77,103, +200,250,154,113,168,106,185,192, 90, 52,160,181, 34, 59,248,252,233, 55, 34, 73,252,208,186,129, 34,118, 3, 83, 84,109,227, 74, +132, 69, 32,177, 24, 19,151,121,162,107, 27,186,122,168, 39,141,132, 23, 20,129,129,149, 51,152,166, 35, 41,195,249,124,166, 45, +153,243, 52,211, 91,199,193, 90,158,151,140, 15, 17, 93, 10,151, 37, 16,171,168,162, 81,208, 25, 69, 93,220,160, 64, 40,153, 95, +150, 17,159, 18,255,221, 95,252, 68, 9,137,207, 47,175, 4, 52, 42,107, 40, 73, 22, 70,165,208,202, 73,206,176,211,168, 16,216, + 63,221,115,120,124,100,184, 12,204,151, 9, 79, 97,158, 6,148,130,251,187, 7,150,105,170, 48,157,102,172,229, 56, 20, 77,138, + 5, 82,221,156,146, 76,248, 75, 72,236,155,150,251, 83, 79,111, 21,202,199,141,151,123,241,145,243,188, 96,181,102,191, 63,162, +125, 4,159, 8, 65, 54,252,209, 71,150,193,131,177,242, 94,139,220, 0, 90, 59, 26,109,233, 84,194,164,200, 88,211,255,238,154, +134,189, 49,124,121, 93,248, 60,123,140,114,146,181,108, 12,147,182, 76,182, 37,231,194,184, 44,228, 28,112,181, 36, 3,109,200, + 90, 30, 88,182,218,154,150, 20, 25,226,130, 51,138,206, 26,250,198,209, 53,134,125,235, 56,246, 61,173,179, 96, 52,131, 95, 48, + 70,211,247, 29,187, 93,207,241,238, 14,173, 91,150,121,230,249,203,133,241, 60,242,246,233,196,135, 55,111,105, 93,191,249,164, +195, 24,240, 99, 16, 65, 37, 10,235, 12,167,135, 19,253,113, 47, 15,173, 34,246, 52,204,170, 12, 94,163, 99,245,166,148, 85, 70, +182,120, 63, 73, 7,192,174,223,145,253,204,178, 12, 34,230,202,112,120,188,163, 63, 28,248, 63,254,167,255,194,240,245,149,195, +221,129, 15,191,251,137, 72,193,212, 3,125,191,235,105,154,134,120, 30,104,118, 61,205,105, 71,244,153, 60, 47, 36,231,240,141, + 98,153, 3,121, 12,124,254,237,133, 49, 21,126, 56, 29,216,117, 22,175, 50,216,134, 18, 21,243, 52, 19, 66, 98,152, 7,114,142, + 60,180, 13, 75,152,184, 24,112,167, 3,105, 14,236,148,225,116, 58,200, 53,160, 13,221,211,129,167,159, 62,214,180,176,107,168, +202,173, 95, 91,223,112,229,219, 33,189, 90,217,178, 4, 31,217,202,241,173,185,224, 2,119,203,128,184,249,204,149,160,111, 42, +215, 20,254,213,114,165,174, 9, 98, 91,132, 44,255, 30,254,191, 61,160,175, 9,112,114, 31, 72, 78, 55,223, 36,214,129, 66, 43, +251,205, 65,126,141,164, 45, 55, 27,231,109, 83,219,245, 80, 87, 27, 26, 33, 3,196,109,113,204,182,233,215,244,181,219,196,188, + 21,234, 93,131,172,114, 18, 61, 75,138, 55, 97, 55,214,160,172, 60,231, 84,205, 54,200, 89, 6,159,237,165,101,181,109,101,110, +243,254,171,250,188, 85, 87,188, 76, 41, 81,193, 87, 49,103,185,217,242, 11, 26,180,173,229, 46, 43,144,113, 83, 2,195,181,171, + 64,223, 12, 57, 84,165,183, 90,125,236,250, 26,251,203,119, 81,181,235,183, 37,215,141,208, 31, 77,211,108,156,242, 45, 74,146, +171,232,109, 85,237,175,214, 62,173, 53,218,174,118,200,252, 77, 52,108, 89,209, 28, 37,195, 65,218, 14, 68,141, 43, 70,220, 17, +117,243,151,175, 64,232, 30, 25,163, 36,201,180,172, 41,120, 53, 40,202, 40, 25, 18,141, 17,229,122, 74,153,213,148, 64,213, 37, +172, 57, 4, 91, 57, 81,150,255, 96,205, 65,201,100,186,182,217, 60,250, 40, 65, 6, 74,142, 91, 33,142,174,250, 78,178, 12,132, +114, 95, 85,116,160,198, 2,175, 69, 80, 74,105,190,190,188, 82,114,228,208,245,144, 19, 49,134, 10,197, 7, 46,227, 64,211,117, + 82, 70, 83, 41,158,213,223, 47, 22,219,130,118, 74, 68,224,218, 80,114, 45,150, 41,146,196,105,140,184,169,114,146,243, 48,230, +114, 45,227, 89,231, 55,191,248, 27,101,232,166, 72,192,245, 59, 41, 40, 40, 50, 85, 26,219, 50,205,203,246,229,129,192, 4,202, + 24,226,101,193, 21, 73,220, 73,115, 32,235, 76, 82,133,164, 37,134, 80,182, 7,185,224,117, 85,111, 54,251, 29,126, 89, 24,199, +133,164, 13, 62,102,138, 50, 82,103,153, 86,155,201,202,167, 39,113, 54,231,200,101,137,180,109,131, 86, 73,184, 30, 36,188,132, +232,137, 37, 99,187, 29,218, 57,150,243,133, 97,156,176, 33,114, 25, 7,186, 70,218,174,190, 38,241,207,159,179, 98,140,185,110, +233,138,190,232, 45, 17,200,100,176,192,146, 35, 95,134, 87,126,252,240,134,183,111,223,240,235,231,223,152,166, 17,155,171,111, +212,105,156,113,219,164, 91,140,132,107,180,206,113,247,240, 72, 4,230,113,196,135, 76, 84,153, 28, 2,199,187, 59,218,211,142, + 24, 34, 90, 91, 41,147,153, 22, 26,107, 55, 72, 51,215,205, 57,165,136,247, 1, 93, 12,143,167, 3,135, 67,131,154, 2,186,128, + 53,142,175, 49,242,219, 56,147,150, 68,127,232,105,187,130,154, 3, 57, 36,230,232, 41,202,112, 30,103,146,213, 36, 37,168,139, +174,245,120,198,104,172, 18, 37,250,228,165,172,229, 96, 20,247,206,113,246,129,207,163, 39, 38,133,210, 82,171,184, 24,139, 55, +150,144, 21,131,247,164,236,233,140,149, 27,193,136,248,168, 49,170,250,211, 17, 27,221, 60,211, 43,195,190,177,236, 91, 39,135, +186,179,236,187, 22,231, 52,166,181, 44, 73, 46,204,174,113,236,118, 13,199,135, 3,187,189,195,135,153,175, 95, 46,188, 62,191, +114,127,183,231,253,187,123, 78,123,201,124, 86, 69, 17,166,196, 60, 46,228, 18, 37, 60,199,105, 78,119, 71,250,211,129, 82,213, +124,186,194, 88,235,195,211,108, 74, 99,217, 40, 12, 18,218, 48, 47, 51,195,232, 57, 28,143,104, 5,211,112,185,166,165,237, 29, +199,135, 19,127,247, 95,254,134,127,252,187,191,197,182,142,159,126,250, 11,218,166, 69, 89, 77,219, 42,250,190,161,107, 90,194, +101, 64,181,134,238,112,172, 55,125, 34,199,140,106,157,180,241, 13,129,175,159, 47,188, 76, 11,239,158,246,236,239,123,166, 24, +208, 81, 97,178, 97,153, 60,203, 20,152,124, 96,138,129, 99,219, 96, 80, 12, 62, 97,143, 61,113,153, 81, 41,242,244, 32,176,123, +108, 52,221,190,229,225,247, 63, 72,178, 95,142,242, 48,213,183, 94,102,117,109, 31, 91, 5, 85,235,131,183,220,186,216,100, 3, +204, 37,213,108,134,178,109, 35, 91,205,169, 86,255, 97,124,234, 22, 23, 91, 61,238, 90, 27,248, 38,120,230,150,223, 23,255,246, +237,214,173,191,131,216,111, 85,242, 74,201, 32,113,123,224,126, 95,222,178,110,228,165, 92, 3, 93,196,173, 86, 95,127,136,242, + 64, 86,245,240, 70,147,139,150, 62,130,146,170,251, 65, 44,118,229,182,125,173, 66,238, 70,169,186,181, 94,131, 90,110, 45,128, +229, 38,244,228,250,222,217, 30,252, 49, 4,148,102,171,228,148, 88, 87,217,125,212,186,125,171,171, 32, 47,165, 64, 73,101, 21, + 59,200,161,174,248, 78, 36,184,114,242,124,147, 31,127, 29,228,190, 87,189, 43, 84,209, 87,241,213, 58, 0,105,153, 92,237,154, + 36,167, 5,230,205, 37,227, 76,205,135,175,113,186,186,214,197,132, 34, 5, 34,118, 21,229, 85,203,154, 86, 50,224, 27, 85,208, + 37,139,229,110,141,209,173, 90, 6,106, 75, 95, 42,137, 92,155,226,138, 85,117,137,145,131,189,113, 78,210, 75,171,234, 30,163, +240, 21, 69,210, 70,168, 25,163,140, 40,243, 83,146,120,233, 26, 37,174,203, 45, 29,147,209,170, 84, 49,173,156, 39,185, 72,123, +158,181, 86,130, 92,130,167,171,101, 49, 87, 87,151,100, 89, 40,212,214, 42,184, 90, 42, 85,145, 66, 42,179, 53, 3, 10, 23,190, +182, 83, 2,204,211,196,121,242,116,251, 35,218, 88, 66, 8,244,221, 14,171, 27,134,243,136, 69, 22,152,152,162, 12, 2,214,201, +197, 80,175, 89, 98,193, 25, 75,227,108, 77, 36, 12,155,171,194, 88,139,109,141, 88,155, 83,220,114, 27, 36, 95,160,198,235,197, +165, 6,201,196, 21,102, 85,132,146,104,251, 30,103, 28,177,242,186,206, 88,230,105,146, 80, 3,165,165,233,169,109,101,147, 14, + 51,182,105, 49,182,230,125,171, 92, 51,223, 87,184,143,237, 5,235, 44,208,215,254,112, 96,156, 7,194,188, 80,140, 98, 9, 9, +109,173, 68,254,133,132, 81, 70,248,161, 27,117,231, 28, 61, 88,232,187, 22, 95, 68,165,218, 41,133, 51,162,216,199,106,225, 90, +114,230,245,124, 70,199,196, 52, 77, 24, 63,177,183,134,193, 71,230, 10, 1,190,134, 72,172, 1, 40,125,209, 52, 74,109, 48,172, + 86,138, 24, 34, 95,166,145,182,105,249, 79,191,255,145,151, 47,175, 92, 94, 94,201,222,215, 69,167,160,140,195, 89, 43,177,168, +245, 70,201,192,221,187, 55,156, 30, 30, 24, 94, 94, 25,167, 9,111, 13, 11, 16,114,230,248, 40, 57,223, 69,129, 49,150, 95,191, +126,161,107,186, 90,150,147,165, 55,187, 68, 82, 10,164, 84, 88,124,230,241,208,243,225,225, 40,142,130,152, 48, 78, 19, 77,230, +121,152, 25, 46, 11,237, 97,207,254,238, 8,195, 68, 78,129,113,153,200, 90,243,186, 4,150, 8,177, 24,177, 3,106, 73, 88,114, + 90,227,148,162,171, 57,221, 11,153,189,209,188,113, 13, 49, 38,190,158, 71,124,148,192, 3,103, 13,139,214, 76, 90,177, 20,197, + 56, 45, 76,203, 66,107,164,223,168,212,148,167,174,113,104, 68,220, 23, 98, 97, 24,103,148, 82, 28,155,150,125,211,176,107, 27, +218,198,178,239, 91,218,206, 98,118, 78,110,214,144,104,156,225,112,144,112,152,238,208, 49,250,200,243,151, 51, 95, 95, 6,218, +221,142,167,119,143,236,118, 59,178,146,141,103,241,158,121, 24,160,114,182,214, 58,118, 15, 7,118,119,135,173,172,194,105, 35, +170, 84,109, 48,218,110,153,212,170,250,161,215, 27, 56, 44,158,151,151, 87,186, 93, 71,183,219,225,167,169,170,142, 27,137, 95, +221,245, 60,255,249, 11,255,248,127,253, 29,121, 74,124,252,225, 35,143, 31, 30, 36,114,214, 41, 14,157, 99,119,232, 72, 33, 96, + 82,100,127,119,128,182, 35, 39, 69,140, 30,181, 51, 76, 99, 32, 15,158,225, 60,242,233,203, 23,238,143, 59,222,220,223,115, 89, +198,218,248,100, 73, 62,115, 25, 39, 22, 63, 51, 69,207,189,115, 28,156,227, 92, 2,229,216,137, 72,117,241,220, 29, 78,156,246, +157,128, 97,109,195,195,239, 62,114, 56,238, 43,212,200,117,195,219, 10, 60,249, 38,249,109, 13,135, 89,173, 88,107,241,136, 12, + 60, 53,230,116, 61, 96,191, 73, 90,147,252,236, 82,196, 99,173,140, 32, 31,235, 33, 86,110,248,232,173, 30,181,240, 13, 4,143, +226, 10,179,171,213, 26,149,234,118, 37, 89, 22, 74,149,170,132, 87,215,215,250, 31, 4,206,220,230,230,168,218, 63, 81,244,150, +218,122,181, 49,213, 72,216, 45, 0, 70, 34,202,182,152, 88,165, 77,205,193, 55, 53,148,167,108, 98, 75, 25, 84,242, 55, 97, 47, + 90,203, 86, 86,170,143, 89,252,182, 53,218, 53,149,154,123,175,234,251,148,237, 62,134, 82, 5, 77, 82,107,149, 75,164,148, 53, +138, 86,120,120,170,136, 48,165, 82,213,215,185,134,159,172,245,171, 98,175, 93, 55,242,111, 62,137,200,141,240, 81,109,254,233, +239,173,125,165,166,181,177, 37,200,177, 89,125,215,211, 75,138, 75, 36, 1,206, 52,238, 74,167, 20,161, 6,197,137,147, 54,193, +160,222, 28, 21, 50, 48,216,218, 94,182,234, 1,172, 98,107, 51,139,181,153,209,212,170,208, 18, 69,100,214, 25, 83, 19,244, 4, + 73,177,107,165,119, 45, 58,201, 37,215,140,142, 82, 95,159,108,196,186, 20,129,208,157,219, 54,239,111,195,138, 68,128,153,111, + 82, 19,115,150,144, 49,227, 28,141, 49, 76,115,228,208, 53,184,166,136,149, 82, 93, 15,235, 85,126,112, 29, 28,203,214, 63, 96, +215,133,166, 6,162,105,179,222, 63,154,201, 71, 94,207,175, 52,109, 75,215,247,196, 56,163,109,193,185,134,151,215, 87,114,150, + 65, 36,167,188, 37, 37,174,161, 57,130, 12, 20,201,210,175,233,172,166,100, 82,244,148,148,232, 90,139, 49, 50,180,167, 84, 72, + 90, 34,133,149, 2,237, 92,195, 50, 78, 91,138,156, 64, 85, 85,249,170, 37, 23,215,106, 83,149,166,130,162,135, 16,100,187,169, +190,189,118,215, 17,131, 40,157,109,227,132, 3,136, 65,148,224,181,230, 84,175,242,165,181, 52, 0,133,109, 20,187,190,103,190, + 4,138,159,200,254,106,155,136,161, 66,232, 86, 87,207,108,217, 98,249, 94, 67, 96,239, 44, 77,107,165, 26, 21, 68,172, 87,114, +237,230,110, 80, 90,225,253,194,120, 57,147,163,103, 90, 22,142, 77, 11, 69, 49,133,132, 75, 5,159, 37,211,156,218, 29,220,214, +108, 98, 99, 36,237, 44,102,248, 50,141, 92,198, 11,127,253,187,223,241,116,247,192,203,231,103,150,105, 17, 81, 97,221, 98,172, +115,100, 87,117, 7, 85,140,177,111, 91, 30, 30, 30,200, 41,178,204, 11,227, 56,145,157,244,178,183,157,227,116,186,175,125,202, +150,203,112,102,153, 23,142,199, 78,162, 14,107,134,177,196, 67, 38,124,138, 24,149,120,115,127,164,239, 44,202,123, 73, 96,179, +134,231,201,243,229,117, 2,165,216, 63,236,177, 37,160,125, 98, 89, 22,124,201, 68, 5,195, 20, 8,104, 60,235,123,147,165,218, + 25,131, 75, 5,157, 19, 33,203,180,120,111, 29,166,104,126, 27,102, 46,222,139,189,175,117, 68,215, 48, 27, 75, 84,134,113,153, +241,126,102,103,100, 40,136,245, 38,235, 27, 71,215, 26, 41,181, 9,145,105,241, 64,230,216, 57,246,141,101,215, 56,220,202,167, + 55, 45,166,105,176,125,203, 28, 18, 49,102,186,190,225,112,218,115, 60, 29,196,250,241,122,225,203,231, 51,206, 52,188,125,119, +207,221,233, 32, 23,127, 77,144,154,207,163, 36,189, 41,121, 8, 29, 31, 14, 28,238,142,155, 47,118, 83,116,175,155,202, 90,104, +177,246, 74,215,232,209, 24, 51,227,235, 68,215,119, 28,251,142,225,249, 21, 31, 60, 69, 41, 92,219, 96,172, 99, 24, 2,127,248, +251,127,226,211,175,191,113,122,184,231,253,199, 15,164, 92,112, 13,236,122, 17, 86,178,100,242,178,208,223,223, 97,107,133,174, + 88,158, 52, 62,103,150,203, 66,156, 50,191,126,249,130,113,134,119,111, 30, 88, 82, 68, 92,114, 22, 83, 52,195,101, 98, 24,103, +230,224,105, 20,156,156, 99, 10,129,197,104,104,100,218,127,232,123, 30, 42, 18,161,141,230,233,195,123,142, 31,223,201,225,178, + 38, 83, 97,170, 40,170,108,130,183, 43,132,170,183, 0,144,170,120,186,110,183, 55,181,162,107,246,117,185,137,131, 93, 55,241, +109, 51,229, 6, 98, 47,101,171,230, 76, 41,138,174,130, 82,105,218,242,239,183,250,154, 61,127,229,192, 83, 61, 28,212,154, 33, +242,141, 93,237,123,161,220,173,223,190,168, 53,206,147, 77, 96,183,242,161, 34,139,169, 74,245,170,212, 54, 55,226,176,171,191, + 91, 75,161,199,141,151,187,144, 43, 28, 90, 57,114,106,180, 42, 55,244,194, 42,178,187,169,149, 93, 59,218, 87, 72, 56,134, 36, +153, 21, 85,213, 85,110,210,251, 86, 27,151,170,195,140, 90, 97,226, 84,182,144,156, 82, 99,172,183, 1,160, 66,231,137,116, 77, +223,171, 67, 16, 55,204,138, 68,181,234,186, 73,174,217,240,107, 86,124,253,252,215,193,188, 38,145, 43,242,230, 4,177, 90,213, + 64, 22,182,239,185, 20,249,222, 99,109, 41, 19, 79, 63, 21, 32, 87,219,159,179, 90,111,127,198,104, 57, 47, 74, 93,206,180, 82, +149, 11,191, 14,157,186, 30,250,185,114,239, 27,125, 80,237,108,166, 40,138, 81,164, 28,197, 19,111, 12,170, 20, 82,214,226,229, +111,228,153, 40,247,238, 90, 35,123,213, 66, 74, 86,127,190,230, 26, 80, 33,115,107,165,199,196,104,246,109,191,149,236, 40,165, +235, 32, 87,203,205, 40,148, 10,163,151, 34,219,191,179,166,102, 25,172, 81,190,117,224,168,104,197,243,231, 87,172,213, 28, 79, + 71,150, 32, 67,118,215, 57, 22, 31,152,231, 64,219, 54,181, 5,238,198,251,190, 38, 92,214,223, 42, 14, 20, 48,107,155, 97, 29, + 52,154,214, 73,164,116,129, 24,145, 70, 62, 81,210, 88,194, 56, 85, 11, 68,157, 54,180,188,129,253,110, 71,183,235,240,201,147, +124,160,113,194, 7, 44,126,169,144, 11,100, 93,232, 91, 71, 8, 98, 37,114,109, 75,140, 73, 54,150, 2, 37,102,217,202,139,124, + 32,172,245,137,100,140, 21,129,219, 60, 46, 24,215,224,125,148,164,162,106, 37, 81, 86,138, 54, 40,200, 5,164,192,215,174,247, +125,183, 35, 43,181, 85,121, 54,214, 18, 82,148, 76,121,235,176,197,241,242,252, 74,152,103,162,159, 88,114, 97,103, 59,166, 4, +115,148, 27,231, 82,211,211, 84, 86,116, 74,146,153, 86,171,135, 85,134, 97, 89,248, 60, 13,220,221,221,243,223,255,197, 79,188, +190,206, 76,231, 1,239, 3, 33, 87,125, 0,242,224,215, 93,123,133, 25,149,226,241,233,129,166,111, 24,134,129, 16, 35,211,236, +101,179,201,137,126,183,151, 60,111, 99, 73, 73,113,121,126,169, 45,100, 18, 29,152,235,205, 18,163,116,233,134, 28, 57,116, 45, + 31,158,238,241,139,199,228,128,107, 12, 94, 27, 62,191,142,204, 33,136, 40,172,179,152,217, 19,151,192, 60, 5,104, 27,134, 97, +193,103,152, 75, 70, 57, 43,188,119, 70,148,253, 37, 99, 83, 34, 20,169,129, 60,105,203, 17,195,215, 37,242,121, 14,100,109,112, +187,134,220, 90, 46,218, 16,148,102,156,131,180,245, 25, 69,111,196, 98,145,148,162,111, 27,246,141,193,135,204, 24, 34,195, 18, +152, 99, 96,223,180,156, 90,199,190,119, 88,107,233, 92, 67,223, 52,216,198,209,238,118, 68, 95, 24,230, 64,235, 44,167,187, 61, +135,251, 3,170, 81, 92,134,137,215,151, 1,165, 44, 79,111, 79,220,223, 29,104,173,216,107,130, 79,140,231,113, 11,237,192,104, +246, 15,123,246,119, 7, 84, 13,146, 49,171,205,169, 62, 24,138, 84, 60, 85, 85,178,217, 54,174, 82, 10,195, 48,128,213,236,143, + 59,166, 97, 36,204,139, 12, 6,109,131, 54,154,121, 90,184,124,122,230, 95,254,225,159,232,246, 13,239,127,255, 3,202, 26,172, +130,174, 21,232, 91, 43, 69, 30,102,246,119,119, 52, 15, 71, 43,151, 2,161, 0, 0, 32, 0, 73, 68, 65, 84,138,105,208,100,177, +126, 90,195,229, 60,129,143,252,242,249, 19,243, 60,243,241,195, 91,140,134, 57, 44,148, 36,106,247,203,101,230, 50, 12,196, 32, + 52,211,222, 56,150,148, 88, 20,168,198, 17,188,103,111, 29,239, 31, 78,180,173, 65, 59,203,238,241,145,211,135,183,194,223,162, +170, 27,160, 66,234,165,138,225, 86,175,109,133,133,141, 17, 63,248,186,157, 93, 17,241,155,237,124, 19, 82,234, 10,227,151,109, + 67,221, 68,116,185,108,145,178,235, 86,156,115,169, 28,112,222,210,203, 86, 97,157, 8,109,175, 10,236,154, 19, 43,246, 53, 99, + 4, 37,184,177,165,169, 27,240,254,155,226,150,117, 91,191, 25, 20,210, 26, 58,163, 36, 41,112,237,210,254,166,159,156,130,182, +181,134, 85,138, 45, 54, 43, 20, 53, 99, 65,248,222, 53,152, 76,109, 93,222,235,193,169,111,248,104,245, 77, 52,171,218, 90,213, + 86, 56, 91,173,170,116,165, 9, 62, 66,169, 16,113, 69, 55, 72,146,112,103,172,222,208, 11,217,189,141, 32, 3, 34, 33, 68,175, + 57,250,198, 84,203, 91,218,196,111, 69,231,107, 65,139,173,234,252,172, 48,186,108, 8,140,120,210,205,134,198, 40,116, 13,187, + 81, 20, 4, 54,214,234,250, 62, 36,138,212,144,179,198, 58, 43,161, 68,219, 27, 43,149,107,150,248, 86,129,234,165, 86,123,245, +197,175,159,219, 55, 42,248,117, 8,171,113,186,170,166,248,173, 88,146, 90, 11, 96,170,124, 61,215,102,182,206, 53,146, 88, 87, +160,164,128, 86,102,107,211, 51, 70,227,172,150, 14,146, 44, 13,113,214,104, 74,140,130, 38,229,155,235, 52,175, 9, 36,245, 90, + 72,226,238, 72, 85,100,157, 99,168,144,127,187, 89,252,214, 12,122,117,211,209,174,138, 80, 53,107, 59,154,115, 22,180,150,127, + 22, 75, 77, 10,212, 34, 16, 4, 94,135, 51,195, 48,113,220,237, 0,141, 95, 60, 77,211,144, 98,225, 60,140,180,109, 87, 43,118, + 21,198,184,122,191,177,105, 0,132,187,183,178,220, 26,181, 5,132, 69, 10,174,105,193, 72,112, 90, 78,178, 48, 43, 10,122,153, +206, 44, 62,200,180,104,228, 98,178, 85, 85,188, 63, 28,113,141, 35,231,196,101, 24,113,189, 37,204, 11, 97,152,177,213, 27,222, + 53, 29, 86,203, 63, 47, 41,211, 55,141,240,192,231, 81, 60,131, 49, 85, 17,205,149, 91, 42, 41, 99, 75, 97,215, 73,168,205,203, +203, 11, 70, 41, 22, 63,227,104, 40,241,166,136, 64, 73,115,153,168,227, 97,152, 39,156, 81,114,168,123, 49,245, 55, 90, 90,106, + 82, 76, 96,164,199,124, 41,145,241, 60,144, 66, 34,206,129,190, 40,172,109, 88, 66, 33,162,153,115, 17, 81, 24,133, 6,104,215, + 68, 38,235,106,173,101,228,121, 30, 48, 86,241,159,126,250, 9,237,118, 60, 63,127,101, 94, 22,130,247,216, 21,147,201,242,192, +117,182,138, 9,151,204,233,225,129,167, 31,223, 48,188,188, 16, 99, 96,246, 1, 95, 10,217, 25,172,115, 82, 11,235, 20,166,213, + 60, 63, 63, 19,230,200,254,208, 75,180,109,148,135, 98, 74,145,144, 68,105, 89, 66,225,195,187, 71, 90,167,200,222,227,108, 75, + 81,138,231,203,200,151,203,196,126,223,177,223,239,104, 2,152, 37,112,153, 39,146,211,248, 37, 50, 68,233,216,206, 90, 97,157, +166, 24,208,214,162,139,198,164, 5, 16,120,191,181,134,147,133, 75,204,188, 94, 60, 90,105, 73, 18, 52,134, 87,109, 88,208, 76, +243, 34,185,227, 90,211,217, 70,116, 22, 26,129,158,251,150,164, 52,227, 28, 57, 95, 38, 98, 72,156, 90,199,169,111, 57,236, 90, + 90,103,112,206,208, 53,162,122,239,246, 61,170,117, 76,243,130,202,153,227,195, 65,184,240,222,113, 25, 22, 94, 94, 7,188,143, + 60, 62,237,185,123,216,227, 58, 73,146, 10, 75, 96,120, 29,200, 33,111, 77, 90,251,211,129,227,211, 29,172,225, 41,218,144, 43, +218,164, 55, 46, 89,118, 16,234,118,190,250,167,199,203, 64,244,145,253,254, 64, 14,145,101,158, 81,198,224, 92, 67,219,236,152, +166,133,101, 92,248,183,127,252,123,150,203,192,199, 31,127,228,120,186,151,207,160, 51, 28, 15, 59, 26, 35, 60,122,127,183,103, +255,238, 17, 67,131, 81, 45,243, 50,147, 53,156, 95, 38,242,148,248,237,203, 51,159,191,124,226,167,119,239,184, 63, 28, 24,195, + 66, 78, 9,171, 53,147,247,188,188,156, 69, 59, 1,236,180,195, 82, 24, 83, 36, 58, 83,183, 60,197,211,113, 79,179,239,208,214, +210, 30,247,220,125,120,139,109, 28,122,141, 41, 85, 43,236, 94,174, 7,147,210,215,195,105, 51,252, 21,146, 18,143, 49, 55,208, +226,170, 62, 94,159,227, 82, 36, 17,183, 7,239,118,232,223, 64,243,210,180, 22,183,108,117, 85, 4, 22,165, 62,148,178, 86,219, + 96, 32,238,149,184,169,233,111,109, 97,249, 54, 88,230,187,160,156,111,224,212,122,128,231,239, 54,247,237,117,213, 66,153, 91, +112,126, 13,130,169,132, 25,169,168, 45, 32, 70,169,194,122, 2,173,175,115,165, 13,164, 13, 64,213,188,237, 68, 94,185,119,190, + 71, 29, 4,145,216,168,141, 90, 84, 67,109,161,139, 49,162,204, 42, 0,147,100,148, 88,109, 80,235,102, 39, 96,138, 32,126, 69, +151,141,138, 16, 27,191,252,125, 42,137, 66,168, 30,117,182,140,242, 53, 59, 93, 21,217,186, 41, 34, 75,211,245,253, 80, 29, 31, +171,103, 45,215, 33, 65,213, 4, 56,234, 48,160,138, 65, 89, 43,131, 95, 42, 24,211, 80,116,220,232, 44,173, 12, 49,233,202, 54, +228,122, 24,223,112,206, 55, 8,136,179, 85,118,182,230,176,235,245, 51,170,155, 55, 16, 54, 65,165,198, 25,139,169, 13,126,235, + 0,104,106,228,119,161, 16,124, 64, 27,161, 34,174,161, 62,102,179, 97, 26, 99, 49, 74, 28, 29,102, 13, 61,171, 9,127, 90,105, +116, 46,213,171, 14, 84,119, 17, 20,156, 49,248,101,161,228, 66,187, 70, 72,107, 83,133,113,121, 75,247, 83,232,173,248, 74, 6, +133,245,222,146,249, 52,215,129,112,107,182,211, 34,120,253,250,245, 43,167,187,125,237,145, 72, 53,207, 61,115,185, 12, 24, 99, +105,187,118, 43, 46,218,180, 24, 43, 77, 37,160,186, 8, 87,171, 46, 40,166, 76,244, 25,235,220, 38, 12,140, 49, 86,237, 73, 66, +143, 95,191,146, 76,144, 24,215, 36, 23,188,214, 50, 37,247,125,143,179, 45,222, 7,226,178,208,116, 61, 97,158, 68,176, 86, 31, +160, 77, 35,156,104,246, 53, 72,223,104,210, 18, 54,200,125,171,102,188,105, 14, 42, 37, 99,141,162,235, 45, 99,152, 57,159, 71, +116, 46, 85, 52, 6, 33,164, 13, 34, 21, 43,191,136,162, 22, 31, 56, 79, 11,187,190,135,214,110, 5, 10,173,174,141,108, 90,161, +141,195, 42,205,249,229,149,215,225, 34,246,182, 20,217, 59, 75, 44,137, 37, 69,178,134,151, 28, 9,181,135,214,106, 81,235, 26, + 4,206,180, 70,241, 60, 15, 76, 97,230,247,239, 63,240,195,253, 19,227,226,165,178, 53, 86,179,255, 54,184, 38,217, 58,173,147, + 9,218,194,195,199,143,148, 4,207,159, 62, 99,156,101, 89,162,116,254,170, 66,211,119,156, 30, 31,192, 40, 46,175,175,140,151, + 1,156,165,181, 98,183, 10, 33, 84,117,109,148,144,157,162,232, 27,203,143,239, 31, 73,243,136, 41, 25,211, 56,230,144,248,114, +190, 80,148,166,237,123, 90,155,113,201, 51, 95, 70,153,220,180,101,156, 3, 83, 86, 44, 37,211, 58, 91, 31, 80, 82,212,144, 75, +194, 20,241,254, 55, 10,158,180,131,164,248,116, 25, 9,165,208, 54, 29,217, 57,206,198, 48,167,204,101,156,121,157,103,148,130, +157,169,194, 13, 13,157,115,220,117, 29, 70,193, 28, 35, 95, 47, 35,175, 62,209, 26,197,195,174,225,110,223,209, 88,135,181,138, + 93,171,217,181,150,246,208,227,246, 61,203, 60,179,248,200,113,223,113,127, 58,208,238, 58,198, 49,240,250, 50, 50, 78, 51,143, + 15, 39,238,238, 14,236,186, 22,167,164, 24, 97,188, 12,228, 40, 28,186, 54,154,253,169,231,248,112,170, 54, 37, 73,226, 43,255, +129,149, 74,113,229, 83,215,237,109,158, 23,188,143,220,221,223,161, 77,193,207,139, 8, 51,173,193,181, 7,124,240,132, 24,248, +245,143,127,226, 79,255,244, 39,222,252,240,145,211,211, 35,202, 64,211, 40, 14,251,150,166,107,137,175,103, 90,107,121,122,243, +132,109,118,224, 26,226,114, 33,170,194,224, 3,203,236,185,188, 12,252,233,207,159,120,255,248,200,195,155, 19, 99, 24,201, 41, + 98,149, 37,107,203,243,235, 69,188,254, 10, 26,173,104,180,218, 98, 99, 69,144,148,120,216,117,220,237,119,104,163,112,125,203, +233,237, 35,205,195,254,202,143,214,108,115,233, 70, 95, 25,243,107,255,249, 55,225, 44, 37,223, 8,221, 42,143,200,218,155,174, + 55,177, 86, 41,233, 74,157, 21,174,215,189,250, 15,162, 91,111, 20,239,130,210,223,182,182,173,210,225,107, 15,251, 42, 40, 34, + 23, 74, 44, 85, 85,172,170,114,236,223,123,211,191,241,163, 87, 63,241,181, 15,253,251,104,218,111,255,158,114,237, 63, 95, 5, +112, 26,189, 65,179, 90,175,156,240, 13,237, 80, 97,213, 66,222, 14,158,162,111,126, 95, 77, 13,145,120,216, 26,177,107,234,129, +185,110,165,165,144,130, 56, 88,172,117, 53,245, 75,215,236, 6, 73,146, 19,123, 82, 77,213, 83, 53, 46,180,138,185,214, 82, 29, + 17,151, 73, 78,182,162,110,135,136, 16, 89,175,194, 63, 99, 41, 70,196, 93, 69,233, 74,175, 84, 33, 29, 89, 26,212,234, 9, 36, + 46,164, 58, 68, 84,207,182,209,160,116, 18, 75,154, 54, 64,196,185, 76, 38, 84, 63,118,222, 26,203, 82, 17, 77,128,214, 72,184, +204, 26,210,181,102,250, 87,127,186,173, 61,232,168,140, 86,249,138,116, 40,133,214,174, 94,117, 98, 85, 51,250,138,140,172, 3, +146,181,106, 67, 48,215,160,161,160, 74,205,220,191,162, 57,210,240,230,174, 34, 51, 25, 91,107,102,251,181,186,119,189, 22, 19, + 53, 57, 53,101, 76, 35,153, 29,243,178, 72,196,248,154, 89,177, 6,175,170,178, 69, 0, 23,165,200, 89, 85,162, 66,218,229, 76, + 29,142,214,124,251,107, 72,163, 34,134,204,229, 34,205,108,199,227, 81,222, 83, 77,154,155,134,153, 76,192, 57, 83,157, 96,230, + 38,160,137,205, 82,185,194,255,186, 14, 73,146, 15, 32, 20,132, 51, 78,160,255,170, 67, 40, 74,161, 7,159,176,218, 85, 97,141, + 68,212, 73, 52,170,165,107, 91,172, 81, 44,243, 66,219,181, 88, 99, 8, 62,214, 56, 63,153, 56, 27,215,224,140, 33, 76,158,166, +105,165, 32,196,123, 41,114,168,135,198,122, 35, 82,121,113,105,149,209,180, 77,207,249,235, 89,166, 73,181,246,151, 43,105,163, +209, 6,173,174,249,186, 62, 71,134,121,166,228,204,161,239,137, 53,100, 69, 21,104,141, 38,229, 72, 50, 26, 26, 71, 82,133,225, +242, 10,203, 66,246,129, 8,116,141,102,204,153, 5,152,146,212,145,234, 12, 38,229,122,204,201,133,102,140, 97, 88, 34, 95,135, +153,251,253, 61, 63,189,123, 71,192, 51,140, 3,243, 44, 85,165, 41, 37, 44, 90,248,163,146,104,250,150,162, 45,195, 48,114,247, +254,145,135, 71,105,228,210,141, 38,229,194, 48,123, 76, 99, 9, 57,243,238,253,123,172,115,204,243,194,229,229,140, 46, 17,109, + 5,138,151, 0,160, 64,202,137, 24, 4, 98, 91, 66,230,195,155, 7,246,173,195,207,158,166, 10,129, 62, 15, 19, 97,241, 28,118, + 29, 77,227,112,170,144,150,153, 97, 18, 46,120,246,129, 49, 25,150, 8,202, 90,169, 16,173,229, 0,164,130, 77,137, 88, 85,156, +119,186,161, 41,154, 79,131,103,244, 25,219, 59, 98,163, 25,148, 80, 21,195, 56, 49, 45, 51,173,214,244, 85,184, 81, 20, 52, 70, +113,215,181, 52,173, 99,201,137,175,151,153,215,203,192, 65,107, 30,143, 61,167,125, 71,103,229,247, 58,101,232, 93, 67,119,232, +105,239, 14,120, 63, 49,143, 11,154,194,225,110,207,225,161, 39, 23,120,126, 25,185, 12, 35,247,119,119,236,239, 15,244,187, 86, +186,143,163,196,191, 70,159,182,200,201,221,233,192,221,227,131,180, 80,173,133, 15, 43, 71,184,122,150,215,156,247,170, 65,208, + 53,157,112,158,103,194, 37,208, 31, 14,152,190, 35, 76,179, 8, 56,157,147,150, 64, 63, 83, 74,100,121,125,230,159,255,239,127, +224,254,238,158,187,167,199, 26, 3, 10,125,239, 56,236, 15,164,113,132, 24,184,255,240, 30,125,127, 47, 15, 77, 31,240, 57,144, + 34, 44,175,158,249, 28,249,195,175,127,226,116,119,228,227,227, 19, 49, 44,146, 77,144, 21,202, 90, 46, 95, 47,188, 14,147,116, +197,163,176, 69,113,137,158, 89,101, 66,141, 34, 61, 53, 13,247,135, 29,186, 49, 24,215,112,120,122,160,127,123, 47,133, 47,149, + 63,143,181, 52,100, 77, 87, 91,109,207, 87,193, 25, 87,238, 60, 83,147, 30, 83, 45,223,176,181, 2,178,242,160, 53, 78, 83, 14, +111,217,204,184,141,129, 93,135,130, 27,225,221, 85,136, 37, 67,194,218,100, 86, 74,172, 27,177,145,231, 75, 45,204,209,149,135, +206,232,107,140,109, 22,213,175, 8,153,190, 23,220, 85,143,251, 26,236, 82,109,104,229, 38,174,102,235,194,230, 59, 49,157,248, + 29, 55,154, 49,151, 80, 5,121, 2,115,230,186, 85,175, 92, 69,174,182,219, 84,179,223,165, 14,181, 90,238,234,118,189,249,159, + 43, 84, 43,229, 28,230, 38,168,171,138,224, 82,165, 6,156,222,138, 82, 40, 69,158, 95, 91,128,201, 53,244, 37,151, 88,147,238, +214,193,167,194,229,202,146,180,240,232,185, 68, 32, 73, 36, 51,183,138,248,155,239, 80, 66,206,175,121,242, 37,213, 60,245,178, + 13,247,133,180,241,241,165,242,241, 86,233, 26, 53, 9,109,219, 83,178,174, 66, 83, 73,112, 75,229,106, 19, 84, 21,210, 47, 27, +204, 95,209,129,170, 69, 88,197,108, 87,161, 94,205, 52, 88, 19, 8,213, 53,130,117, 85,239, 87, 62, 69, 32,120, 4, 65, 94, 43, +108,101,232,118, 43,174,143,113,226, 59, 79,217,163, 93, 61, 20, 75, 22,222, 93,213,132,192,122, 48, 67, 38,213,136,104,106,150, + 70,174, 27, 62,202, 16, 67,160,237, 26,140, 51, 53, 46, 88, 17,115,230,182,200,176,100,161,143,147, 56,219,170, 8, 87,111,238, + 16, 74,141,176,173,177,185,198, 89,134,225,194, 18, 35,125,223,226,125, 36, 43, 69,223,245,156,207, 3, 97,137, 24, 45, 61, 31, +214, 57,116,229,213,217,236,137, 90,250, 78, 80, 88,211, 74,236,115, 46,228, 32,191,203, 56, 45,118,201, 84,136,233,154,181,114, +211,165,123,133, 25,154,222,209,247, 61, 57, 38,150,113,196,185, 6, 12,210, 75,173,100,210, 85,218,210,246, 45, 41,103,134,231, + 23,154,166,165,104, 77,156, 23,185, 89, 85,237,203,213,181,247,119,221,148, 74,193,181, 13,109,231, 56,159, 47,132,172, 5,158, +174,113,124, 0,174,170, 26, 85, 45,182,159,131,231,245,124,161,223,117,236,246,123, 98, 78,196,156, 36,248, 94, 11,148,166,140, +195,104, 24,207, 19,195,249, 34,176, 68, 72,236,148, 33,162, 24, 99, 98, 41,153, 41, 4,121,124,150,130,205, 25,147,213, 22,112, +144,129,243, 50, 99,200,124,124,243, 72, 99, 12, 75,202, 76,195, 72,242, 53,211, 55,101,220,234,201,176, 13,237,241, 72,244, 11, +165,181,124,248,235,223,179,156, 95,152,191,190, 96,218, 61,227, 18,132, 34, 51,153,253,190,231,195, 79, 63, 48, 76, 23,198,203, + 72, 88,194,141, 88, 71, 17,188,120,129,197, 58, 36, 15, 68, 99, 10, 63,189,127, 36,158,199,170,236, 55, 92, 6,207, 52, 5,104, + 26,172, 51,116, 86,211, 36, 81, 77,123, 5, 17,195, 28, 18, 83, 76, 91,226,159,174,238, 0,146,196,180,170, 18, 81,169,112,103, + 12,189,214,124, 26,102, 94,150, 72,119,220,145,172, 97, 68, 34,116,207,211,194,236,131, 76,228,166,150,159,212, 3,253,208, 58, +246,109, 75,204,133, 97, 10, 60,159, 71, 48,134,199,125,199,253,190,151,162, 17, 13, 86, 67,219, 52,244,251, 61,253,233, 72, 46, +137,105,156,241, 62,114,186, 63,112,255,230, 68, 65,241,250, 60, 48,142, 11,187,125,199,241,180, 99,191,235,113, 77, 67,142,137, +241,245,178,125, 94, 40, 69,191,239,184,123,188,195, 52,110,115,107,172, 94,100, 83,123,174, 37,219,185, 22, 74, 88,179,217,166, + 98, 72, 44,243,140,221, 55,116,251,150, 48, 47,164, 92,106,254,185,197,135, 64, 38, 97,179,226, 95,254,254, 15, 24, 13,247,239, +222,176,235,123,140,179,116,189,229,126, 47,101, 67,249,245,194,227,199,119, 28,222, 62, 97,180, 33, 21,197, 20, 71,146,130,225, +121,100,190, 36,254,248,199, 63,208, 20,195,239, 63, 60, 17, 77,100,154,103,162,207,104,211,112,190,204,156,159, 71,164,192, 80, + 44, 64, 33, 69,150,146,241,117,211,115,214,240,120,216,211,119, 29,186,177,236,239,239,233, 31, 78, 88,219, 10,194,182,113,127, +106, 27,182, 87,149,249,170,146, 22, 29,155,218, 82,207,174, 98,183, 82,185,187,180, 9,215,214, 84,180, 85,164, 38, 73,102,178, +245,144,175,121,236,183,127,197,186, 41,228,155, 77,248, 42,112, 83,215,176, 19,101,171, 77,172,118,146,203, 18,183,109, 87,121, + 27, 24,216,168, 19,245,157,133,237, 54, 53,110, 29, 82,106,146,105,221,126,111,224, 89,174, 98,172,194,170,182,151,129, 37,165, +184, 73,195, 86, 42,161,212,161,112,133, 62, 89,145,134,114,253, 93, 32, 7,155,169,246,192, 82, 61,233,106,157, 29,202, 21, 81, + 80,165,224,235,117,187, 90,174,182,207,120, 59,228,106, 4,235, 77, 89,108,201, 53, 1, 81, 85,191,246,234, 0,138,105,139, 66, + 77,148,173,152,100,237,103,151, 97,137,155,247, 81,191,107,165, 73, 89,218,199, 86, 10, 66,109,162,189,178,233, 46,116,209, 88, +101,165, 31, 93,107,186,102, 87,197,191,210,218, 41,135,122,250,102,104, 89,115,251,175,225,117,107,149,108,145,198,204,117,224, + 83,101,173, 6,173,103, 72, 29,194,212,149,238,177, 55,223,117,240, 98,213, 90,237,121, 49, 8, 2,236,180, 44, 75,171,192, 48, +133, 32,105,143, 86,208,187,166,109,170, 54,169,108,170,119,173,174, 88,209,138, 4,172,254,121,109,197, 9,227, 67, 68,235,234, +100,170,195,219,149,190,249, 78,224, 89,242, 55,133, 57,107, 43,224,170,201, 18,221, 4, 88,171,249,242,229, 43, 33,120,246,187, + 14,165,170,178,223, 57, 66, 72,204,211,130, 49,215,123, 85,215, 36, 61, 17,119,150, 74, 55,228,106, 39, 23,133,188,132,209,212, +178,163, 58,196, 73,140, 94,213,189, 24,125,245,141, 82,107,251,148, 86, 52, 77,203,254,180, 39,132,192,112, 30,176,173, 3,163, +197,206, 86,121, 58,107, 44,253,190, 33,164, 68, 12,158,166,111, 40,120,210,178, 64,221,158, 82,245,203,110,211,117,125,144,180, +173, 35,150,204,235,101,192, 25, 45,162,181,122,128,175, 23,179, 85,107, 11,148, 64, 35, 33,120,186,182, 33,164, 80,115,135, 19, +174,222, 88,185,214, 52, 58, 93,120, 61,139,154,124,181, 31,244,214, 50,103,133, 79,176,228, 36,222,195,114, 85,213,234,122, 51, + 22, 96,140,145,179,247,252,240,254, 29,239, 30,239,241, 37,177,204,177,170,251,131,124,152,148, 43,111, 98, 45, 93,183,195,151, +194,143,127,249,215,116,253,142, 47,255,250,111,149,114,177,248, 40,211,184, 47,133,247, 31, 63,144,137, 60,191,156, 73,139,175, +153,190,219,108, 69, 12,137,224, 19, 33, 72,213, 96, 0, 62, 60,221,113,234, 37,128,197,182,150,133,194,121,156,201, 69, 97, 93, +131,181, 10, 75,102, 30, 23,124, 40,132, 82,152, 66, 98,136, 5, 79,198, 53, 13,146, 7, 36,214, 9, 82,194, 20,105, 49,218, 89, +197,222, 24, 46, 62, 48,248, 68,119,232, 73, 86, 51, 21,197,144, 50, 47,195,192, 18, 68, 52,214,104, 83,161, 38, 17,164,136, 61, +173,197, 43, 24,150,200,235, 48, 19, 67,226,205,126,199,227,113, 71,235, 68,144,165, 20, 56,107,217, 31,247,236,238,143,148, 70, + 49, 77, 30, 63, 69,154,214,241,240,116, 79,211,118, 92, 46, 19,151,215,137,174,179,156,142,123,118,187,142,214, 57, 74,204,204, +231,129,228, 99,221, 36,165, 33,237,238,233, 30,215, 54, 21,230,179, 87,123, 75,125, 74,106, 99,183,168, 78,165,175,117,160,209, + 71,150,105,193,185,150,221,105, 7, 62, 83,124,148,255,206, 24,177,195,104,197,174,107,249,255,254,254, 31,249,237,223, 62,113, +255,244, 40, 29, 2,141,163,105, 53,167, 67,131,179,154,241,249, 43,247,247,247,220,255,248, 17,219,119, 80, 44,126,158, 65, 21, +198,243,196, 50,121, 62,125,250,204,101, 92,248,221,135, 55, 52, 22, 22,239, 89,150, 9, 99, 90, 82,210,124,122, 57,227, 75,192, + 41, 48,245,160, 89, 74,198,107, 8, 89,248,246,183,135, 29,247,187, 94,120,244,211,137,195,187, 55,184,253,174,138,105,216, 56, +211, 45,138,117,123, 96,149, 26, 5,155,183,115,124, 5, 38,175, 86, 39,245,109,157,122,206,155,120,108,133,173,245,218,109, 93, +211,209, 84,249,214, 34,119, 45, 76, 73, 87,232,123,251,209,155,217,172,102,143,235,205,159,189, 37,208, 85,120,145,111,162, 86, +175,175,172,220,100,184,175, 67, 93,249,166,176, 69,109,135,249, 74,173, 92,233, 6,189,249,243,175, 2,182, 53,186, 53, 81, 84, +141,116, 69,158,125, 43,105,177,230, 32,232,170,164, 95,219,227,182,166,185, 27, 94, 93,213,130, 18,173, 52,185,170,147,215,135, +127,240,169,210,138, 85,179,180, 41,228,215,162,150,235,123, 90, 35,177, 87,244,160,130,217, 27,106,176,198,188,218,106,209,204, +181,109,108,171,194, 85, 85, 0,169,215,160,157, 27,191,126, 45, 89, 90, 95,115, 38, 95,251,234,179,108,160,186, 10, 39,215,109, +217, 25,139, 54, 34, 2,211, 55, 7,246, 58,144,172,201,102, 91,159,192, 55,226, 68,181, 37,204,233, 27, 42, 69,175,161, 64, 37, + 99,171, 48, 46,149, 77,148, 94,109,135, 50,208,165, 36,218, 34, 83,211,250, 66, 16, 45,193,202,177,175,223, 99, 76,121,243,165, + 83,221, 58,171, 62, 46,213,207,122, 83,148,164,117,232, 84,155,230,195,106,113,229, 68, 89,117,113,141,251, 54, 32,233,198, 78, +121,189, 93,214, 16,181,140,182,107,232, 77,250, 6,181, 90,241, 35,191,100, 94, 95, 95,105,219, 29,109,219, 11,210,107,229,179, + 61, 95, 46,184,198,109, 26, 24,231, 92,253, 60,203,214, 32, 9, 69,174, 41,133,216,222,170, 48, 52,249, 92, 99,130,175,129, 79, + 70,150, 68,189, 9,105,114,150,135,166,181,134,166,105, 48, 90,179, 44,146, 75,222,245, 61, 42, 20,166,151, 17,205,181, 69, 71, +187,150, 24, 34, 86, 25, 26,215, 72, 61,104, 8, 87,110, 68, 75,130, 21, 70,139, 0,164, 78,119,125,219,177,204,137,243,101,162, + 49, 53, 41, 40, 23,114,140, 85,144,113,157,234, 82,202, 12,179, 76, 52, 93,223, 9, 79,149, 18, 42, 37, 90, 43,109, 53, 89, 75, +231,120,240,137,231,215, 87, 41,223,240, 18,168,227,148, 98,137,226,113,244, 49, 94, 39,228,213,239, 89, 4,174,203, 90,177,228, + 68,223, 54,252,248,254,189,148, 14,196,204,188,120,114, 73,146,164,151,234,235,171, 19,246,254,241, 14,101, 20,205,126,207,155, +247, 31,249,252,243, 47,248,243, 11,182,105, 8, 89, 54,173, 66, 97,255,112,207, 15,127,245, 59,254,252,199,159,201,243, 66,140, +162,188,205,185,194, 87,165,224,131,175, 23, 86, 77,102, 82,138,247,111, 30, 8,227, 44,129, 58, 78,115,185, 76,140, 33,108,240, + 83,215, 55,164, 69, 28, 1, 49, 75,212,236, 24, 11, 83, 82, 40,231, 80, 10,172,117, 82,198, 19,133, 94, 81, 41,208, 41,195,201, + 40,198, 88,184,196,140, 57,246, 20,103, 24, 75,225, 53,201, 33,189,212, 98, 24,163,100, 59,183,218,208, 58,195,190,235,232,154, +134, 4,140, 33,115, 89, 34, 99, 12, 60,236, 27,222, 30,228, 64,215, 85,205,107,180,226,120, 58,176, 63,237,209,141,193,207,158, +101,242,228, 84,120,184, 63,114, 56,182, 12,131,103,184, 76, 52,173,225,112,216,179,219,239,232,187,142,146, 50,211,203,133, 48, +251, 45, 45,171,219,117, 60, 60,221, 99,219,166, 90,150, 76,133,155,245, 6,187, 75,196,100, 85, 57, 87,175,171, 2,114,204, 76, +211, 12, 26,118,135,158, 18, 50, 97,246, 85,253,171, 36,202, 17,184,127,186,231, 79,255,252, 7,254,249,111,255,133,187,199, 7, +118,199, 35,174,111, 80,206,176,235, 45,251,190, 97, 56,127,229,208,183,220,255,229, 79,216,211,145,152, 12,211,248, 74,137, 30, + 63,120,230,215,133, 79, 95,158,249,237,211,111,252,229, 79,239,217, 31, 27,206,211, 44,109,123, 88,138,109,249,244,229,133,101, +246,160, 11, 38, 11, 95,229,115,102, 86, 5, 95,123,150,239,250,142,119,167, 35,182,109,104, 14,123,142, 79,111,177,167, 29,218, +186,205,246,162, 55,239, 52,155,101,180,108,253,231, 84,241, 91,222,182,204,173, 99,124,219,124,175,212,221, 53, 27,254,154,115, +157, 83,185, 65,179,215, 34,166,111,121,244,111, 4, 99, 85,172, 71, 69,161, 86,229,249, 26,206, 84,123, 80,106, 89, 71,150, 46, +247,181, 70,166, 30,214,233,187,190,244,111, 14,245,219,184,216,255,128, 79,255,214,254, 86,182,247, 80,138, 18,103, 78,186, 38, +208,149,156,106, 71,131, 36,115,173,188,225,186, 13, 11,100,108,191,203, 71,175, 30,230,245, 96, 89,255,217,250, 16, 94,169, 1, +132, 83,205,185, 72,209,134,213, 55,149, 95, 92, 61,234, 85,175, 96,181,145,237,186,230,156, 23, 37, 62,241, 85, 45,174, 81,196, + 18, 43, 85,120, 69, 97, 84,181,136, 81, 17,209,188,169,202,111, 61,254,185, 66,239,177,218,177,184, 22, 28, 21,209, 46, 81, 15, + 36,177,192,101, 92,235,136, 72,169,148,169,131, 82,222,226,119,197,130,101,141,174, 10,250,180, 93,135,234,166, 13,206, 26, 93, +249,246,171,199,127, 61,224,183,185, 47, 11,210,154,171,125,235, 54, 92,200,215, 97,222, 57,123, 21,207, 89,189,249,212,133, 26, + 74, 50, 32, 20, 65,129,251, 93,143, 42,130, 40,165, 90,252,163, 54, 70,166, 34, 36,149, 79, 87,117, 64, 49,202,144, 67, 32,198, + 69,170, 77, 43,226,117,117, 89, 92, 47,255,117,112, 5,249,243,198,184, 45,153,114, 77,154,219,196,157,245, 93,126,250,244, 66, +235, 26,218,166, 21,113,183, 19, 13,192,235,120,174, 86, 52, 57,135,157,107,234,119,182, 70,223,202,146,189,106, 1,172, 19, 71, + 79,138,114, 93,160,117, 69,218,106,203,157, 92, 11, 26, 83,106,205,159,241,194,121,105, 77,215,119, 40, 69,109,188,202,236,118, + 61,139, 95, 88,162,151,135,168,164,110,162,108, 75,156, 60, 57,131,107, 59,194, 20,200, 73, 4, 75, 41,131, 54, 14,101, 29, 73, + 41,178,145, 11, 88, 57,195,225,184,231,245,124,225,245,117,168, 15, 92,233,138, 13, 75,160, 53,215,110, 89,163, 52, 62, 71,198, +113,164,239,123,154, 78,172,107,137, 76, 83,131, 13, 34, 74, 18,235, 76,225,245,249, 76,188, 76,242, 32, 75,210, 67, 60,149,194, +146, 18,115,138,219,212,105,138,216, 48, 92,145,106,211, 72,102, 86,224,115,225,175, 63,252,192,169, 49,148,156,241,179, 8,227, + 98,200,120,191,136, 72,171,222, 80, 37,103,186,227, 1, 92,195,253,219,183,204,203,194,159,127,254, 25,219,237,176,109, 47, 41, +105,128,238,246,188,125,255,129,152, 18, 95, 62,125,150, 66,154, 24,254,127,182,222,179, 91,142,235,188,214,125, 86,170,208, 97, + 7, 68, 82,164, 72,201,146, 45, 29,251, 30,251,255,255,142, 51,238, 73, 86, 22, 69, 16, 4,176, 67,135, 10, 43,222, 15,239,170, +234, 6,174, 63,104, 12, 74, 20, 54,122, 87, 87,213,122,195,156,207,172,187, 40, 33, 90,229, 36,217,221, 41, 73,160,135, 38,243, +234,110,199,109,231,152,231, 25,101, 12,167, 41, 48,140,190, 70, 62, 38,156,213, 20, 47,145,173,169, 32,222,240, 4,231, 92,136, +149,232,101, 20,108,156,149,184,211, 34,135,135, 45,153, 91,101, 80, 73, 51, 37, 77,106, 27,188,129,115,134, 33, 22,158,198,145, + 49, 37, 17,219, 32,153,233,168, 66,103, 52,219,166,101,235, 26, 82, 41, 12, 9,134, 16, 73,201,179,177,154, 87,251, 13,189,171, +163,163,186,210,184,221,109,217,221,108,112,187, 22, 31, 2,254, 20,200,243,204,205,253,142,251, 87,119, 76, 62,243,124, 58,163, +148, 97,123,179,161,223, 54,244, 93, 75, 73,153,225,249,192, 60,251,245, 61,216,244, 45,119, 47, 95,210,117,205, 23, 17,148, 50, +106,148,127,214,107,135,126,157, 72,150, 83,102,154, 38, 0,250,205, 6,148, 38,206,161, 90,221, 52,211,236, 33,194,253,203,151, +156,127,250,192, 31,255,199,255, 21,171,220,126, 71,179,233,208,189,165,111, 52,247,219,158,241,112, 34,249,204, 87,191,250,158, +254,171,183,148,220, 48,157,159,136,105, 98, 78,145,225,228, 57, 28, 6,254,246,195, 39,190,126,251,146,111, 95,223,226,199,192, +121,154, 72, 73,108, 51,159, 30, 30, 57,140, 35, 14,133,205,242,125, 70, 96, 40,133, 41, 7,140,145,149,197,139,237, 6,211,118, +152,190,103,251,242, 30,183,219,162,157, 17,225,169, 86, 40,107,192,214,152,202,156, 86, 15,182, 94,252,191, 95,170,200,151,172, +237, 43,156,234, 37,184,162,124,150, 17, 46,182,170, 68, 33,137, 98,253, 42, 67,124,205, 72, 95,178,196,175,192, 50,194, 27, 91, +188,226,215, 99, 75,201,100, 95,186,225,188, 42,216,235,206, 83,101,208,101, 69, 46,127, 6,172,185,238,216,175,130, 89,114, 74, + 87, 99,254, 84,211, 17,107,254,123,185,196, 21,137, 37, 42, 47,171,220,122, 61,170,151,127, 57, 36, 75, 70, 47,127,166, 18, 51, +151,128, 94,153,172,214,128,153,114, 17, 38,162,213,103, 89,234,169,174, 41, 74, 77,121,243,126, 70, 41, 69,211,216, 53,141,141, +138,220,214,215, 59,228, 75,164, 90,173, 43,114,101,245, 23, 1,207,160, 8, 57,145, 84,146,149, 75, 93, 53,164,250,156,150, 69, + 75,144, 50, 42, 8, 86, 58,103, 81,221, 7, 31,100, 10, 56, 71,252, 20,152,103, 95, 97, 56,162,204, 47, 57,227, 17, 34,227,178, + 11, 14, 41,208,116, 45,185,218, 43,181, 18,173,213,114,109,149, 86, 24, 85, 48, 74, 58,196, 37,157, 78,151,178,174, 31, 36,111, +161, 32, 34,237, 42, 52, 92, 28, 26,162,237, 71, 45,192, 60, 77, 93,129,213,159,169, 36,242,101,204, 94,212,235, 92, 31,176,166, + 22,175, 18, 16,166, 10,168,198,214,105,107,161,105, 27, 84,200, 43, 52, 41,167,188, 90, 58,115, 46,117, 42,160,214,152, 86,107, + 12,182,177,196,144, 72, 62,210,116, 70,116, 58,250,250,233,184, 0,125, 36,165,176,174,150,151,124,133,202, 15, 72,139,134,236, +202,131,111,140,230,225,112, 2, 29,233,186, 70, 86,172, 41,209,118,150,121,154,133,251, 82, 49,177,141,179,181, 64,225,234,189, +166, 87,151,137,112, 58, 44,190, 58, 8,148, 86,132,235, 85,130, 54, 88, 93, 20,197,212,135, 58,130, 70, 58, 29,215,200, 78, 96, + 26, 38, 26,219,227,186,158,243,249, 64, 72,190, 50,180, 53,253,126,135, 81,153,121,154, 41,186,208, 52,142,249,248, 36, 47, 2, +149, 73, 58, 73, 72,133, 50,146, 15, 93,187,234,214,106, 54,141,229,116, 56, 9, 45,167, 8, 45, 40,196,140, 83,150,214, 90, 41, +102,141, 70,183,150,179,159, 24,231,137,237,205,150, 4,168,106,121,115,206, 80,180,252,114,141,179, 36, 10,207,167, 35, 41,199, + 90, 73,201,232,103,206, 16, 50,248, 36,159,165, 55,150, 56, 5,241,115, 86, 37,168,215,134, 51,153,175,239,246,252,226,237, 29, +193, 23,114,214,140,243,140,113,142, 20, 61, 49, 68, 76,201,226,249, 52, 26,109, 44, 77,211,177,189,191,165,221,108,249,203, 63, +126, 32, 12, 3,155, 87, 47,136, 53, 87,183,221,117,236, 55, 61,119, 47, 94,240,244,241,131, 88,252,140, 35,248, 32, 86,149, 34, +170,199, 57,204, 85, 79,176,232, 26, 44, 47, 94,236,201,213, 18,168,157,230,233, 48,225, 83,145,223,223, 20,108,175, 9,207, 3, + 70, 9, 40,103,138,153,177,142,221,149,147, 8,218,190,233, 4,220, 19, 18,134,132, 46,129,173, 22, 10,210, 80, 12, 89, 23,102, + 20,147,207,204, 62,240, 92,147,228,196,242, 44, 2,153,146, 19,155,166,101,211,119,236,155,134,185, 68, 78,177, 16,234, 42,197, +104,184,221,118,244,141,236,208,115, 22, 59,207,221,190,103,191,223,225, 92, 67,154, 35,126,148, 21,138,179,134,155,187, 61, 81, + 41,206,231, 1, 67,166,223,244,116, 93, 67,223,247,104,173, 56, 63, 28,136,115, 16,149,178,178,180,219,150,155, 87,183,184,182, + 17, 13,117, 29,235,151,170,158, 93, 58, 0,173, 63,127,233,163,164, 96,244,179, 39,229, 76, 91,247,244, 49, 4,178,150,123, 36, +204, 1, 31, 3, 47,223,188, 70,149,192,159,254,215,127, 50,156, 39,238,238, 95,224,156,163,217,116,180, 38,115,123, 43,248,227, +249,121,228,251,127,254, 37, 47,190,255,142,172, 27,198,243, 39,252, 60, 99,179,102,122, 26, 57, 28, 6,254,244,247,119,188,184, + 49,124,255,213,107,206,227,192,121, 30,137,227, 72,219,222,240,112, 10,156,207, 3, 77,213, 42,168, 10, 80, 10, 5,124,201, 98, +169, 51,150, 87,125,199,126,187,193,118,142,205,203,123,218,219, 91, 92,107, 48, 57, 83,140,240, 6, 84,221,121, 47,233, 89,165, +142, 24,169, 89,230, 11,242,121,137, 68,165,138,215,116,249, 66, 89, 94,212,149,160,170,142,108,149, 20, 67, 98,255,187,236,123, +191,140, 52, 93,187,227, 85,143, 38, 99,224, 85,245,174, 63,183,162,161, 46,159,229, 50, 10, 23,150,197,245, 33,254,121,128,203, + 21, 63, 94, 41,217, 64, 87,230,247, 18,178,118, 25,125, 46,244,201, 44, 16,158,101,103,191, 16,216,180,172, 18, 4,231,106, 87, +148,232, 98, 81, 93,160, 36,234, 42,229,107,177,213,171,171, 41,199,218, 37, 87,111, 69, 89, 10,148, 20, 65, 25,194,236, 25,135, +145,182,239,229,221, 87,197,101, 57, 69, 82, 61,212,151,200, 83,212,133, 98, 22, 83, 36,228,128, 81,194,250, 46,171,191, 59,177, + 36,197,166,148,152,117, 36, 25, 89,169,201,212,196, 86,189, 67, 66,199, 12,216,250,181, 41,124, 12,248,152,136, 73,212,248, 42, +131, 4, 91, 74, 22,122,201, 16, 82, 16,215, 81,145, 29,237,110,187,225,124,146,162, 90, 44, 94, 82, 20,169, 42, 60,180,118,217, +253,139,179,168,232,186,104, 81, 34,134, 94,180, 21,182,230, 9,120,242,133,135,192,197,202, 88, 76,150, 46,187, 78, 55,156, 54, +235,247,157, 67,181, 67, 27, 67, 70, 80,217,230, 98,128,199,212,180,192,166,109,170,239, 29,177,120,142,105, 45, 78,115,138,100, +107, 69,127,144, 50,137,122,255, 71, 57, 39, 98,181,251,106, 50,209, 7,154,110,131, 51,117, 93,116,213,162, 95, 51, 20, 74,202, +245,126,170,168,109,173,137, 73,138,181,198,185,186,122, 84,107,151, 63, 15, 19,167,211, 72,219, 89,180,147,238,218, 54,134,227, +105,100,246, 65, 38, 30,165,224, 76,131, 91,132,138,170, 10,246, 22,253,104,140, 52, 77,131,179, 70, 86,222, 41,209, 88,177,239, + 70,192, 81,155, 25, 17,206,102,177, 98, 32,139,121,107, 45, 77, 99,201,185,112,122, 56,208,182,150,110,215, 50,157,206,100,159, +209, 74,198, 19,125, 29,133,151,148,112,173, 67,101,117, 25,213, 21,133,178, 45,165, 74,238, 85, 53, 86,150, 82,232, 58, 75, 49, +240,124,124, 90,119,219, 41, 23,124,152, 81,173, 37,187,134,162, 52, 70,146,255,120, 60, 13, 24,107,233,218,142, 56, 74,112,189, + 41, 25,167, 36,163, 87, 25,139,213, 45,195,241,196,233, 60, 16,114,134,146, 48, 20, 74, 49,204, 89, 49,196, 89,242,206,149,166, +211,194,150, 55,149,130, 53,107, 77,208,134, 6,205, 47,223,190, 89,247, 48, 97,246,140,231, 73, 82,205,162, 23,127,122, 18,161, + 6,166, 96, 90,203,238,213, 43, 94,127,245, 53, 15, 31, 62, 50, 61, 31,104,108, 75,179,221,226,167, 73, 96, 33,247,247,152,206, +161, 77,146, 34, 70,107, 66,152, 40,197, 83,208, 98,233,200,137, 56,132, 58,142, 19, 1,223,253,125,207,237,166, 71,249, 8,166, +240, 60,204,156, 7, 47,120,201,156,105,219,134, 52, 68,129,252,163, 56,205, 51, 67,202, 12, 57, 83, 42, 96,166,105, 26, 90, 45, +192, 3, 69,193, 21, 77,135,163,177,150,100, 52, 1,197, 88, 12,211, 36,206,130, 39, 63, 51,229, 76,214, 5,165, 13, 45, 6,149, + 11, 77,107,217,111, 26,182,157,163,168,204,121, 74, 76, 49,147,178,172, 72,118,141, 99,219, 24,148,150, 46, 41,206,137, 6,129, +185,232,198, 18, 74,230, 60, 14,204,126,194,151, 72,127,183, 99,179,105,153,143, 71, 17, 29, 54, 13, 77, 39, 84,182,198, 41,206, +207, 71,194, 56, 87,244,172,162,217,180,220,191,122, 65,219,247,117, 74,116,225,243, 43, 37,105, 73,186, 78, 38, 68, 28, 39,228, + 7,133, 34,251,128,247,158,152, 35, 77,219,114,179,217,212,253,107,193, 90, 45, 60, 0, 95,120,113,247,146,190,111,248,235,255, +252, 3, 63,252,244,129,205,205,141,220,115,219, 13,198, 41,182,155, 30,163, 20,231,167, 79,188,126,117,195, 87,191,253, 13,182, +233,240,195, 73, 16,196, 20,142,167,129,211, 41,240,151,191,189,199,218,204,111,191,253,150, 52,123,198, 97, 96, 56, 31,208,101, +203,144,225,116, 30, 40, 41,162,116,174, 17,146, 5, 95, 18, 67,154, 41, 6, 92,103,185,239, 55,220,109,183,180, 93, 71,127,119, + 71,247,234, 94,246,246,214,176, 58,149, 42, 82,115,241,150, 47,120,179, 75,250, 89,185,116,135, 92, 5,159,228,154, 15, 93, 46, + 80,150, 92,167, 63,185,190,132,148, 82,213,251,158,235, 11,230, 34, 12,186, 6,175,148, 34,129, 46, 50,249,100,222, 64,200, 0, + 0, 32, 0, 73, 68, 65, 84, 74,162,162, 86,101, 85,133,175,100,186,146,106, 88,203, 37, 6,245,122, 76,174,191, 72, 16,203,245, +112,151,206, 74,200, 65,151,209,109, 77, 93,203,172,127, 46,213,113,255,197,183,190,140,242,163,220, 11,213, 50,170, 20,148,152, + 96,241,203,215,189,122, 89,166,111, 87, 86,254,178,120,193, 21, 23,207,253, 23, 34,189, 82, 46,198, 55,116,117, 90,212, 0,172, + 16, 50, 42, 25,218,202,244, 46, 10, 66,241,210,209, 69, 49,106, 47, 46, 5, 1, 5, 41,230, 84, 56,156, 39,252, 92, 8, 65,146, +205,114, 22, 31,118, 78,144,106,160, 72,200,178, 74, 76, 1,230,144,201,200,232,190, 40, 77,209, 22, 69, 67,139, 37, 39,205,121, + 46, 12, 67, 33,123, 77, 14, 10, 31, 20,115, 40, 76,190, 48,122, 56,143,153,243, 16,152, 71, 41,116, 98,241,226,197, 86,102, 77, +216,164,250,230, 99,146, 49,121,163, 13, 78, 59,217,233, 27,185,103,108,201, 24,157,193, 20,116, 73,117,100,159, 47, 64,150,108, +170,176, 76, 99, 87,219,164, 38,134, 74,110,171,220,132, 5,198,163,138,184, 46,114,157, 26, 45, 1,129, 86, 91, 84,145,235,156, + 80,196, 24, 49, 77, 67,140,153, 60,103, 26,235, 86, 7, 71, 74,130,229, 94, 29, 10, 68, 74,150,117, 98,169, 92, 6, 91, 10,214, + 54,160, 21, 49, 69, 84,209,213, 3,206,213,119,115, 49,137, 46,159, 73,229,197,187,185,164,121, 94,115, 19, 46, 14, 13,208,132, + 57,242,248,124,160,113, 29,173,105,136, 41, 96,173, 67, 23,131,159,166,149, 4,216,218, 74,150,171,121, 0,170, 10, 33, 75, 77, + 1, 85,186, 90,219,148, 38,134,188,198,196,230, 84, 8, 73, 92,237,186, 84,209,152,209, 85,108,162,138,236,211, 27, 71,241,129, +113, 30,216,116, 91,156,115,132,217, 87,224,128, 94,163, 42,151,248, 69,215,245,164, 34, 34,145,172, 20, 73, 21, 80, 86, 80,128, + 87, 5, 79, 70, 2,222,231, 49,112,124, 30,215, 74, 56,166, 66, 8,243,186, 83,208, 74,209,219,158,179,159, 57, 28, 78,108,186, +142,198,104, 98,138, 24,165,100, 36,172, 21,161, 20, 92, 99, 49,170,112, 60, 29,153,231, 32,219,185,148,208,245,231,250, 92, 8, +117,167,216, 55, 77, 37, 95, 69, 65,222, 42, 8, 70, 19, 74,225,171,251,123,238,239,110,200, 62, 17, 75,225,116, 58,145,124,160, +115, 13,254, 60, 49,196,128, 81,162, 38, 23, 44,235, 29,111,127,253, 29, 37, 71,126,124,255, 30,155, 5,189,106,247, 59,142,231, + 19,187,187, 91, 54, 93, 75,244, 51, 41, 36,198,195, 1, 99, 45,243, 28, 80,202,213,132, 34,200,115, 36,164, 84,117, 4, 96,141, +226,254,110, 67, 9,242,210, 73, 40,158,143, 19,164, 66, 10, 81,196, 41,214, 48,141, 35, 69,105,230, 32, 25,232,231, 92, 72, 90, + 88,249,206, 25, 54,141,101,242, 1, 74,193,169, 66,175, 10,219,198,161,181,101, 76,112, 40,137,199,121,228, 48,205,140,115,100, + 70, 24,194, 84,145, 34, 8,195,249,110,219,179,109, 36, 84,228, 48, 71,158,252, 76,166,208, 90,197,182, 49,236,156,195, 40, 77, +142,117,172,104,160,219,181,196,156,241,193, 51, 13, 35,211, 56, 49,141, 17,231, 28, 55,119, 55,156,135, 81,120,205,214,208, 52, +146,220,230,156,226,240,112,194,159,166, 21,161,105,173,229,238,205, 45,205,182,249, 44,180, 98,217,253, 45,169, 72,162,120,151, +157,173, 54, 74,198,235, 57, 17, 66, 36,198, 76,211, 52,108,182, 61, 73, 75, 96,135,209,138, 20, 18,211, 48,177,187,217,112,251, +234, 5,239,254,239, 95,248,241, 15,127, 67,105, 71,219, 56,218, 77,139,235, 29,189, 85,236,122,199,240,233,196,166,223,242,205, +191,253,142,246,197,107,134,113, 96,120, 58, 96,138,146,241,250,113,230,111, 63,252,204, 60,156,248,253,119,223,211, 57,199,113, + 60,113, 30, 79,164,104, 9, 24, 14,207,103,217,125, 85,113, 15, 64,204,133, 83,144, 1,104,219, 56,246, 77,203,253,110, 75,183, +233,105,246, 91,182, 47,239,177,109,123, 25,213,102,245,153, 66, 93, 95, 9,147,150,176, 22, 99,204, 37,152,233, 58,168, 37,139, + 48,204,152,139, 58, 29,181,100, 43,200, 1, 94,178, 76,135,168,226,177, 11, 92,229, 74,209,180,164,116, 85,197,248,130, 29, 43, +107, 2, 99, 89,151,171,121,113, 48, 85,155,214,218,174, 95,249,140,175, 35,217,214,209,254,162,164,215,235, 28,224,178, 42,184, +138, 94, 85, 53,234,248,122,239,190, 0, 81,148,190, 8,235, 74,229,179,115,165, 98, 95,212,131, 43, 78, 84,171,149,182,183, 8, +218,174, 20,124, 23,251,213,181,107,168,138, 8,139,146,196, 75, 85,195,130, 66, 76,152, 86, 97, 27, 17, 3,154, 66, 5, 76,165, +181,152, 64, 87,159,127,204,156,198,137,199,167, 35,126, 14,162,122,103,225,172,171, 58,242, 13, 2, 57,201, 16, 82, 90,113,204, + 62, 70, 82,209,120,159,136, 62,145, 67, 33, 69,120, 60,123, 62, 60,159,249,116, 60, 75,241,108, 28,173,113,184, 90, 0,231,162, +241,161, 48,205,137, 97, 74,100, 36, 29, 46,198, 12,218,225,131,175,118,188, 82, 87, 48,162,186, 46, 85,148, 41, 35,226,114, 89, + 71,202,162,191,238,214, 85, 37,156, 73,161, 99,205,133, 73,175,170, 18,254, 10, 98,183,178,245, 83,254,194,175,141,149, 16, 33, + 64,105,129,162,217,250,252,167, 42,236,180, 74, 11,165, 45, 37,166,105,164,113, 26,221, 84,203, 94,206,132, 36,187,245,117,205, + 82, 45,185,203, 33, 29, 98,172,140, 0,121,127, 25,173, 4,192, 86, 63, 23, 85,183,114, 21,251, 86, 99,104,115,253, 29,178, 40, +216,201,107, 24,205,178,186, 41, 21,237, 27, 99,228,248,124, 66,107,187,126, 86,173, 53, 93,211, 48,214,181,160, 86,154,162,141, +176,246, 23, 53,253, 21,213,112,141,157,173,182,201, 37,173, 79, 27, 35,133, 70,204, 53, 26,151,202,216,173,241,138, 70,107,218, +174, 3,229, 24, 79, 3,211, 60,177,185,221, 9, 30, 48,165,117,119,150,138,224, 81, 75, 41,140,195,128,107,173,236,124, 66,148, +119, 78,181,180,165, 34, 47, 8, 85, 42, 79, 55, 75,250,206, 52, 78,140, 62, 84,181,189, 40, 24,115, 46,116,141,176,112,173, 53, + 52,157,227,227,211,145,217,207, 18,103, 89,119, 42,166,102,252,138,217, 94, 99, 91,135,247,103, 14,199, 35, 41,200, 97,110,171, +240, 35,148,196, 92,164,208, 48,218,176,177, 86,178,105,149,132,202, 68,171,201, 74,161, 83,228,237,139, 59,121,144, 82, 38,196, +196, 60,121,172,147,241,156,159,166,122,195, 45,162,141,204, 87,191,254,158,219,251, 59,126,252,225, 31, 40,228,144,232,218,134, +168, 68,241,222,223,236,121, 62, 62,209,109, 58,134,233,140, 9, 50,150, 12, 99, 64,105, 43,195,168, 34, 19,129, 66,145,202,150, +204,203, 23,183,108, 27, 71,142, 1,101, 52, 15, 71,207, 48,137,222,129, 28, 49,173,101,154,194, 58,178, 58,249,200, 24,193, 23, +181,130, 47, 54,157, 88,193, 38, 31,112,170,176, 49,178,242, 48, 70, 51, 39,137,106,253, 56, 12,156,103, 47,113,176, 85,109, 47, + 52,175, 5,217, 89,184,221,201,200,221, 40,205,228, 35,159, 78, 35, 1,232, 26,195,206, 89,122, 83,189,171, 9, 66, 85,143,246, +219, 22,215, 53,204, 33,113, 58, 13,204,147,175,177,185, 18,120,112, 62,143, 76,126, 70, 91,141,179,134, 77,215,176,233,122, 14, + 15, 39,166,211,176,118, 73,174,117,220,189,125, 65,187,233,214,248,201, 37,110, 81,153, 26, 37,169,245, 21, 41,237, 42, 57, 44, +103, 66,136,164, 44, 73,127, 93,215,161,181,196,249, 42, 99, 8, 41,114,122, 62,209,239,182,188,122,243,138,247, 63,252,149,119, +127,250, 43,195,232,217,184, 6,109, 12,155,221, 22,235, 20,119, 93,195,116, 60, 96,125,224,219,223,255, 11,119,223,127,207, 56, + 14,156,159,159,209, 58,147,231,196,120,138,188,123,247,145,135,167, 71,126,253,237, 47,184,221,110,120, 60, 60, 51,140, 35,195, + 56,145,117,207, 97, 62, 73, 87, 61, 7,129, 53, 35, 69,231,121,246, 76,165,208,116, 29,157,147, 46,125,211,182, 52,187,158,205, +171, 59,108,223,226,172,132,209,148,138,131, 93, 94,134,162,250, 55,255,127,216,206,138, 48,213,151, 81,102, 45,108,175,133, 76, +159, 5,117, 44,241,167,229,162,168, 95,186,213, 69, 65,188,112,191,215,252,117,214,120,135, 5,224,190, 10,220,174, 85,208,133, + 5,160,162,185,200,149, 46,202,221,207, 32, 53,245,231,172, 43,133,242,133, 34,255,234,179,171, 10,127, 17, 7,132,190,242, 68, +171,207, 70,160,171,162,126,217, 99, 47,135,198,146,138,182,252,206,185,172, 59,117,181, 30,166,233, 98, 16,186, 58,236, 37,223, +188,142,223, 21, 43, 95, 61, 43,177,248, 77,163,199, 88,141,179,170,238,235, 21, 58,178,102, 58, 80, 50, 49, 4,198,201,243,124, + 26,248,249,241,145,113,152,176, 74,132,166, 57,101, 82, 72,235, 94, 56, 37,153,142, 37, 96,138,129,105, 14,162,245, 9,137,201, +103,166, 41,212,162, 5,142,231,145,231,243, 72, 74,133,189,107,104,172, 28,210,195, 56, 18,131,176, 54,130, 79,132, 41,146, 99, + 89,226,197,165, 64, 73, 10,231, 44, 83,240, 43,235, 63, 84,171,109,168,124,139, 84,138, 88,221,202,234, 78,148, 48,147, 26,144, + 99,180, 90,109,138, 74, 73, 10,155,185, 2,207, 44, 23,178, 49,210,160, 73,126,142, 90,228,125,151,132, 64, 35,215, 63,196,184, + 66,145,148, 8, 71,200, 69,138, 12, 83, 25, 21, 37,231, 53,222,212,104, 93,207,157, 82, 11,179,117,144,181,190, 75,196,194, 88, +149, 34, 85,191,149,115,193,167,112,217,109, 43,174,238,227, 11,217, 48,175, 68,186,218,252,212,223,125, 17,122, 94,138,146,197, +154, 12,227, 48,201,170,192,185, 90,168, 40,172, 85,156,230,161, 18, 84, 21, 69,187,170,166, 55, 23,153,197,213,114, 63,215,156, + 13, 83,195,111, 98, 77, 50, 45, 64, 10, 17, 82,150,115, 66,235, 26,129, 88,146,204,236,157,136,219,134, 65,188,217,221, 70,162, + 46,115,140,178,111, 81, 74, 94,220,141, 19,127,106,202,184,214,146, 67, 88,111,130,162,145, 20,159,138, 58, 21, 27,140,116, 2, + 93, 35, 76,244,113,154,196,235, 9,248,152, 48,202,209,247, 45, 74, 41,218,182, 97,142, 51, 31,158,143, 56,237,176,141,195, 87, +101,188,169, 41,159, 5,133,181, 45, 86, 89,158,158, 79, 60, 63, 31,201, 5,108,202,168, 32, 98,132, 89, 21, 66,221,229,180,206, + 94, 42,179, 58, 54, 73, 74, 81, 82,230,102,219,179,191,223, 19,147,140, 32,253, 20,152,199,132,117, 13,115,242, 76,243, 9, 87, + 36,173, 76, 41,205,254,238,142,239,126,255, 59,158, 30, 30, 57, 29, 15, 88,109, 24, 15, 39,218,205,134,156, 13,221,118, 71, 82, +137, 97, 28,184,189,217, 49,158, 78,152,214,144,131, 84,232, 89,105,114, 86,196,217, 11, 8,167,222,240,157,213,220,223,237, 41, + 81,154,159, 41, 37, 62, 62,157,197,226, 17,102, 26,103, 8, 37,227,231,128, 54, 13,231,144, 56,133,200,144, 37, 88,165,144,233, +172,163, 45,134,121, 10, 88, 10, 27,167,216,219, 6,163, 12, 83, 44, 60, 77,158, 79,195,200, 60, 39, 50,154,137,194,100, 50, 89, +129, 69, 11, 35, 64, 41,110, 55, 45,119,155, 86, 48,138, 41,241,112, 30, 56, 77,145,155,174,101,223, 58,122,173,209,149, 23, 48, + 71, 81,213,182,141,165,177,118,181, 8, 77,115,224, 60,204,132, 88,104, 58, 7,170,240,240,124,144,157,118, 61,228, 59,103, 5, +193,123, 26, 68,204, 68,193,244,142,219, 87,247,180,125, 87, 65, 86,170,234,148,170, 55,247, 10, 1, 43, 64,143,154,107, 93,213, +160,193,139,119, 21,173,233,186, 6, 99,101,191,104,180, 33,133,192,243,249, 64,219,111,120,249,246, 45,159, 62,126,226,231, 63, +253,131,199,199, 51,182,223, 64,130,110,187,193, 54,134,109,227,152,231,192,116, 58,241,237, 63,255,138, 95,252,238, 55, 76, 57, + 49, 60,127,164,132,137, 66,226,124, 24,249,225,221, 35,127,251,233,103,190,251,250, 43,126,249,230, 45, 79,135, 39,233,228,135, +145,156, 59,142,243, 92,215, 66, 25,170,202, 62, 41,113,117, 60,207,129,182,239,232,219,134, 23,187, 13,251,109, 71,191,223,112, +243,250, 37,237,126, 39,137,131,181,179,212,106,233, 50,242,149,124,231,243,140,113, 57, 4,210,133,134,181,116, 25,245,254,184, +120,185,235, 33,157, 19,203, 91,253, 18, 37, 90,119,245, 57,173, 42,123,177,199,177,118,189,178,195, 94, 40, 98,215,228, 72,181, +166,129,201,203,112, 97,123,219,250,125,233,245,239, 89, 66, 61, 20,215,169,106,101,141,111, 93, 15,252,207,104,113,215,255, 93, +246,173, 90,153, 10, 9,209,171,109,110,241,199,171, 43,187, 92, 81, 23,164,171,186, 18,109, 93,143, 12,174,135, 9, 75,186,228, +234,231, 79,249,242,239,175, 18,192,202,122,208, 71, 74,150, 9, 80,206,133,174,149, 16,169, 92,100,156, 30, 99, 36,133, 44,144, + 45,159, 56, 63, 79, 60, 29,206,188,251,116, 38, 71, 67, 83, 53, 44, 33, 4,230, 74,162, 43,245, 0,245, 49, 49,231, 76, 40, 48, +167, 68,138, 5, 63,103,130,135,217, 39,150, 42,236, 52,141, 60,143,103, 64,210, 17, 29,138,243, 52,115, 28,103, 6, 31, 25,125, + 36,132, 12, 69,209, 24, 39,240, 34, 52,166, 50, 4, 38,159,132,246, 22,242,154, 80, 55,251, 76,136,133,209, 7,142,211,140, 79, +145, 16, 11,114,142, 44, 89,222,226, 99, 95,190,127,153,150,136,191,221,233,186, 78, 85,122, 85,122, 95,159,239,105,229, 33, 92, + 98,100, 75,197,220,106, 37, 16,179,156,235,138,169, 78, 42, 65,130,191,180, 54, 52,125,135, 15, 2,238, 82, 74, 99,173,190,244, +183, 41,201, 33, 90, 89, 36,215,156, 3, 65,139, 35,220,245, 58, 53, 46, 33,227, 26, 87,201,114, 95,100,207,215,119, 78, 94, 44, +148, 85,121,169,245,165,177, 47,213,185,178,106, 56,106,234,221,225,116,102,158,189, 48, 51,172,140,204,173,117, 36,159,235,187, + 10,108,103,165, 64, 81, 11,233,175, 92,194,133, 22, 43,161, 22,239,191,216,254,214,228, 23,113,140,200, 59, 85, 94,132,185,166, +142,181,109, 87, 59,247,194,120, 24,104, 26, 75,219,119,144, 33,156, 7,138,145, 95,170,235, 59,116,163,137,179, 95, 3, 52,114, +242,168,186,167, 88,150, 15, 42,137, 26,210,212,177, 76,235, 26, 90,235,120, 60,158,152,231, 80,199,116,154, 41,196,186,123,118, +116,109,195,182,235, 56, 60,158,120, 58, 30,113,182, 17,149,123, 12, 52,198,138,136, 65,137,196,205, 89,203,236, 61,143,135,103, + 74, 86,100, 45,128, 21, 63,207,132, 12,161,186, 72, 12,138, 70, 27,169,164,163,236,247,162, 19,159,100, 59,103, 94,223,222,163, + 27, 75, 12,129, 16, 18, 97, 74, 20,149,176,206, 50, 71, 79,156, 11, 78, 41, 97,222,107,205, 55,191,249, 13,214, 54, 60, 62, 60, +160,181, 99, 28, 39,146, 82,180,125, 79,179,221, 50,167,196,249,116,102,187,221, 64, 10,204, 7, 81,239, 79,211,132,181,154,144, +178,216,238,194,188,200,127,208,214,112,247,242, 6,189,236, 12,173,226,227,243, 64, 76, 30, 93,162, 20, 50,198, 48,204, 81,212, +197, 73,113,154, 18, 83, 78,136,126,191,212,235,107, 25,188, 39,215, 3,126,223,244, 24, 10, 49,102, 30,142, 19,255,120, 62,227, + 67,198,160, 37,201,173, 20,116, 86, 88,148, 60,124, 5,246, 93,203,139,125, 79, 99, 37, 97,236,121,152,120,127, 24,185,217,117, +220,109, 90,122, 99, 80, 20, 66, 46,178, 95,175,185,203, 93, 83,167, 55,179, 36,217,161, 36,180, 36,148, 32,244, 37, 12, 38,101, +185,190, 73,147, 82,225,211,227, 19,231,231, 19, 41,102, 74, 6,235, 44,183,247, 55, 52,251,150, 82,164,163,201, 75,234, 85,214, +232, 36,106, 88,165,107,119,112,229,118, 38, 65,152, 61,209,203,110,172,107, 90,121,177,214, 80,139, 28, 11,195,241, 76,151, 27, + 94,125,253,150, 48, 14,124,252,227,159, 56,127, 58,161,141,248, 91,109,239,232,182, 29, 93,163,113,100,166, 97,226,235, 55,111, +249,197,191,255, 27,186,105,152, 63,126,194, 31, 14,162, 22, 31,224,253,135,103,254,244,247, 31,121,243,234, 21,255,244,245, 27, +158, 79,207,156,199,129,105, 56,227,125, 97, 76, 34,114,106, 49,164,113,150,131,203, 24,166,201,243, 60,157,104, 55, 13,109,219, +112,211,181,220,246, 45,221,182, 99,243,230, 5,253,253, 45,186,145, 0,144,117,155,125, 53, 53, 94, 64,166,210,141, 94,130, 89, +114,190,196, 20,171,122,184,149,202,177, 38,229, 47, 80,170,121,245,163,203, 93,184,240,211,107,252,231,210, 37,215,148,176,242, +133, 34, 61, 47, 73,108,117, 76,168, 10,159,101,164,127,158,159,174, 87, 75,156,186, 10,101, 89,254,254,101,215,190, 22, 22,255, +133, 32,111, 21,163,149,171,252,246,148,107,252,238, 21,154,182,124,126, 72,107,181,100,112,179, 78, 25, 62,243,226,171, 43, 96, +207, 23,191,135, 90, 4,116,215,104,177,245, 26, 84,181,122,172,135,190, 42,228,144,152,199, 64,239, 68,240, 24, 83, 33,204,145, +217,143,156,198,129,211,233, 72,154, 2,222,103,206,163,231, 48, 68,156,109,217,152,158, 48, 7,230,105,102, 14, 85,177, 94,211, + 26,131, 23,247, 78,164,160,178, 22, 44,168,146, 48, 38,239, 11, 49, 20,230, 57,241,241,124,230,227,113,164, 4,141,202,154,211, + 20,120,127, 62,115,240, 51,185,106,118,140,177,104, 45,123,231, 72,196, 23, 79,206, 9,163,108,189, 39,162,228,140,167,234,124, + 72,129,146, 52, 57, 9,128,170, 49,212, 56,232,200,121,172,171, 59, 31,197,158,168,107,191, 93, 11, 58, 99,228, 63,202, 24, 17, + 88,171,250, 51,107,161,103,140,198,168,166, 82,211, 22,255,188,144, 21, 75, 41,216, 90,124,121, 47, 4, 53,189,230,196, 75,103, +157, 82, 18,180,183, 18,219, 87,231, 26,201, 79, 48, 70, 58,223,156,177,186,173, 63, 92,206,162,107,145, 99, 73,153, 18, 68,116, +109,156,140,180, 99,140,194,217,176,246,130,171, 89, 39, 78,139,255, 93,215, 4,198, 11, 73,113,177, 53,166,148, 68, 88,184, 76, +156,170,194,114, 26,103, 78,207,103,186,182,165,177, 77, 21,213, 89, 20,134,217, 75,222,134, 41, 26, 99,155, 11, 89,174,176,114, + 20,116, 81,171,117, 81, 85,175,126,142,177,126, 6,133, 79,137, 41, 6,236,226,187,148,139,211, 98, 27, 43, 85, 80,134,113, 56, +209,116, 61, 77, 43,222,186, 57,200, 62, 91, 23, 45,116, 27, 99, 8,222, 67,181, 4,204,167, 40,149, 75,229, 79,235,144, 48,169, + 86,144, 86,192, 14, 93,215, 98, 52,156,142, 3, 33, 95,168, 86,211, 60,113,187,121,129,237, 91,186, 77,143,210,154,167,243,137, + 24, 50,219, 27, 33, 4,165,146,177,206, 98, 74,198, 3,197, 26,148,177, 12,231, 19,167,131, 4,200, 88, 37, 85, 99,160,144,141, + 17,150,125,129, 70, 45,177,124, 73, 70, 84, 70,145,140,193,133,200,214,194,203, 23,123, 74,137,196,156, 25,166, 72, 72,139,202, + 93,145,230, 9,159,197,171,105, 82,225,229, 55,223,240,205,239,126,203,143, 63,252, 64,152,133,158,119, 56, 62,179,223,245,236, + 94,222,146,173,230,241,221, 3,205,109,199,205,247,111, 57, 28,142,148,198,146,172,193,143, 19, 56, 81,198,250,152,200,169,250, +140,181, 68,146,246,219, 94,208,157,218, 48,204, 51,159, 30, 7,122, 11,196, 32, 17,129, 81, 17, 2,244,198, 50,248,153, 49, 71, +230, 2, 41, 43,180,129,198, 25,114,168, 4, 34,163,216,183,154, 78,107,202, 28,121,255,116,226,199,243, 40,227, 91,171, 25, 13, +204,245,133,175,169, 86, 18, 96,219, 58,238,183, 45, 91, 43, 96,161,227, 48,243,243,105,102,179,105,121,117,179, 99, 83,149,245, +115,138,132, 40, 5,136, 51,154,206, 85, 63,124, 46,132,146, 46,214,159,218, 83, 14, 83,160, 47,213, 98, 87, 96,158, 38, 98,244, +232,152,233,140, 67, 55, 64, 3,253,205,134,206, 90,114, 72,152,170, 45,214,186,102,117,171,140, 42,102, 77, 33,171,138, 42,217, +243, 21, 81,240,198, 40,135, 67,219, 53,180,125,179,190,217, 99, 12, 28, 31,158,209,185,112,247,203,215,104, 50,239,254,240, 87, +142, 31, 70,124, 18,187,149, 63, 79,220,190,126, 67,211, 22, 26,147,153, 14, 71,238,110,110,248,229,127,255, 29,155,187, 87, 60, +127,250,137,231,199, 79, 34,198,153, 18, 63,127, 56,241,135, 63,255,141, 23,251, 29,255,237,155, 95, 48,159,143, 28, 79, 79,248, + 97,228,124,156, 57, 99,153, 73,236,157, 35,206, 19,201,123,180,213, 12,193,139, 0,180,111,233, 55,142, 91,103,185,219,108,104, +123,113, 83,108, 94,221, 82, 42,222,183, 92,217,171, 74,206, 21, 3,121, 5,153,190, 94, 73,231, 85,204,190,114,213, 87,173, 23, +234, 51, 49,154,160, 92,203,218, 41, 93,186,207,171, 52,171,149,130,190, 52,251, 85,193,125,125,186, 85,209, 90,169,147,129,203, + 33,156,214,207, 40, 49,180, 97,157, 36,104,189, 86, 32,235, 56,126,165,173,173, 74,122, 25, 53,171, 47, 68,117, 80, 9,146,138, +213,174,166, 20, 87,227,208, 47,233,115,101,237,184,117,245,208,231,171, 16, 22,165, 46,191,127,169,157,227,245,207, 90, 71,253, +229,178,202, 40,149,127, 46,224,171, 44,194,166, 98,200, 69,225,167,145, 28,206, 52,237,158,232, 19, 33,206,196, 36,207,187, 15, +158,232, 53,174,105,153,138,226,121, 30,200, 40, 26,165, 56,156, 7,185,231,147, 66, 71, 57, 32, 83,141, 56,157,124, 96, 78,176, +215,138, 82,102, 66, 22,212,117,170,182,222,121,156, 25, 66, 38,199,137,187,187, 45,174,107, 57,248,137, 86, 27, 90,107,209, 70, +138,146, 20,165,184, 47, 58,202,122,180,138,175,208,114,144,198,180,240,204,203,234,127,142, 89,166, 25, 83,201,196, 40,172,122, +107,193, 68, 17,221,165,146,137, 73, 17,147, 96,251,157, 18, 75,199,197,146, 47, 5, 85,227, 28, 41, 9,172,117,181, 21, 34, 22, +198, 56, 37,177,180, 85, 82,175, 54,178,179,215, 73,116, 8, 49, 85, 18,155, 54,245,254,147, 21,109,140, 81,116, 76,182, 33,198, +132,107,219,234,195, 95, 98, 99, 5,241,119, 17,103,170, 75, 96,209, 66, 28, 91, 64, 67,186, 65,169, 80,109,105,224,156,173, 89, + 4,203, 65,170, 68, 51,186,218, 58,101,186,205,146, 43, 97,244,197,137, 96, 21, 43,177,167, 86,226, 74,107, 78,211,153,215,230, + 94,246,236, 37,161,170,174, 55, 76,190, 22,187,137,198, 58, 17, 61,198, 10, 22, 90,169,144,122, 93,105,176,222,167, 21,164,166, + 4,173, 91,124,196,154,182, 93, 71,106,206, 58,140,115, 24,107, 9,126, 98, 28, 39,110, 94,221,201, 8, 52, 4, 82,240,107,144, +139, 68, 8, 58,226, 52,215,221,131, 37,197, 34,200,224, 12, 58,102, 74, 8,152, 84,106, 8,130,116, 4,206, 73, 5, 56, 76,115, +221,133,105,124,242, 68,160,239, 26,186,190, 99,183,219, 50, 30,158,120,126, 30,176,173,195, 89, 71, 8, 81, 58,101, 93,189,146, +104,108,211,128,206, 28, 15, 71,185,249, 74,102,103, 27,210, 4, 25, 35,135,186, 2, 87, 41, 76, 74,107,188,159,136, 5,138,117, +168, 12,206, 39, 54,175,239,104, 55, 59,202, 92, 8,163, 39,120, 57,168,230,156,120,209,183, 28, 62, 29, 37, 37,171, 20,246,175, +223,240,205,175,127, 69, 24,103, 30,223,189,231,230,171,151,124,250,248, 9,171, 52, 47,222,190,193,117, 91,222,191,251,153,225, +116,228,238,219,123, 90,215,240,240,116, 96,187,221, 50, 14,103,176,134,160,101, 71,159, 39, 95,181, 6,242, 32,221,222,108,112, +104, 74, 12,168, 70,243,243,195,137, 66,148,148, 92,173,136, 74, 49,134, 8, 24,124, 44, 76, 57, 49, 18,136, 69,190,244,198, 25, +121,113,105,249, 14,182,202,178, 55,134,224,103,126,122, 60,240,143,199,145, 98,165,104,243, 26,166,170,122, 94, 69, 63, 90, 4, +107,183,187,142,155,206, 18, 83,230,228, 19,135, 73,198,254,111,238,246,220,118, 22,171, 52,195, 60,227,131, 28, 10, 86,105,122, + 39, 97, 21, 33, 70,177,171,212,236, 95,171, 21,173, 53,148,162,152,166, 73,160, 22,214,210, 25,195, 28, 60,113,148,196,190,228, + 50, 91,219,177,239,118, 96, 29, 67,204,168, 44, 66, 61,157, 36,103,219, 58, 71, 49, 26,107,171,136,164, 24,140,174, 52,166, 2, +161, 82,255, 74, 22,161, 88,219,183,178,167, 1, 76,204, 60, 62, 29,152, 83,224,205,155, 55,180,173,227,231, 63,254,200,225,227, + 3, 99, 8,132,148, 8,243,196,230,229, 45,109,215,176, 49,138, 56,142, 52,174,229,187,223,255,142,155, 95,255,134,233,233,137, +199,247, 63,226,180, 66,199,194,167,199,145,255,249,167,191,208, 53, 13,255,237,251,111,200,233,204,211,233,137, 52, 78, 28, 14, + 3,207,190,144, 45,108,187,150, 20, 60,254, 60, 98,180,194,167,204, 97, 28, 41,141,161,221,117,180,206,114,223,181, 18, 95,123, +127,199,237, 87, 95,161,140, 91,119,131,107, 26,153, 82,164, 74,141,186, 78, 92, 91, 56,219, 57, 93,198,138,234, 51, 37,120,213, +120,105,181,162, 80,175,193, 51,165,138,126,214, 23,222, 34, 36, 83,117,239,152, 46, 81,153, 84,168,199,197, 23,190, 8,232, 46, + 48, 24,245, 37,121,189, 44,160, 14,181,118, 47,139, 53,140,107, 75, 92,206, 43, 71,251, 51,127,112, 41,159,103,167,151,139,144, +109, 45, 66,106,232,201,194, 93, 95,198,244,170, 10,242,202, 23, 44,120, 93, 19,251,174,237,120, 75, 34,214,133,243, 93, 62, 27, +199,151, 43,104,138,174,162,193, 92,150,124,241, 58, 5, 77,145,249, 60, 67,110, 73,169,174,158,130, 8,117,133,182,218,160,140, + 98, 82,137,167,195,192,228, 19, 14,197,227,116, 34,135, 72,103, 90,116, 66,222, 81, 41,147, 85,170, 99,213,178,190, 7, 82, 20, +157,208, 92, 50, 42, 55, 96, 13, 57, 5,250, 70, 99,247,251,138, 22,245,108, 91,105,188,114,201, 76, 49,144, 66,194,199, 10,195, + 81, 50, 18,214, 43,195, 0,108,129, 57, 69,154,182, 66,101,150,131, 80, 75, 97, 49,175, 93,161, 92,148,174,107,185, 37, 50,206, +158, 24,197, 86,107, 53,100, 91, 49,191,213, 98, 85,148,116,210,141, 82,204, 85,171,179, 16,251,172, 86,146, 20,121,165,153,200, + 57,211, 58, 39,118,187,166, 42,189, 99, 93,227,174, 60, 96, 17,188,165, 34,194,215, 82,153,242,146, 42, 42,197,136,169,121,235, +102, 89, 51, 85, 13, 86, 73, 98, 9, 46, 69,161,114, 70,229, 68,113, 5,109, 45,196, 74, 43,205, 18, 18,179,236,209, 75, 53,211, + 43,117,113, 59,196,188,120,237, 75, 5, 45,233, 10, 77,202,216, 98, 42,164, 76,173, 36, 64,163, 36,181, 45,230, 34,194,115,159, +235,104,222,224,195,188, 90, 50,173, 49, 56,109,136, 74,238, 95,123,165, 65,144, 2, 85, 95,176,203,229,130, 40, 46, 10, 98,142, + 88,235, 28,201, 75, 37,105, 27, 9,179,112,109,203,241,225, 1, 63, 12,108,183,223,224,154,134,225, 60, 86,186,143, 66, 57, 69, +191,223,146,195, 76,158, 37,156, 62, 86,202,212,242, 96, 40, 81, 78, 85, 43,130, 94, 71,135,214, 26,230,243,200, 84, 71,224, 74, +107,102, 47,126,210,126,211,177,223,239,104,187,150,159,222, 13, 60,156, 14,108,250, 30,171, 21,227, 28,217,110, 90,148,146,145, +111,169,193, 3,243, 48, 49,140, 3, 33, 39,130,130,219,219,158,247,199, 35,217,136, 47, 17, 36, 27,221, 25, 39,163,217, 20, 37, +167, 93,131,245, 9,151, 51,155,253,158, 84, 1, 37,126, 20, 46,124, 46,153,182,149,138,201,207, 51, 49,122, 58, 99,248,246,247, +255,196,246,254,142,191,255,245,175, 98,213,112,142,167,195,145,251, 23, 47,184,127,241,130,135,135, 71,206,135,103,116,103,185, +185,191, 37,142, 19, 62, 4,110,250,150,195,207, 7,140, 49, 28,207, 18,247,153, 23, 66,146, 82,220,244, 13,251,205,134, 18, 3, +198, 24, 14,231,153,135,231, 51,187,166,129, 28, 65, 27,230,152, 8, 89, 4, 40,158,194,152,146,132, 66, 64,181, 34, 58, 26,109, + 48, 21, 50,179, 49,138, 56, 5,126,126, 62,241,227,211,137,100,172,132,177, 24,133, 71,118,232,153,130, 45,178, 67,223, 52,150, +219,109,203,190,115,228,162, 24,252, 44,163,126, 99,120,211,181,220,110, 26,122,103, 25,230,128, 15, 97,101,133, 55,206,210, 52, + 78, 14,114, 47, 10, 6,163,107,144, 2,138,190,211, 40, 43, 35,202, 97,242, 56, 99, 48,125,131,174,113,162,177,226, 81,199, 16, +176,227, 68,177,150,216,181,130,173,172,227, 59, 84,161, 73, 65, 30,180, 82, 42,136, 94, 65,142, 34, 82,140, 81,184,252, 69,132, +152,109,223, 95, 68,116, 89, 14,244,225, 60,241,234,245, 43,246, 55, 55,124,248,241, 71, 62,254,227, 35,211, 40, 34, 28,239, 61, + 56,195,246,166,167, 55, 26,124, 68,249,196,175,254,159,127,225,171,127,249, 45,100,197,195,195, 15,152,226,113,186,231, 60,102, +254,207,159,255,193,121,158,249,143,127,250, 21,157,211,188,255,249,192,236, 61,231,227,200,211, 97, 98,180,142,155,182,197, 32, +152, 99, 74,198, 23,120, 30,207, 12, 37,115,179,223,211, 53,142,155,190,163,235, 59,186,155, 45,183, 95,189, 69, 57,139,174, 36, +188, 85, 76,182,176,190,235,119,102,174, 4,102,215,202,240, 53,191,124,237,150,115,237,104,229, 69,154,175,109, 99, 85,217,189, + 20, 13,170,228,149, 62,150,139,236,216,117,221,231,138,239,188, 92, 41,234,243,106,241, 50,168,139,207, 91,113,101,175, 91,199, + 5,117, 37,103, 46,197,194,213,232,221, 44, 99,205, 90,180,112,117,208,234,171, 81,188,254,226,192,231,154, 30,151, 43,174,243, +179, 80,151,229,255, 35,123,217, 5, 18,179, 22, 32, 21, 86,130,174, 62,243, 58, 9, 89,127,135,101,138,176, 92,235, 10,232,145, +221,186,252,115, 74,153,152, 36, 46,151,162,153, 78, 19,211,232,229,154, 70,152, 83, 38, 6,133,209, 86,196,196,177, 48,197,137, +227,243,153, 97, 22, 4,118, 72,226,114,113, 90, 64, 79,165, 84, 49, 90, 10,180, 86,175, 73,113,166, 42,183,135, 92,240, 33,163, + 92, 97,187,235,104,155, 13,190,117, 98,115,243, 51,155,126,195,126,215, 18,162, 28,196,126, 10, 12, 99,160,228,184,118,166, 11, + 17, 84,236, 80,145, 92, 22,230,135, 56, 69,180, 81,171,102, 80,107, 77, 81,145,148, 99, 13,223,146,162, 58,229,136,115, 26,231, + 58,206, 67, 96, 10,153,152, 75,221,133,215,235,167, 76, 37, 59, 10, 93,206,104, 8, 73,118,197, 40,133, 85, 6, 82, 77,179, 91, +100,156,229,106,114, 84, 15,241,188,116,192,106,217, 41,139,118, 70,146,211,140,184,132,170, 91,198,123, 89,113, 25,101, 46, 19, +167,165,179, 54,124,230,102,200,213, 34, 92,116,221,211,107,161, 28,150, 34, 49,185,101, 65, 0,107,181,118,199,139, 46,163,148, +194,114,186,169,154,214, 22, 43,204, 71,160, 54,130,245,174, 87, 4,148, 98,152, 38,252,228,113,206,162,244,188,238,223,231,217, + 95, 10, 23,181, 80, 60, 77, 13,166, 41, 92, 30,131, 34,162, 89, 29,170,198,198, 92,198,255,149,173, 96,141, 49,248, 20,133, 68, +211, 56,140, 53, 88,109,152,206,103,124,140,180,109, 75,211,182, 60,249,153,152, 34,218, 58,148,134,190,237, 68, 66, 31,103, 92, +183,147,208,249,148,215,139,152,151, 67, 94, 38, 59,210,189, 87, 1,214, 60,143,140, 65,168, 68, 74,107,230, 42,152,218,237,182, +220,236, 55,228, 16, 57,158,206,228, 58, 2,153,115,194,199,192,171,246,166, 90,128,192,182,134, 86, 89, 30,198, 19,227, 52, 51, +132,137,219,237, 13, 78,105,162, 82,228, 70,170, 44,179,136,101, 76, 77,215,169, 10,106, 29, 18, 54, 68,218, 78, 70,158, 74,103, +230,113, 38, 76, 1,181,177,164, 57, 99, 90,177,157, 5,239, 73, 41,243,203,223,254,134,151, 95,189,225,225,225, 19,195,233, 76, +187,233, 57, 60, 63,131,209,188,252,234, 45,227,249,204,233,120,148, 93,178, 51,108,182, 59,142, 63,191,199,181, 14,221, 26,230, + 97,196, 53,150,225, 44,121,227,148,140, 50,146, 88,119,179,219, 44, 51, 29,116,227,120,120, 62, 75,133, 91,227,254,124, 74,132, + 34, 15,154, 45, 16, 84,230, 28, 34, 89,203,161,231,140,193, 58, 75,131, 34,121, 79,171, 21, 42,122, 62,156,102, 30, 78, 19,222, + 24, 48, 6,156, 64, 32,226,146, 51,140,136, 46,182,109,195,109,223,112,211, 57, 26, 5,167, 57, 48,121,177, 56,222,110, 55,220, +246, 13, 47,110, 54,140, 83, 96,242,115,189,145,132, 88,215, 53,149, 17,157,146, 20,125,117,204,151,234, 67, 57,199, 72,163, 11, + 59,235, 24, 18, 76,231, 1,130,167,119,150,174,113, 40,107, 68, 24,162, 68, 25, 31,125,164,219,239,105,250,142, 16, 68,215, 96, +140,150,104,212, 50,210,117, 45, 93,223,209,244,160, 85,170, 93,122, 32,167,130,113, 78,244, 30, 70, 58, 92, 91, 52,167,227,129, +243,233,204,221,221, 45, 55,183,183,140,227,145, 79, 63,252,196, 92,163, 87, 99, 12, 76,163,231,197, 47,238,233,157,193, 36,121, + 1,126,243,235,239,248,246, 95,126,131,234, 29, 15,127,255, 27,211,112, 98,171, 27,194,164,248,227, 31,223,241,241,112,224,247, +223,125,199,139,109,195,135, 79, 31,240,179,103, 30, 60, 31, 31,207, 60,231,194,139,237, 70,160, 20,243, 68,142,129, 80, 10,199, +113, 98,206,137,205,182,167,107, 44,183,109,203,190,237,104,247, 27,238,191,126, 75,187,237, 41,198,226,156, 36, 39, 10, 34, 84, +215,148, 16, 93, 97, 51,162,200, 49,230,243,160, 19, 85, 71,125, 57,151, 53, 56,178, 32, 41, 83, 75, 94,247,117,246,184, 86,234, +202,234,163,170,173, 40,215,241,232, 98,245, 42,171,255,182,168,242, 89, 30,251,170,160,175,220,229,114,213, 17,171,171, 28,115, + 73,219, 42,107,145, 33, 7, 69, 89, 59,250,117,191, 89,223, 27,234, 58,172,229,139, 46,253,218, 31, 95, 86, 68,238, 10,165,254, +175,187,249,122,167, 47,197,193,197, 32,183,120,228,213,138, 16,189,230,135, 45,236,245,148,243, 26,165,153,243,197, 18, 23, 66, +224,124,158,106,106,163,208,131,134,115,228, 56, 77,244, 93, 67,138,134, 33, 72, 58,157,213, 14,101,138,208, 6,143, 19,211, 20, +136,232,154,197, 32,244, 64, 87,147,240, 66,242, 76, 33, 97, 74, 38,105, 89, 59, 10,165, 81, 62,199, 24,164, 48,118,155,134, 55, +111,247,148,226,120,126, 40,196, 57,200, 20,172,130,195, 10,137, 68,162,107, 12,109,179, 33,134, 76,137, 81,202, 23,163,234,250, +160, 58, 18,148, 19,175,115, 78,108,155, 77,197, 46, 11,221, 50,101,177,165,181,141,193, 24, 86,245,123,206,114,109,172, 86,236, +122,139, 82,145,121,142,196, 80, 97, 46,139, 26, 60, 37,166,178, 4,250, 20, 12,121, 61, 11, 22, 39,130,143, 82, 60,234, 42,158, +212,255, 85,225, 22, 43, 42,213,152,170, 95,168, 69, 71, 35, 90, 25, 73,104, 52,213,106, 38,135,165,209,245,153, 72,101,157, 42, +173, 58,146, 43,103, 4,250, 66,165,148, 60,247, 72, 99, 36,229,241,178,194, 41, 23,110,124, 45,134, 47, 19,170,178, 18, 45, 37, + 76, 38,201, 36,100, 33, 56,214,201,208, 48, 14,132,224,177,214,213,226, 89,227,140, 35,228, 89,214,177, 37, 87,232,151,128,191, +242, 74,239, 83,117,165, 33,215,200, 26,197, 92,106,138, 96,141, 29, 23, 80, 87,194,106,173, 41, 41,209,239,182,184,166,197, 88, + 71, 46,153,243,243, 19, 93, 99,217,238,246,104, 13,126,242, 43, 4,223,185,134,166,109,241,231, 51, 41, 4, 54,206,145,189,228, +150, 47, 0, 62,129, 98, 20,138,169, 59,219,133, 73,173, 18,211,232, 5, 63,139,169, 8,207, 72,215,119,220,237,111,217,246, 91, +126,126,126,199,199, 15, 15, 88,215, 97,173,229, 52,141, 24,103,171,229, 32,163,234, 52, 33,169,196,225,120,100,244, 51, 57, 21, +110,154, 45,179,247, 50,234, 82, 66, 4,114,213,218, 82,140, 97,158,102, 98,169,177,239, 94, 14,245,205,155, 29,155,205,134, 50, + 39,230, 65, 70, 35, 86,201, 40,223,105, 67, 10,158,225,116,230,118,219,243,251,127,251,119,198,113,226,241,211, 39, 92, 43, 99, + 30,159,103,190,254,197,215,216,198,240,199,255,241, 87,118, 55, 59,162,133,221,237, 14, 85,224,249,249,137, 87,111, 94, 49, 13, + 35, 77, 91, 39, 30,179,176,207, 69, 40,162,232,187,142,205,190,193,251,200,214, 24,158, 14, 3, 31,143,103,246,141, 65,149, 32, +106,215,172, 8, 89, 70,183, 27,215,240, 49, 12,132,130,120, 79,251, 22, 5, 56,173, 40,115,194,212,206,229,233, 60,242, 52, 6, +134, 92,200, 74,240,130, 1,152,150, 24, 39, 68,136,178,237, 29, 55,125,203, 77,231,232, 21,146, 1, 30, 18,202, 88, 54, 78,179, +233, 44, 55,251, 13, 73,139,216, 67, 56, 31,242, 64,110,187,134,206, 26, 66, 85,193, 75, 46,178, 8,224, 74, 78,204,100,178,178, +132, 92, 80, 77,102,219, 52,132, 32, 20,183, 18,165,250, 54,206,225,115,160,168, 66,215,117,204, 62, 80, 30,159, 69, 24,185,109, +241, 99, 22,224,132,177,100, 2,126,152,136, 49,209,134, 88,211,145, 36,167,187,115, 45,109,219, 92,220, 28,192,233,240,192,227, +227, 51,247, 47, 94,176,187,217,145,203,204,143,127,255,129,211,243, 72,240,129, 16, 61,167,243,137,205,126, 71,191,223,225, 74, + 68,249,153,215,223,252,130,111,126,255,207, 52, 47,111,120,124,255, 35,199,159,255, 78,223,221, 64,182,252,229,207, 63,243,151, +127,124,228, 55,223,127,203,119,111, 94,243,241,195, 63, 24,199, 51,209, 39, 62,124, 60,242,241, 60,176,125,243,154,166,239,201, +195, 64,154,103, 98,144,151,253, 41,120,186,109,199,118,179,225,166,113,220,117, 61,125,219,115,247,246, 53,253,171, 91,148,178, + 88,103,185, 62,103, 74,197, 97,195,235,232, 0, 0, 32, 0, 73, 68, 65, 84,174,170,122, 0, 21, 36,201, 76,192,127, 53, 3,125, + 1,195, 22,214,170,126, 25, 67, 94, 40,107,159,239,156, 21,185,230,139, 95,186,253,154,117, 71, 41,177,198,175,150,171,206, 62, + 85, 64,124, 29,123, 87,207,123,169,158,166,178,144,220, 86,156,235, 66,124,215,178, 54,208, 50,134, 92,186,232,203,207,205,151, +128,165,181,203, 95,226, 68,213,103, 80,143,197, 46,180, 22, 39, 75,210, 92, 41,168,156,191,208, 26,212, 86,179,200,125,169,149, + 94,255,167,235, 2, 32,199, 92, 15, 19, 46,222,227, 42,112,202,215, 74,247,148, 43, 40, 43, 49,142, 51,143,199, 3,113,154,113, +165,131, 40, 48,152,193, 11, 81,108, 78, 6, 63,201,231,105, 90,136, 54, 51, 28,207, 60, 61,141, 76,115, 33, 42, 17,141,181, 54, +211,219, 14,149, 4,107,154,149,102,170,174, 2,170,247,221, 44, 89,221, 90,198,200, 78,103,154, 94,225,122, 67,215,111, 56, 30, + 38,114, 42, 56,173,192, 90,180, 83, 20, 18, 77,239,216,219, 14,157,162,232, 95,146,162, 4,153,142,105,171,209, 86, 99, 0,149, +196, 54, 59,141, 65,120, 32,149, 21,162,180,198,234,194, 48,123,124, 12,116, 78,227,118,134,211,144,136,161, 50, 54,178, 34,230, +130, 81,153,174,209, 24, 44, 67,213, 45, 21, 45,148,185, 92, 20, 37,235,122, 53, 23, 33, 93,169, 97, 79,134, 82,237,176,242, 29, +101, 82, 73, 4, 42,205,114,225,247,167,116, 57,184,202,149, 83, 2, 9, 57, 9,117,181, 71, 91, 5,102,169,198,218, 86,132,194, +114,160,155,170,177,162,210,238, 84,174,252, 2, 93,160,142,203,151, 48, 25,204,213,228,233, 11, 76,241,106,237,172,227,253, 21, + 91,189,214, 9,178, 74,146, 4,181, 84,157, 17,153,146, 12,227,121,230,254,190,114, 39, 50,107,116,116,136, 81, 82, 25,175, 50, + 43,150,160,159, 11,200,102,161, 9,203,223,149,150,176,151,133,194, 39,118,238, 74,213,177, 22,107, 44, 78, 91, 66,140, 28,159, + 78,180,219, 61,221,174,199, 36, 37, 25,233, 40,108,105,217,238,118, 56, 11, 67,244, 53, 39,184, 37, 12, 99,213,238,203,195,160, + 82, 18, 59, 3,181,211,168,244,175, 66, 38,204, 34, 70,192, 20,156,178,248, 18,216,246, 13, 47,110,247,180,214,242,233,211, 51, +227,232,217,238,111,160, 88, 82, 76,244,157, 3, 10,222,103,116,107,209, 93,195,248,240,204,211,243,153,152, 10,173,115,184, 78, +243,241,228, 9, 21,138, 80,249, 69,104, 35,127, 54, 68, 47,213, 86, 72,152, 84,176,253,134,126,191, 1, 35,208,129, 97, 26,112, +110, 87,211,164,100,132,236,135, 51, 83,240,252,247,255,248, 15,186,219,150,247,255,235,175, 56, 35, 29,188, 15,129,205,203, 91, + 54,247,183,252,240,255,254,129,167,159, 31,184,185,191, 37,148,196,253,221, 45,211,249, 8, 5,182,187, 61,239,126,122,135,113, +154,243,233, 44,170, 98, 50,198, 90, 26,109,120,177,237, 9, 81,170,102,111, 28,239,159, 14,180, 70, 66, 73, 82,242,132,172,200, +218,225,125, 68, 27,203, 92, 34,199,144,177,214,177,217,238,106, 32, 68,161, 9,137,152, 50, 46, 71, 82, 12,156,198,153, 83,128, +164, 46, 99,247, 80, 33, 18, 66, 12, 51, 52, 78,104,113,251,206,208, 59, 81,214,207, 49,161,173,193, 89, 25,171,223,110,123,246, +109,195,207, 79,207, 43,113, 76,107,197,118,211,178,219, 84,103,132,247, 24, 91, 32,101, 98,181,253,104,163,100,165, 49, 7,156, +177,140, 49, 98, 20,236,108,207, 20,138,196,233,150,140,201,133, 70,195,243,225,128,159, 54,108, 55, 91,162, 77,184, 67, 32,148, + 13, 93,219,225, 82,166,215, 13,222, 57,166, 16, 24,102, 81,233, 6, 63, 49,140,103, 92,219,242,242,229, 75,118, 86,145, 82, 64, + 41,205, 56,142, 28, 30, 31,217,108,183,108,239,246,224, 12,159,126,120,199,233,221,179, 32, 51, 99,224, 60, 14,100,165,216,220, +108,105, 82, 68,197,153,155,251, 59,190,251,237,239,216,191,125,195,249,124,226,240,227,123, 54,205,142, 70, 59,254,252,215, 71, +254,247, 95,126,224,171,111, 94,243,155,111,190,225,240,248, 19,199,113,160,132,204,207, 31,158,248,243,199,103, 94,190,124,201, +205,118, 39, 52,192,148,152,194,204, 56,141,204,179,199,117, 29,221,110, 67,223, 53,220,111, 58,186, 78,115,243,213, 61,251,175, + 95,161,138,193, 52, 6,101,234, 75,161, 84,122,156,170,228,185, 82, 36, 58, 83, 93, 29,172, 44,233,108,249, 51, 75, 88,206,161, +130, 41,212,170,120,191,238,120,129,213, 46,181, 76,214, 86,203, 91,201, 43, 91, 66,246,244,245, 80,205, 43, 75,109,197,173,126, + 54, 10, 95,237, 61,250, 42,225, 77,132, 81,230,202, 59,191,252,251,235,207, 84,234,219,234,203,207,184,160, 62,175, 61,234, 75, + 55, 95,114, 89, 85,199,169, 58, 70,168, 22, 40, 83, 87, 13, 42, 47, 65,229,212,107,180, 56, 5,170, 24,112, 41, 10,116,181,182, +229,140, 41,170,134,204,200,138, 80,254,172, 34, 5, 79,142,129, 97, 28,249,244, 60, 48,120,143,203, 22,173, 69, 68, 60,165,132, +193,144,189, 97,244, 19, 69, 65,219, 26,114, 9, 76,135,196,115,237,208,151,220,140,214, 90, 58, 43,156,239, 18,234, 90, 44,165, + 74,150, 44,168,162,105,157,163, 49, 48,123, 89, 47, 24,171,232,173,133,141,194,110, 90,166, 41, 49,123,143,115,160,235,115,219, +119,150,182,179,116,198, 49,250,192,243,156, 80, 69, 52, 75,110, 39,221,232,138, 65, 45,224, 71,143,174,245, 80,107,165, 27, 23, +126,137,162,168, 74, 9,180, 50, 29,138, 17, 58, 43,233,108, 7, 34,177, 10,233, 98,150, 34, 78, 91,203,198, 88,188,175,160, 50, +196, 45,164,146, 76,132,138,210,194,195,168,241,181, 74, 41,178,161, 66,182,164, 11,182, 85,245, 96,209, 43,202, 57,231,130, 53, +142, 82,253,233,130,202, 13, 40, 29,209,122, 67,244,161, 54, 27, 11,215, 72, 87, 81,109, 13, 57, 82,151, 80, 27,148,144, 50,173, +173,110,137, 2, 77,114, 53, 36,166,173, 63, 91,124,241,202, 40,168, 43, 79,205, 18, 81,171,214, 17,188,224,141,101,210,100,140, + 20,161, 49,139, 5,207, 45, 49,170, 81,175,144, 33,171, 45,227, 56,241,226,245, 93,197, 56, 71,168,171,211, 24, 2,169, 68,172, +234, 42,138, 93, 24, 20, 90, 11,185,243, 18, 40, 36,172,150,178,164, 48,166,130,210,117,202,150,192,230, 4, 69,107,154, 74,172, + 82,214, 18,207, 3,227,233,196,237,171, 87,116,109, 39,226,140, 26,142, 18,139,116,213, 18, 53, 23, 43, 1, 78, 58,115,117,245, + 16,134, 5, 23,155, 5, 32,144,115,161,169, 21,208, 60,207,148,172, 80, 74,224, 0, 57, 38,238, 94,190,224,246,126,207, 60,143, + 60, 62,200, 72,187,105, 44, 99, 24,137,177,208, 59, 71,136,129, 57,102, 54, 93,131, 10,137,199,227,145,144, 4,220,226, 76, 67, + 8,129,113, 26,235,107, 78, 4, 6,165, 20,180,211,248, 36,106,209, 82,164,224,208, 10,186,190,163,117, 13,164,194, 60, 77, 16, + 21,110,107, 9,200, 11, 76, 27,205, 56, 79,188,126,253,150,127,254,215,223,243,211, 95,126,224, 56, 13,188,126,243,150,135,247, +159, 48,219,142, 23, 95,189,229,227,167, 79,124,252,219,143,149,210,165,192, 42,118, 55, 59,198,231, 39,186,253, 6,159, 3, 57, + 68,252, 60,115, 30,230,202,144,150,100,164,190,181,244,155,158, 33, 6,246, 70,196,113, 79,167,145, 23,219, 14, 75,198, 71, 72, +218, 16,146,248, 65, 59,167,121,246, 1, 99, 20,237,166, 5,163, 40, 33,210,166, 68, 72, 9,147, 51, 42,195, 48,100,142, 51, 36, + 91, 83,224,172,150,145,123, 89,110, 0, 67,231, 44,183,155, 13,251,198,208, 89,199, 24, 10, 99,140, 82, 80, 56,139, 51,134,182, +177,108,186,142,231,211,153, 16, 18, 89, 9, 34,183,107, 27,110,119,123,137, 19, 13, 9,107,245,186, 63, 43, 89, 16,156, 56,133, + 51, 98,221, 72, 68, 20,142,105, 72,168, 94, 0, 17, 22,137,109, 77, 9, 92,223,224,148,101, 26, 71,230, 16,176, 93,195, 93,219, + 17,203,192,172, 3,126,179, 37,234,204, 94, 53, 40,163, 25,231,204, 49,121, 26,219,176,233, 27,162, 74, 60, 63, 30,201, 58,242, +242,238,158, 48, 6,158, 30, 78,184,182,229,230,118,143,177,138,211,211, 3, 31,126,248,153, 24, 18, 37, 68,230, 97,102,156, 2, +119, 47,110,233,108, 65,249,137,253,205,150,175,126,251,107,182,223,190, 36,251,137,135,191,252, 13, 99, 21, 54, 21,254,254,241, +129,255,252,235,123,110,111,182,252,203, 47,223,114, 58,126,228,249,249, 9, 19, 34,239,159,207,252,233,253, 39,218,221, 13,175, + 94,222, 19,226, 36, 69,232, 60, 49, 79,158,147, 15,148,198,176,219,245,244,206,113,219,117,116,155,158,253,235, 59,238,126,249, + 21,166, 40, 76,107,192, 44, 99,103,189,122,188, 65,232,112, 75, 14,117,201,106,213,163,203, 24, 93,198,124, 50, 78,189, 40,122, +151,238,242, 90, 56,183, 88,217,114,142,245, 80, 83, 87,182,182, 10,156,201,151, 0,140,101,160,190,122,194, 21,159, 41,192,175, +199,225, 95,114,219,115, 73, 43, 78,228,203,255,255,117, 68,229,245, 33,190, 28,248, 11,240,101,241,164, 47,118,180,146,178,136, +162,106,192,197, 26,216,147,101,220, 76, 29,203, 94,147,229,150,117,194,186,221, 44,153,172,193,164,234,227, 55, 18,154,162,114, + 65,101,177, 66,230, 34, 93,115,201,137, 28, 43,120,101,158, 57,156, 70, 62, 62, 14, 36, 10, 91,235, 48,198, 49,101,152, 19,164, + 40, 20,185,162,103, 26,167,105, 90,225, 11,248, 33,114, 28, 6,252, 24, 48, 42, 99,141,195, 57,135,179,138,146, 98,205, 69,207, +235,228,178,113, 14,147, 35,206,213,248,234,117,252, 34,123,219,162, 5,142, 69, 76,232, 48, 11, 18,219, 24,116,105,113,173,102, +211,239, 48, 58, 51,134,200, 48, 7, 54,214,209,244, 13,198, 72, 82, 99,206,162,167, 17,102,129,102,152,211, 10, 42,178,110, 41, +172,162,140,162,139,164,119,222, 52,142,251,190,225, 48,141,124, 26, 35, 99,144,107,216, 53,154,201, 7, 66,150,140,115, 82,146, +162,197,153, 10,181, 41, 24,147,208, 90,182,207, 69, 9, 79, 34,198,171,200,239,196,186,167, 95,160, 71, 49, 70,138,190,144,220, + 84,109,185,173, 85,149,209, 80,149,223, 90,184, 42,167, 97,252, 66, 10, 89, 87, 80, 70, 60,225,164, 37, 69, 45, 65, 54,164, 10, +184, 81, 8, 30, 89, 41,133,213, 22,171,228,126,201, 41, 99,108, 35, 81,223,115,141,125, 94,146,230, 22,205,104, 94,248, 43, 53, + 33,174, 78, 41,163, 18,177,156,179, 92,162,116, 43, 34, 29, 5,195,233,180, 82, 31, 5,212,132, 92,147,202, 30,112, 27, 39, 22, +103, 83,115,217,131,208,231,204, 26, 75, 43,150,110,169,204,235, 53, 51,122,101, 77, 89,165, 20,141, 49,180, 93, 43, 66, 57,163, +249,244,124, 98,156,103, 94, 54,142,182, 19,222,246,249,124, 38,214,199,211, 54, 13, 5,136, 62,160, 26,135, 6, 98,244, 43,114, + 49,171, 43,201,237,146,215, 43,240, 92, 84, 44, 12,243, 44,129, 0,232,122,176, 43, 94,220,236,185,185,217,242,240,238, 35,159, + 62, 60,136,151, 79, 43,158, 83,160,111, 45,206, 88,124, 12,160, 53,206, 9, 34,245,116, 58,203, 78,176, 10, 11, 78,167, 51, 62, +214,248,192,172, 4, 70, 34,203, 40,230, 41,172,216, 88,157, 21, 6,104, 55, 45,198,105, 82, 12,156,171,213, 75, 91, 43,144, 29, + 39, 95, 66, 76,133,127,250,215,127, 38,248,153,247,127,249,129,151,223,125, 77,240,145,201, 79,124,245,253, 55, 40,171,249,240, +215,191, 19,206,103,186,237,134,108,161,105,165,186, 30, 78, 39,250,215, 47, 24,207, 3,186,192,227,195,137, 57,200,196,195, 24, + 75,163, 69, 71, 16, 74, 70,151,204, 84,224,253,195, 51,206, 53, 24, 32,134,128,207,138, 98,140, 8, 99,140,101,200,145,168,197, + 62,166,141,102,154, 71, 92,184, 68, 8, 10, 36,164,112, 24, 61,147,220, 57, 18, 79,168, 36,229,169, 40, 69, 65,211, 91,195,205, +182,227,182,179,180,206,212,168,218, 76,111, 45,214,181,104,163,232, 26,203,221,126,199,113, 56, 75,138,153, 18, 34, 96,219, 54, +236,182, 27, 17,108,216,130,211, 70,190,243, 5, 40,163, 53,217, 25, 70,239, 41, 37,179,233, 90,169,212,115, 17,252,238, 52,163, +141,199, 26,197,206, 25,134,232, 57,143, 69,190,103, 20, 37,102,230,195,192,167,198,115,179,217,160, 76, 96,154, 38,230,121, 67, +222,111,177, 78,163, 98, 97,156, 61, 7,165,185,189,217,179,237, 55,140,243,192,227,211,137,121,136,232, 10, 24, 82, 27,199,241, +124, 36,122,207,207,127,255,137, 48,120, 98, 40, 76,179,231,233,112,100,179,235,233,123,135, 33,177,239, 91,190,250,245, 47,185, +251,238, 23, 52,214,240,225,135,191,131, 31,216,180,123, 62, 62, 30,249,223,127,124,135,235, 12,255,254,171, 95, 97, 98,226,227, +227, 71, 84,142, 28, 15, 35,127,248,251, 7,138,182,188,125,125, 47,194, 41,165,137,227,200,241,120,100,152,103,138,133,254,102, +203,166,107,184,239, 58,246, 93,195,238,118,207,139, 95,127,143,117,173, 56, 68,244,130,165, 52, 85,212,150, 46, 99,194, 74,132, + 19,209,210,101,159,157, 75, 94, 73,109,186,142,105,203, 21,231,125,185, 47, 46, 7,122, 90, 69, 71,168, 58, 10,173,182,152,149, +224,182,100,150, 43,209,186, 92,236, 64,229, 50,166, 87, 95,218,204,248,172,235, 47, 69,246,232,215, 7,247,114, 8,127, 38,118, +227,243, 61,191, 76, 16,210,103, 69,194, 37, 95,188,142,223,209, 87, 17,177,245, 64,202,233, 18, 90,179, 20, 10, 90, 14, 11, 85, +150, 21, 77, 21, 71,229,203,212, 80,166, 21,117, 50, 66, 70, 23, 72, 37, 17,163,176, 22,102,239,193, 39,166,105,226,105,152,248, +244, 52,161,140,102,223,117, 96, 28, 9,240,163,172, 26, 99,140,132,156,104,218, 22,215, 88,148, 42, 2, 95, 58,205,204, 62,208, + 88, 48,166,193, 53,182, 82, 41, 35,202, 74,136, 86,200,194,210,112,117, 29,106,179,166,132,132, 82,137,148, 53,169, 68, 40, 70, + 24,247, 69, 24,233,157,177,116,206,161, 82,213, 11,145, 48, 78, 65,137, 76,115, 34,149,196,102,211,209, 55,173,128, 90, 82, 21, +183,214, 9, 75, 44, 50,205,136,126,233,104, 51,202, 84, 11, 40, 17,165, 44, 57, 73, 81,161, 44,152, 77,195,222,101,148,110, 56, +142,158,199,243,140,247,129,146, 5,154,147, 64, 26,167, 44, 64,168,198,170, 26,103,123,161,205, 81,144,102, 75, 21,138,214, 56, + 93, 69,114, 57,175,187,233, 82,105,122,170, 90,225, 74, 22,123,172, 64,167, 76, 29, 10, 21,193,240,106,141,181, 2, 38,203, 69, + 34,118,149, 54,178,234,201,162,131, 48, 90,163, 84,148,245, 81,182,235, 94, 61, 23, 73,121,203, 85,160,166,149,184,144, 40, 50, + 49,201, 37,136,109,206,167,122,134, 45, 88,220,106,245,252,114, 44,191,116,210, 69,173, 63, 95,105,181, 90, 75,151,168,239, 88, +139,125,107, 52,126, 25,153, 59, 75,136,146,216,182,144,108,180, 17,157, 66, 81, 21, 48, 87,215,108, 5, 69,209, 90, 0,102, 37, + 93,116, 98, 85,195, 96,181, 54,130, 50,108,220, 26,246, 62,143,103,114, 72,236,110,247,184,214, 81,162,188, 84, 23,235,131,235, + 28, 37, 21,166,243, 72,223,119, 43,133,109,177,169,196,156,185,138,175,149,138,105,217,127, 77, 1,159, 51,177,128,171,187, 63, +215, 91, 94,222,223,210,184,142, 15, 31,159,152,231,129,253,221, 29,115,206,210, 41,223,190,192,106,195, 41, 78,180,219, 22, 99, + 20,167, 39, 73,183,201,249,178, 63, 28, 43,122, 83, 21, 41, 24, 4,242, 45, 9, 69, 41, 37,116, 46,232, 36, 15,119,179,105,104, +183, 50,133, 8, 49, 50, 12,158,126,187,161, 44, 83, 9, 37,187,182,215,223,126,205,235, 95,252,130, 31,255,207, 31,200,186,112, +247,250,158,191,252,159, 63,115,115,123,203,221,155, 87,188,123,120,224,253,187, 15,216, 74, 13,202, 70,177,237, 58,134,227,145, +168, 52,251,221,142, 79,159, 62, 17,124,226,124,158,106, 60,158, 40, 43, 55,189, 99,187,113,204, 49,210, 91,197,251,135, 51,126, + 14,236,119, 27, 98,242, 34, 68,180, 13,161,200,168, 84, 59, 67, 36, 98,156, 67,107,141,159, 2, 49, 76, 52, 90,136, 90,130, 94, +202, 28,166,153,195,236,209,155, 78,138, 20,228, 48,205,213, 59,218,106,195,237, 70, 14,150,109,227,240, 49, 16,124,160,113, 45, +109,227, 36,129, 78, 43,110, 54, 61, 62,132,122, 56,151,170,188,212,236, 55, 61,187,190,147,170,115,246,104, 99, 49,117,125, 35, + 73, 79, 34,102,113,147,103, 58, 31,177, 74,225,218,150, 92,121, 4,195, 48,161,157, 32, 98, 91,157,112,206, 18,114,100, 28, 2, +157,117, 40, 20,141,210, 60,159, 7,108,206,244,155,142, 84,224,195, 56,113, 62, 79,220,221,110,105,116,198, 42,131,143,145, 79, +143, 15, 4,191,165,221,108, 8, 99,224,221,135,159,185,187,217,243,242,245, 45,218,128,159, 70, 62,254,249, 61,243,224, 81, 25, +230,121,230,116, 62, 81, 52,244,125,139,203,153,214,105, 94,127,255, 13,111,126,245, 29,183,219,142,199,247,239, 24,158,159,232, +157, 99, 24, 51,255,249,183, 7, 98, 8,252,235,111,190,167,183,134, 31,255,241, 19, 41,100,124, 44,252,231, 63,222, 51,250,204, + 47,190,125,139, 89,196, 59, 89,241,244,248,200, 56,121,130,134,102,211,209,181, 45,155,166, 97,215,181,244, 77,195,139, 95,126, + 69,211,183,148,162, 49, 85,220,116, 57,228,190,204, 6,191,136, 80,175, 92, 69,162, 2,174, 24, 81, 85,243, 16, 36,246,118,113, +165, 95,186,221,203,168,187,102, 99,231, 64,138,185,238,190,175,132,108,229,194, 68,207,165,134,100,214, 72,213,107, 45, 89, 81, +151,159,125,193,103,202,231, 48,122,157,131,126,246,226,251, 18,245,122, 61,134,191,238,224,115,206, 43, 30, 83,125, 17,246, 66, +185, 88,213,114, 13,231,225,138,253, 94,174,146,180,202,154,225,125,201, 15, 79, 84,245,122,145, 2,120,117, 8, 84,150,253, 97, + 26, 25, 78, 51,243,232, 9, 57,161, 18,124, 58,159,121, 58,122,172,214,108, 58,185,151, 79,126,194,150,134, 28, 50, 62, 68,124, + 12,184,206,210, 54, 86,162,148,167,192,105,152,240, 33, 10,178, 86, 43,140, 51, 40,107, 24,253,140, 81,154,166,107, 68,123, 84, +187,207,190,179, 20, 18, 42, 20,114,182, 24,212,154,194, 39, 97, 43, 1,141,194,181, 29,155,219, 45, 22,199, 52,198, 53,248,195, + 24,225, 68,104,173,177,141,197, 26, 67,202,153, 16, 18,147, 23, 97,168, 94,176,179, 69,166, 62, 57,200,110, 86, 87,155, 27, 42, +203,225,165, 33,164,194, 57,204, 52, 57,243,244, 28, 69,159,144, 69,221,190,105, 4, 47,254,240, 52,130, 86,178, 2, 93,108,173, + 89,213,169,131,172, 79, 23,117,118,169, 8,240,152,202,122,159,164,148, 25,198,136,235,204,202,209,207,181, 57, 51, 90, 38, 0, + 37, 83, 15,112, 57,212, 83,229,208, 55,109,131,210,226, 40,160,104, 82,202, 85,180, 43,135,184, 90,119,221,250,162,181, 80,106, +197,195, 46,232,229, 80,237,114,198,168,122, 77,106, 40,152,213, 92,197, 64,174, 72, 92, 85,212,138, 66,254,220,192, 89, 86,241, +232, 34, 70, 93,138,224, 82,157, 1, 83,138, 12,231,137, 93,223,115,174, 22,209,174,109,137,209, 19,227,213,116,171, 92,160, 54, +203, 74,189,212, 3, 79, 91, 39,106,251, 36,212, 65,140,172, 62, 74,142, 88,173, 45,182,105,113, 11, 56, 36,101,252, 52,209, 24, + 77,191,221,210,108,234, 95, 22,164,243,113,219, 13,219,253,158,236, 19,243, 52,177,219,111,101,223, 94, 22,164, 98,134, 44,149, + 99, 89, 73, 82,213, 95,153,243,255,199,214,123, 52, 89,114,165,105,122,207, 81,174,174,136,136,148, 72, 36, 74,117,245,144, 51, + 70,227,112,197, 37,151,252,185, 92,112,197, 29,255, 0,185,160, 53, 73,227, 76,119, 21,128, 66, 66,164, 8,117,165,139,163,184, +248,142,251,189, 89,213,101, 6, 51, 88, 33, 51, 50,242,134,251, 57,159,120,223,231, 37,107,203,228, 3, 49, 39, 26, 99, 80, 41, + 81, 53, 53,175, 95,190, 68, 1, 31,239, 31,201, 74,209, 84,142,253, 48, 98,146,230,102,181,230,216,159,137, 64,237, 28, 41,193, +208, 15,248, 24, 11,118, 48, 19,147, 39,204,187,112,145, 83, 72, 55, 98,192, 39,193,215,170, 66, 21, 66, 41, 86,171,142,170,114, + 24, 3,199,125, 79, 8, 30, 85, 85,101, 87, 34,150,134,238,102,197,187,223,125,199,225,233,153,143, 63,253,194,239,255,248, 7, +166,209,147, 83,100,253,226,142, 41, 78,236,190, 60,138,170,221, 26,180, 19, 88, 72, 85, 55,140, 79,247,116,183,107,233, 78,125, +224,233,120, 98,154,124, 97, 82, 27,172, 85,108, 86,205,114,128,142, 83,226,233,233, 68,219,200, 58,195,135, 68, 86,146,247,236, + 99,177, 20,105,217, 21,233,172, 56,143, 19,126, 24,233,172, 17, 14,126,241, 44,134,201,243,124, 26,136, 86,212,240,179,152, 34, +148, 7,188,178,154,219,174, 97,219,212,116, 78, 51,250,200, 52,121,234,186,162,170,157,216, 64, 20,172,186, 6,227, 28,187,231, +231, 43,129, 85,164,174, 43,154,166,194, 58, 35,120, 72,107,241, 62,200,223, 73,107, 54,221,134,213, 77,199,249,116,198, 57,199, +202, 9,109, 47,165,132,177,134, 42, 59,134,113,226,112,244,108,214,154,172, 34, 58, 37, 26, 39, 25,201, 99, 16,219, 77,101, 44, +173, 54,156,250,129,202, 26,172,213,152,144,120,252, 50,114, 56, 29,184, 91, 55,116,109,199,182,235, 56, 12, 3,187,221,142,110, +204, 76,253,145,221,254, 64,213,173,248,118,189,101,211, 54,124,249,249, 87,206,187, 19, 74, 57, 82,142,156, 79, 7, 78,231, 51, +155,187, 45, 78, 43, 90,157,121,247,254, 29,175,254,244, 29,245,118,205,225,241,145,253,195, 61,181, 49,196, 41,242,215, 31, 62, +242,120,216,243, 31,127,247, 29,175,183, 91, 62,126,248,153,113, 28,200, 89,241,255,125,255, 27, 31,159, 78,188,127,255, 45, 77, +211,146, 73,212,198,242,249,243, 47,156,134, 51, 94, 41,170,182,101,181,106, 88, 59,199, 77,219, 80,215,150,187,223,125, 67,125, +119, 67,138,197, 66,164,175,132, 93,243,190,177,188, 59,169, 88,204,140,113,151,203,145,139,199, 59, 21,136,202,236,153,157,119, +206,203,206,189, 28,166, 95, 7,188,164,101,172,153, 75,183,175, 10,251,122,185,224, 83,153, 2,112,201,166, 6,181,136,201,174, + 59,238,185,216, 80, 75, 82, 92,121, 98,202, 37,125,233,224,191,222,165,207,249,211,249,239, 8,111, 75,108,165,214, 11,157, 50, + 95,165,202,169, 60, 35,115,243,130,236, 92,118,249,179,181, 46,166, 5,171,171, 75,177, 35, 26, 61,249,187,133, 40,233,113, 70, +131,159, 2, 57, 36, 14,167,158,253,241, 76, 24, 36, 1, 49, 42, 24,199,192, 62, 68,172,169, 88, 55, 21,144,232,199,128, 45, 90, +134, 97, 28, 25,199, 17,235, 12,206, 57, 66,136,194,116,159, 38, 6, 31,202,133, 38,190,102,149,197,118,166, 77,201, 88, 79,130, + 45,142, 83,164,233, 42, 42, 7,201,103,136, 26,159, 60,104, 83,114,187, 41,158,110,121, 70, 92, 93, 99,156, 20, 20, 49, 75,214, +185, 42, 93,171,171,237,114,145, 76,147,216, 79,167, 33, 9,115, 50,137,253, 80,207,113,161, 83,102, 44, 23,184,201,174,232,120, + 60,174, 42,148,198,148,112,206,176,110, 43, 76, 78,248, 0,202, 6,108,134, 14, 77, 93,105,180,211, 60, 61,159,217, 29,123,154, +214, 81, 57,161,232,201,207, 75,152, 38, 24, 41,244,117, 9,223,153,188,232, 31,140,150,149,133,159,147,254,148, 94, 50,219,107, + 83, 56, 13, 49,160,180,132,182, 40,165, 36,252, 42, 38,166,113, 98,213,182,139,195,130,168,240, 83, 16,229,189, 45,231, 63,178, +255,151,201,211,140, 88, 70,186,233,101,181, 20, 73,132, 34, 70,211,139,168,116,198, 74,207, 2,208,153, 83, 48,179,255, 47,118, +210,203,234, 72, 27,153, 62,207,147, 41, 83,200,118,105,193,253, 70, 72,138,243,185,231,102,123, 35, 52,215, 50,221, 52,198,202, +218, 33,197, 50, 93,184,132, 87,201, 70,159, 5,208,164,203,218,105, 46,190,243,236, 86,148,103,192, 66,116, 84, 85,181, 28, 40, +253,185,103,204,194,191,173,172, 99,236, 71,137,248,204,153,166,107,168,219,154,225,216, 75,213, 85, 85,244,253,176, 84, 38,233, + 10,229, 56, 99, 30,208,165,155, 8, 1,175,196,187,153,146,236, 31, 80,176,217,108, 88,221,221,208,143, 35,207,207, 7, 92, 85, + 99, 45, 12,211,196,170, 93,163,181, 98, 56,143, 84,141,163,210,154,211,177,231, 56, 14, 37, 89,170,136, 19,114, 34, 41, 25, 95, +173,156, 99, 26,197, 34, 17,202, 15, 71,130, 14,228,165,110, 43,197,170,173,177,214, 50,134,192,241,121, 15,181,195,214,149, 20, + 30, 49, 96,215, 45,111,127,247, 29, 42,103, 30, 63,221, 83, 25,205,139,215,111,120,126,254,194,234,102,131,169, 29,211,121,100, +255,248, 76, 72, 9, 29, 13,174,170,176,181,133, 56,145,124,160, 94, 53,140,125, 79,156, 2,199,195,137,144,226,146,176,211, 85, + 21,235,174,198, 7,121, 65, 62, 61,157, 73,113,164,105,215, 4,239,229, 0,176, 14,147,139, 69,162, 32, 15, 51, 48,141, 3,207, +227,196, 90,107, 26,235,176,243,161,233, 19,207,195,196,190,143,180,219, 21, 74, 91,178, 74, 76,133,176,230,140, 97,211,214,172, + 27,203,182,174,152,162,231, 56, 77,172,171, 74,130,116,180, 33,102, 69,231, 12,155,117,203,195,110,143, 47,212, 44,200, 84, 77, + 85,172, 86, 25, 31, 60, 25, 45, 47,234,204, 76,182, 90,194, 71, 90,199, 42,183, 76, 74, 86, 7,206, 57, 78,195,153,113, 24,104, +186, 90, 84,236,249,128,159,196, 54,232,201,196, 33, 80,107, 45,187, 56, 20, 67, 8,104, 37, 9,123,199,253,200,237,182,161,182, + 9, 85,103,158,119, 39,166,211,196,106, 61,242, 98,237, 89,175, 59, 30,134,145,207,187,143, 52, 78, 83, 85,142,199,253,145, 31, +254,246, 27,175,182, 27,250,135, 35,214, 56, 66,204, 12,253,192,110,183,167,238, 58, 42,107,232,116,230,205,251, 55,188,253,195, +183,172,183,183,248,241,204,195,211, 35, 54,103,180,138,252,244,241,196,143,143,207,252,249,219,111,248,238,219,119, 60,125,252, +141,211, 81, 50, 6,190,255,241,103,126,249,237,145,151,111,111, 89,223,172, 73, 25, 58,219,240,252,248,153,253,243, 51, 30, 5, +181,164,189,173,234,154,187,182,161,107, 27,182,239, 94,177,122,247, 86,144,184, 51,175,126,241,147, 95,117,194, 87,157,185,190, + 18,165, 93,239,193, 23,180,106,137,123,204,197,215,154,230,125,223,223,239,173,243,156, 36,154,151, 28,241,188, 12,215,211,162, + 10, 87, 23,131,132, 92,248,139,226, 56, 45,234,241,107,140,235,117,183, 12,106, 97,207,255,123,251,246,127,176,157, 93,143,231, +249, 26,211, 58, 7, 95,204, 17,165,186,236,186,153,109, 94,179,121, 78,125,237,211,207,170,192, 97,146, 90,210,178, 82,150, 29, +111,136,129,113,232,197, 54,100, 50,211, 24,240, 67,226,220, 15, 28,142, 61,126,140,232, 36, 23,193,144, 18, 81, 41, 92, 46,147, + 37,107, 57,140,189, 36,249,101,197,190,239, 57,143,190,124, 45, 67,152, 60, 33,228,226,230, 16,113, 84, 76, 25,157,228,242,203, +104, 92,101,208, 86,178, 49,252, 48,113, 58,120, 42,163, 89, 53,150,170,214,248, 65, 19,226, 0, 49,200,152, 53, 35, 49,196, 74, +203,106, 69, 11, 51,156, 84, 4,130,115,178, 93,217, 33,171, 50,134, 21,160,159,136,176,236,186,192,207,138,198,201, 88,200, 90, +113,126, 10, 76,202,147,117,198,228, 10,173,101, 61, 99, 77,189, 8, 23, 55, 93,205,221, 86,118,187, 83,128,144, 52, 78, 71,146, +205, 76, 41, 2, 22,189,237, 48,102,100, 55, 76,120, 63, 81,215, 78,240,222,243, 90,168,208, 5,141, 49, 84, 21,140, 99, 44,208, + 50,201, 86,159,145,197, 90, 91, 66,202,248,152,168,139, 64,108, 10,194,169,183,214, 10,101, 70,201,243, 53,141, 3, 90,223,161, + 80, 24,196, 35, 62,197,132,174, 26,201,122, 72,242, 76,207, 24,243, 60,135,187,204,239, 70,150,231, 73,165, 68,158,100, 50,164, +140, 91, 96, 50, 33,148,196,184, 57,238,248,234,157,152, 99,129, 53, 23, 10,162, 82,170,192,217,132,193, 62, 95,214,122, 86,192, +231, 76, 12,145,166,169,232,135, 17,180,188, 47, 49, 70,180,181,232, 73, 49,157,167,242,251,230, 68,185,162,128, 23, 36, 96, 9, + 34,210,104,149,100,178, 82, 58,125,157,196, 25,128, 68,211, 26,154, 70,172, 99,179,234,175, 63, 30,169,140,149, 61,187,117,236, +134,145,190,239,165, 90, 50, 22,107,106,206,254, 32,124, 91, 83,145,194,105, 25,219,229,152,200, 49,139,248, 33, 9, 2, 48, 23, + 15,179,210, 74, 96, 44,177,140, 62, 68, 98,192, 55,223,190,227,102,187,226,135,191,252,141,167,167, 71,238,238,182,244, 62,226, +167,145,151, 47, 55,248,148,232,241,188,168,165, 42, 59,159,207,197,211,151, 47,227,182,242,225,214,149,165,209, 21,147,159, 68, +184,193,101, 60, 47, 30,211, 68,229, 28,202,201, 3,213,159,206,156,134,158,237,102,139,117, 6, 63, 6,162,209,188,126,247,150, +166,105,248,248,233, 19,211,169,231,237,119,223, 65,231, 24,127,238, 49,117, 37,126,239,144,120,126,218, 83, 17, 81,218,226,154, + 6,235, 52,193, 79, 36,171, 89, 55, 43,190,236,191,112, 58, 79,156,207, 35, 74, 41,156, 54,212,214,112,187,234, 72, 81, 14,154, +126,138, 60,237, 7,154,186, 38,145, 24,189, 71,161,177,133, 85, 30,162,204,236, 99, 76,248, 24, 24,198,128,203,153,218, 25,180, +138, 24, 35, 97, 37,189,159,120, 30, 71,108,109,113,214,146,141, 28, 74,158, 44,251,251,166, 97,221, 88,214,117, 67,140,145,195, +105, 98,221,214,180, 77, 85, 24, 15,138,160,225,229,221, 29,207,253,153, 97,156,228,243,213,138,218, 89,214,221,170,160, 19, 51, +253, 48,149, 42, 84,178,205,149,213, 84, 93, 67, 85, 87,132,193, 99,146,166,173, 91,146,139,184, 54,176,190,109, 57,247, 35,251, +243,137,206, 52,160, 12,143,143, 15,197, 48,161,241, 90, 32, 28,117, 72, 84,206, 96,157, 89, 66,109, 78,126, 98,218, 79,108, 91, +199,186,110, 80, 27,197,113,240, 60,157, 18,207,167, 51,239,134, 27,172, 81,196, 67,207,176,169,233,182,183, 4, 31,249,252,249, +129,225,215, 39,106,163, 48,206, 17,130,231,233,225, 1,239, 44,109, 83,209,101,199,171,111,214,124,247,251,247,220,188,122,133, + 53,129,221,207, 95, 80,227,153, 70,175,248,219,175, 79,124,255,233,145, 63,188,121,197, 31,222,127,195,241,241,158,167,231,123, + 18,240,183, 15, 31,249,203,175, 95,184,189, 93,243, 98,187, 37,197, 72,221, 54,140,187,103, 30,239, 63, 49, 41, 77, 82,150,182, +109,168, 42,197,186,118, 52,109, 75,251, 98,195,205,183,175,196, 86,100, 10,240, 66,165,197,154,165,245,191,167, 0,159,139,228, + 36,150,182, 43,107, 26,115, 28,170,214,101,175, 92, 64, 44, 5,210,113, 13, 98,153,169,105,115, 65, 32,231,148, 46,255,126, 69, +166,154,247,127,243,168,113,158, 10, 44, 1, 39,151,168, 83, 22,116,108, 42,227,197,175,199,234,115,247,252,247,216,213,185,235, +214,165, 83,201, 87,137, 95,151, 85, 64, 46, 17,148,169, 20, 40,242,253, 46, 50,231, 60,179,133,100, 28, 60,127,173, 24, 69,237, +173,116, 81,191,147, 25,163,176,235,251,211,192,177, 31, 88, 89,133, 39,227,163, 39,250, 68,152,224, 60,156, 9, 83,198,160,105, +219,154,195, 48,200,142, 55, 38,116,202,220,180, 53,189,143,196, 0,218, 38,206, 83, 42,169,144,242,153, 76, 41,112, 28, 70,114, +176, 84, 86,194,147, 78, 83,160,177,150,202, 25,218, 70,118,237, 83,138,244,125,144, 48,145, 16, 73, 38,113,247,226,150, 85, 87, +145,189,240, 62, 68,168, 39, 23,120,206,166, 52,100, 18,190,163, 84, 37,249,223, 89,244, 64,178,145, 80,139,208, 49,169, 11, 78, + 87, 43,139,113,115,176,136,112,250,151, 6, 33,100,217,121,151, 66,202,152,138,172,142, 40, 35, 57, 20,113, 46, 0,156,140,164, +179, 86,104, 99,169, 48,196, 60,161,117, 4,101,136, 38, 16, 27,197, 86,137,150,168,239, 3, 49,106,114, 65, 99,104,155,137,147, + 34, 69,201, 49, 55, 74,212,247,166,228,136, 76,243, 20,102,153, 76,101,124, 10,132, 44, 73,105,146, 8, 44,246,223, 25,152, 19, + 66, 36, 5,177,179, 77,253,132, 49,150, 33,142,132,232,169, 59, 97,167,139, 53,124,238,118, 69,171,129,150,105,236,172,180,159, + 25,243,105, 22,156,234,242, 14,162,136, 94, 10, 88,103,236,194, 39,184,102, 42, 45,207,248, 28,220, 50,175,153,204, 37,216,101, + 94,165, 37, 53, 91,218, 18, 90, 89, 78,167, 51,193,103, 92,101, 56,159, 6, 44,138,160,133, 1, 47,107, 3, 3, 49,151,117,136, + 76, 9,172,181,178, 47,152,127, 94,101, 85, 17, 67, 17,235,169, 32, 52, 59, 25,215, 72, 55, 61,103,163,199,209,227, 54, 43,186, +213, 26,167, 53,199,254,196, 48,122, 9,114, 89,175, 48, 86, 51,244, 3,181,177,210, 69,150, 7, 91,226, 19, 37,143, 57,229,176, +168,241,212,108, 30,201,130, 14,141, 73, 30, 90,107,196, 82,117,123,187,197, 58,203,253,253, 35, 41, 5, 33,241, 12, 3, 14,197, +122,213,241,124, 62,226,172,162,117, 50,158, 24,189, 84,195, 95,129, 9,148,196,173,182,206,145,209,196,226, 50,173,141,147,177, + 83, 1,103, 8, 44,197,149,232, 78,216,239, 14, 36, 12, 77,221,200,158,122, 10,108,223,188,224,213,235,215,220,223,223, 51, 77, + 35, 83,152,184,123,253, 10, 19, 51,135,253,142,187,183,111,105,234,142, 95, 62,252, 36,163, 18,159, 49,157, 65,151,128,152,233, +124,166,219,172, 37,129,109,154,216, 31, 15,144,101,204,232,156,162,107, 45,235,174,101,156, 38, 98,204, 60, 31, 78,100, 34,181, +107, 57, 78, 3,125,206,108,172,147, 49,123,138,248, 28,201, 65,137,128, 39, 69, 66, 78,116,198,208, 24,141, 43,100,168,105,240, +156, 6,241,180,215,181, 3,147, 9, 42, 50,165, 88, 46,244,154,182, 49,172,170,138, 26,120, 56, 13,212,173,161,173,171, 2,104, + 80,120, 31,121,241,114,203,232, 35,187,211,185,120,163, 69,228,210,174, 87, 52, 78,130, 92,206,222, 19,148,146,236,225, 50, 30, +170,106, 75, 93, 57,114, 20, 27, 23,218,130,138,184,202,113,179,121, 65,189,170, 57,237, 79,108,207, 61,135,221, 14,235, 32,231, +141, 20, 22,206,161,131,194,235, 76,204,208, 79, 1,151, 21,117,109,168, 66,162, 15,145,211,144, 56,143, 19, 47,218,204,237,139, + 14,103, 44,231, 49,114,234, 71,126,249,244,153,237,186,195, 86, 86, 0, 53,250,136,117, 14, 59, 70,178,170, 72,218,161, 35,236, +158, 15,156,198,137,102,179,162,117,138,187,215, 29,111,127,247, 59,218,151, 47,193,194,233,243,103,206,251, 71, 86,166,225,211, + 46,242,151, 15,143,188,184,189,227, 63,188,255, 22, 61,236,121,122,252, 68, 38,243,225,215, 7,254,237,183,143,212, 43,203,234, +246,150,100, 12,173, 53,152, 16,248,245,225,129, 33, 64, 42,152,218,174,169,216, 84, 53, 93,221,208,108, 11, 96,166,174, 5,168, + 83,201, 40, 55,204, 21,253, 87,173,250,223, 95,232,151,231,188, 84,196, 95,193,100, 72,137,168, 40, 84, 56,233,218,116,254, 90, +141,174,174,173,224, 87, 86,177, 69,229,126,197, 97, 79,165, 72, 79, 49,125, 37,204,227, 31,246,225,169,136,207, 74, 80,203, 21, +245,237,223,181,162, 93, 89,219,230, 75,127,238, 86, 22, 8,206,149,174, 96, 9, 96, 89, 4,122, 95,235, 12,198, 81, 46, 42,231, + 76,129,245, 68,241,124,151, 17,105, 12, 73, 52, 35, 57,177,223, 15, 28, 15, 39,218,198,210,123, 69, 63, 37,226, 20, 10,132, 70, +161,163,228,140, 87, 78, 98,164,149,134, 60,101,166, 33,210,213, 53, 33, 39,238, 79, 39, 66,134, 87,166, 98,240,153, 83, 47,163, + 91,227, 12,253, 40, 34, 67, 77,166,239, 71,252, 16,113,141,166,174,157,172,171,114,226,124,238,153,166,137,164,160,209,150,174, +173,216,116, 13,171,186, 18,229,244,149, 7, 59,149, 81,117, 68,170,219,164, 34,185, 48,207, 93,229, 74, 55,174, 80,202, 22,186, + 93, 44,235, 17, 74,136,143,252,126, 66, 1, 11,165,153, 88, 38, 9,122, 41, 40, 4, 45, 82,214, 25, 46, 48, 5, 73,140,212, 74, +225, 67, 66,107,104, 42, 53, 39,170,131, 41, 1,151, 42, 45,207,162,209, 6,167,161,173, 50, 90, 85,146, 60, 86,132, 98, 2, 32, + 50,133,245, 95,186, 99,160,118, 26, 83, 86,164, 49, 73, 70,251, 76, 15, 12, 41, 19,146,228,165,163, 23, 66,145,232,118,172, 37, +167,204, 56, 9,171,205,148, 21,143, 53,134, 16, 3,125, 63,177,217, 38,108, 99,229,226, 47, 15,187,112,226,227,133,213, 94, 64, + 95,115, 51, 58,111,220,103,162,141, 82,138, 88, 38,171,186,232,172,174, 49,200, 82,124,148, 66,188,100,187,115,149,163,190,212, +219,204, 83,182,120,177, 97,102,240, 57,113, 56, 29,233,218,154, 83, 62,203, 74,193, 26,114,156,240, 65,246,251,145,132, 65, 96, +112, 30,177,233,154,162, 13, 80, 36,140,206,101, 42, 23, 72,121, 90, 2,137,172,179, 70, 58, 35, 45,156,220, 16, 38,252,232,169, +111, 27,214, 93,135, 66, 49, 14,226, 57,116, 25,234,174,129,164, 24,250,158,218, 26, 98, 14,168, 36, 22,177, 24,139, 69, 45,203, + 8, 71,151, 11,189,184,150, 37,255, 53, 4, 66,148,253,135,181,150,174,109,185,189,123,137, 82,138,207,159,238,233, 86, 43,140, + 81, 76,103, 79,215,172,192, 40,250,113,164,173, 26,180,173,217, 31,159, 24, 3,130, 67,232, 0, 0, 32, 0, 73, 68, 65, 84, 38, +137, 85, 37,171,114, 89, 23, 85,190,130,218,104,166, 40,187, 11, 99,100, 20, 59,156,134,101,231,136,181,116,117, 67,173, 13,195, +148, 56, 63,236,168, 54, 55,216,166, 42,147, 5,203,251, 63,253,142,241,116,226,233,249,137,166, 18,241,216,221,187, 55,252,250, +215,239, 57, 28,158,249,231,255,244,159, 56, 15, 3,135,221,158,228, 3, 42,131,107,106,178, 81,114, 72,132,200,230,197, 13, 83, +239, 57, 29, 7,250,211, 89, 96, 16,174,145,145,111, 87, 45, 60,231, 62, 5,158,247,103,214, 93,195,148, 34,195, 16, 48, 86, 70, +244,209, 39, 6, 47,200,200, 84,114,180, 67, 81,143,214, 78, 83,105,141,211, 21, 33, 36,206, 83,224, 24, 19,149,169,176,214, 18, +181,102, 10, 30,173, 20,155, 34,204,218, 90, 75,163, 21,207,253,128,117,150,109,237,176, 38,163,180,136,245,110, 55, 29,171, 77, +199,231, 79,247, 20,178, 9,168, 68,187, 90,139,205,198,104,129,200, 40, 69,229, 46,251, 93,109, 74, 88,206,224,113,197,175, 41, + 61,149,163,219,172,216,188, 88,137,133,111, 43,193, 63, 77,227, 56, 31,207, 84, 85,205, 52,254,138,113,134, 77, 83,115,236,123, +137,197,213,138, 49, 6, 24, 35,171,182, 99,152, 60, 57,136, 16,228,254,220,179, 27, 38, 94,220,109,232, 86, 13,168,196,225,224, +121,222,157,185,187,219, 82, 53,150,211,113, 79,231, 58,154,170, 69, 85, 22,140,102,191,219,243,240,112, 79,189,234, 88, 55, 53, +119,183, 43,190,253,221, 27,110,223,190,198, 85, 16, 14,207,156,118, 7,156,178,236, 6,205, 95,126,250,153,182,173,249,167,239, +222,162,178,231,211,151, 39,134, 62,240,241, 97,199, 15, 31,126,197,170,154,205,250, 6,235, 42, 42,107,168,156,227,243,111, 31, +101,205, 98, 52, 85,109,233,186,154,206, 86,108,219, 21,171,205,138,151,239,223,177,222,174,192,136,255, 53,167, 88,124,213, 74, +186,108, 65,173,241,143,255,187,176,172,103, 91, 12, 95,141, 1,227,178, 34, 73, 74, 70,130, 41,201, 94,254,186, 19,206,249,186, + 75,207, 11,241,237,186,253, 16, 77,140,116,237,233, 43,171,219,172, 64,191,198,181,166, 11,109,174,248,214,245,223,137,225,254, + 30, 52,115,129,227, 92, 58,164,235, 76,115, 84, 97,142, 47,191, 62, 21,192, 78,249,245,164, 5,240,113, 58,159,137, 49, 97,180, +164,105,169,146,146, 38,152,106,137,229, 76, 37,221,108,127, 60,226, 99,164,170, 20, 97,138, 76, 41,211,143,137, 16, 3,235,202, + 97,148, 3, 29, 49,217,145,179,188,155, 41,206,116, 62,153, 98, 62,245, 61,126, 12,220,221,172, 57,140,158,251,221, 1,155, 20, +218,105,188, 15, 18, 0, 5, 76,193,147,114,192,118,146,163, 17, 35, 28,207, 19,168, 68,200, 10,219,104, 94,173, 58, 42,101,208, + 38,211, 56,133, 85, 50, 86,205,186,104, 40,102, 22,127, 18, 97, 95, 42,221, 26, 42, 99,106, 7,149, 70, 69, 75, 78, 94, 56, 4, +230, 18, 21, 59,135,124,200,165,162,139,179, 65, 19, 11,167, 77, 37,153,146,250, 16,202, 26,166,100,207, 91,100, 12,109, 77,153, +174, 4,140,149,209,111,142,113, 89,210,196, 44,239,168,206,162, 57,208, 86,201, 29,144, 52,181, 83,160, 2, 49,105,114,214,196, + 40, 86,180,202,104, 66, 97, 33, 40, 20,201,136, 31, 93,105, 37,225, 89,229,162,180, 37,235,192,207,184, 94, 53,135, 11,105,116, + 73, 81, 51, 86,154, 59, 93, 62,159,148, 5, 96, 21,162,216, 14, 67,200,226,233,159, 29, 65, 69,112,103,180,250,187, 21, 22, 75, + 60, 47,153, 98, 43, 84, 37, 22, 86, 47,122,143, 57,211, 98,241,178,205,240,163, 84,214, 67,133,136, 56, 51, 16,102,251,155,112, + 19,132,191,175,205, 92,252,166,229,239,211,247, 3,111,238,110,121,140,123,201, 89,175, 44,131, 55,140,227, 68, 83,139, 24, 90, +101, 10,136, 70, 45,250,144, 37, 73, 80,205,147, 6,105,252, 42,107,203, 74,212, 57, 92,125, 81,212,122, 47,137, 85,155,170,161, +235, 90, 50,153,190, 31,202,127, 87,116,155, 13, 41, 69,198,113,164, 89,175, 36,212,161, 8, 99, 83, 17,214,204, 21,127, 74, 25, + 45,208, 28, 82, 76, 88,163, 9,197,190, 96,140, 84, 95,155,187, 91,110,238, 54, 60, 61, 60,113,255,240, 72, 93, 55, 76, 83,164, +247, 19,111,110, 54,156,251,145, 24, 2,110,189, 33,121,207,216, 15,120, 31,150,195,160, 48, 48, 33,139, 29, 69, 91,197, 52, 70, + 66,246,172,235, 53,174,170,241,251, 29, 77,129, 28, 84,218,226,170, 10,165, 28,195,110,207, 56,142,172, 94, 56, 76, 85, 51,229, +204,155,119,111,184, 91,111,249,151,255,251,255,164,189, 91,227,125,224,221,251,247, 52,235,150,191,253, 63,255,149,237,237, 29, +155,151, 47,248,240,151,191, 18,125, 96, 12,158,181,214,184, 70,186,175,224, 71,170,186,162,105, 91, 62,126,126,226,176, 59, 48, + 77, 19, 74,105,170,202,208,181, 13,117, 83, 17, 38, 41,110,246,187, 51, 10,195,186,182,124, 57,156,153, 66,226,166,109,202, 88, +126,100,138,177,112,144, 69,151,160, 82,166, 49, 98, 33,169, 10,220, 96, 26, 61, 71, 31, 72, 74, 81, 89, 81,215,250,146,131,189, +106, 36,138,181,115,154, 85,229, 56,142, 61, 19,240,178,109,177, 90,198, 59, 62, 4,177,175,221,221,240,249,241, 81, 24,234,136, +176,164,109, 26,186,166,198,149, 73,206,148,164,163,210, 90, 97,140, 60,120, 66,251, 83,101, 23, 87,201,169, 97, 52,237,106,205, +122,179, 42,217,213, 80, 55, 13,202, 9, 3,218, 89, 71,219, 53,184, 90,243,241,215,123,234,198,161, 12, 12,163,103,156, 70, 80, +154,126,244,140,254, 72, 93, 57,170,162,113,172, 93, 77,239, 71, 62,252, 38,163,239,174,174,232,234,154,227, 52,241,188, 63,115, +107, 86,116,186,162, 74, 37,174, 80,107,152, 50,247, 15, 15, 80, 57,186,198,113,119,211,241,205,183,111,184,125,121, 71,163,128, + 48,114,122,122, 66,133,140,162,226,251,223,158, 8, 57,243, 31,191,251,142,117,227,120,252,242,137,195,241,196,253,243,142,239, +127,254,149, 73, 91,182,171, 13, 85,213, 80, 57,205,170,174,216,237,118,124,121,120, 36,104,133,110, 44,109, 91,211, 57,203,186, +171,104, 87, 13, 55,111, 95,178,218,110,139, 66, 89,198,129, 50, 86, 46,223, 99,217, 38, 95, 51,201,191,238,140,175,198,226, 74, + 0, 43, 51, 19,188,164, 70, 47,153, 15,249, 10,175, 25, 75,190,192, 5,117,121,221,113,231,175,149,185, 37, 28,227, 90,193,171, + 22,225,208, 21, 67, 59,167,175,190, 38, 57, 45, 59,125,242,165,171,249,199,193, 67, 94,206,145,203,126,127,198,109,170,197,114, +247, 53, 17, 47,127, 69,148,155, 45,105,135,131,216, 44,115,206,180, 14, 98,200, 24, 37,126,246,144, 50,227,105, 36,199,128,202, +138,231,195,158,113, 10, 24,107, 25, 39,143,198, 50,122, 25, 91,182,149, 76,196,172, 82,196, 98,125, 11, 81,186, 94,157, 21,163, +151,243,237,228, 37,221,108,187,222,240,184,219,243,184, 63, 82, 87, 21, 74, 43,166, 32, 0, 17,149,242,194,208,115,198, 17,114, + 36, 76,137,172, 28, 70,103, 92,101,185, 93, 55,108, 87, 53, 55, 93,195,176,239,137, 57,160, 85,181, 76, 44,102,129, 86, 46, 8, + 80, 51, 95, 14,170, 76, 1,148,162,170, 26,114, 44,182,180, 36,147, 20,163, 53,100, 51, 51,137, 74,120,161,196,115,202, 56, 95, +200,110, 0, 58,102,130,202,130,141,141,242,249, 91,235,164,147,215, 96,180,168,247, 65,248,229, 51, 61, 80, 44,190, 34,172, 77, + 73,140,150,177, 88, 0,149, 54,104,157, 10,108,200, 64, 72,164,168, 80, 70, 62, 17, 83,216,232,126, 10, 66,197, 51,102, 65,120, +199, 28, 23,170,218,188, 78, 73, 37,115, 32,149,137,172, 54, 26, 87,187,146, 49, 32, 88,104, 59, 23,165, 73, 82,242, 98,130,126, +242,132,226, 54, 72, 81, 23,188,175, 46, 2, 57, 81,209, 95, 85,196,151,169, 72,240,104,235,208, 70, 73, 63, 51,195,101,162,224, +152,151, 96,151,191,155, 64,133,148,190,154, 32,169,121,170, 69,177,237,205, 68,123, 37, 44,132, 5, 87,171,224,216, 15,242,179, +115,110, 73, 73, 53,214, 49,249, 64, 87, 53, 75,129,102,203,154, 83,128, 52, 69, 4, 90,138,188,172, 53, 49, 69,124, 74,212,149, +196,237,106, 9,113,177, 98, 27,200, 25,159, 4,214,190, 90,175,105,234,138,156, 18,135,227,153,156, 50, 85,215,208,174,196,230, +148, 83, 22,156,101,200,196, 44,129, 26, 66,174, 82,203,195,131, 50, 37, 12,225, 2,126, 24,163, 80,177,146, 18,254,240,234,102, +205,221,237,134,207, 95, 30,153,178,140,115,135,105,162,106, 43,186,182, 97, 24, 71, 17,140, 85, 21,227,228, 9,147, 39,198, 36, +227,159,172, 80, 89, 23,182,124, 34,121,207,177,151, 96, 15,109, 52, 77,215,226,167, 9, 63,150,209, 94, 9,148,209, 90,145, 53, + 28,158,158,165,122,111, 90,180, 54,172, 86,107,222,190,127,199,111,127,251,153,231,221,142,245,122, 67,210,153,223,255,211, 31, +249,229,199, 15,124,248,225,123,254,240,223,252,153,167,243,153,221,110, 79, 74,153,177, 63, 81,181,173, 8, 29, 20,164, 56,208, +109, 55,156,135,192,121,127,226,124, 62,147,178, 36,254,212, 86,179,234, 42, 84,148,131,224, 60,140, 28,142, 61,155,182,129,152, + 56, 14,169,136, 1, 13,227,228,233,167,177, 60, 52,151,135,169,210, 80,105, 69, 93, 82,188,166,224, 57,140, 35, 62, 23, 63,166, + 51,140, 5,239,217,213, 21,141,179,212,198,208, 88,195,201,143,132,148,185,105, 91,225, 26, 91, 91,236, 16,240,234,229, 29,207, +199, 61,231,190, 95,192, 97,174,170,232,186,181,228,248, 38,228,231,190,144,191,116, 81,108, 74, 70,122,158,130,228,213,107, 5, +198,209,118, 29,205,166,147,184,207, 40,240,133,152,165,171,106,218,142,182,235,104, 87, 29, 47, 95,191,224,247,127,124,207,106, +211,114,123,187,230,246,166,229,238,102, 77, 99, 29,198, 58, 73,135,154, 38,249,122, 77, 77, 78,145,182,105,112, 77,203,211,254, +204,241, 52, 98,156,101,187, 89,147, 28, 28,250,129, 90, 87,101,143, 41, 42,224,199,251,123,166, 24, 88,181, 13, 55, 55, 43,222, +125,251,146, 87,223,188,160,105, 26, 42, 29, 25,158,118,196,126, 66,141,153,191,252,186,227,220, 15,252,249,219,247,188,218,110, + 56,238,158,217,237,246,220, 63, 61,241,211,175,159,240, 73,209,212, 13,166,118,212,181, 99,211, 85, 76,227,200,231, 47,247, 82, + 72, 57, 67,215,214, 52,149, 99,213, 84,108,182, 29,219, 55, 55,172,191,121,133, 50,151, 61, 52, 41,149,196,167, 75, 48, 68,186, + 26,135,171,252,117, 82,216,114,176,150, 68, 53, 81,166,199,203,174,186,116, 11,186,116, 32, 5, 11,118, 21,190,146,150,160,137, + 84, 38, 63,210, 53,164,194,124,207, 87,236,246,188,136, 80, 33,125,149,105,126,189, 71,151, 78, 59,205, 11,196,242,245,243, 82, + 76, 93,188,187,122,193, 90, 74,147, 51, 79, 12, 18, 49,196, 11, 79,123, 86,226, 23, 72,212,124,169, 95,255,147,114,228,241,105, +207,254,249, 44, 23,180, 49,164, 20,136,229, 92,240, 83,224,227,175,247, 60, 60,237, 73, 62,242,180, 63,114, 26, 70,124,204,244, +125, 32, 39,139,247, 9, 31, 36,240,195,100,168,140,129, 44,226,172, 41,122, 66, 76,196, 8, 79,167,129,135, 83, 79, 76, 94,210, + 39,179,230,243,211, 19,191, 62,237,208,214,225,202, 46,213, 88, 91,254,142,133,101,174, 4,159,154,131,240, 5,156,203,116,171, +134,215, 47,110,120,115,183, 97,221, 88,134,243,137,148,189, 36, 83,214,245,133,157, 31, 4, 92,146,162,236,198, 75,196, 14,118, +254, 12, 53, 24, 91, 75, 17, 84,158,133,164, 75,246,204, 18, 86,163,200,218,200,165, 24,195, 69,116, 88,158, 1, 41, 40, 21, 97, +154, 47,185, 92,132,204, 94,216, 30,165,163,181, 70, 99, 77, 57, 95, 75, 3,149, 98,198,135,204, 52, 5,250,209, 51, 76,129,113, +138,210,104,165, 72, 38,149,240, 22, 39,105,108,200,184, 57, 21,155,165, 49, 34,246,211, 42,203, 20, 35, 37, 66, 10, 50,129, 48, +226,155,143,105,182, 30,170,130,162, 45, 62,108, 99,231, 25, 55,222,123, 84,101,240,209,147, 66, 32, 77,113, 17,246,133, 40, 30, +123, 99, 77,225, 46, 80,180, 42,122,121,166,174, 65,194,177, 20,147,162,136, 87, 66,223,156, 3,139,162, 20, 84,250,250,179,205, +151,236,129, 88, 38,154,194,141, 23, 63,249,197, 5, 82, 38, 77,186,144, 29,185, 56, 62,140,209,236,142,123, 38, 31,104,219, 10, + 63, 77, 40, 35, 98,102, 31, 3, 57,201, 93,152, 73, 24,171,139, 59,230, 42,130, 89,203,133,158,181, 33, 33, 19,145,140,216, 38, +173,179, 22, 93, 22,249,202, 88,252,105, 66,107,205,122,179,198, 88,169, 32,246,251, 61, 41, 39,218,174,165,170, 42,217, 9, 33, +137, 56,177, 72,240,231, 81,133,186,174,100,148,128, 34, 98, 18, 22, 59,200, 88, 37,165,132, 77,153,117, 87,177,217, 72,199,115, +255,240, 68, 83, 96,248,163,159,216,214, 50,230,159, 98,160, 49, 22,188,116,112, 33, 74,215,175,179,236, 13,147, 18,190,187,206, +130, 36,237,199,137,132,162,173, 58, 86,166,225,243,248, 72, 54, 23,193,143,177, 86, 14,130,201, 51,238,143, 2,253,175, 29,218, + 90,182, 47, 95,144, 43,205,175,223,127,224,197,235, 23,196, 20,121,243,246, 45,235, 23,183,252,203,255,242,191,114,243,230, 53, + 47,191,249,134,191,254,229, 67,177,161, 77,196, 16,176,117, 93, 70, 86,145,152,224,197,171, 23,124,122,120,100,183, 59, 51,250, + 32, 32,134,202,208,212, 21,181,179,244, 33,210,143,158,253,121, 32, 41, 81,164, 63,158,143,100,163,105,108,197,228, 61,195, 32, +213,112,214,186, 84,127, 2, 70,176, 90,203,184,215, 74,166,248, 97, 26, 25,100,201, 37,158, 78,157, 73, 62,210,214, 21,117,101, +177, 86,211,185, 34,178, 75,137,170,174,105,172, 69, 91,181, 96, 53,239,238,182,132, 52,113, 60, 12,168, 88,160,120,198,112,179, + 90, 75, 54,114,142,132, 20, 22,184,205,114,120,205,185,210,222,227,156, 28, 6,202, 66,189,106,233, 86,107, 80,154, 36,160,224, + 82, 24, 20, 48,132,177,152,198, 97,180,197, 42,135,123, 81, 49,180, 13, 49, 76,156, 78,154,243,105,192, 25,135,218, 31, 24, 12, +244, 39,233,158,214,155, 53,102,232,241,163,103, 85, 85, 84, 70, 51, 4,143, 75,129,155,186,227,150, 10,155, 12, 86,105,140, 19, +106,215,238,105,199,195,211, 35,237,205,150,110,219,241,238,253, 75,222,189,123, 73, 87,183, 56,147, 57,159, 79,244,199, 35, 90, + 53,124,120,234,249,248,116,226,159,223,189,229,155, 23, 55,132,211, 19, 79, 15,247,124,254,120,207, 79, 31,159,233, 39, 33,228, + 85,206,210,214,150,205,218, 98,130,225,167,207,191,240,124, 60,160,157,165,107, 27,154, 74,252,255,155, 77,199,246,246,134, 87, +223,190,197, 42,131, 42,182,163,116,149,188,166,224,171,160,145,101, 10, 93,104,140, 95,179,218,139, 66, 56, 21,161,143, 82,139, + 90,253, 58,190, 52, 95, 5,162,124,117, 33,166,203, 20, 45,231, 88,216,237, 37, 95,124,158, 0, 44,232,217,162,190,205,169,140, + 40, 47,201,110, 74, 73, 71, 22,230,157,169, 18, 7, 68, 10, 18, 19,116,217,155,171,175,124,236, 51,238, 83, 46,254, 57,165, 77, +236, 69,194,136, 42, 43,131,101, 92, 47,145,178,115,119, 53, 69,207,238,241,196,238, 56,210, 86,134,182,118,228, 56,113,158, 60, + 86, 67,127,206,252,252,235, 19, 57, 71,222,108,183,236, 14, 71,142, 99, 32, 38,137,179,212,198, 48, 69, 8, 65,161, 83, 66,153, + 72,109,133,123,241,116, 30,136, 41,227,148, 16,187,158, 78, 35, 63,126,121,102,181,233,232,108,141,159, 20, 95, 30,158,121, 78, +131,192,101,148,150,239,203,202,129,157,149, 46,155, 78, 95,252,252, 26,157, 51,109, 91,113,183,105,233,218,150,198,106, 76, 41, +162,140, 21, 87,200,186,105,208, 89,136,151, 66,243,131, 24,138,216, 56, 43,146,153, 97,245, 82,208, 81, 87, 36,173, 72, 33,202, + 31, 19,229,103, 40,153, 30,115,170, 88,134, 88,130,127,202,248, 62,230, 80,172,136, 26,175, 32,123, 73,152,155, 81,173,114,190, + 24,176,178,194,152, 51,186,181,186, 92,250, 90, 27,156,133,156, 12, 65, 75,186, 34,101, 69,145,114, 17, 40, 98, 74,208,147, 66, + 85,178,102, 12, 33, 45, 69,154, 82, 6,103,117, 41, 46, 50, 30,136, 73, 46, 82,171,228,231,146,203, 69,153, 17, 17, 93, 34, 96, +107,131,211,142, 88, 46,188, 24, 50, 86, 89,129,223,100,133,247, 1,173,161,170,139, 45, 76,103,153, 4,204,238, 17,117, 29,170, +203,146, 98, 56, 79, 5, 68,239, 97, 81,106,146,187,162, 20,159, 49, 6,106,237, 68, 92,151,178,224,117, 53, 87,107, 45,153,104, +104,237,136, 25, 89, 53, 43,141,210, 9,149, 74,129,157,197,129, 16, 67, 40,159, 67, 64,107, 71, 26, 18,253,112,166,170, 26, 78, +231,147,136, 1,173,140,253,167, 20,209,218,200,122,169,178, 75, 56, 89, 46,150, 78, 20, 68, 37,108,249, 24, 89,108,157, 70,105, +172,182, 22, 53,103,118, 89, 24,199, 1,173,197,163,110,157,208,116, 66, 47,140,119,107, 45, 86, 91,134,225, 84,140,255, 53,167, +131,236,116, 84,146,244,248,148,229,210,157,213,151,228,146,125,173,132,230, 59,197, 32, 3,137, 24,169,171,154,215,111,223, 18, + 66,224,243,253, 61,214,213, 76,227,132, 74,137, 77,211,208,199,145, 64,166,118,150, 20,162,136,228, 66, 20,193,134,154, 25,216, + 25,167, 4,163, 25, 74, 56, 67,183,234,104,109, 69, 74,129,209, 79,212,214,202, 77, 85, 42,174,218, 88,246,135, 3,211,121, 66, +173, 29,186,118,108,222,220,209,173, 87, 60,252,244,145,112, 62,240,250,219,215, 88,231,120,243,237,183,124,252,248,137,143,127, +253,137,255,241,127,254,159, 72, 65,241,240,249, 1, 85, 59, 78,231, 19,141,178,180,237, 10,101, 20, 41, 76,220,110,110, 64, 87, + 28, 31,247, 28,246, 7, 98, 76, 84,181,168, 97,219,166, 6,228, 1, 28,124,228,124, 30,105, 42, 67,204,158,115,204,180, 78,227, +148,226, 52, 78,132, 52, 17, 74,231,155,201,184, 25, 67,168,160, 81, 22,163, 28,167,105,226, 52,137,197,199,104,161,249,132, 16, +169, 74, 23,233, 52,180, 70, 97,146,102,202, 17,171,140, 84,222, 26, 41,138,114,102,187, 94, 83,183, 13,159,191, 60,148,177,169, +124, 78,221,170,197, 57, 77,246,190,140,174,212,140,193,150, 81, 95, 57,120, 67, 8,212, 70,252,173,218, 40, 92,211, 80,181,173, + 80,142, 66, 4, 83,210,173, 74,119,143,138,242,239, 90,161,107, 39,121,233, 94,186, 16, 31,172, 68,255,218, 19,207,143, 59,214, +155,138, 54,214, 52,110,226,120, 62, 99, 27, 75,179, 89, 99,245,137,227,254, 76,179,110,233,170,181,168,137,115, 98, 85,175, 81, + 94,188,205,174,117,244,231,158,199, 47,247,228,182,101,221, 84,124,247,246, 5,111,190,121, 41,144, 12, 13,105,154,232,119, 59, + 12, 53,191, 61,120, 62, 60, 62,243, 79,175,223,242,205,235, 45, 33, 14, 60,239,118,124,252,244,192,143,159,190,136, 45, 80,107, +148,117, 52, 93,199,237,106, 77,173, 12,191, 62,124,226,241,241,137,108,196, 59, 92, 87,142, 90,107,186,117,203,234,102,205,246, +205,157,140,255, 72, 69, 93, 60,163, 55,175, 18,206,150, 3,143,197, 71,107, 84,201,110, 46, 23,106,113,113,149,190,187, 80,187, +244,215,162,179, 37,235, 27,137,170,188,236,189,175, 16,173,234, 58,105,236, 34, 66, 83,215, 98, 58, 68, 8, 37,245, 92, 1,193, +240,119,138,223, 34,174,154, 99, 73,115, 1, 79,169,116, 69,209, 90, 4,117,243,110, 94, 20,242, 41,202,101,173, 50, 37, 30,147, + 5, 22, 34,133,134, 41, 65, 22, 2, 67,241, 68, 78,167,145,167,199, 29,231,115,166,109, 52,206, 73,118,244,105,127,162, 54,154, +179,143, 28, 14, 35,167,113,224,166,107, 8,113,146,203, 59, 87, 34, 52, 83, 90, 32, 89, 41,203, 88, 54, 70,234,202,225, 42,203, +167,135, 3,143,103,207,237, 74, 46,204,253,185,231,151,167, 29,109, 93,243,221,230,150, 56,245,252,252,124,226,204, 68,101,197, +218,166,163,184, 22,170,218,144,173, 98, 28,203,126,213,233, 66,253, 75,220,118, 43, 94,108, 58, 81,128,171,136,210, 18,134,101, +140,147,198, 68, 27,148, 83,228,233,107,187,212,146,252, 85,166,139,233,138, 3, 96,157,147,169, 87,146,255, 32,108,254,130,200, + 45,157,102,138,136,178, 94,171, 5,120,146,196,144,180, 68,232,102, 31,151, 46, 30,157,201,170,196,106,147,229, 88, 45,182,170, + 37, 80,101,214,101,164, 44,145,211,101,109, 99, 12, 24,139,248,198, 67, 92, 30, 96,209, 54,104, 73,245, 84,114,177,203, 90, 35, +148,201,134,194, 36,197, 84, 34, 83, 77,241, 88, 15, 37,130, 85, 52,107,226, 48, 82, 73, 50, 40,210, 21, 32, 41, 37,137, 92,141, + 5, 38, 22,188, 23, 5,187, 49,140,126, 42,247, 78,153, 92, 21, 31,254, 87, 9,124, 69, 44, 74,206,139,231, 60,155, 9,249,148, + 68, 23, 15,154, 16, 38, 82, 42, 80,158,171,247, 68,107,117,153,118,101,241,152,167,146, 45,178,196,159, 47,171, 19, 89, 85,162, + 4,205,156, 82, 66, 91,209, 49,156, 78, 35,111, 94,111, 57,229, 51, 49,102,108, 37, 69,137,247, 30,231,244, 18,177,100,180,196, +129,235, 37, 59,240,106,202,151,149,128,202,138, 80,213, 90, 35, 72,213,148, 36,218,206,123,233, 60,187,245, 10, 91,213,236,247, +247, 75, 72,132, 91,173,208,214, 16,124,160,105, 90, 65, 19,198, 68,244,129,156, 37,126,112, 78,145,202, 41,131,206,197,175,167, +202,200,199, 51,198,204,148,160, 85,142,182, 93,115,247,226,150,251,251, 47, 28,118, 71,148, 86,210,165, 55, 45,174,170,216,157, +207,212, 70, 82,119, 82, 73,125, 27,189, 47, 15,186, 84, 65, 53, 34, 50,233, 81, 68,103, 89, 89,203,166, 91, 99,141, 97, 26, 39, +166, 97,196, 52, 21, 42,205,227,119,217, 67,159, 79, 71,198, 0,171,170,166,187,189,227,237, 55,223,242,233,183,223,184,255,237, + 51,237,237,150,186,109,233,110, 54,108,215,107,254,143,255,237,127,103,181,222,240,135,255,246,159,121,252,248,145, 49,140,104, + 87,243,180, 63,240,170, 91, 19, 53, 84, 6, 66, 72,220,220,189,228,116,234,121,126,220,113, 26, 79,232,210, 85,175, 26, 71,235, + 12, 67,136,244,227,196,185,247,104, 35, 59,178, 83, 47, 22,182,202, 42,122, 31, 25,166,114,248,104, 13, 69,151,160, 72, 50, 42, + 68, 18,124,114,206, 28,250,145, 52, 63,160, 90, 51,166,140,182, 26, 87, 89,180,206,226,251, 70, 17,150,188, 93, 77,163, 77,217, + 99, 10, 77,109,189,105,249,242,180,103, 26, 75,204,130,214, 52,173,172, 89,210, 24,138,240, 81, 68,122, 90,201,120, 39,149,136, + 85, 16,187,135, 41,222,201,166,110,169,234,166,168,166,133, 34, 21, 11,232, 65, 23, 38,129, 8,185,204, 87,193, 48,166,146,104, + 85, 53, 57,140, 14,140,227, 68,221, 85, 84,185, 38,167, 44, 74, 89, 39, 58, 11, 51, 25, 92,213,112,247,162, 18,141, 68, 93,163, +148,102,240,158, 70, 59,162, 19,139, 31, 33,243,248,248, 68,168, 12,119, 77,197, 55,223,190,228,155,247,175, 89,215, 21, 86, 3, + 42, 48, 60, 31,201,222,242,208, 71,126,125,124,224,245,205,150,215,111, 94,162,167,129,199,227, 19, 63,254,242, 27,191,125,124, + 98,242, 16,178, 38,106, 69,215, 58, 94,109,215,212,181,225,203,253, 35,247, 79, 79,100, 45,232,220,186,182, 56,157,217,172, 26, +214, 55, 43, 54,175,110,105,186,182,136, 9,103,113,153,190,112,213,103, 96, 83,142,203, 1, 42,222, 90, 37, 86, 38,117,221,141, +203,239,204,112,245,251, 47, 23,115,202, 81, 68, 51,215, 89,226, 87,137,230,178, 26,154,189,235,178,141,191, 4,187,136,132, 74, +205,128,154, 20, 23, 63,250,162,255,201,106,225,194,171, 82, 84, 95,236,164,210,237,155, 37, 79, 61, 94, 4, 72, 92,144,156, 58, + 11,152,195,152, 75,160,138,116,144, 69, 52,168,248, 10, 82,163, 77, 65, 53,251,200,126,127,226,112,246,108, 90, 25, 73,134, 73, +246,234, 24,240,231,137,195,110,160,182,142,206, 56, 42,229, 48, 56, 38, 21, 25,252,132, 46, 54, 76,133,236,204,163, 31,168,157, +165,117, 13,159,159,142,124,248,242,200,203,219, 27, 34,137,113, 72,124, 57,140, 24, 52, 47,215, 45,135,254,204,199,221, 65, 84, +225, 86, 97,141,197,164,146,176,214, 88,108, 85,113, 26, 7, 66,140, 18,177,170, 44,182,146, 40,210, 55,219, 77,193,103, 39, 90, + 87,211,182, 21,117, 85,131,130,105,244, 24,180,236,180,203, 37, 49,123,218, 23,206,190,150, 75, 90, 25, 49,147,104,147,169,170, +110, 89, 37,198,226, 36,178,214, 22, 1,165, 46,157,103,144, 21,104,128, 52,167,246,150,192,149,164, 68,173, 29,124, 44,247,151, +232,106,102,118, 65, 74,160,202,179,183, 20,239,115,165, 24,243,178, 91, 86, 42,151,139, 77, 52, 16, 86, 43,177, 46,103,129,252, +160, 46, 43, 29,109, 17, 77,142,215, 34,114, 14,158,202, 86, 56,163, 73,147,128,200,172,170, 48, 90,198,233,242,154,168,114, 89, + 7,177,226, 25,189, 8, 42, 3, 16,149,140,249, 67,136, 56, 20,147,159,100,188, 95, 68,126, 49,134,130, 86,149,239, 75,118,209, +186,136,182,255,158, 1, 87,222, 39,175, 46, 83,145, 44, 43, 2,161,249, 93, 4,167, 41,167, 75,234, 33, 82, 92,205,244, 67, 97, + 41, 40, 41, 12,148, 42,136,230, 92,252,249,138,133, 21,147, 20,217,139, 0,239,120, 56,241,221,251,247, 56,109, 9,193, 83,183, +150, 16,144,149, 99,221, 45,231,130, 53,134, 40,217, 58, 82, 16,199, 18,212, 68,198, 42,185,135, 67,150,233,132, 68,175, 2, 42, +107,194, 20, 24,195,136,107,107,218,174,193, 40, 56, 29,246,196,224, 49,149,165, 91,175,200,136, 72,161,105,219,133, 80, 21,188, +151, 84, 54,173,153,151,129,105,246,182,198, 72,212, 74,148,121,101, 87, 21, 72,232, 74,179,185,221,208,117, 29, 63,252,237, 67, + 73, 84, 74,168, 16,104,214, 27,134,178,183,215, 70, 23, 0, 5,140,222, 23, 82,221, 69,184, 99,139, 34, 48, 22, 63, 95,215, 53, +212,149, 20, 2,135,195, 68, 82,186,136,188, 88, 88,194, 97,154, 56, 31,207,196, 4,245,102,195,239,254,252, 7,250,190,231,241, +211, 23,140, 74,108,238,110,169,215, 45,171,187, 91, 14,143,207,252,245, 95,254,133, 63,253,231,255,142,186,169,185,127,124,166, +106, 26,158,143, 7,242,228,169,110,110,209, 86,170, 56,219, 85,212,235, 21,127,251,254, 71,158,159,246, 68, 5,141, 51,212,198, +208, 54, 13,209,192,112,242, 66,121,154, 38, 89,119,164, 68, 82, 18,211,151,149,252, 48,133,227, 92, 2, 28, 0, 83,188,144, 70, +107, 42,235,192, 24,142,163,224,118, 77, 33, 24,133,114, 65, 54,174, 42, 74,201,178, 7, 42, 23,132,202, 66,147, 51,197,215, 84, + 55, 21,119, 47,111,217, 29,207,156,206,231,130,249,205, 37,219,125,133,142,101,220, 87,138, 52,173,203, 3,187,120,142,197,189, + 96,180,140, 78,171,166,198, 54, 77, 1,160, 20,198,119,137,147, 68, 75,218, 82,212, 50,150, 76,170, 32, 76,203,212,217,105, 85, +172, 42,226,170, 64,105,110, 95,188, 16,125,197,185,199, 90,168,234,138,253,254,196,233,116,132,174,229,213,235, 55, 56,231,152, + 38,225,172,215,195,136, 74, 89,196, 75, 74,115,127,255,204,254,116,162,189, 89,243,246,221, 45,191,251,253, 59, 86,181, 65,231, + 68, 93, 25,206,135,158, 48, 70, 14,131,226,151,143, 59,186,186,227,221,203, 59, 12, 35,167,161,231,251, 31,126,230,215, 95,238, +241, 81,246,221, 67, 74,108,218,134, 87,183, 91, 86,171,134,135,135, 39,190,220,223,115, 60,246,184,206, 82,213, 14,155, 19, 78, + 43,186,182,230,230,110, 75,187,237,202, 62, 79,127,165, 24, 55,203, 72, 89, 62,215,124, 77,101,227,146,155,144, 75,136,139, 86, +146,250,148,191, 74, 64,203, 95,141,218, 41, 2,212,235,253, 55,153,194, 10,159,119,223, 87, 80,155,196, 18,133,169,203,220,119, +233,198, 98,185,212,245,101,140,126,233,246,175,176,207,197, 10,148,230,242, 33,203, 72, 53,166, 8,152, 11, 11,190, 76,238,138, +158, 91, 60,195,101, 13,103,150, 4,181, 75,171,154, 10, 80, 37, 71,136, 19, 60,239, 79, 28,142, 71, 54, 51, 61, 44,123,142,135, +129, 16, 3,149,178,124,126, 60,209, 21,173, 76,109, 53,109, 93,161,115,230, 60, 14, 4, 52, 46,230, 50,202,140,156,142, 19, 21, +134,174,117, 60,247,158,127,251,241, 87, 94,188,186, 35, 3,231, 62,112, 28, 38,142,227, 68, 87, 57, 78,131,231, 56,246,156, 99, +162,182,154,106,166,123,229,132,171, 20,205,202,137,224, 78, 38,225,172, 42, 67,219, 58,186,206,177,170, 21, 42,201, 90,160,106, +106,214, 93, 71, 99, 13,104, 35,238,159, 43, 49,214,220,141,167, 12, 97, 73,212, 75,196, 92,128, 59, 37,216, 71, 89,139, 46, 76, + 10, 65,191,250,178, 78,153,227,114,231,207, 53,151,119,204, 80, 12, 11,164, 28, 23,231,132, 20, 54, 97,150, 81,151,156,248, 2, +233,146,146,141,172,181,184, 40,174, 1, 67, 90, 45, 60,131,124, 77,253,155, 61,241,148,224,146, 25,101,156,230,130,178, 60, 43, +202, 80, 87, 37,244, 38, 65,182,138,168, 10, 86,216,234,101,138,148,138, 35, 35, 41,152, 98,192,145, 5,122, 85,154,137, 60,138, +109, 90, 24,241, 17,178,193, 79, 94, 10,140, 66,128,139, 94, 38, 2,202, 92,166, 71,185,188, 95,233,106,218, 52,239,205,101, 74, + 25,151,200, 18, 61, 91, 39, 67,121,238,117,233,134, 75,158,185, 49, 22, 31,166,229, 93,212, 90,186,233,156, 46,186,147,217, 34, + 39,184, 91,181, 64,129, 82,226,178, 87,223,159, 9, 49, 98,107, 57,203, 86, 20,107,117, 8,133,253, 46,149,128,181,182,228, 53, + 92, 52, 57,164,128,202, 17,146, 20,119, 33, 68,180, 51,216, 92,254, 15, 85,246,113, 97,154,112, 85,205,106,213,225,172,208,219, +198,105, 66, 91,129,209,164,148,100,143, 92,186,197,148, 2, 97,244, 24,157,151,170,126,174,224, 85, 22, 65,218,252,205,196, 40, +158,196, 20,161, 94, 87,108,183, 27,114,214, 60, 62, 63, 81, 57,203,185, 31,168,128,218,106, 14,193,163,141, 37, 18,137, 62,224, +106,199,185, 63, 22,178,143,196,207,233, 98, 63,152,146,140,228, 93,210,232, 98, 33,112,214, 20,148, 39,229,215,101, 76,241,249, +141,199,145,225, 44, 20,188,215,239,223,243,226,238,142,127,253, 47,127,161, 63,246,220,172, 58,186,205, 6,215, 53,172,214, 13, +255,246,255,254, 95,100,224,219,127,254, 3,231,231, 3,187,211,142,186,219,114,254,244, 17,149,133,128,166, 74,102,252,118,123, +203, 24, 39,158, 31,159, 25,135,145,202, 41, 42,235,104,107, 71,211,212, 28,135,129, 97, 26, 25, 71, 9, 86,152, 33, 19,202, 9, +136, 97,154,130, 60,156, 57, 17,181, 28, 30,202,232, 37,109,206, 24,141,181, 21, 83,206, 28,139, 24, 16,164, 26, 71,103, 26,231, + 48, 18,119, 33, 93,186, 49,203, 5, 97,141,194, 21,139,161,179,142,237,166, 99, 28, 70,118,135,211, 18,228,129, 86,172,214, 29, +206, 26,194, 56, 46, 25,218, 74,107,129,165, 92,177,190,157,181, 50,134, 52, 96,107,139,109, 42,161, 91, 5,217,233,229, 57,155, + 24, 93,172,142,197,106,163,108,241,163,206, 93,168,150,188,229, 28, 25,135,158,224, 71,214,171, 21,117,227,228, 97,183, 70, 4, +129,253, 64,142,130,244, 28,153,120, 60, 60,241, 98,123,199,106,181,194,247,163,164, 36,105, 77, 83, 55, 60, 63,239,120,222,237, +112, 85,195,155, 23, 55,252,238, 15,239,216, 52, 21, 58,122,170, 78, 8,137,211,121,226, 52, 40, 62, 62, 28,169,172,230,219,215, +119,172,106, 71, 26, 6,254,250,227,223,248,240,203, 39, 82,148, 24,197, 62,120, 92,211,242,122,187,101,219,214, 28, 79, 61,159, +239, 31, 56,238,247, 88, 39, 52, 70,157,229, 51,110, 42,139,107, 43,214,183, 45,102,246,158,107,201,146, 54,101,112,166,149, 46, + 32,151,114,192,124, 21, 10,113, 57, 4,229,226,142, 36,125, 65,194, 94,123,192,245,178, 27,140, 69,121,205,226, 25,215,186,180, +104,113,166, 47,241, 85, 18,155,196, 34, 95,132,120,121,161,186, 93, 41,229,185,136,221,114, 76, 92,231,176,204,130,187,139,240, + 79, 14, 99,169, 25,213,162,114, 95,178,218, 83,241, 53,231,204, 85,232,244,210,217, 47, 95,107, 49,223, 75,222,193, 56,121,142, +135,115, 25,149, 70,252, 20, 25,199,158, 97,156,208, 74,241,248,112, 36, 71, 77,183,169,201, 41,225,208, 52,214,240,229,249,192, +152,229,153,117, 74, 97,181,225,126,191, 35, 37, 77, 87, 59,140,213,252,245,195, 3,198, 89,186,166,102,119, 18, 65,235, 97,148, +236, 2, 31, 19,147,143,140, 49,225, 52, 75,244,165,192,171, 4, 78, 99, 92, 73,208, 50,134,151,235,134,109, 39,211,154,218,105, +156, 5, 21, 21,182,178, 84,141, 4,101, 41, 35,122,138, 56, 11,138, 89,144,125, 37,101, 60, 47, 34, 72, 9,164, 81, 69,127, 81, + 20,228,174, 38, 23,255,180,206, 69,189, 94,188,249, 57,138, 14,134,164, 23,249,123, 42, 51,230,184,224,122,229,162, 13, 33, 44, + 24,127,165,149,184, 40,202,122,111, 38,239, 73,144,202, 5,202, 50,207,171, 51,241, 98, 53, 75,178,171, 78, 41, 45, 23, 59, 89, +244, 83,185,140,224,103,160,194,204, 70,176,166, 16, 20, 67,105, 16,144, 76,117,157,212,226,181,207, 73, 82,199, 50, 48,133,128, +211, 10,231,170,139,134, 39, 36, 76, 33,254,197,148,153,130,151, 36,200, 40, 88, 86,165,141, 16, 57, 67,201,227,200,178, 50,208, +204,207,183, 94,242,213,211,149,247,156,175, 10,223, 75,144, 80,240, 97,153,134,164,148, 36,249, 77, 95,208,199, 41, 74, 83, 22, +141,104, 82,102,157, 11, 75,230,137,168,243,173, 53, 76, 83, 88,222, 51, 99,133,139, 50, 76, 19,206, 57, 14,135, 61,232, 27,172, +213, 28,207, 18,221, 59,127, 45, 83,242, 56,174,185,242, 57, 69,108, 22, 50, 96,158, 63, 59,103,176,106,222, 19, 40, 17, 95,248, +105,228,229,237, 55,116,171, 21, 33,100,206,103, 81, 67,119,174,162, 91,117, 66,116, 59,156,184,189,221, 10,119, 57, 6,194, 56, +161, 26,189,140,196,115,217, 13,234,226, 57,204,229, 67,237,189, 8,174, 84,138,108,186,142, 87,183,119,156,207, 39, 30,118,207, +228,152,152, 38,207,182,105,240,185, 0, 57,140, 99, 10, 19,138,204,241,212,227, 67,190, 98,201,103,108, 18,250,107, 72, 73,186, +124, 95, 30, 52,171,201, 58,211,159, 7,170,202, 72,197, 89, 54, 53,206, 90,206,251, 29,193,103,214,119, 45,223,252,135, 63,177, +127,218,243,116,255,136, 53,134,205,221, 29,117, 43, 65, 40,126,240,252,248,215, 31,248,238,207,127,100,251,250, 53, 31,255,245, + 71,172,173,136,126,226,249,233, 25,215, 84, 88, 83, 14,106,231,184,185,185,225,211,151,207, 60,220,239,137, 25, 26, 87, 97,181, +162,109, 27,124, 12,140,147,103,242,129,209, 71,208,154,201,123,140,146, 66, 36, 1,126,244, 75, 71,147, 75,117,110,203,225,111, +140,161, 50, 18,201,215, 79,158,168,114, 81,254,202, 30,165,178, 26, 91, 54,162,149,206,212, 70,232, 67, 49, 39,116, 22,143,166, + 43,244,183,182,107,200,198,242,244,180, 35,132,184, 28,226,171,166,163, 93, 53,132,193,203, 33, 60, 79, 11,202, 59,157, 74, 17, + 98,172, 22, 22,187,209,184,218,226,106, 39,208,143,156, 22,234,152, 70, 75,188,161,192, 11,165, 0,210,154,140, 39,150, 52, 16, +163, 13,168, 72, 84, 10, 63, 78,244,199, 35,117,235, 88,175, 90, 25, 49,105, 37, 83, 16,229,136, 62, 80,213,142,166,173, 73, 57, +178, 63, 13,220, 63,124,225,229, 77,194, 37,249, 51,170,186, 97, 24, 2, 79, 79,143,104,171,120,245,122,203,119,239, 95, 83,181, + 13,169, 63,178,222,174,132, 34,184,239, 9, 67,226,195,211, 4, 33,240,251,111, 94,177,233,106,114, 8,252,245,199,159,248,203, + 15,191, 72, 53,157, 97,127,158, 48,157,227,237,237,134,151, 55,107,198,209,243,249,254,158,221,241, 64,208,138,174,169,228,115, +205,153,186,118,100, 35,184,220,201, 71,234,166, 4,174,164, 84, 80,201,197,242, 57,219,105,210,178,160, 91,186,116, 53,199,176, +148,201, 73, 76,178,167,252,251,248, 84,217,179,139,125,140, 37,109, 85, 45,251,190,124,213,121,115,229,109,207,197, 94,131,186, +160, 96,175,199,245,179, 90,184,136, 96,228,123, 93,150,189,255, 24, 18,243,181,194, 62, 47, 30,223, 25,145,169, 74,231,119,233, +210,213,162,190, 87,165,232,204,177,116,163, 37,220, 99,206,112,247, 33,209, 15, 35,253,105,164,109, 42,124, 8, 12,231,158,211, +185, 71, 43, 17, 73,158,167,196,109, 93, 83, 41,197, 80, 44,143,187, 83,207, 97, 10,120, 52,149, 73,220,108,214,252,252,229,153, +211, 24,105, 93, 98,221, 53,252,244,176,231, 48, 12,188,123,185, 97,127, 58,113,242,137,148, 3, 99,148, 88,211,104,102, 82,152, +146,119,171,172, 12,140, 22,107,106,213,136,253,169,109, 21, 93,103,185, 93,213,116,141, 4,142,136,152, 74,132,116,206, 89, 89, +159,149,206, 51, 5,105,138,116,201,107,200,145,101, 26,150,151,139, 83,236,108, 75,187, 87,198, 53, 89, 25, 2, 9,147,138,245, +107,246,209,167, 80, 84,217, 23,139, 23,243,238,185,140,137,211, 60,210, 73,133, 64,150,202, 25,109, 21,198, 42,162, 47, 41, 96, +186, 92,104, 89, 23,132,145, 18,187,160, 94, 64,192, 50,221, 81,154, 56,239,159,165, 58, 93,112,198, 51,155, 95, 14,178,249,236, +239,100,191, 0, 0, 32, 0, 73, 68, 65, 84,162, 44,127,171, 44,231,157, 80, 79,101,186,228,140,172, 9,117, 9,106, 73,170,156, + 13,169,232,179,140, 20,206,243,202,206,135,136,109, 75,238,121, 33,105, 46, 36,193,100,168,157,147,175, 93,146,222,140,210, 24, + 61, 59, 52, 36,237,110,206, 16,152,125,240,243, 38,127,230,188,207, 59,247,172,228, 82,119, 11,113, 85,166,163, 66,122,203,139, + 26,222, 90,240, 41, 47,147,234,139,133,115,118,144,176, 56, 64,230,130,216,106, 75,136,129,227,238,192,171, 55,175, 36,126,213, + 75, 14,123,140,137,161, 80, 59,125,240, 56, 99,150, 21,222,188, 64, 48, 90, 84,240, 49,235, 69,171,146, 41,209,171,243,156,254, +116, 62,227,207,145,237, 31, 54,180,109, 43, 17,163,163,196,103,174, 87,107, 76,101,152,124, 64, 91,201,196, 69,101,226,232, 9, + 97,164,166, 19,111,161,154, 29, 46,229,177, 84,102,169, 66, 67,136,132,152, 49, 57, 81,213, 13,221, 77,203,253,243, 19,126,136, +120, 63,145, 38,207,234,246, 22, 31,147, 8, 11,128,105,154,112, 74,115, 30,199, 50, 74, 74,165,115,148, 93,238, 24, 70,217,121, +196, 36, 62,205,156,168,218,154,225,124,102,244,145, 85, 55,231,193,151,136,208,152, 25,251, 51, 97,128,247,255,195,159, 88, 53, + 53, 31, 63,126, 38,132,137,237,246,150,213,235, 59,136, 35,245,102,197,199, 95,126,101, 56, 29,248,243,127,255,159, 73,211,196, +254,121,143,181,150,135,167, 29,199,115,207,205,237,150,202, 25,148,142,180,171, 27,178,214, 60,254,118, 79,127,218, 99, 43,137, +139,109, 43, 71, 87, 85,156,253,200, 52, 37,134,193, 67, 82, 4, 5, 67,138,172,173,236,186, 39, 47, 64,157,116, 97, 15,201, 65, + 87,104, 74, 78, 57,180,177,140, 41, 45, 63,248,160,197, 0,170,213,124, 88, 42,106,147,169, 69,153, 83, 34, 13,193,105,168,140, + 92,170, 77, 85, 81,173, 28, 79,135, 19, 99, 31, 74, 34, 19, 84, 85,197,186,107, 80, 83, 36,205, 23,189,154,199,189, 23, 11,147, +209, 69,108,103, 52,166,146,157,162,228, 92, 71, 57,180,202, 72, 89,150,121, 90,236, 34,203, 62, 94,162, 65,209,151, 10, 84, 41, +136,211,200,208, 15, 24,171,168,235,170, 68, 36,170,146, 39, 12,195,249,132, 87,137,237,237, 45,214, 26, 98,152,168,234,134,227, +126, 36, 14, 3, 74,105,172,173, 81, 90,179,223, 63, 49,229,204,221,171, 59,126,255,221, 43,222,188, 90,147,247, 7,170,109,131, +174,106,250,253,196,120,142,124,124,234, 25,199,137,223,191,121,201, 77, 87, 65, 12,252,245,135,159,249, 47,223,127,148, 56, 67, + 52,199,222,227, 26,199,139,155, 45,175,214, 43,124,246, 60, 60,239,121,122,126,226, 60,156,169, 87,107,185,248, 66,160, 94, 55, + 84, 77, 69, 32,115, 26,122,134, 97,160, 91,175,208,133,197,174, 98,209, 23,104, 45, 26, 19,173, 23,133,186,154,195,207,148,176, +187,101,164, 56, 19, 16,245, 18, 60, 65, 65,159, 94, 34, 78,175,252,219, 73, 2,127,102,218,212,236,119,230,226, 70,159, 79,169, + 66, 27, 99, 17,237, 80,198,139,249,234,114,206, 37,171,121,206,105, 23, 56,206, 5, 37,123, 17,194,165,229,249,144,130,165,196, + 79,146,201, 49,148,162, 33,255, 67,135, 63,119, 74,204,130, 65,115, 25, 1,199,152, 25,166, 1, 63, 69,158,158, 79,196, 56,226, + 26, 39, 68,184,243, 89,166, 6,202, 16,162,197,217, 72,109, 69, 61, 94, 89,135, 15,240,176, 31, 25,178,168,166,223,108, 87,252, +242,180,227,254,169,167,170, 20, 93,221,112, 26, 60, 63, 60, 14,108, 93, 69,244,240,124,158, 24, 75,208,211,188, 49,202, 74, 96, + 36, 85, 9,105,209, 58, 97,147, 60,195,117, 87, 99, 43,131, 49,154,186, 10,172, 42,209,204, 56,167,175, 34, 70, 37, 34,215,205, + 7, 57, 34, 58, 12, 33,145, 98,196, 25,169,116, 98,138,228, 84, 68, 96,139,240, 42, 94, 14,239,242, 14,106,125,121, 6, 18, 17, + 82, 34, 4,177,152,154,108,174,136,193,165,211, 87, 23, 82, 28,101, 52,159, 83,150, 8,228, 50, 41, 80, 78, 46,245, 20, 47,168, + 97,165,103, 21,253,124,177,205,188,131,153, 93,240,181,189,113, 25,205, 43, 37,201,119, 74,214,133,106,137,240,205, 75, 49,160, +181, 52,129, 26,133,202,102,161,171,181, 78,196,140, 57, 9, 18, 59,229, 76, 93, 88,231, 83, 76, 40, 43, 49,211,190,232, 7, 82, +138, 56,163, 74,193,155,240,195, 40,251,229,249, 98, 47,123,232,152, 19, 24,131, 78, 89,196,138, 6,130, 23,214, 71,249, 88, 80, + 81,246,243, 41,170, 37,187,125,126, 14,103,143,249, 44, 38,149,169, 99,198, 89,137,128,157,167, 29, 41,133,226,233,175,136,113, + 18,122, 94,153, 78,204,104,180, 28,197, 61,160, 74,218, 97, 74, 1,146,163,170,107,206,231, 1,103, 45, 86,137,134,160,109,106, + 98,140, 11, 63, 36,196,176, 96,195, 23, 30, 68, 17,202,104,103,209, 62,149,149, 86, 32,133,136,157,213,213, 10,196,243,167, 20, +109, 43,149,111,140, 19,147, 15, 40,165,105,187, 22,107,173,196,102, 42,233,248, 66,152, 8,147, 47, 60,219,107, 74, 84, 68,229, + 9, 31, 43,188, 82,104,107, 80, 89,246,130,147, 18,197,229,237,122, 77,187,221,242,183, 15,191, 48, 5,233,246,155,186, 94,176, +119,198,182, 2, 18,152, 60,217, 26,198,209,151,172, 92,169, 90,107, 83,227,131,151, 78, 84,214, 10, 96,101,236, 87, 57,199,110, + 10, 68, 34,217,232, 98,187,136, 88,235, 48, 62,114, 60, 29,121,253,110,205,235,111,222,113,122,124,166,239, 39, 50,154,219,155, + 91,114, 81,103,214,206,242,240,243,111,188,120,245,138,219, 23,119,236, 63, 63,144, 85,162,170, 90,246,251,125,225,222,139,125, +195, 86,208,221,174, 56,238,142, 60,125,124,192,144, 49,117,133,213,154,182,171,240, 38,208, 31, 39,134,105,194, 79,145,172, 21, +163, 23,161,140,100,190, 23,229,232,252, 24, 41,217,137,219, 34, 70, 49, 70,172,120, 49,195,152,162,140,228,181, 20, 85, 73, 23, + 0, 79, 12,104, 3,149,109,208, 70, 21,209,139,188,212,181,213, 84,218, 81,213, 14, 87, 59,134,147,167, 63,247, 68,146,136,216, +172,162,235, 26, 65, 67, 78, 30, 37,241,220, 75,136, 72, 44, 8, 80,137,140, 21,174,124, 85, 57, 89,193,132, 40,159,179,158,173, + 55, 18, 3, 8,102,217, 53, 37,164,136,137, 64, 42,235, 0, 99, 44, 86,123,194, 20, 24,250, 17, 99, 20, 77,181, 18,184,111, 40, + 23, 97,182,132, 62,114, 62,156,232,154,138,245,237, 13,164,136, 31, 12, 74, 57,152, 20, 99,239, 81,198, 80, 89,216,221, 63,112, +216,239, 89,175,111,248,246,221, 75, 94,189,222,226,159, 15,172, 58, 67,189, 94,227,207, 3,211,144,120,120,158,184, 63,245,252, +254,238,142,219,205,138,152, 53, 31, 62,252,194,127,253,241,111,162,216, 79,138, 47,253,128,194,241,126,189,225,229,102,141,118, +142,199,135,103,118,207,207, 28, 78, 3,166,174,165, 82, 14, 17, 91,201,202,199,186, 10, 99, 50,207,251, 71,110,182, 29,119,219, + 13,201, 88, 84, 86,151,203,107, 30,146,167,171,238,185, 20, 76, 90,107, 81,181,207,254,217, 2,118,201,197,113,112,125,137, 95, +143,247, 68,168,163,150,157,122,158, 57,236, 89, 93,225, 97, 47, 9,112, 75,170,213,236,167, 45, 34,173,249,251,186, 88, 83, 75, +200,203,188, 95, 47,221,221,252,107,231,233, 3,200,251, 95, 48, 55,232,164,254,125,154, 92,193, 53,207,251,125,161, 60,150,226, + 35,103,130,159, 24,189,231,124, 10,140,131, 71,169, 76, 63,246,180,237,138,216, 39,198,126,144,166, 64,151,203, 37,229,133, 18, +230,176,152, 36,241,188,135, 48,145, 73, 98,139,245,138, 31,126,250,204,186, 91,179,114, 53,149,181,252,120,255, 72, 84, 17,103, + 90, 78,211,200, 41,137,248, 86,151,140,199,202,106,156, 19,192, 83,211,200, 42, 15, 45, 98, 51, 99, 52,117,171,112, 36, 42, 7, +171,149,208, 26, 43,101, 22,151,135, 65,227,231,159, 39,150, 84,132, 99, 41, 38,130, 15,226, 12,201, 82, 60,139, 13, 76, 72,114, + 57,137, 29, 53,133,114,145,232, 84, 0, 45, 81,138,199,178,250, 20,231,138,136,196,132,124, 86,232,102, 6,130,202,203,148,100, + 30,129,171,156,139, 5,184,116,116,161, 8,222,156,136,200,114,138, 82,140,163,201, 89, 80,170, 42,235, 82, 3,166, 69,239,148, + 19, 92,100,228,105,153, 36,228, 50, 77, 80,204,170,244,249,121, 45, 15,204, 12,149, 81, 10, 99,139, 88, 66, 25,198, 36,147,129, +218, 40,198, 4, 99,144,231, 86,145,160, 64,107,194, 20, 81, 86, 10,197, 28, 3,170, 49,196,232, 37,208, 38,103,166, 24,232,199, +113, 89,219, 76,126, 98,149, 59, 97,169, 23,194, 41, 69, 53, 46,231, 89, 65,213, 42, 17,240, 46,150,173,235,153,211,162, 29, 17, + 76,223,140,223, 21,125,136,176, 14,156, 54, 50, 69, 12,115, 68,177,216,121,117,212, 87,124,150, 75,102, 1, 37,107, 93,205,235, +166, 98, 21,173,172,229,112, 60,200, 68,211,186, 2,231,201, 84,117, 35,171,234, 82,176, 41,101, 80, 70, 23,203,235,204,245, 55, + 69, 80, 91,172,123, 18, 49,138, 93,212,184,104,162, 15,212, 38,211,117,107,148, 49, 76,167, 51,207,187,103,148, 53, 84, 37,213, + 44, 78,190,164,199, 24,114, 31,137, 33,200, 78,151,139,217, 62,102, 69,206,174,236,236,202, 67,155, 34, 99, 14,248,144,105, 26, +195,237,203, 27, 72,153,243,113, 32,249, 64,244,129,182,174,153, 50,160,197, 34, 53,150, 36,182, 56, 5, 66,244, 69,145,105,112, + 86,172, 80,231,105,194,150, 68, 40, 65,226, 90, 98,217,211,134,105,162,182, 66, 60, 35,136, 26, 84,107,197,216,247, 24,101,121, +243,135, 63, 50, 78, 35,195, 73, 50,133,155, 85,199,139,215,119, 28,158, 30,105,191,125,205,195,195, 51,167, 97,224,155,119,223, + 98,173,229,241,241,153,108, 45,227, 56,242,184,123, 66, 89, 67,109, 29,202, 40,154,118, 75,109,107,190,255,241, 7,142,253,128, +171, 42,106,109,104,106,195,186,105, 57, 15, 35,227, 32, 80,156,132, 98,138,137, 24,179,240,194,173,226, 20, 50, 41, 20,149,120, +138,114,169, 39,133,206, 51,119,187,146,159, 79,206,164, 88, 44,101, 86, 99,201,248,116, 81,103, 54,149,193,150,195, 83,172, 30, +153,198, 86, 88,227,168,157,165,174,164,147,220,157,197, 62,145, 20,146,139, 92,215, 52,133, 73, 48,171, 62, 41, 63, 51,233,218, +132,211,172,149,120,114,181,147,245, 71,200,178, 26,153,145,148,243,174, 52, 71, 48, 42,200, 75,142, 96, 19,147, 74, 50,174,203, +178, 36, 72,102, 36,100,232, 79,242, 60,213, 77, 7, 57, 48, 77, 99, 17,144, 25,114,244,156,206,103,140, 82,212,174, 66, 69, 47, + 30, 95,103,137,251, 64,242, 18, 23,234,140,163, 63,246, 60,238,158,209, 77,205,251, 63,190,230,253,171, 27,226,211,129,182,214, +220,221,189, 36, 76,129,195,209,179,219, 7,158,251,137,119,155, 53, 47,214, 29, 38,101, 62,252,246, 11,255,246,195, 7,194, 52, + 97,180,102,119, 26,201, 89,243,242,197,138,155,117,139,179,154,231,221,142,167,231, 61,135,254,136,115, 10,227, 44, 42, 6,172, + 46,142, 0, 45, 92,108,101, 52,142,134,251,231, 61,119, 47,239,184,109, 26,233, 74,202, 75,172,148,145,207, 87, 93,152,214, 75, + 71,149, 33,196, 80, 4,142,101,170,145, 47,255, 44, 22, 56, 46,144,154,203,172,176, 8,149, 10,125,172,104,232,191,222,123,207, + 61, 83, 86, 5, 8,146, 22,244,235, 50, 78,215,146, 5,159, 10, 25,139, 18, 38,164,174,126,221,188, 23,215,165,240,200,115,116, +164,214,162,163, 81, 98,185, 91,166,254, 37, 53, 77,133, 11,162, 83,105, 37,214,212,162, 18,243, 62,178,223, 75,206,125, 93, 25, +110,111, 91, 78,231,128,177, 14,136,156,199,129, 92,114,239, 99, 84,133,165,151,197,227,158, 19, 93,229,248,109, 63,240,212,159, + 25,166, 72,163, 12,171,141,229, 95,127,249,130,114, 14,103, 53,117, 91,241,121,119,100,119, 20,223,243, 33, 12, 34, 46,181,149, +232,142,144, 46,175,210,134,182,210,172, 55, 21,174,178,179, 36, 0, 29,132,132, 89,219, 68, 87,215,116,109, 77, 93, 87,139,248, + 79,207,214,218,197,191,159,136, 57,144,162, 70,165, 32, 43, 56,239, 23,164,182, 15, 19, 57,106,140,171,209, 81,254,144,144,228, +194,206,204,106,237,226, 84,136, 10,116, 16, 33,120,148, 93,178,159,181, 77, 81, 19, 51, 16, 77,193,254,114,165,160,151,139,124, +182, 1,231,114,145,229,185,104, 95,210, 67,229,231, 97, 82,137,179,205, 17,147, 51, 6, 51, 79,237,201,170,128,134, 74, 65, 58, + 91,229,200,133, 46, 87,184, 6,255, 63, 87,111,214, 37,199,117,101,105,126,119,178,193,221, 99, 2, 72,136,162,164, 76,101,173, + 92,245,255,255, 75, 87,119,173, 94,213, 89,153,165,212, 64,130, 0, 98,112,119, 27,238,216, 15,231,152,121, 32, 31, 40,137,146, + 24,136,240, 48,187,247, 12,123,127, 91, 58,229, 45,231,222, 41, 58, 85, 10, 63,172,133, 34,171,131,210, 10,222,130, 13,158,146, + 97,105,234,230, 81,176, 85, 77,149, 92,192,133, 78,112,228,198,208,170,131,156, 37, 38, 27,209, 33,229,184,202,199, 3,196,165, +145, 11, 52,132,163,110,140,161, 57,185,240,156,149,103, 50,215, 70, 64,158,241,218,138, 20, 59,214,226, 61, 16,165,219,199,216, + 93,132,220,138,219,115, 23, 74,149,223,136,113,117,211,185,235,159, 45, 22, 1,235, 12,134,132,221, 83,190, 55, 27,105,221, 21, +240,219,148,173,214,140,237, 2,203, 85,162,191,189,247, 92,215,196, 49, 70,194,182, 90,123,183,150,145,162,223,127,151,139,176, + 69,156, 59,157,130, 86, 26, 94, 94, 48,217,199,150,152,233,130,231,254, 81,212,160,243,178, 82,114,165, 15, 1,223, 5, 17, 64, +149,170,217,235, 70,114,128,115,194,121,127, 11,150, 80, 17, 69, 53, 86, 89,252,109, 71, 1, 10,243,189,208,159, 70, 30,238,143, +212,156,153,166,153,203, 52, 97, 59, 65,171,230,101,165, 27,122,214, 90,149,161,140, 86,180, 26, 14,111,165,138, 94,214,168,114, +126,243,157,237,198,232,131, 28, 83, 34,116, 97,183,177,236,180,161,152,248,241,231,159, 25,124,224,229,245,194,125,255, 72,173, +142, 79, 63,254, 64,108,137,102, 13,143, 15, 15,252,143,255,241,255,240, 48, 30,132, 74, 87,196, 83, 30,124,207,203,231, 95, 72, + 49,131, 15,244,157,151, 32,147,195,200,186,172,124,254,245, 87, 42, 77, 35,107, 13,135,177, 35,149,194,186,102, 98, 42,228, 88, +104, 77,118, 66,206, 66,215, 57,217, 9,173, 9,191,113,180, 53, 14,192,153,119, 25,213, 78,184,205,177, 36, 5,217, 4,138, 21, + 17,209, 6, 64,232, 67,135,195,171, 96, 66,254,187, 78,211,161,122,111,233,135,142,102, 44,151,105, 18, 26, 83,147,196,164,190, + 11, 74,106,147,177,160, 53,104,197,254, 46, 89,203,200, 78, 45,116, 30, 31,156, 4,130,213,188,123,255,141,118,147, 24,221,139, +109,123, 41, 39,187, 62,153, 11, 55, 21,252, 68,181, 61, 86,226, 42,193, 60,195,177,167,228,149,165, 70, 29,255, 73,215,185,204, +146, 64,117,186, 59, 97,109, 35,165, 85, 70,116,139, 33, 93, 87, 69, 15, 59,210,186,242,250,242, 70,181,158, 63,254,241, 19,191, +255,233,129,120,121, 99,164,114,127,255, 35, 41, 53,150,107,230,229,121,229,249, 60,243,225,254,200,199,187, 35,126,232,248,235, +223, 63,243,239,127,249, 43,243, 60, 1,150,111,211,202, 92, 42,159, 62, 62,241,116, 26, 57,140,158,243,101,225,249,245,149,243, +245, 76, 42,153,110,232,247,157,165, 11,157,156, 91,220,180, 36,206, 7,210,154,184, 92,206,220,221,221,203,126,176,233, 69, 93, +170,166, 17,219,239,112,174,230, 29,140,166,170,168,201,234, 72,214, 40, 15, 92,198,186,239, 12, 57, 91,150,248, 38,150,121,119, +225,191,207, 45,175, 27, 87,190,202,161, 92,155, 20,218,212,239,137,116,155, 95,222,238,222,102,189,216, 43, 42,106,170,123,102, +115,211, 64, 12,233, 70,244,189, 83, 75, 85, 41,249,166, 3,216,212,198,170,163, 48, 78, 45,122, 70, 10,254, 77,244,115, 62, 79, +188,189,205,140,135,192,253,105,196,121, 88,150, 69, 40,102,173, 96, 76,165,235,122,210, 10,165, 37,181,117, 85, 13, 23,177, 92, + 19,124, 62, 79,172, 73,232,111,132,192, 95,126,249,198,151,183, 43, 79, 15, 71,142,131,227,178,204,156,215,200, 48,122,146,106, + 17,250,190, 23,120, 73, 78, 96, 61,193, 88,198,222, 50, 30, 60, 67,176,180,154, 72,165,225,155,132, 49,141,131,227,120,232, 25, +134, 81,196, 75,202,112,144, 85, 87,209, 26, 75, 60,217,155,104,177, 21,233,116, 99, 78, 26, 94, 34, 68,201,156, 35,224,233,188, + 98, 92,179,164,190,149, 82,183,143, 86,139, 65, 75,140, 21,219, 34,212, 36,150,208,218, 84, 15, 83, 84,127,227,113,201, 82, 93, +163,233, 36, 3, 45, 14, 69, 24,102,112, 77,210,206, 64,186,202,198,246,231,180, 29,205, 43, 95, 59, 83,116, 5,224,155, 85, 59, +153,213,177,241,187,162,206, 88, 41,132, 84,161,109,155,209, 73,220,254,197,160,218, 61, 85,208,234,110,127,203, 37,175,165,236, + 65, 60,187,165, 19,110, 25,242, 85,166, 4, 88,177,115,225,197, 9,229, 76, 16,215, 68,107,196,101,165, 36,153,100, 96,192,153, + 70,202,133, 92,147,188, 31, 77,178, 13,173,187,217, 74,107,219,203,141, 61,120,184,238,159,215, 59, 41,131,181, 88, 44,169,233, + 68,197,186, 93,236,105,173, 83,253,129,124,189, 44, 14,238,119,221,248,141, 44,103,204,198,147, 71,236,182, 58, 49,201,165,210, + 43,175,225,219,243, 51, 79, 63,220, 19, 99,210,148,193, 70,169, 98,247, 19, 1,163,132,203, 8,218,168,170, 30,161,233,154, 72, + 10, 42,171, 19, 56,207, 59,244,227,245,122,225,225,233,137,190,239, 49,192, 60,137,234, 52,132,142,174,235, 72, 73,149,207, 33, +144,115, 35, 71, 65,244,109,202,104,179,239,211, 21, 94,175,172,104, 99, 45,177, 20,193,223, 53,184,187,127, 96, 24,143, 76,115, +100,158,103,214,117,225,241,116, 47, 35,102, 19,193, 90,150,117, 38,107,238,186, 84,183,186,171,115,150, 86, 4, 75, 24,188,135, + 37,237,227, 8, 99,161,247, 66, 29,138, 57, 42, 86, 80, 84,130,219,126,218, 13,158,251,199, 59, 94,158, 95,112, 15,247, 24,239, + 25,108,224,116,119, 39,150,130, 15,143, 44,215,153,243,203, 11, 63,127,248,128,247,142,249, 58, 97, 72, 4,231, 57,159,207,194, + 35,246,134,224, 45,195, 56, 50,220, 31,249,199,127,252, 39,151,183, 11, 93,232,233,130,167,239, 28,131, 15,172, 41,177,172,137, +152,164, 64, 73, 42,150, 26,188,140,245,174, 49,147,107,193,219,186, 63,112,206, 42,217,203, 89, 81,139, 59,217,229, 52,107,232, + 7, 25,245,198,184,144,245,197, 27,130, 39, 56,222,193, 8, 26,157,162, 97, 59,103, 25,122, 73,165, 91, 82, 98,141, 81, 69, 88, +162, 68, 29,251, 65,146,145,138, 40,168,173,134,134,180, 34,187, 94,177, 53, 53,124, 16, 37,175, 11,226, 37, 69, 69, 67,173,106, + 28,168, 41,250,138,176,147,199,196, 32,171,103,255, 6, 69, 49, 34, 11, 74, 75, 34,231,130, 11,158,180, 22, 74, 90, 68, 43,225, + 28, 14, 41,202,114,174,244, 99, 79,201, 11, 75, 91,101, 79, 89, 61,203, 57,146, 22,169,194, 75, 42,156,207,111, 92,115,228,211, +239,127,224,119,191,123, 34,191,190, 97,215,133,135, 63,124,162,243,142,235,146,248,237,203,149,231,151,149,135,135, 3, 15,163, +228, 45,255,231,223,127,229,175,191,124,230,124,153,168,181,113,157,103,158, 47,145,223,255,238, 35,143,199,145,187,174, 99, 94, +163, 92,232,231, 55,150,180,224,130, 36, 19, 58,107,112,189, 23,177, 81,240,108, 0,184,224, 4,207,217,225, 36, 8,169,100,137, + 87, 45,234, 77, 51,194,109,216,242,211,183, 21,135,176, 32,138, 22, 63,238, 22,119, 90, 43, 24,101,197,151,119, 35,207,253,159, + 55, 55,148,236,187, 4,179, 91,135,190,203,121,119,145, 14,219,212, 64,109,138, 91, 17,216,116, 93,179,101,180,111, 62,245, 45, + 48,102,235, 24,170,142,203,173, 66,114,154,101,103, 23,108,106, 96,175,225, 38,117, 27, 67,155,141, 93,113, 83,203,163, 59,224, +235,117,230,252,182,208,247,134,211, 97,192, 26,184, 92, 22, 82, 46, 98,179,180, 6,111, 3,215, 34, 93,172,113,149,156, 42, 49, + 37, 58, 43,151,214, 63, 94, 47, 92, 98,150,184,226, 26, 57, 79, 87,114,169,140, 67,192, 59,233, 97,174,171,164,163,209, 36,225, +234,110, 60, 16, 58,249, 29,246,122, 32, 31,189,167, 27, 20,208, 84,155, 0,102, 58,135,109, 86,108,108,163,167,235,220,173,248, +210, 67,189,181,219, 69, 85,114, 98,251, 85,137,134,160,208, 74, 35,166,188,139, 4, 83, 74,228, 82,232, 59, 67,215,139,238, 36, + 41,243, 67, 46, 51, 37,160, 89,153,236, 77, 57, 97,115, 17,254,183,177, 50, 77, 41,133,208, 11,116,203,109, 18,182,162,211, 22, + 35,142, 26, 48,212,102,229,114,173,101,231,195, 91, 5, 5,109, 26, 7, 57,115,204, 59, 60,111,221,139, 84, 54,189,196,123,205, +101,187,213,130,230,221,196,200, 24,222, 17,233,164, 32,104,165,106, 49,171, 74,120, 37, 34,202,125,237,118,129,101,221, 80,182, + 58,105, 40,181, 98,157,252,127, 10,114, 46,138,255, 92,120, 1, 13,195,229, 50, 97, 75,222, 71,229,219,123,178,228,140,119,114, +247,184, 77,180,230,156,104, 79, 76,123, 39, 0,229, 93,222,128,174,141,116,220,238,204, 22, 80, 84, 40,181,224, 67, 64,113, 39, +132,205,110,134, 80,249, 54,214,190,181,117,111,198, 90, 51,239,254,179, 60, 95,118,203,144, 87, 97,155,243, 22, 99, 2,151,235, +204, 79, 63,255,128,247,179,114, 35, 12, 37,167,253,123,145, 71,193,210, 90,150,230,160,241,238, 47, 43, 98, 72, 26,185, 85,188, +216, 80, 68, 24,113,190, 92,248,249, 15,191, 35, 72,155,200,162,222,191,190,235, 25, 14, 7, 37, 50, 85, 66,215, 81,114, 36,197, +168,194, 25,249,130,238,157,106, 87,252,166, 86,108, 46, 86,198, 67,219, 72,248,225,120,226,112,119,224,109,186, 50, 77, 51,166, + 84,130, 15,180, 90,241, 65,172, 76,171,238,234, 75, 17,171, 66,112, 65, 71,195,178,143,246, 33,208, 59,203, 53,205, 50, 30,211, +203, 35,132,142,188, 70,214, 53, 18,252, 64,202,137, 86, 10,214, 5,156,115,220, 61,220,243,118,126,227,242,124,225,247, 63,255, + 68,179,142,110, 24,240,214, 83, 91,229,225,227, 7,254,227,223,254, 55,189, 90,149, 76,131,101,154,112,190, 35, 45,137,243,235, + 43, 77, 83,119, 14, 67,199, 56, 30,137,105,225,215,223,126,165,213, 42,150, 38,103, 25,250, 14, 99, 12,203, 42,151,122,202,137, + 12,196, 42,196,179,161,235, 73,185,178,172, 73,132,112,222, 19, 83, 20, 4,167, 85, 29,187, 42,227, 49, 18, 99,218, 7,217,101, +167,156, 88,179,236, 94,130,115, 12,161,211, 96,196,130, 41,150, 96, 69,129, 27,172, 97,232,100, 93, 17, 75,230, 58,205,186,203, +149, 46,106, 24, 37,223,185,106, 20,110, 80,235, 84,209,175, 45, 15, 53, 34, 10,234, 45,206,139,223,117,137,171,140,157,155,142, +123,219,198, 74, 46,187, 16,174, 97,176,185,237, 47,106,209,137,130,177,142,146, 11,121, 77,242,206,183,200, 26,219, 62,150,221, +186,144,205,198,209,136,172,235, 5,235, 28,157, 59,210,178,103,157,197,159,107,155,227, 58,173, 92,151,196,135, 31,158,248,195, +159, 62, 96,227,140,185,156,249,240,233, 7,186,174, 35,151,194,183,223,174,124,121,153,121, 60,157,184, 31, 6,156, 55,252,242, +249, 43,127,251,237, 43,175,175,175,228,156,153, 99,225, 53, 70, 62,125,250,192,227,233,200, 16, 28,201, 22,222, 94,206, 76,211, +149,105, 89,192,111,240,157,204,113, 28, 9,189, 39, 21, 13, 20,178,130,119, 60,132,145, 32,146,102,188,151,113,168, 17,162,135, +210,189,212,213,237,252,247,211, 16,187, 5,162,168,216,201,154, 93, 32,103,182, 48, 21,117, 36,200,127, 46, 91, 59,113,235,248, + 77,253, 78,136,246, 95,243,203,219,119,226,157,114,163,200,237,108, 90, 17, 59, 85,243, 62,250, 85,173,107, 42,194,222,212,249, +213,220,196,118,141, 42,161, 67,141,125,154, 38, 93, 87,253, 14, 80,179,237,243,205, 22, 78, 89, 27, 37, 23,201,147,238, 12,135, + 99, 79,240, 66, 92,140, 73,130,140,140,173,244, 93, 71,201, 50,210,244,193, 50, 47,149,235,188, 80, 75,229,208,117, 44,235,196, +235,180, 96,144,248,224, 37, 37,198, 62, 80,157,167,179,208,123,199, 84, 42,197, 90,241,245,150,198,105, 28, 56, 29, 28,198, 75, +113,227,109, 32, 56,177,191, 89,167,145,176,128, 53,221, 59,219, 82, 16,191,123,107, 80,100,165, 87,236, 38, 78,107,218, 61, 87, + 73,244,106, 50,205, 74, 37, 75,232, 74,134,168,185,170,181, 84, 82, 78,196, 82,120,242, 3,193, 58, 98,147,152,208, 92, 42,185, +202,202, 75, 34, 61, 27,111,243,194, 89,237,157,102,243, 61,171, 5, 45,212,134,141, 70,246,224,126,101,232,253, 30,199,140, 2, +139,130, 15, 56,235, 40, 24,154,145,177,181,169,178,135, 47, 57,137,104,211, 26,197,125,203,206, 63,103,233,162, 77, 80,135, 92, + 43, 34,150,211,112, 22, 76, 83,104, 16,183,189,113,187,117,252, 24,153, 66,138, 80,206, 80,177, 50,237,107,142, 88, 12,169,100, +217, 17, 91,139,173, 13,107,171, 92,244,102,155,230,200,243,225,130,195,122,225,161,123,188,100, 5,104, 72, 75, 74,133,243,249, +194, 93,176, 4, 19,110, 19,130, 86,136, 41, 82,171,165,239,251, 61,213, 44,120,175, 60,121,181,124,234, 59,149,155,228,144,108, +176, 29,121,222,111,153, 5,108,252,121, 99, 40, 70,249,244,134,189,251,150,240, 43,203, 22,110,224,252, 13,230, 3, 50,217, 20, +247,130,248,241, 91,189, 21,191,100, 8,131,103,154,102,177,234, 41, 57,206, 91, 79, 73, 82,228, 89, 47,223,131,179, 86,133,179, +146,120, 87,148,190,104,245,189, 46,166, 73,131,216, 84,204,212, 98,196, 97, 25,199,131,132,158, 24,195,249,124,129, 6,195,113, + 84, 79,102,101, 89, 22,186,113, 32,165, 68,138, 34, 72,177,246, 22,238,172,191,111,137,207,203,178,163,245,206,176, 46,178, 71, + 54,214,114, 24, 6,114,129,231,231,103,166,243, 69, 19,126, 36,149,192, 89,203, 18,101,236, 95,115, 35,229,164, 85,167, 37,103, + 9,128, 40, 20, 30,143,143,228,180,202, 40, 66, 71, 62,161,243,248,206,178, 94,102, 33, 40,245, 18,116,159, 83, 98,112, 29,227, +225,128,247,158,191,254,237, 87, 30,239, 31, 5, 57,234, 28,135,211,145, 76,161,239, 59, 50,149,175, 95,190,242,241,225, 65, 38, + 7,235,202,186, 68,220, 56,240,245,183, 95, 56, 95, 23,154,147,238,254,225,116,196, 29, 58,126,251,229, 51, 47,191,189,210, 15, + 61,190,151, 75,189,243,142,152, 11,235,154, 88,210, 66,110,141, 36, 72,102, 14,193,225,172,225, 58,175, 20,165,192, 89,227,110, +208, 3, 35, 83, 14,107, 28,174,243, 20,228,255, 51,142, 3,185, 21,230,188,168, 50,218, 48,120, 47, 35, 79, 29,217, 7,199,206, + 94,238,189,151, 11,223,192, 60,173,226, 79,213, 60,222, 97,232,232,135, 78, 42,215, 34, 9,119,198,234,133,190, 83,165,196,147, +217,117, 14, 23, 12, 41, 69,214,152,121,121,123,227,233,233,132,247, 18,114,145, 91, 86, 81,158,100,172,167,170, 59,241,150, 49, + 77, 30,246,172,137,100,165,136,126, 2, 5,238,148, 77,137,186,237,234,106,166,228,170, 25,237,134,245, 18, 1,203,208,141,100, + 59, 83, 83, 16, 79, 52,150, 18, 35,243, 52,113,122, 58,241,195, 31, 62, 96,215, 72, 57, 95,248,248,187, 39,198, 67,143,181,129, +223,126,123,227,243,111,145,195,216,241,113,236,112,222,240,183, 47,207,252,246,245, 27,111,111, 51,243,180, 50,199,149,115, 50, +220,223, 63,241,225, 52, 50, 6,143, 9,129,183,215, 87,174,211,204,178, 46, 24, 47,207,104, 45,149,195, 48, 48,140, 61,135,251, +145,101,205,196,148,176,157,219, 17,161,227,208, 81, 77,163, 27,122,237, 56, 36, 23,161, 82, 20, 17,233,110,126,241,173,154,111, +155,119,219,106,134,116,219, 33, 62,214,105,126, 66,107, 58, 51,108, 55,235,141,230,144,183, 93,102,201,119,151,185, 28, 82,178, +119,126, 23, 76, 37, 69,112,105,251, 24,123,239, 42,119, 49,157,218,113,106,217, 3, 94, 44, 55, 34,151,249, 47,121,239, 70, 45, +143, 70,119,134, 77,119,143,178,103,102,135,118,136,117, 86, 4, 95,141,198,117, 94, 73,107,165, 27, 61, 33, 56, 98,150,207,179, + 20,105, 18,172,247, 84, 21,225, 57, 87, 73, 83,102, 90, 35,115,174, 28,156,161,180,200,229, 90,136, 89,186,201,101, 78,220, 29, +123,140,109,184, 96,233,173,215, 20, 25, 85,248,151,198,208, 5, 14, 7,135,115, 5, 99,101,172, 57,120, 75,103, 53,247,192,216, +237, 53,209,248, 83,135,243, 21,235, 33,215, 34, 99,108, 21,140, 39, 20,252,161, 13,207,186, 38,182,244,218, 53,102, 82,169, 82, + 36,213,130, 35, 96, 49,228,154,201, 72, 78, 68,201,150,181, 46,196,181,112, 61, 95, 89, 82,161, 84, 17, 19,123, 44,107, 41, 76, +243, 66, 53,134,164, 72, 80,139, 68,110, 26, 3,217, 84, 90, 52, 92,215,134,237, 10, 79,237,192,193, 75,225,127, 89, 11, 7,215, +120, 60, 53, 66,240, 56, 59, 72, 81,229,197,166,150,162,232,148,134, 49,236,103,118,169,137,148,171,118,157, 78,153,226,150,170, +129, 78,125,144,203,179, 52,229,211, 35,182, 84,245,230,189,183, 91,236, 43,169,170, 23,224,142,155, 70,154,189, 16, 28, 94, 45, +112,205,212, 61,123,220, 20, 41,254, 10,146,108,183,219,233,212,151,110,172, 33,120,129,139, 45, 75,228,228, 15,234,237,151, 51, +197, 91, 71, 74, 66, 42,236,251, 94,207,162,138,117, 14,220,187,130, 87, 57, 17, 86,119,227,239,115, 22,182,224,155,247,193, 44, + 34,163, 20,225,175,125, 63,168,175, 21, 69,134,224,144, 41,130,216,221,138, 6, 26,249, 93, 59,227,172,147,142, 58,179, 79,162, +189,119, 44,113, 37, 71,185,212, 99,203,123,114, 99,202,133,209,185,125,106, 99,173, 33, 87, 67, 46, 18, 68,179,167, 61,154,155, + 63,223,111,120,193, 57,174,244, 99,207,225,120,196,171, 41,254,245, 77, 46,220, 97, 24, 20, 65, 40,210,125,219,245,164,235, 68, +201, 69,198,197,222, 81, 12,244,155,117,230,221, 8,214, 26, 67, 90,133,217, 94,171, 8, 76,196,115, 26,185, 78,146,159, 29,186, + 14,211,170,198,229,101,225,248,150, 74, 86, 48,206, 81,161, 55,155,154,242,120, 56,113, 60, 30,120,249,182,234,216, 67, 70, 19, +161,235,104,205,242,182, 94,117,247, 43,208,140,148, 18,119,143,129,195,221,129,151,191,252,157,245, 45,210,255,243, 35,190,147, +112,151, 97, 60, 82, 91,225,112,119,199,219,111, 95,193, 8,193,199,250,192,245,229,149, 70,194,219,131, 98, 41, 13,169,194,221, +195, 29,135,135, 35, 57,101,190,252,246, 5,163,251, 57, 81,204, 6, 26, 72,210,218,146,164, 64,193,136,199,212,192,224, 3,181, + 54, 98, 42, 42, 34,174,116, 52, 22,203,238, 13,110, 86,198,238,168,210,189, 15, 50,130, 93, 22, 57,240,104,141,206, 7,154,145, +232, 84,107, 13, 62,216,125, 13,210,233,120,223, 88,195,180, 70, 98,204,138, 40,149,138,117, 24,123, 93,149,202,142,108,139, 78, +221,242,129, 65,170,104,223,137,231, 63,197, 68,105, 34,206,153,231, 74,223,101, 90, 47,227,167,156, 50,107,142, 59,192,196, 99, + 49,182, 72, 39, 83, 11, 62,104,167,159,181,219,108, 18,179,154, 91,149, 12,230,174,163,115,129, 82, 18,113,141, 56,163, 21,186, +203,170, 14,246,212,218, 19, 87,139,109, 89,243,166, 45,235, 18,105, 67,207,199,159, 63,112,232, 26,235,151, 11,191,251,112,199, +177, 31, 9,193,243,235,215, 11,127,251,229,141,187,113,224,195,253, 29, 49, 23, 94, 46,223,248,242, 58, 49, 93, 35,203,188,112, +157, 22,206,105,225,254,225,137,167,187, 3,157,243,184,222, 50, 93, 46,204,211,196,188,206,162,147, 8,150, 86, 32,244,129,187, +135, 35, 15, 79, 7,158,126, 56,113,189, 38,126,249,245, 27,161,115,132,206,147,114,230, 62,140, 12,135, 94,186, 4, 54,122,148, +193,108,185,223,220,130, 30,118,132,149,234, 12,164, 60,117,223, 17,230, 90, 99,239,150,183, 29,180,105, 78,147, 10,101,215,183, +109,176, 27,219, 14,238, 93, 76,171, 30, 68,237, 59, 56,236, 59, 34,216, 59,230,139,232, 34, 52,183, 89,199,163,117, 43, 28,222, + 77, 22,204,198, 82,216,184,238,108,147,130,246,142, 62,103,111, 64, 18,253,211,107, 46,123,252,100, 74,153,101,205,224,196,118, + 73, 45,146,137,157, 53,211,193, 89,154,177,212,146,240,206,114,157, 27,151,105, 33,208, 56, 58, 75,170,153,215,165, 80,179, 22, + 26,173,114, 60,202,239,161,150,202,177,115,248,160, 40,220, 6,121, 41,146,135,208, 55, 44, 73,172,144,206, 49,120,141, 44,222, +226, 51,247, 96, 29, 39, 77, 65, 21,165,123, 67,238,175, 92, 4, 16,149,219,102,213,109,148, 84, 72,181,176,166, 66, 45,134, 84, +211,206, 31,159, 98,226,104, 59,250,193,226,124,197, 85, 75, 91, 45,185, 85,174,203, 74,249,234,128,194, 50,205,114,209,230, 44, + 14,146, 44,221,181,181,142,209, 57,188, 53,100,223,232,141, 35, 87,193,199, 26, 7,215,169,176,196,140,109,141,181,171,196,184, +242, 58, 77,178,230, 25, 3, 93,174, 12, 24,124,128,146,147, 78, 25,228, 12, 25,250, 65,160, 96,106, 37, 75, 69,242, 28,142, 99, +175, 3, 40, 47, 2,191, 37, 82, 5,214,175,171, 38, 39, 22,181, 90,116,111,253, 29,233, 64, 86, 70,183, 71, 74, 39, 81, 26, 48, +179, 79,226,204,247,255,140,211,157,116,171, 98, 45, 52,149,224, 59, 33,171,105,179,216,116,237,106,177,196,117,101,213,156,247, + 27,101,212,226,180,209,153,230,149,195,225,128,239, 2,181,200,215,246,198,104,182, 60,187, 99,107,139, 45,222, 50, 11,218, 70, +215, 19,129,207, 78,186, 19,224,147,217,163,137,157,219,220, 65,149, 84, 26, 67,103,118,166,200,134,141,221, 39,101,212, 93, 65, + 47, 35,253,180,123,235,251,126,224,237,122,102,169,153,193, 57,166,154,246, 15, 76,194,208,110,214, 65,235,156, 22,218, 55,128, +136,211,176, 26,163,129,104, 30,100, 36,144,114,166, 63, 28,232,134, 17,167,202,243,148, 42,198, 91,134,161,199, 24, 67,202,153, +113, 56,224, 74, 37,197, 40, 62,201, 42,246, 3,107, 68,157,221,116,246,111,140,165,152,140, 49, 78, 70, 5,165,178,230,204,195, +227, 29,119,135, 3,181, 89,174,215, 43,206, 11,101,172, 2, 46, 56,150,101,145, 29, 69,147,157,153, 83,162,216, 26, 87,141, 3, +244,220, 29,142,170, 66,212,214, 87,100,217, 2, 8,104,133,117, 89,112, 33,136,210, 49,102,140, 13, 60,125,252,200, 60, 77,124, +253,229, 51,227,224, 57,126,184,151, 32,154,224, 56, 28, 58, 82, 46,116,206,243,242,229,133,113, 24, 37,144,192, 54, 17,220,185, +129,233,237,204,245,122, 21,120,191,201,124,250,240, 17,140,229,219,243, 43,223,190, 62,211,141, 3, 33,116,120, 47, 22,180, 82, + 42,243, 42, 35,182,106,140,170,107, 5, 27,219, 89,233, 80,114,107, 20, 99,232,155,193, 35, 99,149,166, 41, 94,206, 24, 66, 8, +116, 62, 8,188,194,201, 58,100,205,178,150, 8, 74,108,139, 49,225,156, 21,191,188, 18,144,134,206, 48, 4, 73, 42, 91,179, 16, +139,164,210, 52, 56, 11,227,161,195,122,171,213,118,197,233, 97,157,179,236,114, 36, 40,164,226,131,213,156,226,200,178, 38,134, + 62,208, 57,143, 37,113, 93, 47,196,228,105, 68, 82,148, 93,142,181,194,178,238,187, 64,167,185,214,115,204,228,107,193,123,139, + 71,224, 28,206,139, 61, 99, 93, 43, 37, 39,250, 33,115, 26, 14,106,241,235, 69,224, 24, 44,166, 9, 33,204,210, 81,215, 66,163, +144,148, 20, 85,106, 33,119,142, 31,255,120,199, 93,223,168,223, 68, 0,119, 58, 29,240,125,224,249,165,240,215,191,127, 99,232, + 71,126,122,188,231, 50,175,188,206, 11,151,121,102, 94, 22,174,211,196,219,245,202, 20, 43,167,187, 7,158, 30,238, 9, 94,124, +159,203,178,114,185, 94, 89,226, 76, 33, 97,189,116, 44, 99,239,185,123, 56,208, 13,142,187,187, 35,135,187, 3, 99, 87, 4,167, +147, 34,125,231, 72,113,197,216,123,134,173, 67, 80,177,143, 87,126,255,198,133,216,174, 57,163,151,252,230, 7,222,134, 94, 69, + 45,103, 22,139, 41, 58,226, 68, 97, 23, 55, 56,172,118,146,102, 31,183, 54,218,187,139, 90, 85,242, 58, 26,190,217,203,244,194, + 53,155,181,205,238,132, 63, 11,152,114,139,252,220,190,103,222,249,225, 21, 37,182,135,133, 96, 68, 77,221,182,110,189,221,186, +160,162, 98,188,205, 90,149, 91,145,177,170, 85, 54, 67,202,244,157,229, 16, 2, 75,202, 2,126, 41, 21,239,228,103,139, 49,138, +184, 84, 71,245,199,131,103,154, 11, 57, 79,164,109, 68,143, 35,216, 70, 82,125,137, 51, 13, 63, 88,134,193,236, 25,240,228,204, + 33, 52,232, 44, 65, 45,107,125,144,204,129,224,101,255,188, 99, 91, 55, 10,167,142,207, 29,150,138,163,106,244,112,205,210,105, +201,207,215,136, 89,198,230,198,200,185, 69, 21, 81,218, 48, 4, 98,146,228,200,190,151, 38,195, 25, 79, 63, 4, 46,243, 11,165, + 24,146,105,180, 20,241, 78,132,114, 20,104, 77,226, 52,109,149, 96,150, 37,103, 90,146,131,190,217, 66,118, 29,206,122,108, 39, +171,170, 84, 18,193,194,224, 45,125,231,120, 7, 64,217,135, 0, 0, 32, 0, 73, 68, 65, 84,121,189, 50, 93, 35,227, 16, 68,159, + 36,113,239,164, 18,153,215, 69,186,251, 90, 25, 67,192,251,130,177,114,137,197,210,152, 98,225, 52,116,248, 32,233,157,173, 53, +214, 37, 10, 26,252, 32,205, 93,206, 85,116, 20,154,233, 93,213,213,177, 21, 69,242,128,155, 93, 33,191,125,166,118,195,164, 22, + 5, 19,121,205, 29, 49, 55,205,205, 14, 97, 82, 52,246, 16,220,247,209,192,173,225,156,163,154,198,180,172,148, 4,177, 21, 58, +156, 94,196, 90, 44, 84,153,132, 62,198, 76, 63,120,108, 19,214,186,115, 65, 88, 42, 27, 35, 65,245, 49,173,213,125,229,177, 57, + 85,118,110,188,234,185,132,231,112,203, 55,183,187,110,164,128, 85,109,130,179, 24,111,223, 33,150,229,146,175, 91,194,162,181, +228, 77,160,106,148,164,216, 73,108,247,229,229,133,251,159,126,143, 95,163,236,198, 93,160,181,188,147,255,156,177, 84, 39,133, + 77, 86, 97,181,179, 91,116,166,217,168,191, 58,126, 71,184,200,227,225, 32,188, 92,235,136,113, 98,141,145,174,235,233,116, 63, + 28,115,194, 4, 79,172,133,184, 68, 25,133,176,147, 0,247, 10,204, 88,185,156, 74, 17,208,127, 97,123, 41, 51,119,195,129,227, +233,196,245,124, 33,174, 17,235,186, 93,116,229,157,147, 75,203, 90,214, 40, 29,233,221,221, 65,144,145,181, 96,141,140,238,157, + 83, 31,224,142,228,147, 60,219,208,247,228,148,152,231,153,225,116, 36,165, 66, 92, 87, 30, 31,239,233, 66,207,175,127,249, 79, +226,218,120,248,233,137,187,199, 39,150,117,229,167, 79, 31, 1, 24,199,129,183,243, 89, 70,105, 73,127,209,203, 74, 78,149,224, + 61,231, 95, 63,179,172, 11,169,192,253,253,129,167, 31,238, 88,230,133,111,159,191, 80,114,228, 56, 14, 74,108, 19,133,100, 92, + 51,139,254, 12,173, 57,225,187, 99, 9, 65, 82,120, 98, 74, 98,165,208,227,121,221, 50,172,229, 55,132, 53,150,177, 31, 24,250, + 64,174,194,188,143, 41,146,107,194, 27, 43,185,187, 73,160, 4, 93,208, 17, 85,169,116,214, 50, 56, 41,112, 48, 48, 45, 81,162, + 8, 85,177, 57,140, 3,161, 15,154,173,220,100,223, 91,223, 41,119,117,255,218, 13, 14,108,165, 85,195,154, 86,222,166,133, 82, + 68,245,187,182,132, 89, 18,118, 60,208,176,148,178,178,174,186,251,169,133, 24, 19,125,112,242,125,209, 88,115,100, 93, 36,134, +215, 58,199,225, 24, 4,243,216, 12,173,102,150, 37,179, 78,242,115,141, 99,175,207,147,188,152, 67, 63, 96,232, 49,101,146,142, + 66, 35, 39,179,135, 31,126,124,224,233, 48, 50,125,125,225,195,120,224,195,113,196,216,192, 82, 44,127,249,251,103,168,150, 63, +126,248,200,235,229,204,111,231, 51,185,201, 8,113,158, 22,222,222,174,196, 82, 24,143, 35,143,143,247, 4,181, 40,230, 28,185, + 92, 46,130,243,221,246,141,162, 79,226,116, 28, 57, 30, 6,198,211, 65, 72, 97,214, 51,158,122,254,208, 75, 28,177,117,150,101, +141,164, 82,208,136,110, 74,201,178, 31,203, 25,188, 68,214,154,118,203,191, 54,198,233,238,121, 67,133,202,110, 12, 85,182,110, +182, 38,209,147,168,224, 71,147,167,246,238,253,157, 23,220,236,255, 98,247, 68,171, 45, 81,107,227,115,151,186,197,106,154,189, +186,223,136,116, 85,199,237,173,202, 72,116,115,142, 72,158, 71,221,161, 40,155,183,126, 43, 36, 55,236,241,198, 34, 71, 11,151, + 82,228, 18, 55,250,121,108,234,158, 70, 99, 89, 86,114,205,156,194, 72, 65, 68,102, 57,101,172, 17,138, 27,205, 48,215, 34,151, + 29,134,195,161, 99,158, 34,245,178,236,113,196,166, 53,188, 17,239,118,204, 21, 55, 24,198,193,208, 5,143,245,194,101, 55,166, +209, 5,203, 97,244, 34, 14, 52, 94,188,232, 70,232,147,214,123, 54,218,202,166, 74,174, 69, 49,172,198, 80, 53, 56, 36, 21, 89, + 51,149, 44,113,161,117, 19, 50, 98,244,252,146,119,174, 68,209,149, 12,227,200,178, 92,241, 70, 86, 0,169, 10, 52,103,209,124, +247,148,165,168, 11,161, 42,127, 60, 43,187,253, 6,103,138,171, 16, 40, 55,212,107,163,146, 76,196,251, 74,153, 26, 81,121,251, +210, 29,122,190,189, 92,152,230,200,105,236, 56, 29,123,250,193,225,117, 39, 29, 83,102,138,105,159, 24,118,190,147,231,210, 66, + 74,141,231,215, 11,199,195,145, 99,223,237, 35,244,148, 18,111,215, 51,199, 65, 98,183,179,170,174,173,217, 98, 64,223,101,151, +217, 27,150,124, 87,254,171,130,194,170,168, 51, 97, 41, 37, 17, 58, 81,164,163, 69,106,169, 50,122,182, 86,250,230,166,171,216, +190,235,200, 41, 97,237, 81, 11,170,140,117, 35,181,202, 42,120, 43,178,106,183,233, 69,100, 95, 94, 20, 39, 27,215,196,161,246, +251,206, 92,110, 35,187,171,253,204,150,184,166,171, 40,239,236,142, 84,174,220, 0, 59,219, 51,190,145, 15,179,238,229,141,145, + 85, 6,220,146, 15,157,115, 55,125,204,119, 22,120,205,208,216,216,248, 70,127,110, 35, 30,245,243,229,140,235,254,128, 79, 94, +220, 36, 14,121, 6,171,234,109,244, 98,151,115,115,195, 8,139,155,198,168, 6,199, 26,131,223,132, 45,203,186,242,112,186, 39, +132,128, 15,129,151,103, 81,252,126,252,225,163, 88,214,182, 8, 57,239,201, 81, 68,114,173,190,227, 55,191, 19,218,126, 63,254, +147, 11, 57, 85, 73,218,185, 59,158, 40,192,116, 21,230,184,113, 14, 82,162, 15, 94,120,183, 77, 42,183, 37, 70,250,224, 57, 28, + 14,188,190,190,209, 74, 99,244, 29,125, 39, 12, 96, 99, 17, 43,131,254,114,156,113,248, 46,176, 68, 57,252, 69, 77,153, 49,214, +241,240,116,207,243,215, 47,204, 47,175,184, 0,227,211,137, 84, 43,214,119,220, 63,156,112, 65, 20,229,243,117,146, 67, 12,232, +186,158,249,114,166,235, 44, 41,102,230,235,196,188,172, 36, 11,159, 62,125, 34, 88,248,245,249,133,183,111, 47,244,253, 64, 31, + 28,193,201,203,213,170,140, 22, 37, 81,174, 73,214,178,177, 12, 26,202,146,146,168, 99,155,149,110,212,180,198,106,138, 86,172, +242,178, 12,221,200,195,221, 61,185,204,180, 42,251,151, 85, 3, 28, 4, 29, 40,200, 69,233,158,229, 69,113,214, 50, 4, 37,190, + 25,195, 26, 35, 41, 23,181, 38, 25, 66,240, 12, 99, 39, 23, 72,149, 28,116, 95,213,123,169,135,127, 67,247, 82,125,229,252, 38, +147,137,121,141,124,126,185,112, 26, 3,119,199,133,224, 44,211, 52, 67, 21,229, 55, 74, 92,138, 49,237, 10,107, 41, 66,178,140, +168,154,112,196, 11,150, 53, 22,140,135, 81,249,244, 56, 88, 83,161,149, 66, 54, 13, 23,192,101,177,193,245,126,164,196, 66, 43, + 19, 53, 37,210,178, 98,157,167,122,203,221,211,200,227,253, 72,126,155, 56, 58,207,195,105, 80, 6,191,231,223,255,227, 27,113, +138,252,249, 79, 63,179, 92,174,252,250,229,149, 22, 36, 28,226,229,114,225,252,118, 33,197, 66,119, 24,185,127,184,199,123, 75, +103, 13,174, 22,206,151, 11,203, 26,153,211,162,224, 21, 75,240,134,187,135, 59,238, 78, 39,198,211,192,241,238, 32,171, 27,117, +235, 29,198,142,113,236,105, 52,250,190,231, 50, 45, 92,175, 11,135,113, 84,175,119,149,224, 10, 13,117, 0, 45,178,156,219,134, +189, 26,130, 98,118, 23,135, 4,101,200, 8, 18,181,171, 85,101, 2,160,158, 89,105,176,229,101,150,125,118,251, 47,202,219,255, + 10,157,185, 45, 59, 91,147, 68, 48,246,156,245,194,119,244, 90, 43,178, 69,107,154,136, 92,235,123,127,178,217, 15,207, 90,183, +203,188,237,134,204,141,155,176, 97,116,154,122,209, 91,213,232, 78, 16, 90,101, 76,114,177, 90, 1, 95,229, 82,164, 48,237, 60, +206, 27, 76, 20, 49, 95,112,134,227,161,103, 90, 35, 83,205,186, 15,239,176, 54,147,115, 38,232,188,124, 24, 2,135, 83,135,247, + 50,233, 42,219,212,144,138,117, 94,248,235, 86, 70,202,222, 26,130,145,203,119,179,234, 85, 69,139, 74, 56, 70,147, 53,151, 53, +172, 37,235, 69, 95,245, 93,145, 3,200, 32, 69,154,115, 74,245,215, 76,241,152, 43,190,247,188, 93, 23,230, 53,107,194, 86,213, +196, 47, 37,107, 38, 41, 30,134,222,210, 89,199,178, 36, 98,150,248, 89,177, 27,202, 37, 50,151, 42, 25,240, 8, 14,187, 85, 67, +181,224,107,101,205,137,108,192, 27,131,115,141, 53, 23, 82,169, 34,168, 3, 74,140,100,215,176, 21, 82,145,166, 43,215, 66, 41, +137,110,232,169, 77,190, 6, 21,190,189, 77,212,212,248,248,100,101,167,111,229,178, 58,159, 39,172,119, 12,125, 71,171,141,117, +141, 66, 19,109, 98, 73,220, 64, 66,219, 54,105,227,166,111,226,180, 77, 68,107, 85, 37,159,115, 37, 81, 57, 6, 47, 43,191, 13, + 64, 92, 55,114,158,185, 69,191,106,128, 78,169,178, 34,206,181, 72,168,141,181,172,113, 97, 93, 87,137,174,221, 19, 15,185,129, +110,234,109,250,152, 75,198,187, 32, 57, 18,157, 35,167, 77,196,102, 84, 76,184, 5, 41,149,155,240, 77, 71,237,246, 29, 49,111, +163,213,109,153, 27, 27,139,221, 32,238, 16,107,205, 46,248,117, 78,114,235,119,166,220, 59,171,159,140,249,155, 38,188,201, 59, + 49, 14, 35,175,151,153,156,146, 90, 96,183, 16, 26,104, 53, 99, 77,175, 86,231, 45, 32, 70,226, 94, 41, 73,167,112,242,189, 90, + 26,222, 26, 67,170,133, 16, 2,227, 81,168,113,141,202,219,219,153,210, 32,244, 50,138,217, 40, 82,198, 24,226,186,138, 96,173, +214, 61, 65,108, 27,235,109, 9,176,180,219, 40,101, 75,193,241,161,231,241,254,129, 90, 11,235,186,226,188, 39, 78, 19,193, 59, +194, 56,242,252,118,161,247, 3,111,207, 95, 41, 41,114, 56, 62, 49,207, 51, 49, 37,142, 94,108,117,173, 73,178, 83,201,155,149, + 64,247, 27,214,115,236, 58,190,158, 95,168, 69,186,235,117, 77,220, 61,158,176,214,241,246,250, 74,137,141,211,233,192,233,225, + 72, 45,133, 15, 63,254,128,237, 7,108,239,153,223, 38, 74,140,156,175, 87,238,239,142, 96, 97,205, 18,227,121, 57, 63, 51, 77, + 51, 41, 53,142, 63,220,243,233,211, 19,215,215, 55, 94,158, 95, 88,115,228,238,116,196, 25, 35, 99, 25,164,186, 90,214,180, 23, + 23,214,201, 47, 57,168,231,190,230,219,206,100,235, 92, 82, 21, 50,208,198, 99,126,124,120, 36, 88, 39, 59,186, 86,153,230, 69, + 44, 96, 10,118,168, 88,186, 16,232,130, 7,196, 95,222, 57, 35, 99, 94,103, 72,165,176, 44,235,142,188,244,214, 51, 28,122,140, +146,154, 82,204,180,156,100,138,176,249, 84,117, 71, 54,197,133,114, 22,191,241,117,202,196, 34, 29,229,101, 78,228,146,233,187, +128,243, 78,128, 32,139,116,146,222,123, 74, 51,164,181, 82, 90,132, 42, 97, 60, 94,199,205, 69,237,122,213, 24,230,108,232,125, +195, 91,131, 55,162, 63,232,148,125,176,228,196,200,128,117, 14,143,151,238, 45, 38,210,180,138, 29,196, 57,134,135,145,187,251, + 3,117,158, 48, 41,243,225,233, 68,111,129,112,224,239,191,188,240,246,186,240,175, 63,253, 14,215, 38,254,215, 47,103,205,191, +206,188,157, 47,188, 93, 22, 81, 71, 31,122,142, 15,247, 4,223, 17,176,116,166,113,185, 94, 88,231,200,154, 35,185,101, 41, 22, + 91, 99, 60,244,156, 78, 3,195,224,233,122,139,241, 69,139,202,202, 92, 44,157,243, 24,231, 48,198,225, 44,164, 20,121, 93, 69, + 84,228, 52,196,195, 56, 11,197,208, 90, 22, 37,178,217, 14,150, 34,105, 90, 26, 20,209, 16,225,162,217,149,188,109,199,111,238, +117,115,149,221,166,221, 15, 79,245,148,183,119, 49,169, 26, 98,180,141,159,111,158,245,170, 35,252,186,171,189,154,118,252, 91, +110, 55,206, 96,170,136, 39,155,162, 66, 75,107,155, 67, 81,176, 3, 70, 47,233,247, 16,156, 77, 34,191,173, 23,182,172,118,115, + 83, 71,111,248,204, 90, 42,193,122, 70, 77,206,139, 57,147, 99,150,103,194, 35,180,200, 90, 9, 94,186,167,146, 11,113,138,140, +131,103, 28, 28,111, 68,113,236,118,114, 57,224, 12,163, 15,184, 96,118, 24,140,172, 19, 28, 46,136,206, 67, 87,189,146, 96,248, + 46, 29,207,154,205,150,134, 2, 61,184, 77,217,140, 32,166,133,175,205, 14, 96, 50,214, 98,133,221, 69, 69,124,212, 82,111,101, +124, 23, 8,193, 51, 77, 43,206, 27, 14, 7,199,178, 68,226, 26,105,213,144,162,174,165, 90,229, 48, 90,222,150,133,120, 21, 44, + 46, 10,210,106, 69,114,198,223, 98, 97, 90,181,232, 48, 77,244, 8,222,146,109, 99, 41,130, 6,110, 22,114, 54,212,148,247,105, +206,101, 46, 44,139,195, 92, 87, 14, 67, 79, 80,123,175,105,149, 83, 23,200,173,177,196,137, 90, 3,203,146, 88,230,204,227,135, + 3,166,101, 46,151, 51,125,223,115, 93, 34,121,109,220, 61, 72,242,227, 52,175, 10, 0, 19,205,130,213, 9, 19,251,122,177, 41, +165, 77, 47, 50,237,128,223, 11,232, 82, 78,194,210,247, 50, 86,223, 39,189, 91, 10,156, 81, 1,132,118,188,101, 83,166, 27, 43, +124, 15,231,232, 66,224,249,235, 11,113,202,120, 35,107, 68,163, 41,112,205, 10, 15,131, 6,133, 74,202, 43,169, 12,216, 38,171, +150,161, 31,185,174,171,156,195,154,232,230,182,160,152, 13, 20,209,218,222, 8, 89, 85,193,111, 46, 14,107, 52,204,101, 39, 59, +178, 35,120,171,169,186, 90, 52, 26,103,171, 69,188, 54,107,206,221,152,243, 91, 54,252,150,252, 22, 66,199, 60, 93,152,150,153, + 97, 56,176, 36,137,255,117, 90, 36, 11,249, 91,109,177,136, 43, 66,254,222,131,219,156, 54, 89,166, 13,198, 8,234,178,239, 58, +124, 8, 2,255,105,141, 56, 71,124,149, 0, 20,107,236,142,210,243,206,179, 94, 19,105,201, 80,178, 90, 99,183, 17,133,254,130, +172, 37, 89,131,205,168,232, 65,148,223, 67, 55, 48, 30, 59,150,117,165,208,240,189,103,153,103,238, 63,253,200, 60,207,242, 71, +120,120,121,123,198,251, 1,107, 29,203,114,193, 56,203,253,233,129,154,132,243,110,156, 28,168, 22,245,115, 3,190, 15,180,150, + 72,169,168, 74, 57,211, 5,139, 53, 29,111,111,111,196,101,193, 4, 75,184,147, 17,173,117,150,241,174,167, 63,141,180, 37,147, +214,149, 53,174,228,183,153,225,199, 39,242,180, 16, 92, 71, 73, 43,215,233,141,105,186,210,156,231,211,227, 3,206, 25,190,126, +189,242,246,118,165, 15,129, 16,228,208,246, 42,232, 88,163, 88,164,154, 49,210, 1, 90, 75,182,142, 90,100, 31,222,176,108,113, +247,182, 73, 20, 45,213, 9,185,205,194,195,241,142,135, 59,207,146, 86, 74,131,105, 89,137, 41,237,216, 65,154, 84,157, 93, 39, +149, 89, 45,104, 39, 34,124,227,102, 16, 85,246,134,108,108,150,225, 96, 25, 6,175,234,243, 68,138,133,160, 35, 85, 33,143, 41, +111,220, 86,230,184, 18, 27,140, 33,176,198,149,107,149,209,113,137, 48,173, 50, 78,247, 90,172, 93,215,200, 18, 43,216, 78, 70, +131, 85, 38, 14, 93, 43,210, 45, 57, 67, 37, 83, 16,190,114,107,134,235,210,180,155,131,222,102,156,241,196, 22, 37, 32,163,131, +148, 13, 31,238, 31,176, 86,158,177,124, 93,105, 21,252, 49,208,157, 6, 78, 7,143,143, 11, 46,101, 30,199,142,206, 57,236,241, +142,175,159, 35,191,125,251,194, 63,127,252,145,208, 53,254,231,127,126,198, 25,129, 38,253,118,190,112,157, 34, 37,174, 12,193, +112,124,120,192,117, 30, 99, 10, 29,134,249,186,114,141,145, 57, 47,172, 37,105, 17, 95, 5,206,211,119, 56,219, 8, 30,172,169, +194, 52,183, 50,134,181, 22, 82,245,152,108,101,207,105, 29,167,206,115,189, 92, 88,214, 9, 14, 35,166, 86, 33,103, 85,191, 95, +156,182,105, 8,134,122,215, 37, 20,227, 93, 6,181,245,239,184,234, 27, 23,222,239,123,185,102,110,194,186,237, 0,220, 56,254, +173,222,186, 2,107, 61,165,149, 77,249,117, 19, 69,226,169, 86, 24,226,155, 64,104, 99,208,111,199, 78,126,135,121,117, 13,197, +117,108,133, 64,187, 93,234,219,170, 0,244,249,222, 4,152,130, 86,221,102,144,213,138, 55,186,180, 66,109,153,174,107, 56, 43, + 81,148,185,137,178,124,240,142, 90, 50,105,145,128,149,206, 9, 94,122,158, 19,214,193,221,208, 49,165,130,243,133, 59,111,240, + 86,212,253,197, 52,130, 51,187,239,127,163,110,109, 98,166, 45,234,215, 24,135, 87,246,189,121,231,165,175, 77, 4,124, 75, 20, +241,222,186, 22,138, 17, 63,181,197,136,250,221, 88,156, 17, 16, 87,179, 71, 50, 17, 91, 10,142,134,247,154,139,238, 2, 54, 25, +226,146,148,132,153,249,242, 34,161, 52,243, 90, 72,165, 17,179,164,192, 57,107, 49,225, 34, 93,101, 92, 9,177,200,231,165, 33, + 34,201, 24,174, 75,225,117,145,162,216,153, 29,254, 14, 6,214, 34,202,241,224,196, 25, 96, 29,244,202,235,157,149, 71, 16,156, + 35, 56,201,236, 40, 85, 10,213, 57, 59,156,105, 28,250,192, 37, 46,172, 41,115, 24, 6, 2,134,111,151, 21,111, 61, 95,222,222, +184, 44, 51,127,248,120,207, 16,122,174,243, 66,170,149, 97,232,161, 72, 14, 64,210,217, 94, 83,145,100, 35, 83,240, 59,155,124, +139, 55,173, 77,216,235, 37, 75,103,234,149,171,145,170, 80,234,114,169,106, 43, 20,114,101, 53,130,184,240,186,195,146, 76,118, + 7, 49,105, 40,148, 99,190,206, 56, 39,107,151,162,171, 60, 43,237,178,120,243, 85,199,213,148,117, 79,173, 52, 15, 93,103, 49, + 29, 42,124, 83,145,181, 19,180, 47,136, 11,197,170,104,179,105, 97,236,189,149,233,166, 70,179,118,214,110,184,184,125,109,102, +138,122,242, 13, 56, 83, 85,177,175, 29,254,198, 60,192,226,172, 35,155, 44,238,166, 38, 69, 96, 73,149,238,216,145,170, 76,248, + 78,167,123, 92,202, 55, 75, 93, 45, 98,197,108, 13,131,186, 15,114,161,180, 34,236, 15,175,214, 39, 5,253,248,205,195, 58, 28, + 70,137,211,180, 34,132,248,237,183, 47,184, 16, 8,125, 47,149, 88,217,120,194,149,117,141, 34, 32,201,101,247,221,110,187,192, +170, 99,175, 86,139,124,224, 24,114, 51,212,148,120,252, 36, 25,217,113,137,244,125, 96,186, 46,196,165,112, 56, 28, 57,127,123, + 97,116,142,223, 94, 94,201, 45, 48, 6,203,186, 94, 89,107,230, 79, 31,126,224,216,123,190, 45,147, 88,191, 16,160,193,141, 63, + 44,126,196,156, 11,105,190, 96,135, 14,163, 35,104,214,133,117,158, 41, 41,115,208, 3, 26,103,232, 14, 35,227,225,196, 56,140, + 60, 63,255, 70,137,153,235,121, 98,248,120, 32,216,142, 52, 95, 9, 99,207,203,151,223,152, 47, 19,107,202,156, 30,238,249,248, +241,129,183,215, 51,111,231, 55, 98,105,220, 31, 58, 2, 14,175,180,161, 92,170, 8, 56, 74,145, 68,167,190,167, 96, 40, 77, 94, +228,193, 24,178, 17, 68, 33, 26, 58,144,154, 83, 27, 77,161, 15, 29,119,119, 71, 32,144,203, 66,140,137,121, 21,112,141,175, 14, +235,165, 90,115, 94, 84,241,173,102,188,109, 4,165, 97, 25, 44, 41,101,241,231, 87,121, 96, 67,231, 24,199, 78, 98,114, 83, 38, +198, 4,165, 82,171, 19, 71,138,109,202,124,110,123,167,183, 76,145,228, 43,115,174,124,121,157, 57,142, 29, 14, 88, 99, 33,198, +198,146,178,118, 61, 82,137,186,182,226, 29,140,206, 74,101,166,160,240, 53, 85, 46, 25, 82,182, 92,179,228, 32,251, 42,211,136, +163,183,100,215, 56,231,133,105, 22,232,196, 15, 39,207,161, 7,103, 34,197, 91, 72, 11,182, 84,134,241, 68, 55,142,244, 7,131, +107, 66,231, 59,121, 71, 8,158,251,135, 39, 62,127,155,249,247, 95,191,240,199,199,143, 12,195,129,255,247, 63,255, 70,109,134, +206, 53,126, 61, 95,153,215, 44, 26, 4, 83, 25,239, 30,177,157,199, 55, 24,176,164,184,178,172, 11,107, 76,172, 37, 9,146,178, + 74,140,234,225,216, 49,140,129,208,121,172, 55,251,168,176, 10, 21, 86,158,125,205,174, 23, 0, 11, 50, 61,185, 59, 72,135, 90, +213, 0, 83, 42,165, 37, 90,243,186,207,118, 26,188, 34,155,238,255,170, 74,151,203,169,238,118, 26, 33, 88, 73,122,214, 30,219, +210,208,131, 70,148,200,236,112,216,219, 37,182,121,149,171,217,198,160,183, 20, 56, 74,125, 55,158, 87, 80,168,218,166,110,182, + 29,115, 67,143, 42, 61,112,163,233,109,151,186,179, 98, 81,170,223,121,227,217,215, 50,117, 27,143,242, 62,214, 85,188,214,109, +143, 4,149, 52, 43,241,240, 54,114, 92,133,249,109, 28,121,205, 34,236, 58, 4,233,140,107,165,247,134,126, 24, 37,127,177, 22, +193,184,218,219, 84, 66, 58,163, 77, 40,103,212, 41,173, 83, 4,201, 26,210,168, 79,203,154,197,113,179,196, 76, 92, 43,107,105, + 84, 35,157,208,232,165, 88,171,120, 92,223, 17,134,158,140,165, 45, 11,190, 37, 33,162, 21, 65,147, 98, 27,203,180,242,118,141, + 92,166,196,146, 10,243,154, 89,214, 74, 74, 77, 16,176,213, 16, 21,238,115, 8,149,243, 28,105,165,225,114, 38,165,138, 55,242, + 44, 76, 73,166, 30,223,166,198,219, 34, 23,186, 65, 28, 46, 65, 89,253, 81, 25, 9, 69, 71,235,222, 65, 10, 50,138,119,206, 96, + 77,101,240,134, 88, 34,173, 21,114,146, 64,173,224, 51, 93,111, 89,163,184, 21,250,206, 83, 90,227,235,229, 74,177,134,154,224, + 58,205,244,157,135,206,243, 50, 45,164,156,233,250, 78,163, 74, 21, 49,108,234, 78, 70,148, 11,114,139,122,190, 69,238, 54, 85, +127, 90, 11, 49, 3, 36,250,160,130,204,106,104,205, 42, 65,205,236,171, 71,217,202,217,157,119, 96,118, 8, 76,195,118,129, 28, + 19,203,178, 42, 0, 73, 3, 99,222,165,163, 57,183,105, 67, 54,200,139,236,221,105, 82,252, 30,189,163, 40,198,216, 90,153,186, +224,110, 78, 16,222,133, 77, 25, 99,240,198, 73, 83,146, 43,161, 19, 88,142, 76,173, 20,238, 83, 42, 75, 94,241, 67,184,189,191, + 42,176,163, 33,207, 57,183,104,100,107,236, 86, 30,239, 26,166, 96, 61,206, 4,166,203,132,249,157,116,250, 2,118, 18, 65,107, +209,209,187, 53, 55,160, 81,169, 82,172, 59,235, 4, 20,134,193,185,128, 55, 70, 66, 25, 92, 16, 56, 75, 63,244,196,184,240,249, +215,207,124,252,248, 59,124, 31,100, 33,175, 41, 61, 57, 23,114,142,154,225, 91,100, 47,117, 99,226,237,223,100, 69,170,175,210, +132,133, 92, 74,228,241,254,132,109,242, 16, 62,221, 63,240,249,215,175,116, 67, 39,112, 18, 37,206, 61,191, 62, 51,116, 2, 12, + 88,211,204,221,227,145,223, 63, 61,113,185,206,148, 84,113,193,221, 84,189,218,144, 56,231, 8,125, 71,140,137, 84, 27,163,177, +116,135,129,183,215, 51,203,178,236,180,180,174,147,209, 77, 55, 28, 56,222,221, 49,140, 35, 53,101, 98,148,209,216, 52, 95,249, +240, 79, 63, 49, 93,207,244,206,227,173,101,157,102,214,121,161, 26,199,227,227, 35,193, 24, 94,207,103,166,105,166, 11, 86,249, +242,102, 87,207,206,107,102,141, 25, 3,116,125, 47,137,113, 49,145,151,196,154, 43, 31, 58,207,115, 19,140, 46, 77,227, 1,189, +199, 54, 8, 62,112, 26, 71,134,161, 39,214,196, 20, 87, 46,115, 36,103, 81, 86,249, 32, 57,208,198,130,183, 14,175, 71,184,177, + 13,111,197,218, 80, 11,172, 57,239, 34, 70,103, 28,125, 47, 86,170, 82, 26, 41,174,212,168,156,113, 18,182, 72,129,100, 29, 36, +228, 48, 93,115,229,101, 94,161, 26, 81, 40,231,198,215,231, 69, 71,192,154, 71,172, 23,209,150,217, 94, 74, 38, 85, 33,230, 29, + 90,196, 91, 67,172,137,101, 21,126, 51,192,189,119,248, 62, 16, 20,175,233, 53,164,228,100,225, 24, 28,125,232,248,241,241,158, +209,119,132,102, 96,137,148,180, 16,142,119,248,163,199,143, 70,246,167, 57,115,104, 34,166,250,240,241, 7, 94,207,134,255,248, +199,111,124, 60, 28, 24,198, 35,255,246,215, 95,104, 13,122,231,248,118,158, 56,103, 25, 21,146, 34,135,211, 61,110, 24,119,101, +125,205,137,101,157,152,162,236,209,179,118,162,206,123,142, 99,199,113,232, 20,143,235, 81,203,189,238,249,100,214,210,140,147, +110, 64, 39, 86, 45, 21,172, 21,145,160, 48,190,147, 92,224, 70,151, 83, 45,239,226, 43,163, 97, 18,110, 99, 98,191,187, 17,183, +203,239, 61,187,189,188,143, 72, 53,251,246,238,221,238,252, 93,216,134,198,223,138,144, 70,254,156,109, 92, 95, 21, 12,211,140, + 92,182,118, 35,193,169,158,164,153, 91,199,141,210,178,104,223,231,174,239, 49,159,187,133,105,179,185,105,118,250, 54,214,174, + 34, 0,219, 20,247,183,104, 75, 17,212,214,154,164, 11,169,219,129, 85,132,167,128, 60,227, 81,187,221,161,247,120,219, 36,231, + 60, 23, 58,111, 8, 86,189,186, 52,221,107,243, 46,161,139,221, 62,164,217,113,123,112,149,117, 91,241, 43,238,148,101,213,203, + 60,201,174, 27, 42,195, 32, 9, 90,214, 7,106, 11,132,254, 64,240, 3,235,252, 70, 90,223,176,166, 18,188,216,237,174,243,202, +101, 46, 92,150,204,101,158, 89,231,204, 58, 85,146,105, 68, 77, 34,107,138, 84,118,166, 49,122,153, 57,123, 12,211, 37,202,251, +145, 11, 93,133,222, 1, 9,178,107, 28,156,161,179,149,193, 65, 74,134,168, 99,233,217, 86,230,181, 80, 49,140,157,165,115, 77, + 35, 84,171, 38,184, 25,114, 81, 2,167, 53, 68,141, 69, 78, 73,108,166,177, 52, 98, 18,129, 85,231,101,223,127,190, 78,212, 10, +107, 17, 33,106, 23, 28,247,119, 71,230,185, 16,211, 42, 76, 9, 19,169, 56, 90,174,164, 34,141, 69, 8, 50, 45,202, 89,241,199, +174,126, 79,155,211,127,207,181,146,146, 8,167,131,194, 89,196,245,129, 94,182,155, 45,107,155, 94,189, 3,193,120, 21, 70,215, +134,115,129,203,249, 74,156, 38,172, 17,191,254,174,174,183,110, 87,129,111,100,205,186,237,173,183, 12,130,182,137,183,101, 58, +233,220,109,180, 94,148,183,111,116, 58,179, 77,181,154, 19, 22,127,201,117,207,105, 48,187,232, 77, 69,147,185,236, 58, 24,176, + 90,104,155,157,193,178,161, 95, 13,230,150,197,222,196,238,154,171, 54, 27, 67,224,114,153,196,247,174,207,179,164,210,165, 91, +232,173, 78,234, 36, 68,169,237,169,140, 27,190,215, 59,139,111,250,169,123,235,213, 27,236, 57, 63,191,146,150,136, 27,252, 30, +129,186,129, 1,150,121, 97,141,139,112,194,223, 29, 60,155,162,111,203,103, 54,214, 96,178,140,104,115, 1,231, 2,167,211, 29, + 49, 37,198, 67, 71, 8,142,183,183, 55, 14,135, 19,203,188, 96,156,231,249,245,149,214,144,189,199,245,140,115,158,255,254,231, +127,193,205,194, 76, 54,182,233,104,177,234, 97, 36,112, 68,239,197,199,253, 54, 93,229,239, 59, 79,176,158,184, 68,125,224,242, +174,114, 12, 67,207,225,254,142,241,120, 98, 60,158, 88,231,137,146, 18,111,175,111, 28, 78, 71,134,174,227,243, 47,191,242,233, + 95,254,204,219,151,103,166,215, 51,235, 28, 57,220,159,184,127, 56,114,189, 92,152,174, 87, 98, 44, 60,220,141, 18,123,106,149, +254,212, 26,211, 26,133, 35,108, 13,227, 56, 50,116, 61,243,178,138,200,205, 88,134,222,147,207, 55,178, 87,206, 5,215, 55,172, + 51, 12, 93,224,120, 56,208,117, 29,175,151, 11,151,121,150,130,160,100, 14,193,139, 16,202, 54,130,147,137,138,109,183, 17,143, + 65, 46,154, 88, 26,106,243,149,113,220, 32, 99,220,235,101,149, 46, 40,103,217,212, 52, 13,156,168,162, 77,104,181, 50,165,149, + 37,174,196, 12,175,147,140,232,171,166,125, 53,221,153,121,103,190, 75, 27,139, 89,198, 71, 37,195,120,132, 79, 15, 15,184,106, + 48,185,241,188, 46, 88,159,232, 44,187,143,222, 25,217, 19, 5,245,187, 38, 16,181,190,179, 60,222,157, 56, 13, 3, 7,231,240, +185, 80,215, 68,232, 7,186,113, 36,116,158, 96, 42, 54, 25,124,107, 12,165,242,244,244, 35, 75,113,252,199,223,254,193, 49,140, + 28,134,158,191,252,250, 89,209,181,240,237,122,229,154, 11,189, 15,196, 53,210, 31, 15,116,135, 3,173, 73,113,208,138, 56, 37, +166, 34, 23,122, 42,194,210,118,222, 50,140,129,195,216,209,245,162,229, 48,206,238,224,158, 77, 9, 91,181,218,119,206,146,107, + 22,145,164, 30,104,206,236,147,106,112,134, 82,146, 36,203,105, 23,211,178,138,218,172, 38, 45, 85,143,179,254, 38, 12,218,119, +209,183,136,214, 45,128, 69, 14, 19,171,214,209,118,179,213,180, 27,107,154,157,182,253, 62, 55,102,219,230, 25,197,190,138, 7, +122, 31,251,111, 86,183,218,246,195,118, 99,226,168,180, 71, 35, 99,173,118,249,220,186, 49,115,131,118,136, 46, 64, 89,115,181, +236,105,234,117, 11, 8,218,150,215,173,232, 24, 95,177,178,206, 9, 15,221, 8, 44, 37,197, 68,174,149,208, 7,172,105,228, 82, + 88,214, 66, 53, 2,150, 17,156,173, 20,185, 6,243, 93,112,141,127,247, 57,184,189,131, 23,210,153, 20,171,242,181,214, 84,152, +163,120,227,155,166,176,117, 33,112, 56,157,176,225,128,237, 14,248,190,163,149,149,151, 47, 95, 41,235,132,117,178,187, 60, 47, +137,243,117,230,237,178,114,153, 50, 75, 18, 60, 41, 73,181, 12,166,209,123, 57, 91,203, 6,119,201, 82,156,149,218,136,250,193, +230, 36,254,247,106,128,160,217, 25, 58,205,240,222, 50, 90,195, 48,222, 72, 4, 0, 83,148, 49,190,139,133,230,128, 32, 14,131, + 33, 72,177,219,121,105,126,114,201,196, 69,207, 27, 21, 79, 26,197,180,110, 54,203,156,147, 52, 97, 77,166, 13,193, 59,142,227, +128,193,240,250,114, 38,230,172, 92,139,142,101, 73,172, 75, 36, 27,203,221, 56, 48, 54,105,106, 54,197,251, 38, 44,119,234,234, +144,137,221,141,117, 30, 58,143,243,106,151,178, 70,130, 99,140,134, 75, 25, 5, 14, 25, 9, 95, 49, 90,128, 6,239,149,232,103, +177, 33, 48, 45,179,228, 87, 88,251,157,181,211, 26, 96, 19, 45, 22,177,221,237,230, 76, 37, 53, 82, 37,130, 59,109,239,140, 70, + 66,179, 77,172,204,166, 48,103, 79, 78,116,110,131,100,105, 58,125, 43, 58,238,215, 35, 65,133,125,198, 40,133, 83,139,131,166, +207,158,209,132,191,247, 4,199, 77,132,186,113, 44,182,228,202,203,229, 66, 78, 25, 23, 60,214, 54,172, 9, 10,210,105, 59,137, + 81, 79, 33,153, 62, 53,153, 20,108, 44,126, 85,191,203,161,228,244, 61,235, 67,224,183,117, 33,215, 66,232,187, 61, 88,100, 59, + 48,226,186,146, 83, 86, 1, 92, 17, 3,124,109,178, 99,212,208,251, 82,100,196, 96,149, 77, 94, 43,140,135, 3, 93, 31,136, 41, +241,251,223,127,226,229,242,198,229,114,229,241,241,137, 90, 5,155,120, 57, 95,185, 59,158,128,202, 60,207,252,249, 95,254,137, +159, 62,126,224,243, 95,254, 78, 69,242,101,251,225,160,136, 61, 85,218,214,138,239,130, 4,123, 68, 65,143,134,174,103,186, 94, + 89, 47,145, 83,239,121, 43, 5, 87, 11,198,122,198,187, 59,250,211,129,254, 48,208,117, 3,151,183,103,214,235,196,219,249,133, + 63,254,203,191,112,126,126, 97,232, 2,253,208,243,246,252,204,122,153, 89, 75,230,225,241, 1, 87, 43,231,203,133,235, 26, 37, +200, 69, 49,160,214, 58,156, 21,149,120, 76,178,143, 13, 26,148,226,141, 82,161, 82,102, 8,129,222, 41,189,200,104,229, 87,171, +136,196,156, 97, 24,122, 14,195,129,101,141, 92,167,137,105, 94,137,185, 48,116, 98,245, 64,241,136,157,119,120,119, 11,103,176, +186,217, 74, 53,147,139, 70, 7,218,166,220,232,149, 53,139, 32,195, 84, 69,120,154,172, 5, 17,164, 44,161, 1,115,142,188,205, + 43,115,202, 44, 83,217,109, 79, 77,109,204,219, 88, 55,230, 6,165,144, 11,248, 14,156,135,143, 31, 30,248,233,231, 31,248,241, +225,196,229,245,149,223,126,123,227,245, 50,115,157,146, 18,160, 26,157,243, 84,228,129,243, 42, 34, 41, 84, 25,133, 98,185, 59, + 30, 69,128, 71,195,228, 66, 89, 23,156, 15,244,167, 3,190,179,130,189,173,141,208,192,149,149, 15,159,126,198, 31, 30,248,191, +254,231,255,161,119,142,131,239,248,237,219,171, 20,152,173,242,117,186,114,193,112, 63,142,148,117,149,188,226,113, 20,146, 85, +147,224,135,101,153,153,114,228,154, 86,230, 24,165, 67,241,224,131,163,239, 3,161,247,132, 78,208,160,219, 56,173, 41,238, 88, +252,161, 26,101,105,203, 30,209,184,141, 12, 55,248,146,105,130, 29, 50,198, 98,138,236,126,155,194,146,204, 22,159,219,120, 23, +150,177,133,179,188, 39, 90,189,131,162,104, 62,183, 81,181,235,166,242,221,196,104, 70,149,191, 91,120,197,118, 24,128, 21, 66, +160,117, 26,172, 81,117, 71, 43,157,184, 53, 6,154,211,140,106,233,108,229,230,175, 55, 68,152,189,133,206,188, 75,105, 87,122, + 22,123, 86, 59, 42, 92, 42, 85,131, 48,204, 13, 92,179,253,123, 45,202,184,216,244,122, 45,238, 57,239,206, 26,225, 96,148, 38, + 88, 77,181, 60,109,130, 36,175, 56, 78,234,150, 53,129,238,116,237,187,240,140,119,224, 15, 29,179,110,202,246,152, 11,107,108, + 76,115,146,160,165, 42,211,140,206, 7,134,161, 99, 60,157, 8,195,145,110,124,194, 58,207,235,243, 63, 56,191,253,131,150,164, +115,155,214,196,219, 37,113,153, 34,151, 37, 49,167, 76,206,242,113,117,198,209,186, 45,108, 71,116, 36,243, 34,124,133, 92, 32, +151,155, 64, 79, 29, 93,180, 34, 69,112,117,134, 92, 27, 9, 81,176, 47,165,145,178,108,170,173, 7,175, 98, 88,154,163, 29, 28, +169, 72, 14,134,181,144,173,140,153,179, 78, 3,252, 96,241,182, 81,170,116,253, 49, 85, 98, 18,187,156,197,208,212, 98,152,214, +182, 7, 54,245,206,224,157,188,159, 41,174,212, 28, 25,135,158, 15, 79,143,196,180,242,250,118,101,154, 42,198, 9,210,183, 54, + 88,215, 66,206,226,211,238,123,135, 53, 1,235,111,190,116,177,202, 26,114, 18, 17,176,239,110,133,107, 67,196,184,214,202,200, +124,187, 88,157, 49, 58, 66,151,102, 39,236, 25,234, 18,129,123, 62, 95,100,210,169,207, 97, 86, 20,181,115, 94, 58, 91,133,115, + 25,141,141,222,226,132, 55,100,245,150,136,104,212, 10,102,117,228,191, 57, 53, 54,117,250, 6, 90,114,214,104,156,176,234, 96, +244, 31,150, 85,150,193,216,186, 63,159,168, 0,115,235,168,173,213, 98,108,187, 67,117, 31,111,172,195, 40, 78,184,149, 76,201, +133,174,235,185,190,173,156,167, 11, 31,158, 62,136, 56,206, 54,205,128,103,255,190,173,109, 10,157,108,251,252, 73, 6, 20, 66, +116,244, 70,213,140,182, 84, 58,231,233,125,224,203,151,111, 44,243,162, 94, 92,179,143,181, 74, 41,196,121,149,203,188, 65,206, +141,234,219,158,128,214,148,145,155, 85, 64,183, 85, 72,169, 86, 78,135, 30,211, 44,131, 15,124,252,225, 35,127,251,251, 47,106, + 75,145,120,187,235,245, 66, 55,120, 30,143, 71,254,246,203,103,236,208,243,223,254,249,159,136,211, 85,205,250, 42,204, 65,254, +220, 86, 11,205, 10, 63,184, 15,131,236,172,167,132, 27, 4,209, 55, 93,102,172, 19,109, 99,106,149, 80, 27,253,208,243,244,244, + 72,127, 28, 25, 15, 3,205, 36,230,235,196,219,243,179, 92, 42,199,145,255,243,127,254,141, 63,253,244, 19,113, 73,130,109,140, +147,236,222,239, 14,204,215, 43,243,188, 80,107,227, 48,246,152, 42,150, 60,239,100,187, 26,215, 12, 85,138,164,174, 19, 12,235, +148,102,174,107, 20,188,164, 9, 50, 54,219,147,138, 10,227, 97, 16,250,155,243, 28, 15, 71,178,169, 76,203,194,219,229,202,186, +102,253,223,204,141, 95,111,189, 84,172,166,146,105, 4, 42, 14,179,251, 71, 55,177,169,117, 18,162, 49,205, 43,181,138, 88,175, +211, 74,180,106, 69,158, 26,164, 44, 86,185,231,121,225,101, 78,180,172,163, 84,187, 29,152,134,148, 13, 37, 53, 1,101, 0, 63, +126, 24,248,243, 79,159,248,241,135, 59,250,161,103, 28,159,192, 24,190,254,242, 11, 95,191, 94,120, 62, 95,121,157, 86, 74,210, + 76, 0, 93,181, 57,227, 56,141, 35, 22, 88,115,220, 59,210,187,195,129,227,112, 36, 88,232,107,131, 24, 1, 67,119, 58, 98,122, + 71,232, 43,189,109,184, 2,117, 89,248,233,211, 71, 30,126,247, 51,255,247,191,253, 7, 37, 21,108,240, 60, 95,223, 4,130,145, + 50, 95,166, 51, 87, 23,120, 56, 30, 9,165,145,179,193,157, 78, 18, 39,154,101,148,181,198,194,154, 11, 83,137,130, 37, 46, 85, + 88,212, 46,112, 28, 60,135,193, 19,250,110, 87,164,151,220, 36, 11,122,235,150,154, 21,225, 87,171,148,242,253,244,188,105,104, + 5, 52,197,100,202,103,208, 54, 81,154,118, 17,149, 6,169,226,125, 80,126,122,194, 57, 21,166,238, 57, 82,218, 41,191,203,183, +223,217,234,218,126, 90,165, 73,237,193,166,223,145,177,202,158,158, 40,155,204,170,247,161,112,208,155, 58, 31,244,152, 96,231, +135,152,205,250,102,246,180, 69,167,161, 25, 85,131,103,110,234,250, 34,197,219, 78,160,105,223,209,231,222, 95,232,173,150,253, +251,218,180, 11, 77, 33, 56, 41,203,193,152,155, 16,207,140, 23,145,159,217,185,242, 22,167,235, 54, 89, 59, 84,156,105, 20, 44, +198,148, 27, 3,119,155, 83,108,150,187,170,227,213, 92,137, 37,179,172,141,105,137,164, 36, 1, 49,206,123,198, 78,236,179,119, +119, 63, 96,199, 19,110, 24, 41,121,230,229,243,191,179,188, 78, 52,103, 88,115,226,124, 93, 56, 47, 11,211,220, 72, 81, 46,235, +134, 60, 27,182,200,207,186,102, 72, 89, 20,233,185,130, 78,102,223, 81,246,182,168, 86,153, 97, 88, 81, 61, 40, 55, 66, 64, 62, +110,227,112,180,186,131, 79, 90, 85,202, 88,107, 52, 10,214, 22,130, 53,244,157,229,120,127,144, 27,163, 47, 0, 0, 32, 0, 73, + 68, 65, 84, 96, 28, 70,250,222,137,102,198,137,102,163,203,153,236, 50,222,103,130, 75,196,140, 34, 70,183, 9,142,190,239, 91, +247,222,117, 88, 39, 59,240, 16, 60,125, 8,152, 44, 83,187, 57, 54,240,186, 90,114,150,235,117, 81, 69,186,229,120,240, 80, 69, +161,110,173,209,194,244,102,217, 72, 85,222,129,224,213,166, 37,226, 8,245,248,235, 5,110,229,103,223,158,245,109, 15, 30,122, + 73, 69,244,193, 51,205, 43,215,183,105,215, 11,185,125,148,221, 8,246,150,183, 32,233,117,130, 66,206,187,229,114, 67,171,110, +127, 57,217, 71,107,113, 80,179, 22,199,238,253,163,116, 43,174,155,142,184,171,185, 81,229,246, 44, 66,197, 61, 55, 77,186,115, +206,107,209,192,119,116, 72,120, 95,116,138, 22,165,149,172,171, 0, 15,165,114,185, 94,249,244,227, 39,140,147,207, 76, 52, 29, + 85, 29, 43,130, 24, 15,154,196,103,180,120,114,106,133,173, 52,188,213,238,169, 26,232,134, 30, 67,229,229,249, 85,146,127, 84, +130,191, 31, 86,198, 48, 79,147,142,241,154,198,227,177,239,200,182,189, 95, 81,251, 76,214,157, 70,169, 43,227, 16,104, 37,114, +247,233, 35, 33, 88, 94, 94,159,233,187,158, 46, 4,206,215, 51,211, 37,241,241,135, 71,222,206, 11,215,101,225,143,127,250, 3, +159, 62,126,224,243,223,254,138,169,149,146,149, 70,101,100, 71,183,193, 92, 48, 14,215, 7,241,206,251, 74,112,158,154,139,194, + 64, 4,191, 88, 52, 73,236,248,120,164,191, 63,114, 56, 30, 25, 79, 71,166,183, 43,243,229, 66,188,206,252,254,207,255,196,235, +229, 27, 57, 37,142, 15,119, 66, 20,155, 22,214,165,242,240,243, 29, 37,103,150,229, 74,140, 81,199,197,158, 92, 86, 58,235,241, +170, 46, 93, 83,166,169, 98, 49, 56, 47, 15,235,154,152,230,164, 7,181, 66,120, 54, 29,131,133,241,208, 99,172,163, 11, 29,222, + 57,230,180,242,118,157,184, 92,103,124,232, 24,130,163,213, 13,105,233,197,154,131,134,227,152,182, 83,154,182,125,219,198,242, + 23, 37,188, 40,101,139, 10,146,146, 17,240,136, 67, 72,103,169, 37,166,156,120,187,174,188, 94, 86,156, 7,227,133, 45,188,168, +183,117,141, 34,128,250,233,216,241,199, 63,222,241,199,223,253,196,211,135,159, 56, 62, 28, 69,233,191,174,196,146,152,207,103, +206,151, 51, 47,151,153,151,107, 66,194,224,228, 5, 57,157,238,232, 12,156,198, 35, 93, 48,164,154, 73, 73,190,231,167,227,129, +187,195,136,199, 18, 74,133,156, 41, 41,114,124,122, 36,116, 1,111, 42, 7,219,227, 27,196,183,137,223,255,240,145,167,127,254, +111,252,175,127,255, 11,231, 23,177,222, 44, 49, 97, 93, 71,155, 47,252,227,245, 25,219, 29,248,225,120, 18,107, 95, 92,113,167, +163,218,129, 50, 62, 23,209, 13, 52, 81,241, 47, 73, 70,188,178,130,114,116,189,195,135,158,190,235, 68, 76,101,141, 98, 26,235, +126,201, 86,221,169,153, 90,117,116, 39,147,163, 29,123,217,140,162, 97,221,158, 39, 94,213, 13,176,237, 9,221, 22,240,226, 52, +141,202, 26,245,199, 86,197,180, 58,237,248,235, 45,112,165,105,242,221,150,224,213,218,174,144,109,123, 65, 33,158, 51,131, 72, +136,101, 12,174, 46,137,166, 32,139, 42, 63,151,177,242, 60,236, 56, 90,115,187, 12,183,139,249,214,233,222, 46,158,162,153, 14, +194,130, 40,123,151, 94,138, 20, 51,109,203,135,215,114,160,110, 4,173,214,116, 4,191,209,197, 12,133, 44,182,197,106,200, 37, + 3,134, 92,154,198,251, 22, 29, 57,106, 70,187,201,224,188,192,173,208,201,149,115,216, 42,113, 82, 27,120,103, 27,197, 87,245, +115,214, 90, 5, 60, 84, 10,113,173, 76,211, 74, 76,130, 58,245, 93,224,112,232,185,187,191,231,254,227, 71,172, 61,224, 58, 79, + 94,206,156,191,252,141,101, 61,147,220,194,243, 75,228,245,178,112,142, 89,180, 4, 25,154, 43, 98,169, 74, 70,200,113, 10,165, + 41, 69,152,221,165, 26, 81,245,235,174,213, 25,131,211,110,202, 90, 81,230, 59, 77, 9,171, 94,148,219,197,201,231,238,205,109, +101,165, 87,136,192, 89, 92, 21,207,121, 51,180,130,224, 98, 77,227, 49, 12,252,241, 79,127,224,254,113,224,224, 10,109, 73,188, + 92,103,190,189,158, 89,166, 21,151, 13, 62, 24,236, 82, 73,107, 38, 55,104, 90,132,109,246, 44, 49, 42, 20,130,131,190,239,104, +213,240,124, 93, 88,106, 37, 24,207, 93, 63,112,127,231,232, 58,203,175, 47, 43,231,107, 18,203, 94, 39,194,179, 53, 86,186,224, +105, 97,131, 18, 73,120, 73, 41,134,186, 90,194,193,237, 26, 28,212, 42, 88,177,120,239, 5, 13,174,197,227, 70,108, 43, 45,209, +247, 7,165,161,138, 37,108,121,189, 48,197,153,222, 56,157, 6,200,100,203, 40,119,221,110, 4,193, 77,227, 82,183,130, 18, 45, + 72,111, 93, 46,237,198,105,183, 21,154, 88,145,116,231,237,148,237, 80,116, 55,174,154,144,182, 17, 27,117, 8,254, 95, 86,206, +239,197,174, 55,180,171, 21,222,196,142,133,214,201,209,187,119,182,214, 42,214,219, 14, 94,174, 23,104, 18,160,229,172,193,120, +177,246,229,170,103,122, 19, 97,238,182, 38,176,205,224,141, 5,181,243,249,237,210,206, 85,198, 23, 49, 73,231, 50, 30, 70,250, +190,251, 46,102,175,164,149, 52,207, 50,246, 54, 82, 21,136,178,181,108,172,186,125,247, 16,156, 35, 89,163,213,176,101, 28, 71, + 44,134,159,127,250,145, 47,223,158,153,167,194,112,232,169,214,114, 57, 79, 28, 78, 61,167,227,137,127,252,237,153,174, 31,121, +248,240, 72,174, 91,104,204,198,187,150,192,129,130,163,102,168,200,216,125,232,123,214,117,197,166, 6,189,164,128,213, 82, 4, +148,147,179, 68,138, 90,203,253,135, 39, 14,247,119,244,227,128,115,134,207,223, 94,152, 95,223,232, 31,159, 24,239, 78,252,237, +127,255,127,220,223, 61, 16,124,224,243,215,191, 49,159, 47, 12,135, 3,253,241,192,121,186,176,174,137, 84, 51, 15,227,157,216, + 12,246, 8, 62,179, 19,240,172,179,130,119,237, 58,186,224,121,190, 78,100,110,187,150,132,217, 43,189,222,139,119,178, 57,131, +117,158,212, 36,195,254,235,203, 87,156, 15,116, 65,140, 22,169, 52,250,161, 35,120, 79,239,229,193,202, 89, 60,189, 85,199,138, +173,170,183, 82,129, 14,169, 36, 2, 22,111,149,114,181,117,151, 5,140,173,164, 10, 75,138, 92,150, 85,148,155,189,116, 22,165, +192, 92, 12,207,179,120,223,255,244,233,145,127,253,215,127,229,247,159, 62,113, 58,138, 34,124, 8, 29,161, 15, 2,131,112, 22, +115, 46,188, 92, 46, 92, 46, 87, 94,166,149, 20, 43,165, 72,151,244, 79,255,252, 7,126,248,249,119, 34,217, 58, 47,148,146, 89, +167, 11,231,203,204,195, 48,112,119, 60, 73,154, 28, 13,147, 51, 53,101,134,195,129,208,123,156,173,156,186, 1,219, 28,229,245, +204,255,207,213,155, 53, 89,146,173,105,121,207, 26,124,218, 99, 12, 25, 57,213,169,249,112,206,161,233, 70,208, 64,155, 0,153, +132, 33,227, 2,253, 85, 76, 50,201, 76,128, 12, 97, 38,195,116, 33, 46, 36, 33, 1, 77,183,250, 12, 53,100,101, 86,229, 28, 17, +123,114,247, 53,233,226,251,220,119, 20,117, 89,150,153,177, 99,239,237,107,125,195,251, 62,239,197,114,193, 39,191,252,138,111, + 95,190,226,237,219, 91,172,183,196, 82,168,125,195,112,184,227,187,183,111,168,186, 45, 87,155, 13,174, 50, 28,135,129, 92,139, + 13, 44,167,140, 29, 35,185,239,137, 41,210,147, 57,165, 32,148,176, 82, 4, 27,218, 56,153,176, 84, 13, 88, 79, 54,226, 49,151, +105,149,142,176,201,250,112, 79, 48,152,105,239,173, 80,213,156, 53, 63,228, 60,134, 47, 73,224, 72,146,117, 31,116,238, 39, 21, +248, 4,127,193,200,196,106, 98, 6,120, 47, 23,251, 76,162,154,196,115,234,135,157,242,158,231, 49,179,142,212,167,139,216,152, +105,132, 95,102, 65,220,196,224, 46, 58, 86, 79, 10,144, 41,249,172,130,159, 47,114,197,215, 98, 13,166,120,140, 50,190, 83,202, + 51,236, 99, 90,186,151, 36, 23,117, 73,211, 60, 60,107,174, 64, 58, 95,232, 26,240, 50,141, 47,167,253,250,148, 76,150,138, 19, + 37,116,158, 82, 35, 39, 43,147, 42,135,149,163,110,172,116,169, 20,171,208,141,168, 16, 30,171,214, 78,221, 27,171, 24, 32,150, + 66, 44, 72,252,241,152,233,251, 76, 31,165,235,175, 27,113,154, 92, 94, 94,179,184,124, 12,182, 17, 68,246,238, 37,251,143,111, + 25,246, 71, 62,238, 79,188,191, 61,112, 63, 68, 74, 16,116,180,119,144,157, 35,142,133,126, 72,132, 40,211,154, 92, 36, 34, 57, +228,204,168,110,151, 36,110, 47, 92, 49, 4, 43,239,170, 53, 50,110,246, 70, 46, 11,231,196,222,212, 56,163, 88,102, 41,174,177, + 14,141, 11,144, 15, 78, 87,112,146,128,107,197, 34,166,250,133,126, 24,113,198, 81,217, 5, 85,237,184,188,172,121, 28,247,220, + 31,151,188,250,241, 3,175,239,247,148,193,211,216, 68,182,134,216,143, 56,180,184, 44,134,100,228, 51, 27, 66,198,157,188,172, + 6,189,132,133,212,214, 82,123, 79,219, 84, 28,134,196,219,221,145, 12, 60,218,212,180, 77,205,113, 20, 90,157, 49,142,202, 72, +112,147,119,122,105, 89,201,122, 49, 21,212,149, 21, 64, 84, 57, 19,219,172,115,178, 10, 52, 73, 89,249, 70, 97, 75,133, 49,102, +214,149, 87,175, 56,248,182,230,240,242,196, 16, 50, 77,237,230,201,148,195,146,116,108,238,157, 99, 76,154, 96,105,116,221, 85, +202,172,253, 72, 41,202,235, 83, 58, 29,106,105,179, 22, 74, 52,122, 97, 62,184,144, 85,185, 63,143,207,231, 92, 3,133,158, 89, + 67, 78,250,220,155, 51,230,121,110,245,141,193, 56, 39,142,179,124, 6, 51,157, 19,224, 52,181, 45, 21,170,165,216,115,251,227, +192, 48,244,180,203, 53,222, 90,130,115,164, 60,202,207,112, 10,134, 82,171,155,230, 32,147,212,111,111, 11,248,170,114,146,154, + 20, 18,117, 91,211,199,194,254,208,179, 88, 44,169,234,234, 1, 72,192, 50,156, 70,226, 24,116,119, 38, 20,171,162, 62,208,162, + 47, 90, 38,243,134,202, 59, 34, 34, 6, 41,198, 82,215, 45,171,205,138,139,235, 43,190,251,127,255, 28,231, 12,174,174,216,221, +223,147, 83,230,241,211, 27,222,190,251, 72, 33,178, 94,119,172, 23, 27,198,148,136,199,147,216,113,114,146, 75, 44,229,185,211, +165, 20,154,174,195, 90, 71, 8, 73,119,204, 82,250,196, 24, 49, 10,205, 73, 41,177, 92, 44,121,242,236, 41,213,162,163,235,150, + 28, 15, 61,119,175, 63, 18,134,192,163, 79,110, 56, 14, 3,239, 95,191,225, 87,127,244,199,140, 41,112,188,189, 3, 83, 88,172, +151,140,195,137, 97,144, 46,189,246, 53, 85,213,144,227, 9,239, 37,102, 47, 38,153, 12, 72,138,142, 48,129,155, 70, 66,106,250, + 49,156,217,222, 5,198,156,132,179,173,185,244, 83,240,125,209,110,235,110,119, 32, 91, 71,237, 29,181, 51,196, 48,170, 16, 80, + 40, 91,190, 50,132, 62,144,114,192, 23,167,246, 35, 37,140,233, 78, 82,148,232,137, 94, 21,196,226,125,149, 72, 66,171,108,249, + 62,142, 12, 33,138, 34, 22,163,169, 65,112,123, 42,140, 41,241,235, 95,255,130, 95,125,249, 37,207,158, 63,195,185,154,166,150, +128,146,182, 54,172, 26, 67,215, 53, 4, 10,119, 31,222,112,248,248,145,126, 12,220, 29, 36,105, 40, 43, 92,228,233,103, 55,252, +245, 63,254, 19,234,182,225,120,123,203, 41, 64, 50,134, 99, 78, 92, 95, 95,203,120,220, 27,154, 82,176, 49, 10, 91,160,110,105, +187, 22, 99, 51,203,182,166,174, 61,241,227,129, 69, 85,241,197,111,254, 26,239,238, 15,124,247,195, 75,170, 82,227,141,161,107, + 28,167,251, 61,223,253,244,134,170,170,185,218,174,112,141, 37,166, 44,156,231, 44,138, 96, 51,140,132,211,145, 20, 3,125, 26, + 57, 77,249,222, 70, 92, 7, 77,229,105,218,154,182,173,148, 22,231,116,175, 60,141,122,117, 23,106,156, 42, 95,103, 90,245, 89, +234, 91,242, 76,163, 50, 86,247,119, 88,233, 12,244, 50,150,200,199,179, 18,183,104,226,214, 3,216,230,236,205,133,172, 94,106, + 37,254, 77, 92,108, 30,208,226, 20, 97, 57,147, 58,237, 25,253,138,209,180, 60, 52,201,169,232,247,208,168, 78, 94, 81,149, 69, + 61,249, 15, 71,251, 51, 27,190,156,253,232,211,158,127,250, 89,243,126,124,218,119,147, 5,195, 57,107, 10,178,198,146,170, 94, + 32, 39, 5,229,200,101,159, 82, 18,114, 91,182,170,197,201,115,100,171, 48,190,171, 57,174,245,140,193,117,114,185,235,122, 79, +100, 1, 86,242, 17, 38,255,176,192,222,201,197,145,146, 80,204,198, 49,115,236, 19, 33, 25,172, 19, 2,224,229,197, 37,215, 23, +215,152,118, 73,182, 14, 75, 79,255,241, 13,251,221, 7, 62,220,237,121,127,123,224,195,221,145,211,152, 9, 37, 81,162, 20,108, + 41, 35, 97, 34, 99, 38, 68,163,135,181,236,111, 67,150,117,149, 36,112,105, 7, 57,235, 13,166,115, 82, 94,119, 52,226,111, 55, +128,119, 5,239,141,234,248, 12,109,221, 18, 53,219, 28, 99,213,153, 32,113,214, 69,163, 48,141,254,254, 57,195,253,237,158,219, +251, 61,159,124,250, 9,181,181, 36,103, 41,214, 80,101,199,211,103, 13,221,234,192,199,143, 59,238,118,123,140,250,198,163,140, + 43, 20,207,106, 85, 48, 9, 67, 42, 20, 34,149,177, 84, 77,165, 10,243,204,238,120,164,144,105, 27, 9, 89, 33, 21,246,251, 19, +190,114,248,170, 18,154,221, 56, 82, 45, 87,115, 17, 43,211,219, 36,103,151, 63,103,137,167,156,161, 36,141, 86, 45, 24,147,231, +113,182,179,234,195, 78,130,158,182,149,193, 36,121, 31, 62,238, 14,196,172,233,106,186, 86,178,234, 70,153,206,223, 18,202,217, + 34, 82,204, 57,138, 88, 93, 86,162,162,119,231, 24,214, 9,121, 91,206, 25,239,147, 35, 68, 4,108, 22, 27,229,185, 47, 63,139, + 53, 54,231,184,190,242,128,213, 48, 75,255,181, 56,112, 22,103, 13,164, 66,137,106,105,115,142,164,169,242,165,104,196,170,179, + 84,109,195,238,126, 96, 8, 39,156,221, 10,180,172,106,200, 67,148,207, 71,167,131,222,123, 98, 14,148,236,164,193, 54, 50,191, +203, 25,124,101, 45,199, 18, 48,222,210, 53, 13,247,187, 91,238,110,111,233,214,107,193,195,154,115,212,162,124,145, 35,174,146, +144,221,140,236,112, 39, 16, 5, 69,252,115,206, 90,156, 66,103, 98,145,253,115, 83, 85, 92, 94, 93, 17,135,129,221,253, 61,190, +246,128,225,116, 58,178,189,216,224,189,225,227,221, 61,203,213,146,174,235,232,218, 90,132, 45, 33,147,189, 32, 2,193, 16, 67, +160,120,237, 80, 44,212, 94,133, 23, 49, 97,107, 17, 38,164,156, 9, 57, 75,165,150, 19, 37,194,213,147, 71, 92, 61,190,129,186, +193,215, 53,111,191,255,129,215,175, 94,240,201,231,159,176, 92, 44,248,254,197, 11,170,110,193,245,245, 53,111, 95,126,199,120, +236,105,151, 75, 82,134,225,216, 75,198,243,152, 88,111, 23,148, 28,100,215,227, 43,156, 69,146,216,146, 28,136,206, 91,154,202, +209, 86, 2, 72, 24,194,121,215,151,115, 98,224, 44, 6,241,206,146,141, 28, 82,169,136, 56,176,143,145,218,121, 89,137, 4,201, + 39, 95, 52, 13,222, 90,154,202,170,239, 57,235, 56, 95, 39, 35,147,238,193,137, 85, 67,108,197, 98,117, 10,177, 72,246,178,155, + 4, 30, 70, 66,102,114, 98, 76,130,178, 13, 69,224, 31,187, 19, 92, 63,187,224,239,255,189,191,207, 87,191,252, 66,197, 43,103, +168, 74,221,180,116, 93,195,118, 89,115,125,177,224,238,246, 3,111, 94,124, 79, 63, 14,236,251,145,195, 48,158,225, 98, 14,158, +255,226,107,174,111,158,145,135, 19,198,159, 88,125,250, 57,166,242,216, 23, 47,168, 31, 93, 75,242,213,254,132, 57,238,200, 33, +224, 42, 47,248, 74, 10,171,186, 97,181,108, 57,189,223, 81,167,200, 23,191,249,235, 28, 98,230,119,127,120, 65,127, 12,180,203, +154,101,215,176,187, 63,242,226,135,159,168, 22, 29,143,174, 46,169,234, 74,186, 33,231, 25,211, 40, 79,216, 56,146,143, 7, 66, + 8, 28,211,192, 49, 14,164,105,157,225, 44, 77,237, 89, 46, 58,186,174,197, 87,150,108,213,178, 87,172, 92, 32,169, 96,167, 96, +137, 7, 99,106,166,247,222, 78,123,236,252, 64,133,173,227,107,196,178,152, 75,209,220,227, 50, 99, 53,115,201,216, 98,117, 71, +127, 14, 67,154, 38, 83,211,200,222, 60, 28,219,235,190,115,238,150,149,233, 63, 9,243,152,209,150,218,201, 24,167, 23,121, 82, + 54,180, 66, 82,180, 38, 17,187, 25,115,161, 49, 83,223, 30, 40,218,209,128,165, 89,218, 63,255,236,255, 12, 67,171,236,244, 89, + 73, 61, 37,179,105, 87,110, 74, 38,149,164,190,242, 50,171,192,163, 6,151, 76, 40,205,242, 96,148, 89,212, 15, 60,251,242,231, + 28, 72, 61,212,117,110, 60, 89,149,166, 85,109,158,178,103, 82, 97, 24, 11,253, 40, 19, 67, 95,123, 22,109,203,245,227,107, 30, + 95, 63, 37, 21,207,152, 10, 37,244, 28,238,127, 34,156,142,188,127,127,203,155,251, 35,251, 83,166, 31, 37, 77, 49,164, 72, 73, + 69,207,151, 68, 8,200, 88, 89, 47,244,152, 10, 33, 35, 59,116,161, 67,203, 65,110,152, 41, 4,198,128, 45, 5, 17,250, 91,181, +113,137,200,202,123, 67,213,120,165,242, 89,150,222,113,200,146, 22, 9, 16,138, 20,203, 73, 63, 23, 95,201, 66,126, 90,175, 12, +125,225,205,219,119,252,177,253, 53,237,102, 69, 86, 43,106,118, 53, 84,150,174,179,216,226,105,234,138, 91,127,207,253,254, 64, + 52, 78, 47, 57,212,150,235,136,250, 89, 37,132, 80,151,114, 81,218,163,116,150,222, 73,244,113,136, 61, 38, 58,154,101,131,117, + 86,220, 61, 22,154,182,145,252,144, 73,151,145,165,249,171,107,175,147, 37,193,119, 39, 13,249,113,182,204,193,193,121, 90, 77, +100,203,152, 69, 92,218,181,141,132, 26, 77, 33, 99,199, 3,197, 24, 34,136,165, 87,189,219, 32,231,177,119, 78,243, 14, 38, 39, +167,176, 64,166,224,161,156, 11, 37,102,106,197,205,162,177,176,147,221, 35, 43, 55,194,216,115,240,145,156,181,105,142, 56,146, + 73,137,242, 66,156, 35, 12,113, 78,153,251, 25,111, 98, 34, 71, 24,125,102,115, 38,164, 81,248, 11,206,205, 84,195,105,252, 94, +130,208, 8, 67,217,115, 58,245, 84, 85, 37,246, 90,231, 5,179,157, 5, 57,109,141, 76,131,251, 48, 80,236,148, 29,193,172,183, +240,198, 56,134, 52,176,233, 26, 42,111,217,221,238, 72,197,176, 94,175, 40,174,204,226,121,131, 97,236,123, 93,162,235,161, 99, +132, 2, 69, 42,152, 44,157,137,236, 7, 45,158,164, 99, 96,216, 46, 58,218,182,226,147,103,207,185,187,127, 75, 48,137, 98, 44, +195,105,160,169,106,182, 87, 27,222,254,248,134,170,178, 60,218, 94, 48,198, 8,181,196,191,166, 44,213,183, 68, 54, 10, 63,217, +187, 74, 63, 82,168,155, 26, 40,132, 16,230,232,190, 52,102,156, 46,252, 75,206,116,222,241,248,179, 79,177, 77,141,175, 27,194, + 16,248,225,155,239,169, 26,203,246,230,138, 48, 12,188,127,243,142,103,159, 60,167, 56,184,125,249,154,108, 29,174,178,236,239, +238, 8, 57, 49,134, 68,221, 84, 44,234,138, 97, 28,241, 86,194, 89, 74, 46,140, 33,206, 81,165,117, 85,177,108, 91,140, 85,172, +106, 76,115,182,176,245, 50,201, 48, 69,210,210,112,142,177, 76,161, 30,133,227,208, 83, 25, 75, 82,107, 68, 76,129,182,105, 85, +213, 41,190,214, 24, 19,198, 88,106, 87,105, 4,121, 57, 43,146,173,168, 88, 75, 84, 75,135, 57,231, 30,154, 34, 74,210, 60, 37, +178,165,196, 41,142,226,151,142,134,144, 50,255,240, 31,253, 41,127,246,119,254, 12,223, 44, 25, 66, 15,214, 82,185,138,202,215, +212,117,195, 98,217,209, 52, 45,109,183, 32, 19,184,123,255,150, 52,140, 20, 12,167, 97, 20,126,184,222, 88,190, 54, 92, 61,186, + 97,217,118,224, 10,207,158,252, 49,159,252,209,223, 32,198,158,151,127,241,151,220,190,121,197,241,246, 61,253,174, 39,164, 64, + 93,213,184,182, 38,155, 76,215,118, 92,109, 47, 57,222,126,196, 13, 35, 95,255,230, 87, 84, 77,199, 95,254,254, 27,222,126,120, +207,245,122,195,227,139, 53,239,238,119,188,120,245, 22,223, 54, 92,111, 55,212, 77,165,221, 79,205, 56, 4, 66, 78,152, 16, 72, +251, 3, 97, 24,216,143, 3,183,163, 76,126,156,149,139,163,245, 21,139,174, 85, 43, 97, 37, 46, 14, 44, 99,206, 84, 89,172, 95, + 78,129, 39,118, 18,187,252, 44,103,121,210,251,148,169, 89,215, 14, 69, 15, 27, 43,217,211,115, 66,149,218,198,153, 14,179,156, +200,182, 40,201,202, 61, 24,157, 79,104, 85,221, 23, 63, 40, 20,114, 22,178,213,244,231,255,115,104,205, 20, 64, 65,177,170, 7, +144, 20, 50,233,120, 69,253, 43, 77,136,236,230,162, 78,241,138, 18,225,114,202,224, 45, 89, 95,139,140,205,245,187,150,207,123, +113, 51, 95,242,204, 73, 82, 37,201,119,204,232, 63, 88, 52,132, 4,237,208, 83, 74,243,101,158,139,165,144,148,188,110,230, 36, + 57,166,139,220,228, 25, 61, 61, 77, 37,204, 52,157, 40,231,235, 61,155, 44,118, 65,165,128, 73,209,229,197,211, 30, 50,195, 8, + 17,137, 17, 94, 45,150, 60,186,121,194,245,163, 27,178,105,136,125,143,207,137,221,221, 27,142,199, 15,124,188, 29,249,112,223, +139, 61,109,156,224, 49,129, 49,200,123, 85,137, 3, 80, 10,145,217,129,163,151,122,146, 14,221,100,131,215, 61,236,156,158,101, +164,168, 51,197,224, 42, 35, 99,212,146,149,178,102,102, 76, 42, 64,101,221,140,178,173, 42, 47, 23, 70,146, 53, 91,100, 98,140, + 23,133, 70,105,119,235, 19,251,187, 61, 31,119,119, 60,190,185, 97, 44,134,156, 34,198,121,108,229,112,209, 80,181,133,133,145, +137, 81, 41,112,216, 15, 36,171,239,127, 22, 37,181,117,194,124,151,108, 1,167,191, 27, 84,149, 18,219,212,237, 83,117, 45,141, +113, 12, 41,114,232, 7,172,245, 92,111, 26, 54,203,122, 14, 45,177, 9, 74,148, 17,127, 93, 57, 77, 45, 20, 91,178,224, 95,101, +172, 31,146,106, 31, 38, 71, 73, 18,136,151,117,150, 69,211,232,248,189,225,112,252, 64, 28, 6,101, 15,152, 9,234,166, 93,190, +228,119,120,107,102,133,187, 53, 70,126,215,105,210,100,117,221, 19, 18,117, 43,206, 29, 25,173,219, 7, 19,161,201, 26,166, 23, +165,196, 80,233, 69,111,206, 65,133,101,202, 55,119,115,131,137,174, 50,230,209,253,131,201,154,119,142, 18, 71, 2, 50,253,178, + 86,192, 95, 2, 81,211, 60,128, 40,184,109,231, 44,167,211, 48,251,209,141, 19, 61, 91, 72, 69,243, 45,210, 92,176, 79,130,196, + 98,148, 50,153, 51,190, 32, 99,152,102,187,198,215,150,187,251, 3, 14, 88, 44, 58, 25,103, 79, 73, 60, 73, 72,114, 41,129,211, +189, 27, 89,130, 42, 38, 8, 69,214, 3, 78, 70,100, 73,187,200, 76,211,136,234,124,177,106,121,245,227, 9,178, 21, 12, 98, 30, +217,172,214,156, 14, 39,246,187, 35,151,219, 13,235,205,138,251,253,142,174,171,217,191,191, 37,151, 32,251,205, 34, 59,185, 24, + 19, 94, 15, 11,107, 13,117, 93, 19, 66, 32, 7,241, 64, 26, 99,136, 73,201, 88,122, 90, 93, 60,190,228,201,167,207,168,171, 10, + 91, 89,222,190,126,195,171,239, 95,241, 55,254,246,175,233,218,134, 31, 95,191, 37,165,200,245,147, 71, 28,239,110,249,240,246, + 61,155,155, 75, 14,135, 35, 67, 24,200,198, 50,142, 35,155,205, 90, 14,141, 84,168,219, 26,103,157,132,166, 4,121,141,206, 59, +154,166,165,107, 90, 78,199,129, 49,164, 25, 2, 99, 57,239, 49, 39, 92,165,168, 31, 11,198, 36,198, 16,100,228,232,101,116, 26, + 83,194,120, 71, 83,215, 84,214, 74,118,122,150,223, 43,153,130,215,125,175,203,103, 96, 72, 36, 67, 18, 33, 79,198, 18,162,116, + 5,214, 38,108,209,145,146, 66,129,134, 92, 72,182, 80, 2, 44, 87, 45,255,228,191,250,199,124,241,213, 47, 57,244, 3, 33,159, +112,206, 80, 57, 39,133,204,122, 67,219,173,104,155, 74,190,104,214,114,127,123, 75, 60, 12, 84, 77, 77, 8,137,253,110, 36,198, +243,101,180,112, 11, 22, 11,135, 33,241,248,211,207,248,213,223,254,251, 92, 63,253,132,143, 63,252,129,133,179,252,240,151,240, +187,151, 47,201,251, 61,214, 55, 84,190, 34,151, 68,211,182, 92, 63,186,230,184,187, 37, 31, 3, 95,253,242, 11,218,171, 43,254, +227,111,191,225,135, 31,223,112,185, 88,240,197,163, 13,175, 62,238,248,246,213, 27, 86, 77,197,118,213, 81,117, 13,217, 89,124, + 83,233, 3,146, 48, 1,194,110, 79, 60,245,236,195,200,237,112,226, 56,142, 20, 44, 77,101,164, 59,170, 44,139, 69, 75,215,213, +120,111,137, 57, 51,230,162,147,151,130,141, 8,193,235,103,245,183, 37, 79, 56, 73,173,178, 39,203,155,177,230,156,110,161,182, + 28, 99,100, 71, 58,101, 48, 91,107,149,211,174,239,215,212,241,150,105, 37, 80,230,124,240,172,170,245, 89,193, 62, 23, 19, 86, + 3, 47,236,207,178,211,167,231,149,137, 79,109,100, 92,103,138, 96, 36,207, 35,195,168,227, 96,167,150, 52, 77, 29, 83,253,128, + 36,192, 61, 68,215,102,253, 93, 39,243,186, 2,102,148,231,175, 89,165, 15,108,100,121, 86, 11,139,232, 46,253,204, 29, 32,225, + 41, 69, 45,111,118,126, 47, 74,201,146,222,101,206, 49,178, 81,159, 25,171, 68,189,137,106,230,212, 86, 20, 85, 59,128,208,200, +149,128, 9, 67,204, 12, 65,196,128, 77, 37, 69,233,147,235,199, 92, 63,250,148,100, 29,113, 60, 1, 35,119,183, 47,248,240,225, + 39, 62,220, 38,250, 44, 13, 71, 73, 48,142,146,125, 16, 6, 73,107,195,195,152, 36,235,187,100,206, 69, 69, 41, 66, 40,211,113, +187,247, 22,107,167,128,157,243,154,198,218, 56, 79, 58, 44,162, 9,136, 65, 86,137,214,106, 4,169,129,214, 59,138,119, 16,229, +146, 45,197,224,181,136,138,218,157, 91, 35,200, 98, 9, 74,146,215, 19, 66,230,238,237, 30,251,149,161,106, 44,185, 88,242,232, +201,174,224,234, 66,161,211, 81,190, 33, 6, 71,102,199,225,176, 39,231, 76,215,122, 92,150,240, 26,235,243, 44,126,148,239,134, + 96,172, 55, 23, 45,198, 57,114, 40,132,152, 56,140, 61, 33, 23, 54,171,142,139,205,154,182,149,203,208, 26,175, 30,243, 41,243, + 67, 89,239, 54,147,163, 40,239,179, 69, 45,106,246, 28, 80,164, 88,227, 49, 71,181,186,121,124,219,138,147, 39, 5,118,119, 7, + 98,180, 24, 19, 53,242,219,254,172,144,181,206, 96,189,192,160,208,162, 87, 26,194,252,192,118,173, 95,213, 82,104,213,222,249, +112, 18, 86, 16,118,187, 53, 14,114, 0,155,207, 32, 25,205,177, 40,185,144,221,180, 2, 58,199,203,186,121,181,101, 30, 76,187, +236, 60,189,155,116, 49, 37,103,172,175,176,198,170,190, 74,132,181,165, 20,218,102, 9,230, 61,187,221, 14, 99, 29,206, 24,162, + 13, 88,231,148, 74, 24,165,104,210, 73, 79,158, 19, 24, 53,209,209, 20,252,168,158,209,182,174,160,120,222,223, 29,192, 85, 52, + 77, 55, 43,182, 13,104,186, 79, 34,231, 72, 49,245,108, 17,200,234,231, 43, 70, 67, 59,208,172,100,221,173, 86, 94, 0, 30, 79, +158, 61,226,120,218,211, 15,129,190, 31, 73, 41,211, 84, 13,149,247, 28,118,123,140,181, 92, 61,186,196,104,119,225,140, 35,141, +145, 82, 44, 38,157,195, 40, 82,140,179, 85,206, 26,139,171,107,142,251,147,116,233, 58,122,137,106, 26, 77, 81,104,113, 95,126, +253, 37,171,235, 71,184,182, 37,132,196,183,127,245,123,156, 49, 60,253,236, 19,198, 83,207,241,195, 29,151, 87,151, 44, 86,107, +254,240,187,111, 48,206, 82, 85, 53,199,227, 59, 85,137, 39,172,173, 88, 44, 59,250,221, 73,130, 1,218,138,162,214,168, 82, 36, + 22,207,123, 79,219, 54, 88,107,232,251,147,122, 49,231,236, 45, 81,172, 34,239, 85,113,150, 56,237, 97,115, 97,232, 3,117,227, +165, 67,215, 3,191,171, 26,108, 37,209,170,150, 76, 44,194, 85,119,197,144,116, 60, 52, 37, 6,197, 20, 25, 99, 18,170,188,142, + 33,125,153, 96, 47,106,189, 51, 98,140, 56, 41,141, 61,149,154,103,235,200,223,253, 71,255, 13,155,103, 95,178, 59,158,176, 78, +128, 23,139,197,146,213,114, 41,162,194,122,129,175, 42, 42,231,177,206, 48, 30, 7,118, 31,238, 89, 95,108,249, 16,247,146, 94, + 55, 70, 17, 47, 97, 24, 41,108, 91, 71, 62,245, 44,154, 21, 95,254,250, 79,184,126,244,136,211,135, 59, 98, 24, 89, 47,183, 28, + 94,189,228,116,251, 26,219, 52, 82,105, 83,168,187, 5,219,199,151,132,251, 29,225,118,224,235,191,246, 53,151,151, 87,252,135, +223,125,203,111,127,120,201,147,166,225, 87,143,175,120,127, 31,249,246,205,123,214,141,103,217, 53,216,182,165,120, 75,213,181, + 24, 99, 56, 28, 78,228,146, 8,187, 59,210,241,200, 41, 37,238,135,192,168, 20,179, 20, 51,167, 1, 42, 63, 82, 24,177, 78, 96, + 39,181,151, 81,117, 78,129, 18, 17,157,134,194,141, 42,237, 92,197, 17,114,134,128, 76,123,239,217,167,157,141, 28, 4,240, 0, +252, 98, 30,116,210, 78,193, 20, 19,195,213, 10, 27, 90, 71,221, 70,173,104,198, 41, 22, 86,241,144, 78, 71,236,197,154,217,143, +141,142,240, 11, 15, 46, 14, 85,237, 78,175,175,152,140,193,205, 68, 51, 35, 52, 28,217, 87, 23, 67,202, 81,172, 65, 89, 70,246, + 89, 85,231, 76, 17,172,231,212, 19, 17,124, 89, 43,206, 11,125,246,201, 89,195,100, 38, 12,102,150, 46, 93, 29,240,102,142,106, + 45,114,118,204,106,100, 41,252,203, 12,243,145,208, 24,180,107,116, 42,168, 50, 15,236,178, 37,139,122, 28, 29,137, 58, 29,231, +154,108,100, 60,106, 29, 20,201,174,142, 37, 18,138, 56, 77,114,227, 88,181, 29,143, 31, 63,102,117,253,132, 96, 32,135,145, 58, + 13,188,125,251, 45,111, 62,188,227,246,163,116,102,235,174, 38, 69,195,253, 49,177, 63,141,244,131,140,167,157, 47,115,167, 86, +215,150, 16, 50,161,159, 60,210,162,122, 47,136, 58,217, 57, 93, 63,100,171,238, 9,125,127, 38, 20, 42, 70, 59,110, 41,186, 42, +231,240, 86, 68,118,190, 22,230, 5,230, 1, 46,120, 94,117, 88,197,197, 38, 64,242,128, 99, 58,211, 53, 19,150,247,239, 63, 50, +140,145,170,118, 56, 95,227,147,228, 57,148,146,201,165,194,166, 68,211,180, 44,215, 18, 5, 27, 99, 38, 29, 14,196, 32,113,203, +149,179,148,144,240, 78,215,130, 73, 16,196,133, 72,127,114,120, 47,162, 96, 42, 67,183,104,184, 94,212,226, 94,241,146,113,110, +113, 84,179,118, 32, 98,172, 85,214,131, 46, 99, 38, 49,156,177, 58,113, 80,129,167, 94,134, 83,242, 91, 41,133,186,110,104,219, + 22, 72,132,216,115, 58,244, 50,237, 48,130,221, 46,202,155,176, 69,167, 97,122,201, 79, 20, 70,107, 11, 41,157, 61,231, 37, 26, +140, 51, 28,227,192, 34, 86,106, 31,157,192, 93, 19,172,201,128,115,243,185, 58,185, 2,140, 50, 52,203,244,239, 63,176,169, 77, + 92, 69,147, 38,234, 20,179, 14,109,122,254,157, 51, 36,157,198, 36,138,198,173,234,158, 93,191,247, 41, 37, 90,131, 88,247,246, + 71,198,126, 96,179,109, 25,195,153,103,159,179,156, 33, 78, 29, 2,166,156,243,212,139, 62, 51,126, 28, 18,198, 58,150,157,167, + 31,122,142,199, 3,171,229, 2, 95,157, 71,129, 20, 24,227,200,233,212,171, 75,165, 60, 0, 74, 8,211,184, 66,136, 79,147, 5, + 39,100, 24, 77,193, 91,203,102,179,226,122,123, 73, 63,244, 28, 78, 61,135,253,145, 90, 69,120, 18,228,146, 89,175, 23, 60,187, +188,226,167, 87,239, 5,252,225, 29,199,195, 81,246,138,136, 95, 62,198, 32,227,187,164, 86, 23,235,105,154,142,251,143,251,105, + 26, 49, 11, 25, 74, 46,132, 24,241, 77,195,205,211, 39, 92,109, 47,184, 61,220,113,251,230, 35,111, 95,191,230,249, 47,158,179, + 90,173,120,241,227,107,246,253,137,231,207, 63, 39,245, 3,119, 63,189,163, 93,118,156,118, 7,134, 99, 79,178,134,211,208,179, +189,184, 32,151,204, 56, 6,182,219,133,188,158, 49, 18,163,136,207,112, 14, 95,121,218, 85,203,120, 72,244,251, 3,163,247,194, +108, 87,216, 72,166,144,147,248,126,221,131,208,131,156, 51,197, 26,124,241, 58,173,147, 93, 90, 91, 9, 57,174,170, 61, 57, 10, +172, 99,198, 16,170, 96,194, 90,139,171, 60,141,173, 25,119,119,132, 96,169,156, 82,199,188, 17,171,152, 49, 84,181,210,171, 50, +140, 67,225, 56, 22,174,218,204, 63,248,111,255, 41,254,226,134,225,180,163,174, 60,109,187,161, 91, 45, 88,174, 87,116,237, 18, +235,196,115,233,124,173, 23, 79,230,238,227, 59, 22,171,142,155,203,150,223,191,248,150,227, 73,203,132, 36,135,182,205,114,240, + 1, 92,125,241, 25,151,191,248,148,227,126, 79,238,143,116,235,142,127,247, 47,254,103, 94,254,197,159, 83, 85,141,118,112,133, +170, 89,240,232,217, 35,194,110,207,112,127,228, 23,159, 63,231,209,179,199,252,197,119,223,243,251,239,126,224,105,219,240,213, + 47,158,243,227,110,207,139, 55,239,216, 84,158,182,173,201,222, 97,218, 90,184,240,109,203,237,221, 61, 41,102,226,110, 79, 60, + 29, 24,115,228, 54,244,244, 89, 4, 78, 5, 67, 85,201, 46,241,118, 31,233,150, 71, 86,139, 29,235,205, 10,154, 6, 59, 6,106, + 35, 9,115,227, 40,112,158, 62,128,241, 18,175, 59, 7,134,152,172, 94,126, 51,227, 79,141,170,217, 37,241, 78, 70, 98,103, 69, +138, 82,166,244,146,155,226, 25,101,103,231,117, 7, 44, 93,186, 45,231,177,157,168,232,181,107,213,135,185, 20,243, 96,106, 48, +225, 95,203,236,127,157,148,240,217, 90, 92,177,103, 63,242,100,121,203,103,166,204, 20, 14,147, 85,184, 36,184, 86,141,196,156, +124,240,197,145, 74, 60,199,180,206,171,119,185,192, 77,153, 92, 48,249, 44,142,123,208,161,203,103, 60, 21, 2,146,106,150, 85, + 4,150,243,131,179,164,156,119,131,115,140,235,100, 85, 82,113,162, 41, 98, 3,147,196, 62,249,125, 43,235, 25,163,153, 71,167, + 41,195, 49, 36, 98,145,189,233,182,109,185,121,252,132,139,235, 39, 56, 91, 19,210, 64, 49, 61, 47,127,250, 61, 63,254,248,134, +251, 99,162,110, 61, 79, 46, 27, 22,155, 39,124,247,242, 13,135,254, 3,251, 83, 34,234,170,172,148,194,230,226,138,175,190,254, +235,146,147,126,188,231,118,119,203,221,221,158, 23,223,191,228,216,139,232,205,171,112,205, 27,163, 99,211, 60,167, 86, 22, 85, +239, 59, 43,100, 70,239, 43,234, 42, 41, 29, 82,215, 28,206,227,155, 90, 71,213, 81, 28,140,186,214,137,243, 16,199,204, 28,115, + 42, 73,245,179,128,183,153,211,233,192,110,183,227,241,227, 71, 26, 21,106, 49, 89,138, 86, 40,148, 84, 83,140,161, 42,150,213, +218, 66, 42,140, 67,207,187,187, 19, 99,137, 92,111, 26, 38, 76, 66,213, 54, 80,172, 36,101,246,137,166,206,212,173, 97,181, 94, +176,104,107,124,229,164,248,146,185,185,116,233, 72, 17, 35,227, 98,157,166, 86,146, 84,153,210,100,142, 40,120, 43,137,134, 15, + 44, 25, 58,169,146,240,146,148, 18,139,101, 67,211,212,156,250, 35,227,113, 32,246, 35,198, 61,248,126, 79,250, 19,100,156, 93, +233, 37, 42,240, 45, 48, 41,207, 35,245,105,109, 37,127,192, 17, 75,198, 91, 43,197, 20, 69, 66, 95,116, 98, 96,157, 20,141, 86, + 11,215,162, 49,168,211,231, 56,249, 66, 77, 65, 11, 61, 51,175,164,205, 3,132,243, 36,150,155,242,213,139,147,179, 33,199,130, +171, 13,222,215,196, 48,234,179,160,154, 17,107,104,170,154, 48, 14, 28, 79, 71,174,174,183, 88,115,210,245,157, 76, 32,189, 53, + 84,200, 89,100,231,226,162, 40, 84,202,224, 67, 8, 56, 87,104,234,134, 83,223, 19, 99,166,233, 22,218, 25,156, 69, 51, 41, 68, + 17, 85, 24,141,201,227,188, 83,140,165, 16,162, 36,116, 89,231, 48, 41, 19, 38, 84,160,181,226, 83,174,107, 14,251, 3, 31,239, +110,177,214,209,117, 29,119,119,119,248,202, 97,139,101,123,177, 97,179, 92,242, 50,189,161, 91, 45,177,214,176,187,187,167, 97, +122,225,178,127,156, 4, 55,185, 20, 17,100, 24, 71, 76,233, 12,208,143,211,190,206, 48, 30,122,158,127,250,140,231, 95,124,142, +245,142,221,219,143,188,127,243, 30,103, 12,207,191,254,148,126,119,164,223, 31,113,109,205,197,245, 53, 31, 62,126, 80,151,142, + 97,119,191,167, 56, 71, 72, 17,156, 99,117,177,101,127,251, 17, 79, 22, 15,103,129,144,210,236,223,247,206,177, 92, 44, 88, 52, + 11,126,124,253,138, 84, 10,195, 24,206,150, 64, 35,124,100, 83,116,125, 97,153, 9, 71, 41,137, 33, 33,167,172, 95,118, 71, 91, +215,152, 74, 62,224, 10,195,152,242, 60,242,211,166, 75,196, 43,206,178, 92, 53, 60,125,126,205,179,241, 17,239,126,186,229,112, + 24,164, 8, 32,225,140, 48,208,171, 70,246, 84, 33, 6, 73, 97, 11,153,191,241,247,254, 22,235,235, 27,138,105,168, 87, 11,234, +110, 65,215,117, 52,181,199, 87, 53,222,122, 17,116,104, 22,113,101, 45, 31, 94,255,132, 5,110,158, 61,199,166, 59,226, 48,114, + 60,157, 68,144,168,182,145, 69,227, 89,212, 21,214, 59, 46,174,174, 24, 15,247,196,195,145,245, 98,201,127,250,183,255, 27,191, +253, 63,255, 45,190,174, 24,199, 65, 46,165,182,101,243,232,130,120, 56, 16,246, 59, 30, 63,123,194,205,227,103,252,246,197, 15, +124,243,226, 39, 13, 65,189, 0, 0, 32, 0, 73, 68, 65, 84, 21, 87,222,241,229,243,167,220, 31, 6,126,120,251,158,174, 42, 44, +234,134, 16, 11,213,178,165,234, 22,212,171, 37,131,238,206,227,225, 64,127,191,163,228,196,126, 12, 12, 89, 2, 58,202,148,155, +109, 12,174,174, 49, 68, 62,236, 14, 80, 59,168, 28,215, 23, 27,156, 17,225, 15, 14, 92,229, 72, 49, 18,199, 68,240, 18, 79, 60, +239,201,140, 10,114,172,211,139,200,106, 26,149,136,244,166, 8, 76, 25,157, 91,197,171,234,197, 51,141,242,140,147,106,126, 34, +204,149, 51, 74,114, 86,180,155,243,136,151,146, 49,218,253, 25, 99, 21,120,161,211, 26, 35,225, 24,243,184,183, 72,215, 36,123, +197, 52,115,220,207, 74,118, 29,185,103, 51,123,149,207,250,191, 60, 31, 84,232,101, 83,230,203,250,156,163,105, 10,243,133, 60, +139,231, 38,237,154, 38,100, 77, 35,245,137,230,150,117, 7, 61, 97,236,165,235, 18,189,130,157,188,220,246,108,107,178, 58,218, +151,247,110,218,106,104, 88,147, 84, 79, 10, 83,242,152, 98, 72,197, 50,132, 72, 12, 6, 99, 42,154,182,226,209,205, 35,174, 31, + 61,193,184,150, 56,158,240, 37,242,253,203,111,248,230,197, 43, 78,199,192,102, 81,241,236,233,154,223,252,230, 79,249,241,253, +145,211, 31,126,164, 63, 69, 74,148, 11, 35,102,184,122,124,201,223,251,135,255, 53,207, 63,249, 10,235, 44,143,174,110,120,242, +217, 39, 84,190,229,197,203,239,248, 95,254,213,191,228,223,255,223,255, 23,158,204,112, 28, 72, 67, 79,140, 50, 38,159,144,177, +102,178,102,121,125,118,213, 15,237, 39, 20,176, 43, 42,190,146,189,170,215,184, 80, 3, 68,151, 49, 70,108, 83, 36, 43, 29,168, +218,168, 48, 81,242, 7,172,116,171, 49, 69,114,201,248,202,147,146,199, 36, 97,134, 20,239, 40, 77, 75,177, 21,149, 25,201,170, + 67, 56, 13, 39,220,221,192,161, 79,212, 54,112,189, 94, 82, 87,158,197,162,162,115,150,221,209, 18,134,192,106,219,177, 94,119, + 34, 16,174,164, 75,204,185, 16,245, 78,176,186, 70, 49, 38, 19,130,248,208, 43, 47,200,162, 9,126,148,181,192,115,206,225,188, + 19,203,223,124, 97,218, 57, 19, 60,134,204, 98,209, 72,115, 23, 51,167,126,144, 78,213, 78,150, 62, 93,193, 86,242,124, 85,202, + 84, 9, 49,204,177,175, 86,215, 33, 98,173, 44,138,234,205, 88, 87,136, 89,241,222,222,137, 4,174, 8, 99, 69,114, 1,138,142, +244,213, 29, 34,190, 55, 93, 21, 76,193, 69,101,198,178, 78,255,165,130,102,168,193, 57, 41, 65, 86, 67,178,123,151,179, 61,147, +212,221,225,102,204,236,180,198,115, 94,148,237,227,225, 72,223,247,120,239, 84, 84,231, 41,101,156, 87, 4,214,138,149,207, 76, +156, 8,213, 34,148, 12,190, 15,145,235,205,138,170,170,249,120,119,226, 20, 18,155,174,157,171,149,105,215,144, 98,150,113,198, +100,190,127,240,224,101, 5, 82,164,164,209,119, 81,118,201, 88,139,113,150,155,155, 75,138,177,220,239,143,156,142, 71,182,219, + 45,199,227,145, 83, 63,176,109, 55,148,186,112,121,177,153,139,134,166,235, 24,250,145,177, 31,168,218, 86, 4, 0, 41,147, 52, + 25, 68, 24,188,146, 93, 91,140,161, 68, 84,169, 47,194,140,148, 85,120, 48, 38,158,255,226, 57,143, 62,121,202,233,253,142, 15, +239,222,112, 58, 12, 84,203, 37, 87,143,175,185,251,241, 13,135,251, 59,174,110, 30,209, 44, 59,222,255,127,239, 48,222,114,220, +221, 17,198,145, 76,161, 79,129,205,102, 77,202,137,227,254,196,197, 70, 70, 77, 50,218,143,202, 88,183,248,202,179, 88, 46,136, + 41,179,223,237,101,151, 51,171,126,172,226, 69,147,198, 11,150,153,236,150,148,162,149, 98,198, 54,114,216,215, 85, 37, 66, 60, +239,100, 23,165,202,219,185,235, 43,210,169, 88,107,169,235,138,237,197,146,110,221,144, 15,137,213,106,129,119, 53, 41, 4,188, + 5, 72,212, 78, 20,167,113, 24, 24, 99,230,254,212,243,233,231, 95,243,236,243, 95, 82, 55, 29,109,183,166,106,215,184,186,166, +210, 76,246,218, 87, 84,117,141,173, 43,124, 85,227, 72,220,127,188, 39,140, 3, 87,143, 31,209,110,215,236, 95,189, 85,203, 96, +156, 37,225,149,179,116, 77, 77,137,194,220,127,247,195,119,212, 37,177, 93,110,248,230, 63,252, 59,254,227,255,254,111,112,198, + 50,132,147, 92, 82,214,178,220,108,160,239, 73,199, 3,143, 31, 61,225,250,230,134,239,222,188,230, 47, 94,188, 96,235, 28,159, + 92, 92,177,219, 31,248,225,118,199,178,178,172,235,154,253,144, 48,117, 75,179, 92,210, 46, 22,228, 16, 56, 30, 79,196,227,129, +225,254, 14, 76, 98, 31, 71,134, 34, 70,171,137, 48, 85,180,251, 75, 57, 9,215,189,105,184, 63, 13,164, 55, 63, 82,217,194,229, +246, 6, 20,163, 91,233, 62, 51,165,204, 48, 4, 97,179, 47,228,115,153, 59,246, 82,244,176,157, 46,234, 41,208, 65, 71,209, 42, +114, 51, 69, 52, 16,226, 77,182,242,144,234,136,110, 22,163, 78, 30,100,189,244,103,183, 28,103,114, 85,121, 48,206,182, 78,251, +121,229,177,231, 7, 94, 90,235,220,252,172,156, 33, 48,102, 86, 1, 27, 61, 77,140,146,203,152, 29, 44, 42,139, 85,200,141, 74, +200, 53,223,253,124, 40,207,175, 3,165,196, 21,233,193,115, 74,130,251, 78,233, 65,241, 32,100,186,164,187,204, 73, 16,103,103, + 58,154, 18,235,172,213, 75, 80,251,250,249, 66,231, 92,196, 56,193,235, 90, 45,164,138,113, 20,103,112,222,144,163, 40,207,251, + 32,252,187,170,170,185,188,186,230,226,234, 26,235, 60, 41,141, 16, 3, 47, 94,125,195, 55,223,252,129, 49, 56, 86,203,134,103, +207,175,248,155,127,250,103,184,230,154,253, 15,127, 78,223, 71,250, 33,205,211,140, 2,124,249,245,175,120,242,201,103, 84,139, +142,171, 71, 55,124,245,229,175,169,214, 75,108, 41,252,230,250,154, 79,127,249, 43,254,249,127,255,207,248,238,155,191,162,164, +192,225,118,199,238,110,199,253,253, 61,125,127,156,207, 76, 55,137,220,244,243,246,198,226,140,167, 32,200,208, 20, 34, 37,171, +192, 77,215, 40,121,182, 19,138, 16, 86,138, 68, 72, 81,162,103, 5,244, 37,127,191,105, 86, 98, 71,174,188,188,207,141,138,136, +149, 17,144,179, 76,238,173,171,112,181,161,189,184,228, 42, 69,134,126, 96,183, 63, 50,142,137,136,101, 89,123, 22,109, 77,235, + 44,117, 91,225, 45, 44,219, 10, 91,123, 48,150, 68,198, 70, 75, 50,146,201, 17,139, 20, 91,101,130,108,141,137, 84, 96, 89,249, + 57, 84,103, 54,225, 89, 41,152,179,117,228, 84, 72, 57, 82, 30, 58, 40, 74, 6,107,105, 59, 97,125,164,152, 24,251, 56, 3,183, +166,213,111, 49, 83,226,185, 78,223, 84,251,101,149,163,194, 4,116, 82,164,121,121,176,178,202, 72,161, 63, 61,115,243,154,108, +178,142,154,115, 7, 46,255,223,204, 82,153,172, 69,128,113, 19,182,121,178, 91, 48,143,243,205,131,130,124,246,165, 35, 5, 91, + 52,105, 70, 74, 91,107,132,208,138,157, 5,176, 50,141, 43, 26,108,164,182,218,169,120, 85,139,182,247,110, 78,108, 43,211, 57, +227,100, 98,232,199,113,160,107, 47, 36,160, 96,127, 16, 52, 96, 91,159,137, 56, 72,152,135, 92, 96, 90,249,144,231,148,136,244, + 64,177, 42,168, 63, 7, 86, 66, 62,198, 20,216,172, 87, 92, 94, 62, 34,198,192,253,237,142,166, 91,114,113,121,193,235,159, 94, + 83,215, 30, 67, 97,187,221,176, 89,181,140,167, 1,140,161, 93,116,140,195, 72, 14, 25,187,144, 78, 61,166, 72, 12, 3,248, 90, +212,185, 46,171,128, 34, 17, 75,164,182, 2, 48, 72, 73,186,223, 49, 68, 86,219, 37,159,126,245, 37,139,174,227, 47,191,253,115, + 62,188,253, 72, 44,142, 79, 62,251, 5, 37, 6, 14,135, 61,197, 22,214,151, 23, 28, 15, 71,142,251, 61, 54,103,246,239, 62, 98, + 87, 29,161, 68,114,137,108,182, 91,238,110,111,113, 64,183, 16,204,105, 63, 6, 17,173, 24,249,192,150,139, 5,139,229,130,119, +239, 62, 8, 77,204,203,110,234, 12, 22, 53, 15,214, 25, 26,143,145,132,197,156, 53, 66,209,153,105,156, 14,149,129,182,170, 48, +186,214,152, 8, 90, 20, 52,166, 85, 82,146, 22,235,142,237,213,134,146,161,223, 7,193,157, 90,232,218,134,101, 83, 99,140, 88, +136, 98, 26,232,211, 72,204, 1,227, 90,158, 63,127,206,114,189,101,181,220,144,245,130, 33,203,197,103,124,141,243, 50,214,247, +117,133,113,133,227,135, 3,251,251, 91, 22,219, 13,171,203, 11,114, 42,132, 48, 8,253,202,214,148, 34,153,198,141,151,162,101, +215,143, 12,167, 19, 63,125,251,123,170, 24,120, 87, 12,191,253, 63,254, 13,253,225, 72, 56,157, 36,154,215, 91,124,219, 80,151, + 8,135,129, 39,215,143, 89,108,183,188,122,255,129,239,126,124, 73, 99, 29, 79, 86, 75, 78, 37,241,241,112,162,245,176,112, 21, +199, 49,147,173,103,185, 89,178, 88,175, 36, 29,239,112,224,116, 56, 48,220,237, 40,121,164,207,145, 35,153, 56,193, 39,244,194, + 53,198,137, 24, 46,138,149,111,185,217,112,181, 94,177,191,189,231,199,159,222,179,104, 90, 22,155, 21, 69,116, 56,212,222, 49, + 40, 18, 57, 12, 81,214, 70,110,154,152, 8, 84,162, 32,236, 1, 1,200,232, 69, 61,165, 77, 21, 51, 31,102,197, 78,158, 85,165, +162, 61,252, 62,168,181,198,204,151,254,195,176,138,179,133,108, 98,187, 59,103, 30, 80,228,202, 76, 98,159, 44, 62,197, 32, 15, +121,138,234,146,208, 29,174, 77, 51,170,213,168, 85,103,214,126, 76,228, 58,109,133,102, 88,140,142,200,147, 42,174,115,154,252, +209,121,254,217, 69,109,111,230, 63, 99,109, 23,242,249,207, 77,105,101,229,231,233,115, 83,246,185,153, 19,183,204,153,152, 55, + 17,226, 52,200,206, 98,117, 90, 43,107,139, 82,132,241, 96,212, 53,114, 28, 71, 82,145, 14,108,165, 96,153,182, 93,146,178,161, + 31,246,188,125,249, 29,191,253,253,239, 40, 24, 54,109,197,231,191,252,140, 63,250,155,255, 5,110,241,132,187,187,143,164,148, +216, 29,143,132, 44,246, 76,147,224,250,233, 5,207, 62,253,140,182, 89, 80, 53, 21,219,139, 11,252,178,211,108,111,200, 99,100, + 81,119,252,173,191,243,103, 28,246, 59, 78,187, 29,222, 84, 56,191,196,249,138,195, 78,130,176, 74, 78,178,118, 83, 81,151, 55, + 83,146,154,172,113,138,134,137, 56, 83,176, 38,225, 73,115,211, 68,158,160, 58,121,134, 76, 21,196, 73, 99,140,160,110,139, 49, + 44, 22, 29,109,183,160,173,151,196, 20, 48,202,160, 15,113,210, 46, 76, 95, 43,185, 36,114,129,166, 93,242,244,230, 18, 12, 28, +142,189,224,120,157,197,187, 90,166,161, 94,114,218, 93, 45, 34, 50,156,197,230, 40,159, 69,209, 49,116,150,162,205, 26, 17, 64, +198,144,168,173,224,100,141,183,202, 42, 16,145,175,169,244,223,193, 81, 76,158, 69,145,101, 66,250,103,185,180, 54,219, 5,217, +100,246,187, 3, 67, 63,204, 83, 34,171, 36,196,172,247,147,119,154,102,166,124, 12,171,211, 56,153,222, 70, 41, 28, 82,162, 88, + 93, 51,101, 85,145, 91, 45,140,199,201,206,121, 38, 45,254,140,164, 90,206,250,134,152,166,144, 43,121, 22,164, 70,179,202,164, + 96, 78,141, 59,163,153, 31,224,157,141,112,236, 71, 51,146,115,196,251, 86, 86, 40, 41,233, 52, 43,170, 83, 69, 24,247,227, 48, +156, 71,247,198, 97,156, 35,196,129, 84, 28,222,120,209,161, 36, 41,170, 82, 22,219,114, 6,252, 56,140, 52, 77, 77,206,112, 58, + 30,168, 43, 79,221, 52, 58,234,146, 81,239, 57,152,225,172,194,181, 83,152, 69,154,108, 42, 50,106,180, 22,162, 26, 85, 82, 74, + 92, 92,172, 89,174, 26,210, 56,112, 56, 30,216,110,182,220,221,222,209, 31,143,172, 54, 43,234,202,115,117,113, 1,197, 49,198, +129, 4, 44,186,142, 15,239,222, 18, 71,217, 9, 69, 77, 90, 43,198,170, 82, 56,171,207,211,209, 15, 3,169, 88,173, 82, 50, 49, + 5, 82,201,140,105,228,249,243,175,249,228,179, 79, 56,237,110,249,233,119,223,226,187, 26,154, 37,143,158, 60,230,254,246,150, +126,127,160,219, 92,112,113,117,197,119,223,126,139,201,153,251,251,123, 78,125, 79,183, 90,144, 82, 97,217, 46,201, 99,224,184, + 63,112,177, 94,225, 27, 71, 10,137, 16,228, 13, 52,198,224,171,154,245,230,130,148, 50,167,227,137,170,174, 72, 36,134, 83,148, + 93,160, 50,123,141,245,146,189,109,161,196, 72,204,226,121,205, 37, 83,123,201,173,119,222,225,138,149,135,200,170,237,133,137, + 76,165, 54, 9,103,177, 46, 83,119, 13, 23, 55, 87,212,221,154,253,237, 78,144,233,200, 72,190,171,107,106, 47, 63,221,251, 37, +203, 58,115,113,209,176, 88,182,220,254,213, 29,139,110,133,171, 60,253, 48, 96, 76,194,123,137,223, 45,117, 69,114,186,187,169, + 3, 37, 26,134,221,192, 97, 39,171,146,182, 91, 10,135,185, 63, 81, 6,113, 35, 56, 35, 58, 1,239, 61,141,181,140, 33,146,172, + 39,167,145,241,180,227,155,255,244,255,112,255,242, 37,105,119, 98,140, 59,108,150,156,121,223,212,212, 93, 11,185,231,179,231, +159, 18, 11,188,188,253,192,171, 55,111,240,166,230,147,174, 38,164,194, 16, 7,106, 11,173,175,216, 15,145,221, 16,216,222, 60, + 98,125,113,129,247,142,227,233,196,225,126,199,233,227, 45,101, 28,233, 75,230,144, 84,197,236,164,138,118, 58, 38,143, 26,164, + 51, 38,113, 83,156,250,192,231, 79,175,185, 90,173,249,225,213, 15,188,124,243,158,175,187, 53,190, 50,194, 98,247, 53, 13,134, + 49, 22, 98, 22,151, 66, 85, 9,234,210,123, 59,163, 42,179,122,223,166, 74, 30, 3,222,248, 7, 62, 85,167,246, 25, 71,182,231, +221,183,224, 63, 85,144, 58,131,162,101, 34,230,212, 98, 84,172,225, 1, 70,123,182,148, 19,147, 36, 93, 25, 67, 33,226,245,114, + 19, 64,142,193, 36,189, 68,153,176,171,101,182,220, 88, 47, 20,149,152,148, 78,101, 69, 29, 95,116, 68, 41, 23,177,118,223, 6, + 61,148,133, 81, 45,250, 1,241,239,103,237,200,245,101,171,170, 61,205,252,237,156,167, 36, 54,189, 72, 20, 68, 99, 21,252, 33, + 35,118,217, 23, 26, 61,100,157, 90, 60, 37, 63, 62,233,154, 65,166, 27,214, 66,214,181,133,196,203,122,237,168, 44, 67,148, 29, +184, 49,142,101,183,224,230,209, 99, 22,203, 13, 56, 67,191,191,231,221,171,151,124,243,205,239, 24,146, 97,187,176,124,250,213, +103,252,201,223,253, 39,100,239,136,241, 36,197,178,210, 23,163,113, 20, 43,182,220,213,122,195, 98,185,166, 54, 30, 31, 19,155, +213, 22, 95,213,212,170, 61,200,206, 17,134,129, 69,187, 96,187,217, 98, 82,102,236,143, 88, 27, 5,178,229,188,232, 71, 98,196, +216, 60, 11, 38,173, 62,227, 69,109,102, 83, 58, 89,237, 29,149, 5,156, 37,154,162,127, 7, 92, 50, 12,197,206,239,227,204,196, +159,248, 6, 85,141,117, 78,222,223,202,225,172,128,125, 38, 2,153,172,138,146, 88, 52,157,161,202,158, 33,141, 20,103,168,154, +154,174,109,177, 41,178,110, 91,174, 46, 30,209,117, 45, 57, 38,246,253,158,125, 78,108,173,103,233, 42, 81,226, 59, 65,247,154, +172, 30,191,156,102,232,209,132, 4,174,188,195,249,138, 76,198,154,138,148, 5, 5, 91,123, 89,231,141,105, 90, 63, 27,240, 83, +248,137, 37,101, 67,215,121, 22,139, 53, 99, 63,178,219,157,196, 13,100,132,239, 33,133,164,218,218,244,249, 50, 78,220, 4, 38, +107,103,108,206, 90, 12,225,167, 48, 71, 11, 11,170, 87, 26, 25,203, 89, 60, 42,228,159, 51,122,217, 24,133,189,232, 56,223, 56, + 9, 17,154, 50, 13, 44, 50,205,246, 42,246, 76, 26,158,148,116,221, 98, 85,252,103, 30,176, 94,156,149,162, 62, 38,249, 30,120, +235, 20,167,174, 41,114, 49,206, 34,184, 48, 40,184,204, 88,153,220, 88, 59, 7,169,233, 99,174,103,129, 52,222, 73, 97, 81,214, + 85,150, 85,183, 32,164,200,221,253,129, 69,215, 80, 85,142,130,197, 89, 39, 2, 13, 77,247,153,162, 33,167, 74, 92,215,116,228, + 82, 8, 42,114,113, 86, 40,104,165, 88, 78,177,112,177,189, 96,179, 88,203, 20,192,121,154,186, 99,119,183,151, 29,144, 49,108, +183,107,150, 77, 77,193, 18,198,136, 87,242,208,112, 26,196,146,166,149, 89,140,105,102,231,230, 82,112,166,194,122, 75,136,145, + 90, 89,235, 25, 25, 89,140, 41,209,117, 29,159,126,253, 25, 77,215,241,234,219,111,197,204, 95,215, 92, 95, 93, 96,125,197,113, +119,160,202,112,121,117,137, 45,133,143,183,183,140,253,192,254,195, 29,174,178, 4,205,117,222,110, 46, 56, 28, 78, 20, 42, 22, + 77,131,209,170, 47,167,172,202,199,194, 98,177, 96,187, 93,179,223,237,133,100,231, 28,118,170,162,244,176,155,178,172,205,204, + 61,142,164,146, 8, 41, 97,138,144,223, 80,241, 84, 61,141,221, 39,239,164,254, 25, 97, 93,203, 30, 21,235,217, 94,110,216,108, +183,140, 67,224,120,236,165, 90,180,150,186,246, 84,109, 69,182, 5,215,212, 44, 54, 27,110,158, 60,229,201,211,207,120,244,201, +103,100, 19,168, 52,153,207, 56,176, 85,133,169, 26,140,247, 24, 47, 42,126,163,144,141,211,254,142,251,247,111, 8,121,160, 91, + 45,169,235,165,164, 32,185, 12,190, 48,234,207,180,165,176,168, 44, 37, 39, 78, 41,113,185, 94,144, 99,224,238,221,107,110,191, +123,193,120,123, 71,223,239, 48, 89,166, 29,166,173,113, 93,141, 39,243,229,245,103,244, 22,126,218,239,248,241,253,158,214,183, + 60,106, 61,161, 20,250, 60,226, 76,166,245,150,211, 24, 57,197, 68,187,232, 88, 93, 46, 49, 11,207, 16, 35,253,253,158,211,251, + 91, 74, 63,112,202,129,147, 98, 71,201, 2,251,240,206, 82, 87, 22,231,197,106, 21, 21, 78, 84, 82,162, 15,137,211, 24,184, 92, +119,252,234,243, 47,200,169,240,226,237, 75, 98,208, 28,244, 18, 37,163,216,171,112, 38, 37,153,176, 76, 56,138, 34,252,106, 99, + 42,137,180, 53, 10,174,180,210, 57, 25,123, 14,141, 72, 8,219, 65, 62, 39,163,214, 25,171,133,154,154,102,237,132,167, 84, 91, +151,181,243,148,193,254,172,123,200,154, 48,101, 69,220, 86,236, 89, 84, 55,137,214,166,139, 82,119,183,214,122, 29, 87,158,167, + 0, 50,180,140, 98, 5,155,197,113, 9, 74,156,125,223,147,202,191,168,166,201,150, 66,137, 73,119,139, 58,142,156, 71,253, 15, +246,236,115, 3,244, 96,143,175, 73, 34,211, 1, 59,189, 26,103,228,188,177,147,167,219, 62,132,182,152,115,216,135, 78, 71,230, + 16,202,169, 75, 79, 16, 71,201, 1,244, 77,203,197,229, 21,203, 77,135,241,112,220, 29,249,240,246, 37,223,126,255, 59, 78,169, +176, 88, 20, 62,249,250, 75,126,253,183,254, 41, 39,179, 96,204, 14, 76, 35, 50,103,223,210, 45,150, 66, 98,196, 66,132, 56,142, + 34, 2,243, 5,227, 60, 33,139,242, 60, 27,221,129,251,154,102,187,224,213,235, 87,252,248,250, 53, 63,253,244,154,251,187,123, +226,208, 43,197,209, 96,157,236,114,165, 11, 23,122,156,175, 12,174, 42,218,109, 11,123,163,118, 78, 2, 90, 26,199,182, 53,108, +234,194,210, 21, 86, 54, 83, 21,233, 58,115,144,238,221, 59, 55, 3, 86, 50, 69,254, 61,107, 48, 41, 17,197,223,194,148,136,154, +141,161, 88,175,225, 31,250,153, 57,143,241, 53,149,245, 84, 10, 84,177, 85, 67,219, 46,185,121,254,140,102,217, 10,242,218,201, + 40, 62, 83, 24, 82,146, 38,203,228, 7, 77,158, 52, 44, 6, 9, 73, 9, 81, 5,129, 85,193,218, 44, 80,160, 36,197,157,197, 11, + 90, 27, 29,157,155,105,165,108,165,115, 47,134, 83,202,172, 54, 11,150,139,142,221,110,207, 48,158,244,187,166, 35,236, 9,224, + 56,137, 42,141, 38, 85,230, 60,143,175,153, 73,141, 70,249, 41,210,168, 72, 33, 41, 17,227,146,123, 2,102, 78,206,123, 0, 9, +154, 47,246, 7,140,132,137, 43,143, 28,127, 70,127,110, 46, 60, 64, 34, 21, 29,251,171,200,212, 73,182,122, 70, 82,159,188,173, +245,245,201, 93,101, 85, 23,101,244,217,152, 34,156,141, 22, 9,121,130,154, 1, 54,159,161, 78, 24,131,119,149,138, 13,229,142, + 44, 37,147, 67,194,183, 77, 67, 91, 85,244,125,207,113,232,105,170, 70,126, 25,175,202,190,146,137, 65, 82,198, 80,241,192,164, + 46, 87, 47,135,252,210, 73,210,122,156,117,130,241, 35, 97,189,231,226, 98,139, 51,133,144, 34,190,109, 8, 41,112,220,237, 9, + 41,225,234,138,155,199, 55,132,211,128, 45,133,208, 7,154,118,129,111, 44,227, 16, 40,206, 74, 80,134,194, 82, 50, 89,246,209, + 37,227,189,236, 39, 79, 49,227,106, 71,177,153, 52, 6, 9, 82, 72,137,175,255,218, 87,124,254,197,231,236,222,223,242,242,247, +223,210, 93, 45,169,219, 5,203, 85,199,105,220, 17,199,128,243,150,237,245, 35, 62,220,223, 51, 30, 78, 12,135,147,196,220,181, + 13, 99, 78,248,214,209,117,158, 15, 31, 6,214, 11, 47,197, 78, 46,132, 24,200, 54, 97,138, 32,118,215,235, 21,228,129,208,247, +122,249, 22,142, 9,241,207,234,101,156,109,158, 15,112,155,197, 47,153,212,153, 98, 27,167,187, 53,168,141,149, 88, 85,171, 23, + 70, 16,197, 60,160,106,105, 3,206,179,218, 46,184,124,114,137,181, 81,198,206, 67,160,100,139,179,133, 85,219, 80,215, 53, 57, +123,201,143, 95, 46,185,120,118, 65,191,219,177,201,208,168,141,106,125,113, 65, 74, 69,148,237, 94,124,246,179, 48,195, 24,198, + 83, 79, 56,245, 20,107,168,155,150,166, 93,146,137,146,107,110, 11,214, 87,120, 44,206, 59,218,198, 49, 14,134, 83,136,172, 86, + 75,150,139,150,116, 58,113, 60, 30, 48,227, 8, 33,224,173, 97,213, 45,193,123,234,166,162,178,142,175,174,158,112, 42,133, 31, +111,239,216,245, 71, 26,147, 88,251, 74,232, 99,100, 42,181,241,140, 41,176, 15,129, 80, 12,151, 79,174,104,186, 37, 37, 64,191, + 59,112,247,246, 45,227,112,162,143,129, 99,142, 18, 67,105,244,178, 45, 14,231, 20,136,100, 68,220,149,148,116,101, 74,193,230, + 2,197, 17, 83,205,114,185,224,230, 89,199,183,175,127,160,173,118,252,226,106, 67, 48, 80, 16,108,111,158,180, 16,105,234, 54, +101,143, 53,225, 41,157,130,169,166,125,176, 81, 22,107, 81, 63,172, 53,146,153, 60, 57, 10,228, 80,115,115,226,211,228, 53,101, +134,220, 60, 24,229,149,159, 67,111, 38,161, 93, 86,232,144,157,108,110,229,204,150, 72, 69,156, 8,182,252,188,160, 68,139,204, +172,106, 89, 91, 12, 46,103,197,192,228,185, 19,182, 69, 10,207,249,135, 23,241,127,155, 34,162, 32,197,237, 97, 74,126,144,147, +158,231,100,171,162,160,165, 9, 54, 50, 95,236,115,254,211,164, 42, 46,179,110,192,200, 19,142,211,200, 40,107,220,172, 31, 41, + 86, 14,126,235,188, 50,194,101, 31, 29, 51,156,162,132,148, 84,117,205,122,179,225,226,234,146,218,116,244,135,158,143,239,127, +224,155,239,191,227, 48, 10, 60,230,211,231,159,240,199,127,246,223,145,243,138, 68,196,216, 6, 76,141,175,193,119, 29,205, 98, +137,115,158, 66, 32, 21, 24, 14, 61,253,113,135, 49,133, 97, 56,241,250,251,223, 1,112,253,228, 9,235, 85,135,173, 44,255,250, + 95,252,115,254,245,191,252,159,216,125,188,163, 12, 65, 87,148,137,146, 50, 30, 79,180,158,104, 4, 27,210, 88,139, 87, 78, 57, +169,144,140,168,178,157,129,202, 25, 92,129, 14,129, 18, 85, 30,106,107,233,115, 38,104,230,120,118,153,133, 45,212,198, 16,176, +130,122, 86,162, 97, 85, 85,212,203,134, 50, 6, 98, 12,132, 97, 16,221, 78, 82,154,154,241, 58,134,238,137,163, 0, 78, 2, 26, +220, 52, 4,182, 23, 13,219,203, 13,181,171,136,249, 72,140, 1,103, 10,117, 37,186, 33, 25,231, 39,188,222,172,242, 61,212, 85, +147,177,148, 36,159,247,116, 89,201, 10,199, 18,179, 92, 58, 77, 93, 9, 4,203, 22,108, 74,210, 60,106,161,131, 78,147, 92,132, +205,102, 77,211, 52,236,118, 71,114,200, 74, 55,143,242,239, 21,171,205,146, 94,110, 88, 42,189,194, 99,137,218, 92,186,185,195, + 46,211,164,119, 14, 99, 41, 84, 86,214,101,177, 56, 48,131, 54,171,144,173, 96,205,209,252,131, 9,192, 98,189,166, 33,230, 9, + 85, 49, 21,221,101,166, 69, 23,205,169, 54, 57,163,142, 99,209, 80,153, 44, 43, 33, 29,165,187,202, 67, 18,209, 91,173,220, 10, +153, 36, 24,134,168,171,120,103,200, 57, 18,211, 48, 99,101,113,134, 50, 78,220, 0, 21, 85, 59,171, 54,112,230,156, 5,223, 84, + 53,109, 93,243,246,227, 71, 98, 72, 44, 90, 59, 27,229,167,212,181, 49,140, 18,180, 32,179,162,121,127,134,226, 77, 99, 76, 24, +155, 36, 8, 67,105, 63, 49, 69,186,182,225,233,147, 71,242,230,233,184, 51,165,204,199,219,119,152,186,230,114,187,101,209, 45, +184, 61,156, 48,214, 49,158,122,234,171, 21,214, 56, 98,136,178,187,177, 16, 66, 16,187, 92, 17, 76, 94, 81,161, 64, 8, 50,226, +175,234, 10,227, 34, 97,140, 12,167, 19,139,205,154, 47,127,249, 21,109, 87,243,221,239,126,207,253,251, 91, 30, 63,255,132,118, +181,196,213, 21,241,112,162,228, 64,115,177,165, 93,116,252,225,219, 63, 48,246, 39,142,187, 61,217, 23,172,243, 12, 41,113,179, +217,176,223, 29, 8, 97,228,209,213, 37,214,201,196, 32,166,132,181,142, 24,133,254,116,117,117,197,225,254, 3, 99, 56,206,108, +231,227, 48, 50, 38,232,244,189,204, 10,140,210,103,111, 14,179,200,165,204, 20, 33,239,140,102,232,234,104, 50, 11,221,107, 18, + 17, 77,103,190,243,142,139,235, 11,218,166,161, 63, 30,233, 79, 3, 20,249, 57,117,101,105,171, 90,179,136, 61, 85,211,226,106, + 79,200,153,229, 98, 77, 10,137,167,215, 27,222,188,187, 37,197, 61, 57, 53, 98, 27, 42,153, 66,163,123, 97,229,114,247, 3, 6, +163, 60,246,165,116,147, 37,225,138,116, 46,198, 26, 76,202, 84,214, 81, 85,142,253,110,192,118, 21,151,235, 37,141, 53,248,211, + 81,132, 29, 69,108, 24,155,229, 6,227, 45,166,242, 44, 93,205,243,235, 27,134,148,121,249,254, 61,125,138,120,138,112,171,131, + 50,159,173, 28, 24, 67,202, 28,134, 72, 31, 34, 87, 79,159,176,218, 94, 98, 10, 12, 97,148, 11,253,112, 96, 8,129, 67,140, 36, + 47,203,215,169,203,179,149,161, 88,171,130, 44,233,246,228,225,147, 39, 52,145, 53,135,160, 33, 85, 29,205,202,114, 57, 70, 94, +126,248,128,115,158,103,215, 43,122, 21, 29,214,190,214,125,174,136, 49,171, 34, 97, 13,147,240,108,230,178,107,138,161,213,131, +198,170,242,125, 10,134,152,212,234, 25, 59,219, 82,138,213,110, 99, 82,232, 99,207, 94,247, 82,102,197,252,249, 66,183, 26,227, +200, 89, 96,167,249,206,115, 76,169,159,226, 94,221,236,133, 53, 70, 66,128, 12,210,221, 39,245,204, 79,206, 34, 55,193,104, 20, +203,204,220,245,163,133,144, 90,134, 84,144,151, 39,149, 77,153, 48,177,121,182, 15, 77,228,185,179,117, 51,205,248,217,121, 26, +161,189,190,179,110,222,189,203,148, 66, 94,171,195, 99,189,211, 8, 92,177, 79, 25, 35, 35, 76,169,154, 28, 41,103,250, 24, 49, + 38,179, 90,172,121,116,253,148,110,217, 18,250,145,221,221, 59,126,252,233, 5,251,253, 30,111, 13, 55,143,159,240, 39,127,246, + 79,201,118,161,231, 72, 5, 94, 81,200, 43,168,155,134,218,123,114, 24,133,145,110, 33,198,145,219,247,239, 8,159, 30, 25,199, +200, 79,187, 59,110,223,127, 96,113,121,197,229,102,205,191,249, 95,255, 21,255,195, 63,251, 31, 57,142,224,107,216,118, 45,139, + 69, 71,237,207,177,162,228, 52,243,246,141, 22,129,185,136,176,112,154,114, 24,131,116,104, 99, 96, 31, 35,158,160,106,112,249, +206, 88, 15,141,102, 18,212, 36,170, 82, 24,114, 81,255,186,167,169, 27,186, 69,195,178, 91,144, 82,160,196,172,152, 84,253, 94, +102, 57,155,114, 49, 56, 87, 83, 74, 34, 12,145, 52, 70, 66, 26,232,186,150,245,122,197,118,211, 17, 78, 71,105, 82,108, 18,123, +106,201, 88, 50,222, 91,189, 52,237,204, 80,207, 70, 58, 97,144,115, 94,120,242,254,156, 77, 80, 68, 96,105,141,165,241,226,193, +207,185, 96,205, 4, 48,210,239,190,145, 70,200,215,150,205,122, 77, 24, 35,187,195, 78,214, 19, 73,223, 31, 13,196, 50,138,117, + 45, 89, 72,157,174,114, 82,128, 22,177, 81,207,115, 32, 77, 89, 76, 58,237, 20,150,126,150,137,134,213, 80, 32,101,225, 27, 59, + 89, 56,117,108,254, 32, 99, 0,181, 26, 27, 21,146, 78,207,233, 89, 28,251, 32, 86,181,228,185,224,113,138,113, 45,217,227,157, +208, 1,171,202, 99, 70,177, 19, 26,221,181,103, 77,222, 44,169,224, 91,139,177,158, 28, 35, 33, 4,172,117, 50, 61,117,126, 14, +141,154,131,155,116,186, 43, 60, 40, 89, 29,248,229, 66, 50,163, 15,167,158,148,243,188,152,183,122, 25,165,148, 36, 41, 77, 63, + 40,227,236,172,222, 68,129, 51, 49, 37, 76, 78, 52,211,142,137,194, 16, 70,218,205,154,139,213,154,140,228,122, 87, 85,197,241, +112, 71,223, 7, 46, 87,107,174, 31, 93,139,237, 37, 75, 46,242, 88, 18,173, 98, 17, 83,146,125, 52, 70,252,233, 50,238, 62, 75, + 21, 27,239, 9, 58, 10,237,218,154,144, 18,161, 31,201, 9, 62,251,236, 83,110, 30, 63,225,237,143,111,120,253,234, 71,201,251, + 93,173,241,171,142, 52,142,164, 49, 96, 19, 44,183, 27,226, 56,240,225,195,123, 14,187,131,224, 95, 43, 71, 48,133,214, 57,214, +139, 21, 63,253,244,142,229,178,165,169,171,179, 34,177,200,155, 30,203,200,205,229, 21,222, 89,250, 99,175,226,147, 68, 63,142, +244, 99,144, 49,161, 97,182, 63, 24,107, 68, 72,164,191, 70, 42,178, 84,170,156, 87,203,216,121,151, 72,200, 42,164,139, 10,217, +152, 60,143,134,139,203, 21,171,203, 45, 37, 37,142,135,158, 24,180,210, 87,229, 57, 69, 68,120, 33,100, 92,151, 24,226, 72,126, + 27,113, 23, 29, 93,219,240,203, 47,158,242, 23,223,223,113,220,221,210, 45,111, 40, 36,217, 49, 21, 25,249,216,148,137,113,196, + 23, 1, 33,136, 82,182,145, 7,187, 68,156,141, 56,235,168,106, 47,187,119, 21,119, 21,103,184,220,174,233, 42, 67,147, 51, 53, + 98,107,114,206,176,236, 90,176,134,232, 13,219,166,225,147, 71, 79,137, 41,243,219,215, 63, 74,247,101,229, 64, 43, 33, 81, 85, + 53,222, 89, 74, 30, 25, 82,226, 16, 37, 24,104,125,113,193,230,226, 82,232,104, 38,115,255,230, 13,167,251, 29, 49, 37,246, 49, +144,172, 0, 48, 28, 82, 16,120, 11,117, 39, 58,134,126, 24,232, 67, 38,167,168,106,109,169,178,173, 85,125, 70, 85,145,235, 37, +222, 27,110,174,158,113, 28, 10,223,253,244,142,170,242,220,108, 22,244, 81,178,206,189, 85, 91,219, 84,245,103,169,170,203,204, + 37,215, 56, 71, 43,133,216, 20, 81,106, 52, 26,177, 24,237,142,173,147,232, 96,103,113, 88, 5, 92, 76,182, 31, 85,172, 63, 16, +207,149,153,179,126, 22,237, 8,128,105, 58, 84,220,172,148,159, 46, 78,107, 36,212, 67,161,242,234,154,144,244,135,252, 16,140, + 99, 30, 16,243,114,198, 42, 2,122, 58,152, 72,231,226,162,168, 80,203, 42, 62, 50,150,179,221,109, 82,231,139, 87, 93,197,157, +211,152,127, 10,157,112, 66,235, 51,156,153,221, 57, 75, 17, 97,205,236,206,215,103,197,104,160,141,104, 67,140,181, 50,233,152, +186, 66, 28,185, 88,134, 24, 9,217,176,168, 22, 44,151, 75,186,229, 2,138,225,120, 58,240,211,235, 87,252,244,250, 22, 67,224, + 98,179,225,239,252,131,127, 66, 89, 62, 37,231,145,186,174,112,222, 99, 43, 47,151,144, 47,248, 74, 8,142,214, 77,172,118,121, + 78,239,223,189,227,213,183,191,103,121,113,193,199, 55,239, 25, 78, 39,162, 41,124,247,187, 63,240, 23,255,254, 59, 22, 53,248, + 22, 66,129,227, 73,226,163, 59,111,169,189,197,213, 30,167,156, 0,175, 48,154,160,128,120,107, 50, 57,169,141,202,129, 43, 9, + 66,224,200,136, 43,153, 90, 25, 8,113,130, 15, 41,240, 39, 26,195, 48, 36, 14, 99,162, 88, 25,105,215,117,195,118,187,210, 21, +168, 94,152,214, 97,156, 96,102,101, 95, 29, 25,135,145, 98, 61,206, 87, 12,125, 15,113,164,173,107, 98, 85,184,216,108,168,109, + 35, 49,197,222,233, 5,165, 22, 75, 43, 29,179, 53,114, 25,186, 41,196,100,154,190,100, 72, 65, 4,176, 57,161,187, 97, 71, 76, + 82,208, 85,181,195, 87, 50, 14,119,106, 81,180, 37, 61, 32, 15, 74,178, 93,187,104, 88,111,214,244,167, 61,225, 52,170, 14,163, + 8,122,119, 38, 43,170,181,221, 24, 76, 37, 22,212, 18,197,111,110,245,156,204, 73,206,221,201, 54,108,203,121, 69,228,172,192, +157,130,102, 31, 76,169,234, 51, 88,106, 14, 80,146, 98,213,205,223,215,172, 75,163, 50, 47,177,220,244,189,157,115,210,203,153, + 46, 57,137,250, 74,166,210,144, 27,105,224,228,210, 78, 57,227,172,157,249, 14,194,118,119,120,231, 68,132,174,137,125,206,123, + 45,100,141, 22, 81, 89,115, 17, 20, 79,141,147, 66,199, 88,252,170,235, 8, 41,112, 26, 71, 76,229,228, 48,197,232,220, 31, 73, + 32, 27, 6, 13,165,151,177, 92, 74, 81, 13,255,118, 86,224,121, 13,185,143, 57, 17, 74, 38,149,204,103,143, 31,115,117,181,228, +208, 15, 28,142, 61, 79, 30, 93,243,253,183, 63,112, 60, 14,124,190, 93,115,121,117,201,112,220,225,180, 51, 56,141, 35, 55, 77, + 67, 28, 19, 49,140, 56, 10,174,174, 8,251,157,128, 3,204,132,135, 5,223, 52, 28,143,131,142,226, 29,227, 8,135,211, 64,187, +104,248,226,151, 95,115,218,237,248,240,250, 53,135,211,192,227,101,199,245,205, 35,118,125,224,120, 60,226,141,193,183, 13,219, +171, 11, 62,188,121,207,225,254,196,225,246, 40, 95, 84,239, 72, 68,182,203, 37,199,113,224, 20,123, 30, 95, 92,203,206, 34,103, + 85, 69, 87, 12, 57, 17, 75,226,242,242,146,227,105,207, 56,140,122, 32, 75, 71, 41, 97, 29,154,224, 99,101,239, 36, 81,157,102, +154,128, 18, 82,166,107,106, 42, 39, 62, 75,171, 95, 34, 76,209,145,179, 42,129,139,170,125, 29,116,139,138,139,155, 43,218,166, +230,112,183,163, 63,141,218,221, 64,215, 84,212,222, 51,244, 35,161, 31,169, 46,215, 52,235, 78,224, 65,167,158,123, 59,114,177, + 93,240,139,167,143,249,120,124,201,233, 56,176,190,114,154,210, 36,150,153,172, 25,233,198, 20,108, 93,145,200, 52,109,163,108, +136, 44, 68, 47, 9,114,166,241, 53, 37,201, 72,205, 55,158,171,203, 45, 93, 85,211,216, 72, 87,162,140,130,156, 99,213, 9,157, + 48,123,195,114,181,228,243,171, 27,118,167, 35,191,251,233, 53,197, 73, 8, 67, 78, 35, 62, 68,218,170,166,173, 61, 57, 5, 78, + 41,113, 24, 3,167, 4,198, 59, 54, 87, 87, 84, 77, 77,177,137,251,119, 31,216,191,121, 71,140,137,251, 16, 72, 78,253,223, 42, +146,241, 22,170,166,162,109, 32,230, 34,217,206, 37,113,232,179,250,178,101,151,219,212, 13,222,215,212,117,203,224, 68,116, 85, +213, 13, 55, 23, 23,124,119,236,249,253, 79,183, 44,141,193, 46, 59, 37, 73, 89,156, 36,210, 75,249,170, 81,162,178, 22,129,226, +156, 16,169,140,198, 63, 40, 10, 83, 70,198,211,254,171,194, 25,175, 85,186,213, 16,151,243, 8, 94, 2,119, 39,213,172,253,217, +216,218, 60,136,138,152, 32, 23,118,218,107,154,115, 16, 11,230, 44,232,153, 47,109,237,176,207, 55,248, 68, 65,179,148,226,229, + 64,182, 83,120, 18, 51,107,158,105,106, 52,167, 93,137,195, 68,104,114,162,166, 87, 90,205,207, 10,143, 41,191,122,250, 79,196, +181, 73, 39, 22, 15,119,239, 70,117, 39, 50,133,178,206,232,101,226,180, 27, 23,107,161,177,178,187,181, 70,131, 55,172, 35,140, +133, 33,102,106,215,208, 46,182,172,214, 29, 38, 15,140,125,226,237,171, 23,252,240,234, 7, 98,200,108, 54, 21,127,250, 95,254, + 67,170,237,167,196, 50, 80,215, 45,222,181,114,192,122,121,255,199,210,208,212, 29,237,162,102,123,185,165, 31,110, 41, 46, 51, +246,153,251,219,119,124,247, 87, 3, 77,219, 17, 67, 96,127,251,145, 49, 5,222,190,248,192,118, 35,151,185, 92,156,234,121, 54, +178, 58, 76, 38, 83, 98, 0,235,240,126,226,131,203,133,235,179,118,189,122,150,214, 38,179,105, 12,235,166,112, 26,197,154, 23, +180,104, 74, 22, 18,181,224, 65,139,236, 90, 79, 73,198,239,214, 25,124,237,233,150, 21,143,110, 46,231,164,187, 92,178,172, 41, +212,169,148,139, 34, 75,157, 97, 28, 70, 98,138, 56, 18,206, 39, 76, 49,108,218, 5,235,205,134,144,131, 8, 6,245,146, 40, 70, +248,237,174,114, 20,194, 60,102,150, 85,212,228,164, 48,103, 49,181,147, 73,150,177, 78, 34, 98, 83,164,128,192,155,116,126,237, +138,149, 21,142,142,195,141, 81,219,217,152,216,220,108, 89, 44, 59, 62,188,126, 75, 12,249, 28, 52, 52, 23,162,103,134, 67, 54, +114,102,123,157, 6,151, 34, 86,231, 41, 6,213,148, 41,181, 51, 49,161,160,172,245,218,188,138, 93,213, 24,101,170,100,137,196, +157,196,174,147, 1,165,228,179,166,165, 76, 81,227,115, 62,129,196,201, 78, 84,167, 57,196,101,190,216, 57, 23,223,222,168, 63, + 93,114, 67,250, 81, 86, 2,190,114, 36,157,126,167,156,240, 26, 1, 28, 83, 34,101,131,215,220,123,231,172,102, 6,200,251,110, + 85, 35,113,254,124, 53,189,110,211,181,244, 99, 96, 63,142, 85,107, 76, 10, 0, 0, 32, 0, 73, 68, 65, 84,184, 74,193, 27, 15, +248,207, 49, 36,250,211, 48, 91,117,140, 30, 56, 69, 43, 12, 73,158, 41,243,120,166,228, 44,225, 6, 17,158, 60,185, 97,177,232, +216,239,118,116,109, 67,211,181,124,120,247, 1,239, 29,151,151, 91,188, 49,164, 32, 40,193, 16, 2, 37, 69,186, 69,199, 56,202, + 46,203, 56,169,159, 66, 28,103,133, 39,165, 80,233, 39, 22,198, 36, 73,109, 77, 69, 74, 34,120,250,228,171, 47,216,108, 54,188, +122,241, 3,195,241,200,241,184,103,125,125, 67,221, 53,140,195, 48,197, 62,177, 88,175,241,149,227,237,187,247,244, 31,142,132, +126,192, 85,158,104, 33,217,204,122,181,165,223,247,180,190,165,109,234, 7,214, 50, 17,203,196, 92, 88,175,214,172, 23, 29,199, +251, 61, 49, 4, 65,233, 22, 25,111, 61,196, 14, 78,170,102, 17, 23,165,169, 33,194,148, 76, 83,137,239,185,113, 78,178,161, 53, + 23,119, 82, 14,219, 89, 41, 45,235,143,213,197, 5,203,205,146, 16, 3,253,105, 32, 37,169,150,189,119,116,181,116,219,197,192, +226,114,203,205,211,167,132,148,249,240,241,150,219,253,158,254,212, 51, 14,153,237,229, 37,191,121,182, 37, 29,118, 48, 36,108, +182, 42,242, 74,228,241,132,203, 89,125,159, 25, 87,181,242,250,115,196,148,128,181,105,134,152,156,246, 71,150,117, 67,211, 46, +184,186,184,166, 91, 84,180,166,176, 46, 6,155, 36,231,122,213, 45,196, 70, 86, 85, 92,110,183,252,209,205, 51,222,222,237,248, +203, 31, 94,224,189,165,173, 28, 97,236, 33,102, 22, 77,195,186,246,164, 24, 24, 67,162,143,137, 49, 10,241,112,189,189,160,233, + 90,172,129,211,105,207,237,171, 31, 25, 66,224, 20, 2,105,178,223,185, 66, 99, 13,181, 47,116,157,161,171,193,229,145, 18, 6, +136, 81,225, 45, 89,186, 76,202,255, 79,214,155, 53, 73,118,157,231,122,207, 26,246,152, 83, 77, 61, 84,163, 49,131, 4, 65,234, + 72, 71, 17, 39,194, 23,246, 95,246,185,240,133,195,215,118,156, 8, 71, 88, 33, 74,166, 56,128, 36, 64,128, 0,122,172,185, 50, +115, 15,107,242,197,183,246,206,132, 44, 42, 66, 34,217,168,170,174,220,123,173,111,120,223,231, 37, 26, 65, 88,154,162, 38,234, + 58,119,138, 50, 41,105,218,150,179,245,146,199, 7,199,215,111,175,132, 2,150,164, 3,245, 42,225,242,168, 57, 18, 50,133, 74, +212,179,198,216,121,188, 58,237,127,229, 50, 50, 88, 91, 96,140,240,243,149,150, 46, 93, 27,241,235,206, 66,182,220,213,139,143, + 93, 31,249,225, 39,251,146,172,164, 98,146,206, 75,103,175, 46, 71, 42, 96,178,186,122,246,200, 31,173,211, 38, 64,208, 4,232, + 80,200,215, 74, 74, 99, 39, 44,180, 58, 36, 47, 38,132, 7, 63,167, 88,164, 52,195, 68,194,236,153,151,110, 54, 34, 7,124, 10, +113, 78,154, 75,153,221, 30,179, 21, 74, 41,131,205, 66,169,152,233,123, 38,255, 30,166, 61,168,102,226,135, 27,217,174,107,115, +208,123,104, 77, 72, 26, 91,212, 36, 36, 29, 44, 34, 9,103,139,117,205, 98,177,132,164,120,247,254, 21, 63,252,248, 29,219,125, +160, 42,123,254,219, 63,255,207,156, 60,251, 39,156, 31,101,146, 98, 42,116,105, 41,108,153, 85,245, 26,163, 60,235,205, 41,235, +245, 25,109,189,144, 46, 91,139,158,227,234,253, 13,219,155,247,220,252,240, 29,253,221,123, 42,171, 40, 98,160, 94,202,161,110, +148,165,178,138,214, 42, 22,133, 8,220,234, 74, 80,165, 58,131,122, 82, 84,135, 29,109, 38,171,133, 24, 41,171,200,162, 76,156, + 87,134,147, 34,209, 88,207, 73,101,216,212, 5, 78,107, 6,101,137,169,192, 37, 89,157, 20, 70, 16,175, 46,251,154,171,108,147, +124,118,113,206,217,250, 68,214, 28, 51,146, 84,226,128,157, 23, 77, 82,204, 5,160, 54,194,218,168, 76,162, 50, 9, 91, 88,214, +235, 37,134, 32,190,107, 37, 90, 10,109,229,243,154,116, 13,211,243, 57, 59, 48,230,164,188,124,121,153, 66, 62,183,236,153,150, +240,158, 64, 81, 42, 10,171,102,139,162, 38,119,222,121, 98,165,178,109,185,172, 74,201,216, 8,145,221,118, 7, 76,137,126,105, +190, 28,205,108,183, 22, 91, 99, 81,228, 73, 95,144, 70, 74, 35,196, 62,163, 52, 86,139,222, 43,132, 32, 83,165,148, 48,133,144, + 25, 21,138,209,141,217, 6,151, 72, 42,204, 46,147,137,188, 28,129,144,227,112, 39, 11,170,158,209,175, 34, 63, 15, 62,205, 13, + 39,185, 49, 66,137,171,229,240,156,171,153, 52, 41,132, 78, 43,127, 54,138, 39, 95, 68,188, 30,231,189, 76,201,181, 17, 77,202, +148,163,144,215,180, 42, 43,227, 82,230,228, 78, 43, 59,113,166, 72, 57, 97, 23,117,205,126,116,220, 63, 60, 82,218, 41, 34, 78, + 44, 56, 36,217,103, 15,195,136,213, 69,238, 70, 52,202, 79,106,110,209, 81,250,124,200,219, 68, 78, 7,146,113,201,147,167, 23, + 40,109,185,123,124,160, 93, 45,233, 7,207,251,183, 87, 44,215, 37,155,205,138,104,132, 48,165,149,161,239,247, 36,171,176, 85, +197,176,235,192, 71,172, 45,164,235, 15,225,208,105,120, 80, 86,131, 14,184,193,209, 44, 42,172, 53,244,227, 64, 83,149,124,250, +171,207,121,253,230, 29,111,223,190,229,242,236,132,208, 13,188,120,249,130,221,126, 96,187,123,144,151,222,192,250,236,148,253, +221,150,187,119,239,233,250, 7,198, 56, 82,218, 22,231, 29,235,166,197, 19,121,236,122, 78,214, 11, 25,139, 39,249,165,169, 12, +205,143, 41,178, 94,182,108, 31,110, 25,199,158,193, 13, 82,173,231,129,141,112,186,243,238,113,226, 98,231,170,113, 82, 78,163, + 18,133,177, 20, 57, 43,125,142,185,156,131, 46, 50,169, 72, 9, 89,107,217,212,172, 79, 79,176,201,240,176,221, 51,244,226,165, +213,218,208, 22,149, 4,204, 12, 3,139, 69,195,230,233, 11,174, 31,239,121,243,230, 45, 74, 69,234,186,100,112,154,110,191,229, +242,114,197,120,126, 65,119,255,158,208, 63, 96,171, 66,166, 95, 99, 32,142,158,186, 93, 74, 87,106,202,140,114, 37,239,127, 68, + 23,129, 85, 60,110,183, 60,220,223,177,185, 56, 99, 55, 74, 52,165,223, 62, 82, 39, 47,187, 72,101, 89, 84,149,188,216, 42,241, +236,244,148, 95, 62,127,201,119,111,222,240,247,235, 43,218,182, 97,185, 88,114,117,115, 79, 76,158, 77,221, 80,104,232,221, 40, + 98, 74, 31,233, 93, 32,168,130,182, 93,176, 88, 52, 40, 13,163, 27,121,124,123,203,190, 27,216,187,158,104,200, 52, 41,178,207, + 53, 82, 86,150,101, 99,177, 42, 16,124, 96,112, 18,243,232,147,104, 34, 66,238, 56, 27, 83,209, 84, 13,182,110, 73,186,201,204, +105, 39,200,222,162,100,181, 88,115,114,186,227,237,205, 43, 46,111,111,121,249,244, 5, 62, 70,108, 76, 40, 43,159,161,154,119, +224,146, 94, 21, 18,148, 20, 57,135, 57,231, 19, 24,141, 50,197, 60,206, 62, 28,142, 19, 3,123, 26, 0, 30,254,117, 8, 52,205, + 47,120,238,238, 4, 94,162,231, 78,125,246,131, 39, 57,148, 72, 54,163, 43, 83,142,150,212,115,247,108,116,206, 34,207,187, 76, +102,107, 89, 30,129,135, 41, 31,253, 40, 23, 58,105, 82,116, 89,105,204, 17, 42, 54,205,187,114,149, 82, 70,106,102, 44,231, 28, +120,158,102,239,174,159,199,158,106,126,102, 69, 80, 39,190,226,137,142, 55,141, 16,201,192, 30, 81,151,219, 76,143,180,153,194, + 39,235,132, 24, 18, 33, 9,110,115,209, 46,216,156,174,136, 6,186,219, 91,110,222,253,196,174, 27, 73, 41,242,229,111,254, 27, +159,254,234, 31,184,247,210,184, 24, 99, 41,172,165, 48, 50,126, 79,196, 57, 36,165,110, 45,139, 69, 77, 83, 74, 14,195,232, 20, + 38,106,246,119,145,123,189,227,180, 13,196, 94, 19, 84,201, 48, 4, 76, 72, 44,140, 66,153,136,213, 25,178,163, 33, 24,249,189, +142, 3,121,242, 25,196, 59,157,242, 36, 38, 5,162,138, 24,165,168,140,225,100,169,217, 24, 69,163, 34, 85, 2,167,193,212,138, +100, 53,119,206,210, 69,157,225, 65,122,206,225, 32, 59, 59,140, 49, 20, 11,203,243,231, 23,180,117,193,224, 70,193,142,134, 60, + 45, 8, 50,170,245, 19, 20, 12, 80, 33, 80,167,129, 90, 13,184, 20,104, 22, 13,101, 85, 65,144,248,108,239, 2, 46, 56,138, 90, + 46, 76, 73,222,156,206, 50, 53,119,206, 74,169,156,237, 29,230,139,204,199, 3, 25,113,202, 9,168,202, 2, 99, 52, 99, 12,164, + 44,136, 11, 57,185, 79, 16, 25, 9,149, 60,171,101,195,186,109, 25,221,200, 48, 12,179,246,104,122, 22,101,247, 62,165,243, 37, +172, 21,177, 88, 76,126,142, 92, 85, 10,138,188,245, 22, 61,201, 72,242, 65,174,171,172,108, 87, 70, 8,144,206,123, 76, 33,197, +241,132, 92,153, 48, 56, 33, 51,234, 39, 13,203,156,183, 48,169,207,109,230, 20,228,212,180,148, 57,241,147,224,100, 42,200, 99, + 76, 18,183,154, 65, 81, 33, 73,116,170,209, 90,236,105, 10,172, 41,112, 78,206,125,128,170, 42,133, 41,162, 14,249,236,115, 22, + 64, 20,139,179, 6, 41, 80, 9, 4,207, 28, 10,163,133,168,213, 73,250,154,177,243,250, 77,132, 28, 73, 58,208,190,159,191,153, +205,203,166, 56,239,227, 76,222,119,139,119, 53,132,128,143, 80,183, 45, 31, 92, 62, 99,140, 9, 93, 88,234,182,229,245,219,247, +236,251,129,211,229, 41,237,178, 33,142, 99,166,200,137,125,170,202, 96,151, 16, 34, 49,195, 85,124,146,189,249, 49, 91, 87, 43, + 69,242, 17, 31,226, 92,241, 12, 67,207,167, 95,124, 65,221, 52,252,245, 79,127,164, 46, 74,246,253,200,197,243,231,180,155, 21, +119,215,215,146,210,102, 12,139,102,193,114,177,228,253, 79,175,121,220,109,217, 14,189,196,110,102,197,240,102,189, 98,191,221, + 97, 20,212,101, 57,143, 33,133,226,101, 72, 33,176,104, 91,170,178,226,246,238, 94, 58,198,113,196, 7,217,129, 4,100,202, 0, + 9,157, 38,149,129, 58,138,217,144, 42, 93,105, 77, 93, 21,148, 70, 17,146,207,190, 92,201,210,136, 49,239,243,114,111, 85,214, + 37,235,211, 53, 77,219, 48,116, 35,253,126, 16, 65,153,146,120,198,178,172, 36, 60,161, 42, 41,234,138,110,220,211, 13, 35, 23, + 79, 46, 88,175, 79,196,186,213, 71,246,187, 7, 30, 30,110, 57, 57,127, 74, 81,150,244,251,247,152, 48,226,134,142,110,191,207, + 80,136, 68,138,142,210,230, 4,165,232, 69,225, 28,131,100, 71, 59,199,245,245, 21,101,101,120,114,121,193, 98,221, 82,120, 71, +227,189, 84,202, 90,211,214, 21, 81, 41,122, 21,121,250,244,130, 47, 63,252,144,111, 94,191,226,111,111, 95,177,106, 26, 86,235, + 19,222,222, 63, 18, 18, 60,105,106,137,149, 29, 61,163,119,236, 67,164,247,146, 52, 87,181, 53,237,170,165,170, 43,162,247,108, +175,110,216,221,221,227,162, 67, 91,137,132, 44, 45,148,133,146, 78,169, 81,172, 74, 40,180,167,176, 50,138, 43, 10, 77, 89,202, +229, 52,250,136,207, 21,110, 89, 21, 84,205, 10, 83,182, 40, 35,251,205,188,202, 70,107, 77,213, 54, 44,215, 27,160,224,219, 31, +223,224,134,140,160, 76, 10,155,185,211, 42, 48,149,104,121, 9, 43,149,188,214, 98, 83,211,166, 0,149,187,119, 43, 21,185,158, +212,242,121, 4,104, 16, 17,141, 54, 22,157,247,102,147, 56,102,250,179,186,176, 25, 77,123,184,164,143, 35, 87,149, 34,119, 51, +241,103,105,206, 10,141, 81, 19,192, 34,255, 92, 71,227,241,121,140, 56,137, 94,115,167, 61,165,177,165, 44,124, 58,114,252,228, +112,149, 52,131, 81, 98,156, 18, 71,242,239, 79,103,219,222, 52,165, 74, 18, 66, 52,161, 94, 69,244,199, 33,148, 98, 46,116,152, + 29, 52, 90, 23,210,149, 24, 45,154, 14,101,231,169,131, 49,134,132,197,121,114,184, 82,201, 98,217,210,216,130,232,246,188,187, +126,205,221,195, 45,123, 23,185,124,118,194,127,249,231,127, 98,155, 12, 65, 23,160, 43,108, 81, 75, 30,185,150,139, 65,116, 22, + 35, 42,121,177,111,181, 53,101, 41, 62,229,152, 37, 87, 65, 71,186,209, 19,163, 22,251,215,208, 83, 69,199,170, 84,156, 53,240, +124,165,120,182,128,211,101,226,100,161,216,212,134, 69,169, 89, 54,138,186,148, 29,111,169, 13,133, 73,148, 69,164, 40,160,208, + 2, 4, 58,173, 20, 31,156,148,172, 27,104, 74,141, 73, 10,157, 45,151,149, 54,172,106, 77, 85,107,148, 45, 32, 40,186, 81, 34, +101, 5,102, 82,160,108,201,197,217, 41, 31,126,248, 92, 88, 31, 41, 16,125, 32,184,152,179, 57,178, 61, 42, 71, 88, 7,231, 80, +126, 79,163, 59, 84, 24, 48, 73,211, 54, 11, 57,123,124, 98, 24, 35,251,193, 49,122,207, 48, 58,134,233,156,158, 86, 54,233, 40, +232, 36,147,206, 98,214, 60, 40,157,178,153,236,144, 89, 96,173, 21,100,109,126, 94, 84,210, 57,208, 84,190, 72,210,194, 66, 49, +166,162, 89, 52, 36,171,217,119,251, 28,105, 61,137, 8,115,185, 59, 79, 46,165,177,180, 69,238,220, 67,154,163,128,181,146,247, +211,106, 53, 23,214,199,214, 74,107,237,124, 65,143, 97,122, 78,197,101,101,213,127,130,133,205,254,114,105,225,227,145,205, 82, + 41,147,181, 36,249,156, 60,178,196,153,233,159,153,156, 97, 28,121,242,181, 48, 61,138,162, 56,172,213,140,136, 67,197, 14, 46, +103,168,243,126, 22,195,114,204,130, 72, 51, 17, 71, 4,164, 71, 41,135, 82,239, 42,197,190,235, 69,129,154, 99, 63,167,131, 36, +132, 64, 63, 12,140, 99,152,130,130,230,151, 16, 14, 52,172, 24,226,188,131,243, 41,226,130, 99,189, 89,241,252,233, 19, 98, 2, +163, 43,140,182,188,123,243, 6,173, 96,117,186,166,109, 22, 12,189, 35,102, 43,156,119,129,118,185,148,191,164,119, 18,108, 97, + 52,177, 31, 5, 63,203, 33, 45, 74,107,131, 31,122,185, 42,141, 17,165,125,179,224,163, 47, 62,227,219, 63,125,195, 15,223,255, +200,122,189,166,235,247,188,252,244, 99, 30,239,119, 92,189,125, 79,219,180,104,171,105, 87, 75,198,110,228,246,221, 21, 99, 63, + 50, 14, 3,182, 44,137, 49,176,106, 91,172, 46,216,117, 61,109, 91, 81, 85,217,198, 33,179,159,124,208, 24,154,229,146,221,253, + 61,251,237, 30, 23, 28, 67, 6,240,196, 68,182,136,153,249,193, 51, 89,140,228, 51,208, 79,118,136,145, 69, 97,169, 74, 59,245, + 93,100,209,239,225,247,153, 21,199,133,209, 44, 87, 45,203,211, 21, 33, 5,186,161,151, 85, 66,142,242,172,109,129,177, 82,109, +214, 77,131,173, 75,170,186,224,191,252,230, 43,190,250,205,111, 48,218, 50,236,123,186, 33,161,203, 21,247, 55, 55, 24,157, 88, +159, 93, 16,187, 61,187,155,215,184,110, 39, 30,249,178,150, 93,155, 86,104, 29,137,161,135, 56, 66,116,196, 24, 8, 1,238,110, +183, 12,251,145,213,114,197,211, 23,231,132,253,142,221,155,119,232, 40,162,179,166,174,137, 57, 10,246,242,217,115, 62,251,232, + 51,190,254,230, 59,190,249,225, 39,206, 78, 78, 56, 57, 57,225,213,251,107,134,190,227,114,217, 82, 98,240,126,196,249,145,206, + 5,186, 49,138, 29,171,180, 84, 77, 77,211, 52, 0,116,219, 45,251,187,123,198,161, 67,107, 68,120, 99, 5,224, 81,152,200,166, +210, 92, 44, 12,155, 26,138, 52,226,125,151,173, 44, 2,199, 8,206,147,115, 27, 48,218, 80, 45, 22,148, 77,139, 45, 75,180,150, +249,201,108, 67, 67, 52, 34, 39,235, 53,235,213,130,171,219,142,191,189,250, 65,186,130,120,232, 38,231,139, 53,101,145, 78, 66, + 0, 42, 57,101, 45,233, 60,221,202,187,111,149,116, 22, 77, 78,194, 47,233, 22,229,196,200,239,148, 62, 18,199,161, 15, 74,218, + 60, 73,155,146,168, 82,156, 56,212, 42, 23, 2, 50, 97, 51,218,204, 9,102,178,115,159, 2, 42,212,156, 30, 37,227, 84, 3,218, +228,131,118, 86,234,205,236,246,152,113,204, 7, 12,236,145,245, 46,197,153,110,150,242,236, 85,197,137,160, 23,103, 85,190,202, + 5,142,206,207,252, 68, 56,155,246,255, 7,139, 91,246, 33,107,131,194,202,197,144,199,226, 83,220,175,202, 59,118,109, 44, 33, +179,186,141,177,180, 77,205,162,149,103,228,225,230,134,251,251,107,156, 19,234,222, 87,191,254, 7, 84,125,198, 16,141,192, 52, +139, 18,109, 11,208, 10, 23, 70,198,126, 71,112, 29, 33, 12,248,224, 41,148,161,170, 75,150,171, 5,171, 85, 69, 89,200, 8, 29, +147,112, 1, 30, 59,217,225, 55,149,229, 98,109,120,121,162,249,224, 68,113,214, 40,218, 18, 22,117, 98, 83,195,202, 38, 26, 29, + 89,214,138, 77,171, 88, 84, 80,217, 72, 83,200,122,168, 54,145,179, 86,115,185,178,156,104,197, 34, 5, 22,149,198, 22, 74, 86, + 57, 49,137, 13,205,139,245,171, 52,242, 92, 72, 6,135, 92, 68, 86,201, 24,185,108, 13,191,248,236, 35,214, 77,133, 15, 30, 23, + 2,126, 34,184,197,136,119, 14,231, 28, 97,116,248,253, 14,183,191, 67,251, 71, 72, 1, 31,229,220, 45, 76,129, 74,242,252,135, +152, 8, 26,170,182,202, 5, 20,153, 74, 41,193, 35, 19, 97,141,124, 85,197, 36, 83, 19,171,133,148, 55,145, 1, 99,110,104,202, +210,206, 83, 35, 97,152,103,161,102,204,204,114, 18,163,247, 88, 91, 80, 20, 5, 16,113,195,152,247,233, 16,162,151,231, 44,103, +156,107,166,232, 89,193,195,170, 76,161,211, 83, 4,111,190,236,180,201,107,167,196, 76,180, 35, 35,148,117, 70,177, 78,132,185, + 73,204,105,142, 50, 15,212, 20, 24,147,196,194, 55,173,242,143,147, 11, 99, 22,150,166,252, 61,166,112, 36,125, 20,181, 42, 19, +177,220,144,102, 27,154, 49,178,142, 35, 19, 47, 77, 78,192,140,179,155, 76, 49,120,143, 15, 62, 23, 37, 7, 13,155, 62,178,186, +106,171,231, 66, 65,219,188,166, 10, 49,112,251,176,149,145,133, 53,196,148, 40,244,129,249,238,188,159, 69, 98,154, 76,114, 74, + 57, 25, 40,255, 57,159,145,147, 9, 24,125, 96,183,223,241,203, 95,125,201,233,217, 9,223,253,253, 71, 0,246,187, 29,119,183, +183,164, 16,104, 23, 45,186, 44, 24,119, 59, 84,146, 75,107,123,191,101,249,244, 68, 8,106, 49, 80, 90,131,235, 93, 14,133,136, + 71,105,214, 50, 18,233,135, 1,149, 18,165,181,132, 0, 79, 47,159,162,130,231,235, 63,124,205,217,102,131, 2, 86,203, 21, 31, +188,120,193,247,127,249, 43, 74, 43,234,178, 32, 86, 5,235,179, 83,126,252,250, 27,118,251,123,134,161,151, 93,158,209,132, 20, + 57,105, 27, 30,119,123,130,139, 52,203, 70,176,152,121, 7, 46, 35, 64, 40, 42,169,178,222,190,191,162, 82, 6,179,172,216,123, + 71,171, 37,118,181, 40, 12,106,144, 71, 94, 79, 29,122, 98,138,182, 23, 1,160, 82, 52, 85, 37,201, 66, 74,108, 29,226,205, 14, +178,123,139,228, 17, 75,162,170, 75,214,155, 21,117, 93,179,223,119,116, 67, 47, 7, 99,142,123,173, 10,155,239, 24, 67,209, 52, +172, 78, 87,212,109,205,201,186,229, 15,127,254,150,237,110,143, 86,138, 93, 55,114,187,109, 89, 24,205,155, 31,191,229,179, 95, +254,138, 48,140,188,127,251,138,205, 83, 69,187,217, 16,163, 35,122,176,117, 41, 47,137, 22, 49, 77,138, 26,141,165,219, 63,242, +120,251,200,106,177,100,185, 58,231, 63,126,251,175,124,255, 31, 95, 99, 98, 66,151,149,184, 4, 66, 98, 36,240,242,197, 71,252, +226,227, 79,249,243, 95,254,202,143,111,223,243,225,243, 75, 86,155, 5, 63,188,191,194, 13, 3, 47,207, 78,168, 83, 96,219,143, +184, 56,226, 98,100, 8, 18,171,168, 10,139,173,173,240,217,139,130,253,110, 75,191,221,210,119, 91,146, 22,168, 10, 25,188,145, +188,167, 45, 12,167, 11, 75, 91, 73,183,216,185, 68, 24, 18,110, 12,140, 33,178,239, 34,187,157, 35,120, 57,144,170, 69, 69,189, + 88, 82, 54, 13, 69,105,102, 43, 85,244, 28,141,252,100,184,182, 92,174,185,189,126,207,143,111, 94,241,236,233, 5,155,245, 69, +198, 68,154,195, 11,158,163,128, 39,104,137,168,221, 5, 87,106,166,212,167,163, 49,158,202,254,107,149, 97,231, 25,101,158, 85, +222,233,144,201,156, 14,162, 50,109,204,156,246,165, 39, 33,221, 28,104,114,176, 75, 77, 2, 29,226, 1, 40, 51, 29, 40, 41,127, + 47, 31,227, 33, 48, 38,239,237,116,166,205,197, 12,145,138,105, 10, 12,145,232,229,148,221, 12,196, 41,253, 42,102, 54,249,188, + 91,202,255,171,126,150,157, 62,217,130, 52,135,213, 60, 7, 65,254, 1,174,163, 77,222,215, 26,146,206, 29,121,126, 63, 82,238, +236,101, 90, 33,107,193,132,162,172, 42, 86,171, 37,117, 85,227,195,192,246,254,134,177, 31,113,131,231,195,203,103,124,240,233, + 47,217,247,158,168,138, 76,119,147,210, 38,120,207, 56, 12,232, 20, 48, 38, 9, 48, 34,255,253,207, 54, 27,206, 46, 78,217,188, +221,208,237, 28,187,224,230, 61,114, 31, 32, 89, 69, 93, 43, 26,147,104,117, 78,164,204,135,174,213,217,221,128,192, 97, 82,182, + 48,250,164,112, 73,209,148,133,232,143,130,167, 45, 52,196, 17,187,139,196, 62, 98,150,150, 62, 5,130, 50, 68,107,193, 39,124, +136,248,100, 8, 33,226, 71,151, 9,126, 81,198,238, 57,239,226,139, 79, 62,224,243,207, 62,198, 59, 71,204,185,234,206, 79,129, + 61, 33,135,239, 68,140, 10,152, 52,160, 66,135,214, 14, 31, 18, 85,189,164,110,235, 89, 47,225,189,140,124, 79,215, 45,117, 99, +137, 41,209,247, 29,228, 75, 93,171, 36,207, 70, 86,132,139,184, 43, 29, 0, 65, 41,207, 36,167,253,145, 6, 83, 76,204,245, 28, + 96,154, 11,186, 41, 63, 62,230, 32,162,162, 52, 20,133,232,130,156,115,248, 33, 28,173,121,226,209,247,144,119,195, 90,249,243, + 49,115, 39, 38,175,120,204,159,133, 74,230, 40, 71,225,200, 14,154, 29, 92, 49, 68,146,243,196, 58, 91, 80,211, 97, 34, 53,107, + 7,242,187, 19,124, 78, 36,140, 7,157,233,132, 74,206,117,247, 60,189,226, 40,211, 33, 4,129, 87,233,252,110,168,201,237,146, + 2, 69,145, 9,137, 83, 84,172,202, 26, 53, 39,249,233,102, 18, 31,230, 6,219, 26,133, 53,217, 30,158,223, 63,153,140, 9,252, +107,130,216,216,237, 48,242,248,240, 40, 9, 84, 90, 19,188,159,171,241, 16, 34,209, 7,140,178, 4,239, 49,149,208,112,210, 28, +141, 56, 37,177,202, 47,197, 7,177, 8,248, 24,248,244,227,143,169, 74,195,221,237, 3, 40,184,191,191,103, 28, 6,106, 99, 89, + 46,219,153, 63,173,167,128,120, 20,101, 89,202,222,199, 71,210, 40,191, 28,239,125,222, 59,200, 3, 84,104,139, 46, 12,110,116, + 98,236,215,138,122,217, 98,171,138,191,252,254, 79,188,121,223,241, 79,255,240,156, 24, 35,103, 23, 23,196, 24,120,253,231,191, +241,193,175, 62, 67, 21,150,229,106,129, 87,145,119,127,255, 17,239, 19,247,187, 71,154, 69, 67,140,158,182,106, 40,155,146,119, +143, 91,225,170, 23, 37,147,169, 97, 74,218,210, 90, 81, 85, 21,215, 87,239,185,189,185,225, 98,115, 50,119,232,211, 65,173,149, + 28,128, 54, 43, 40, 3,135, 28,101,121, 8, 4, 60, 81,149,229, 36,238, 61, 58, 19, 83, 22,208,136, 93,163,180, 90, 98, 80, 55, + 75,198,113, 96,232, 7,220,232, 36,111,184, 40,168, 10,139,205, 97, 1,182,170,104,215,242,146, 42, 29,249,237,239,254,157,111, +255,250,119, 84,217,112,113,114,130, 79,137,119, 87,215,156, 46,107,140,129, 31,190,255,142,211,147, 19, 46, 98, 36,184,123,134, +187, 18, 93, 45,176,182, 21,251, 71, 8,146,197,158,162, 64, 62,220,192,238,254, 1, 99,224,236,217, 83,254,253,183,255,193,255, +249,223,255, 15,210, 0,245,249,154, 69, 85, 49,236,246, 12,201,243,252,242, 37, 47, 47, 63,230, 15,191,255, 43,239,238,222,241, +225, 7,151,156,174,214,252,245,205, 27,118,125,199,167,231, 39, 44, 19,220,237, 59, 70,231,240, 36,250, 16,101,143,165, 21,186, +176,216,162, 96, 81, 54,116, 93,135,235, 58,186,221, 3, 46, 13, 96,100,204, 60,165,222,149, 70,209,218, 72, 85,122, 10,163,240, + 4,201, 72, 87,146, 67, 63,140,129,219,199,192,118, 47,150, 50, 91, 88,218,213,130,245,114,195,162,109, 48,214,228, 49,178,140, + 61, 3, 62,163, 79,100, 60,183,168, 55,212,117,193,224,224,167,183,111, 57, 57, 61,203, 97, 28,135, 80, 5,201,215,205, 23,245, +212, 93,107,131, 81,242,114, 78,206, 17,117,228, 93,151, 14,148,249,101, 63,120, 98,243,238, 48,175,181,230, 22, 58, 77,246,176, +140,141, 85, 83, 22,181,166,208,246,160, 89, 74, 18,223, 74, 46, 10,153, 85,187,115,190,218,145,175,246, 48,190,159,116, 43, 83, + 78,122,200,239,232, 36,176,139, 49, 19,147,178, 5, 41, 78,105,129, 42, 43,114, 99,144, 3, 55,254,252, 98,143,217,183,107,148, + 21,161,162,154,240,166,113,206,212,158, 8,114, 41,171,179,147, 66,186, 16,109,229,250,208, 18, 50,163,148,194,251, 68,138, 50, +122,110,154,134,166,169, 81, 26,246,119,247,236,247,183, 56, 55, 16,129, 15, 94,126, 76, 80, 37,206, 71,162, 14,104, 29, 72, 65, +138, 1, 23,250,156,185, 32,124,124,141,252,140, 65, 7,234,147,150,243,243,115, 78, 79,222,179,223,118, 16,182,120, 15, 58,123, +171,165,128, 22,197,120,231, 18, 33, 69,108,161,168,173,194, 69, 69,239,101,164, 92, 34,151, 80, 85, 22,244, 99, 32, 89,205,162, +209,242,140,117,129, 34, 69,146, 5,175, 32,246, 1, 83, 21,140,201,176,203, 0,171,100, 21, 46,105,186,160,217,186, 72,112, 50, +142,181, 25,156, 18, 53,156,158,174,249,229,175, 62,199,232,132, 31,115, 90,166,207,137,100, 81,206,111, 29, 35, 58, 57, 66,220, + 81,208,129,242,140, 17,154,178, 98,185,108, 72, 90, 46,184,174, 31, 25,199,145,178, 42,230,149, 99,211, 88,172,173, 25,186,129, + 97, 24, 51, 33, 77, 26, 20,157, 68, 68, 25,143,227, 63, 53,140,209,231, 24, 92,133, 45, 51,247, 32,201,249, 41,226, 75, 45, 1, + 54, 89,131,224, 92,182,149,150, 50,121, 8, 65,118,221, 73,197,217, 61, 49,173,114,114, 79,153, 11, 27,177,143, 78, 93,178,154, +160, 82,211, 20,217,232, 28,127,203,204, 92,152, 26, 33,165,148, 16, 75,115,115, 20,147, 8, 97, 81, 49, 91, 44, 15, 5,167,184, +216,210, 12,163,153, 93, 27, 62, 30, 84,249, 57, 65, 48, 56,127, 40, 28, 82, 34, 58, 15,133,216,106, 83,146, 66, 8, 99, 48, 81, +252,244,106, 34,193,229,212,182, 16,164, 83,175,235, 58,255,251, 48,191, 91,182,202,126,254,201,221, 64,144, 6, 66, 43, 12, 5, + 74,245,178,242,125,220, 63,112,215,247,160, 69,168, 19, 67, 20,222,180,130,224,131,168, 38, 13, 68,231,115, 60, 96,174,246, 19, + 7, 69,107,204,194,130, 40,213,159, 46, 10, 94, 92,110, 24, 92,160,247, 18,153,183,223,142,244,206,209,158,214,180,171, 13, 97, +148,221,142, 54,134,110,240, 96,229, 1,240, 65, 30, 92,151,188, 80,226,130,164,253, 8,146, 49, 97,106,177,218,133, 33, 82,150, + 21,186, 42, 88, 63, 57,231,225,241,129,239,254,252, 45,109, 13,205,166,198, 84, 37,155,243, 51, 94,191,126,203,208,117, 44, 22, + 21,182, 46, 56,217, 60,229,234,251,119, 60, 62,220, 51, 14,142, 24, 20, 69, 33,251,223,186,173, 25,187, 68,232, 29,149, 85, 80, +232,121,156,147,140,168,137,173, 45, 80,186,226,230,221,181, 48,158,113,244, 97,164,212, 5,218, 34,188,232, 20,165,219, 78, 83, + 56,146,140, 71,136, 94, 24,215,152,156,134,166, 1, 43, 68, 47,149, 19,136,146,202,251,175,128,209,137,186, 41, 89,173, 87,148, +218,224,134, 81,246,186,254,176,167,154, 30, 80,163, 20,117,107,169,154, 2,173, 12,110,208,236,110,119, 20, 90,115,249,236, 41, +205,234, 36, 71,168,214,220,238, 7,174,183,129,175,191,251,129,191,126,243, 3,151, 47, 63,229,226,249, 7,236,238,126,192,221, +190, 66,235,142,228,123,162,235, 9,190,207,182,149,196,184,189, 34,117, 55, 60,121,122,206,215,191,255, 51,255,227,191,255,239, +164, 16,121,241,241,115,158,158, 93,224,199,129, 33, 14,156, 95, 94,242,241,243, 15,249,246,251,239,121,127,127,197,203,203,103, +172,219,154,191,190,150, 11,253,229,217, 25,141,210,220,239,247,140,222,225, 85,100,140, 98,185, 65, 37,129, 73,104, 77, 93, 86, +184, 48,224,135, 14, 55,108, 25,198, 93,142, 19,146,253,153,241, 50, 69, 88, 86,176, 44, 34, 6, 71,212,121,154, 51, 38,194, 40, +107,165,144,224,193, 69, 92, 78,136,170, 74,205,242,244,148,245,201,146,229,170, 62,224, 31,213,148,233,157, 71,194,122,110,193, +105, 23, 43, 42, 91,113,247,254,158,174,223,131, 61,160, 96,101, 75, 18,142, 98, 26,179, 15, 61,243,182,133,197, 43, 1, 48, 42, +143,143,149,192,169,243,197, 60,145,212, 52, 74,217,188, 63, 22,213,119, 58,206,105,203,186, 18, 17, 0, 73, 14,244, 20,219,170, +209, 63,183,171,165, 56, 43, 56,226, 76,167,203,182,180, 16,143,252,237,185, 50,215, 18,153,153,166,113,165,210,114,176, 37,249, +185,117,208,232,120, 68,218, 74, 19, 53,107, 58,216,210, 76,180,179, 73,108, 87, 38,119,252, 19,109, 79, 46,241,172,217,201, 62, +240, 52,145,233, 98, 78,129, 35,146,116,156,221, 3,147,167, 87,231, 66, 41,230, 48, 23,193, 33,151,212,117, 67, 81, 55, 36, 70, +134,221, 35,195, 56,208,185,158,166, 94,242,236,217,135,116,163, 98,116,145, 56, 58,201, 91,240, 35,253,184,155,215, 50, 17,159, +139,110, 43, 30,225,148,168, 76,197,201,201, 41,231, 79, 78, 88,158,212,172, 55, 75,138, 82,163,203,132, 50,137,209,107,246,163, +162,143,137, 49, 91,244,202,178,152, 33, 68,173, 85,172, 42, 77, 89, 64, 91,193,210, 70,172, 78,180,214, 81,155, 64,165, 34, 21, + 17,155, 34,109,173, 41, 26,133, 79,176,237, 61,166, 54, 4,163,233,168,217,235, 10,103, 11,250, 0,227,152, 50,116, 39,229,231, +170, 64, 27,203,175,127,253, 75, 46,206,206,100,247, 29, 2, 99,144,112, 15, 97,240,123, 98, 28,137,174,135, 97,135, 25, 30,193, +119,236,131,103,213,174, 56,217,108,196,251, 28,196,198,218, 15, 29,166, 48, 20,101,201,118,219,241,246,234,145,251,251,157, 52, + 25, 89,208, 53, 61, 67, 58,229,241,117,102, 14, 24,173,100,252,158, 67,190, 36, 81, 13, 9,132, 82, 58,163,132, 35, 70,167, 12, +225, 17,245,122,140,145,161, 15,210,160,100, 97,109,242, 14,239,132, 37, 49,113,228, 15,233,105, 6,193,217, 43, 42,107, 49, 69, + 86,130, 79, 98,142, 60,206,159, 98, 85,117, 22, 96,166, 44, 98, 54, 90, 4,110, 42, 41,188, 23,145,166,184, 64,242, 59,169, 18, + 49, 57, 98,242,217,186, 41,147,135, 20,133,209, 63,241, 17, 84, 22, 48,203,166, 84, 62,119, 17, 39,202,148,194, 34,162,212, 33, +134, 89,169, 63, 77,227,196,109, 97, 48, 70,198,238,211, 93,161,181, 76,202, 67,246,206,147, 18,125,215, 83, 21, 5, 41,121,146, +151,130, 32,232,233,123, 79,250, 4,121,167,172, 82,224, 19,250,238,161, 99,215,239,196, 38,150,196, 84, 53,205,236,199,113,196, + 57, 55,163, 97,103,144,125, 78, 39, 82,113, 2, 92, 64, 10,242, 97,246,163,231,201,249, 41, 31,126,252, 17,239,175,174, 1,157, +137,112, 30, 23, 28,203,118,193,106,181,196, 57, 79,239, 70,105, 84,130,240,110, 77, 33,149, 10, 49, 9, 18, 50, 7, 70, 72, 52, +157,144,137,140,177, 2, 71, 25, 7, 74, 83,112,246,228, 2,157, 18,127,255,219,223, 8,125,164, 93, 90,154,170,102,177,104, 41, + 11,203,213,155,183, 20,139,134,182, 21, 40,133,210,154,235, 55,111, 64, 41,118,251, 29, 77, 93,144, 98,160, 45, 44,139,186, 97, +219,109, 9, 33, 82,218, 34,119, 49,210, 45, 80, 24,148, 53,148, 69,201,237,245, 53,251,206, 19,147,193,171,130, 24,193, 27, 47, +145,144, 73, 31,218,238,140,240, 84,217,155, 41,107,201, 9, 23, 58, 5, 24,164, 35, 42,216, 17,130, 52, 11, 5,155,101, 75,179, +168, 25,198, 30, 55, 58,169,220,180, 84,117, 86, 27,108,182, 90, 20, 85, 77,221, 46,100, 79,147,247, 64, 23, 79,207,248,205, 63, +124,197,175,127,253, 37,218, 68,206,207, 55,252,227,127,253,138,179,213,146, 55, 63,189,227,253,219, 61,223,252,237, 13,191,251, +195, 31,177,166,226,139,143,127, 69, 91, 21,216,221, 29, 12, 15,164,216,203, 78, 61, 12,244,221, 29,219,221, 35,139, 85,203,119, +255,239,239,248, 31,255,235,255,134, 75,158,143,126,249,146,143, 46,159,178,125,120,160, 31, 61, 23, 79,158,241,236,228, 9,223, +189,254,137,155,171, 43, 62,124,246,148, 77,219,242,183,183,215, 60,244, 3, 47, 79, 55,108,180,149, 24,222,220,161, 15, 49,239, +205, 20,164,108,159,105, 10, 81, 31,251,113, 32, 12, 59,186,253, 29, 41, 57,192, 65,116, 36, 37,221,209,178,136,180,214,163,141, + 60, 71,126, 24, 25,198, 40, 30,247, 0,187,124, 0, 19,101,223, 87,104,195,233,217, 51,206,207,207, 89, 45, 23,148,109, 67,154, +187,212, 41, 38, 74, 97,162,116, 56,178, 47,143,121,245,226,112, 81,209,245, 41, 99, 95, 45,202,148, 88, 93,102, 4,228,129,254, +165,212,180, 19,206,211, 27,164, 11,153, 58, 29,149, 35, 55,141,178,135, 93,153,214,135, 30,122,242,172, 27,147,133,101,217, 14, +102,237,188, 15, 36,102, 26,246,180,103, 87,228,228, 40, 53, 91, 79, 81,243,255, 39,147, 4, 37, 95, 47, 28, 37,187, 77, 54, 72, + 49,218,167,153,244, 54,173, 10, 4, 47, 26,103,107,141, 80, 37,167,196,171, 28, 29, 28, 68, 4,149, 0, 63,161, 54,243, 84, 33, +231,222,204,140,188,105,109, 55,163,101,213, 65,249,174,181,130,100, 15,121,214, 34,213, 22,161, 33, 70, 10,139,236, 89, 47, 42, + 75, 85, 21,168, 24, 8,221,200,176,123,192, 59,197,227,189,227,201,211,103,232,178,193,143,157, 88, 49,141,224,140, 85, 86,232, +135,232, 72,209, 67,244,232, 24, 72,209,231,221,185, 70,155,138,243,179, 11, 46,159, 63,231,124,115,206,233, 74, 56,228, 70,107, + 80, 5, 99,176,236, 28, 92,247,176, 77, 5,161, 52, 56, 21,241,153, 7,110, 10,209, 17,212, 38,177, 40, 53, 9, 71,173, 34,181, +214, 84, 42,177,182,138, 90, 75, 7,104, 61, 84,141,193, 27, 97,158,135, 17,218, 66, 72,127, 67,180,244,170, 36,232,130, 34,239, +165, 3,228,233, 5,124,242,201, 75, 62,251,252, 51,220, 40,193, 60,206,231, 40,103,239, 72,126,132,113, 68,187,129,208,221,227, +246,247,236,246, 91,124, 80,188,120,122,193,233,233, 42,127, 14,242,185,185, 49, 18, 93,158, 44,198,145,178,210, 52,165,198,251, +152,173,179, 57, 68, 68, 77,122,137, 35,247,195,204, 77,152,224, 67,228,247,211,204,224, 44,149, 18, 42,179,203, 85, 10, 76,129, +195,201,123,172, 73,148, 69,153,239, 21,113, 95,132, 33,200,229, 26,227, 84, 93,139,238, 43,143,246,181, 86,242, 59,201, 59,108, + 97,171,231, 56,235, 52, 15,181,228,125,153,176,101, 73, 97,203, 98,126,223, 98, 8,153,146,153, 61, 44, 90, 46,251,116,228,184, + 58, 36,107, 30,224,103,226,181,207,147,144,144,215, 27, 58,205,171,169,169,128, 77, 41, 64, 72,226,206, 57,182,166, 78, 73,142, +218, 80,150,101,110,230,226,156,176,232,189, 76,122, 37,156, 39,161, 11,195,118, 24,132,143, 97,167, 70, 66,101,180,236,132,112, + 14,243,132,194,110,135, 14,155, 98,198, 25, 70, 10,155,241,139, 89, 96, 17,198, 49,255,178, 15,160, 8,163, 77,206,239, 77,179, + 81, 63,166,200, 56, 42,186,161,227,159,191,250, 7, 86,203, 13,175, 94,189,197,141, 62,143,230, 71,134,199,158,213,211, 11,172, +129,174,243,164,164,177, 90,211,123,143,243, 65,100,253,131, 39, 69, 61,135,198,167,105,252, 29, 51,213,199, 24,241, 48,187,158, + 39,155,150, 39, 79,158,242,219,127,251, 55, 94,191,122, 75,107, 52,203,245,130,213,102, 67,213, 44, 24,182, 91,238,175,174, 56, +189, 56,161,106, 90, 54, 39,103,188,127,251,150,187,247,239,137, 46,224, 66,164, 40, 75,194,224, 88, 52, 11,250,113,160, 27, 7, + 20, 80, 22,249, 96, 49, 38, 67, 20,164, 58,141,201,115,125,125,133,214, 50,214, 93,228, 72, 10,107, 91,177, 73,120,241, 85,186, + 24, 41, 72,255, 63,174,119,204,132, 38,107,237,156, 31, 93,104, 77,244, 14, 63,137, 36,178, 63,185,174, 75,154, 69,131, 82,145, +177, 23, 12,110,202, 99, 26,107,173,144,175,180, 92, 34,197, 98,129,173,170,121,228,233,189,167,105, 26,150,203,134,253,221, 29, +191,248,197,231,212, 77,203,187, 55,111,105,154, 5, 85,217,242,184,187,167, 94,175,249,238,239,111,176, 58,241, 63,253,211,127, +229,201,147,167,184,161,103,219,245, 98, 63, 73, 10, 55,236,121,120,124, 32,122,199, 95,254,253, 71,254,244, 47,127, 36, 70,207, +231,191,120,201,243,203,231,252,233,223,254,204,126, 28,120,250,244, 9,235,213, 41,239,238,239,216,222, 63,114,249,252,130,213, +114,197,143,111,222,209,143,158,203,147, 37, 39, 77,193,238,238,145,209,117, 36, 5,163,151, 41,150,202, 23,141,202,222, 87, 99, +140,132,167,196,145,125,119, 79, 63,246,132,164,230,244,176,186,208,180, 13, 84, 36, 44,129, 28,112,132,115, 35,125,212,244, 90, +227,181, 97,235,224,161,147,189, 84, 81,192,114,185,228,197,139,167,156,158,174,133,217, 31,180, 32, 46,149,160, 90, 99,144,206, + 62,197,116,160, 29, 22, 37,214, 24,188, 41, 32, 26,118, 59,185, 36,116, 33,177,179, 33,248,121, 5, 50,125, 29,142,226, 83,231, +148,182,217,223, 59, 33, 30,205, 76, 9,156, 51,154,149,236, 29, 21, 19,145,110,122,134,204,140, 23,158, 20, 74,149, 80,184, 0, + 0, 32, 0, 73, 68, 65, 84,104, 74,139,224, 71,118,123, 33,239,216,165,155, 57, 28, 68, 71, 42,121,178, 48, 41, 28,237,188, 73, + 24,165, 15,182,184, 44, 98,207, 3,119,201,161, 79, 34, 84,154,178, 58,231,208,152,188,219, 3,125, 68,188,203,187,164,121,212, + 42, 63,175, 78,228,228,170,124,249, 31,165,139,233, 35,127,188,202,207,243,148, 42,150,146, 48, 20,180,177,104,107, 9, 41,163, +137,203,130,178, 20, 97, 85,138, 17, 55,246,116, 67,199,253, 99,199,222, 39,214,103, 39,236,186, 71,162,106,168, 86, 75,138,170, + 22,221, 76,240, 71, 70,228,236,197, 87,121,234,145, 66,158,164,104,138,186,226,242,131, 75, 30,239,111,240,187, 71,250, 80, 17, +137,140,227,200, 24, 65, 5,141, 14,129, 46,231, 76,173, 75, 41, 94,140,100,192,224, 93,164,182, 80, 25,197,110, 68, 56, 7, 90, + 46,195,205, 66,161,125, 98, 28, 19,133, 74, 96, 44, 93, 9,189, 83,208, 65,172, 12, 62, 41,198,136,164,121,105,139,182,138,174, +235,136, 89,251,116,182, 94,243,155,223,124,137,182,154,222,201,229,225,163, 39,120, 65,106, 7, 55,128,119, 68,191,167,239,110, +136,125,199,249,249, 83,158, 93,190, 36, 25,112,251,142,209, 75,160, 84, 76, 17, 99, 21,237, 90,108,163,125,239,105, 26,203,114, +217,224,221,192, 56,142, 7,164,175, 54,243, 68,102, 38,124,206, 2,106,105,252, 66,136, 89,200, 90,204, 98, 95,157, 71,237, 19, +236, 72,101,225,101,112,145,170,144,149,152, 83,138,232, 61, 36,161,133,198, 48, 57, 43,164,136,212,218,200, 84, 37, 42, 48, 10, + 83,228, 49, 58, 50,121, 74, 49, 17,149,202,218, 37,249, 30, 58, 79,139, 84,190,120,173,181,114,249,207, 74,245,227,100,197, 44, +104,246,126, 74,118, 63, 76,187,194,225,153,157, 57,241,145,124,118,164, 60, 13,144,228, 60,173, 12, 26, 47,227,253, 20,228,188, +206,205,215,164,134, 22,209,172,154,243, 60, 98, 12, 66, 55,212, 26,239,189, 4,152, 41, 89,103, 23,182, 32,134,136, 87, 30, 61, + 41,247,243,164, 78, 79,228,200,148, 48, 58, 18, 12,216,135,174, 3, 34, 22, 69,136, 17, 91,216,249, 37,116, 62,144,140,201,120, +189,195, 97,100,140,100, 59, 77,168, 73,114,214,178,139, 30,188,227,197,139, 75,162,247,236,187,125,222, 51, 59,198,113, 36, 97, + 56, 57, 59,203,254, 64, 55,139, 10, 98,138, 20, 85, 41,124,247,236,252,157,213,189,147,106,113,134, 8,105, 70,239,208, 6,206, + 94, 60,161,219, 15,252,240,253, 15, 88, 83,144,212,200,217,230,130,213,250, 4,239,229, 5,247, 46,112,241,244,156,230,116,137, +181, 37, 63,253,244, 19, 41, 37,250,221, 14, 99, 12, 99,244, 88,165, 89,182, 11,110,238,239,136, 17, 74, 51,217,137, 52,166,170, + 69, 29,236, 29,104,120,184,219, 18,252, 40, 23,115, 37, 21, 87, 84, 34, 90,201,142, 75,130,207, 2,143,144,178, 69,140, 3,153, + 43,211,223,172, 17, 61, 64, 97,101,167, 23,163,160,255, 56, 2, 27,180,109, 67,213,150,244,131,168, 87,125,182, 56,216,194,230, + 14, 40,219, 24, 10, 75,185, 40,179, 0, 68,138, 33, 99, 52,117,181,100, 28,123,250,125,135, 42, 11,190,249,250, 91,246,221, 35, +203,229,138,203,151,207,169, 31, 26,134, 97,164,235, 59,126,124,117,197,233,233,223,249,252,147,151, 60, 61,191,100,147, 28, 63, +189,122, 69,240, 35, 49,141, 12, 15,143,188,254,254, 53,127,255,227, 15, 64,226,195, 79, 62,226,163,103, 23,252,241,119,127, 97, + 28, 29,207,159, 63,195, 22, 53,187,253,192,216, 15, 60, 63, 63,193,212,154,239,223,188,229,110,191,227,217,233,154,167,109,203, +110,187, 99,215,117, 36, 45, 73,120, 33,143,196, 92, 46,220, 84,242,104, 76,198, 79, 70,226, 56,208,119,143, 18, 81,171,178,111, + 91, 65, 99, 35,109, 49, 97, 60, 35,201, 43,156,210, 12, 14,246, 33, 49, 90,195, 62, 40,238,247, 3, 62,202,216,170, 44,225,227, +207, 94,242,228,217, 5,203,213, 6,109, 11,252,212, 45,198,152, 51,173, 5,162, 18,197,137,130,158,210, 10,129,186, 44,208,186, +228,126,187,229,254, 97,199,197,115, 1,151, 40, 61, 79,176,229,240, 82,135, 92,102,217,157, 79,234,223,195,190, 79, 34, 82,243, +122, 39,139,236, 56,164,162,231, 23, 87,116, 13, 34,210, 82, 36, 51,209,225,210, 28,169, 42, 24,215, 36, 1, 74, 9, 20, 86,194, +128,242,133,169,146,140,212,229,208,203, 59,202, 28,120,145, 38, 22,123,158, 34, 77, 65, 17,199, 35,245,233, 61,156,186,144,233, +178, 87, 42,205,150,159,105,159,153,102,193, 92,204, 59, 84,117,184,212,141,202,124,128, 56,119,119,106,218, 87,170, 28,125,137, +158,247,251, 83, 74,157, 82, 71, 41,117, 90,172, 83,218,136,104,181,170, 43,233, 92,156, 35,134,129,126,232,185,190,125,196,154, + 18,239, 29,227,174,163, 92, 52, 24, 91,206,233,146,232,172, 85,200, 82,102,149,228, 51, 79, 49, 39, 15, 6, 72, 58, 98, 10, 75, +187, 60,225,163,143, 63, 96,247,112,195,240, 83, 36,120,241,133,187,190,199, 39, 77,145, 85,253,131, 11, 12, 58, 15, 58,180,252, + 46,125,136,212,133,248,243, 15, 43, 20, 89, 30,185, 8,182, 52, 88, 27,136,217, 90,153, 98,100, 63, 36,134, 78, 38, 48, 81, 75, + 98,153, 66,198,172,251,190,207, 73,108, 5, 69, 89,240,201, 23,159,114,246,228, 66,206, 6, 31, 4,176,226,123,146, 31,137,206, +145, 70,113,200,132,184,231,244,116,205,249,242, 35,206, 46, 46, 24, 66,162,239,123, 12, 26,239, 3,187,174,167,235,246,172, 55, + 39,212,109, 69, 12,129,166, 77,140,195,192,126,183, 23, 71,200, 28, 36,148,102,163,100,204,225, 72,115, 33,151, 69,151, 33,243, +229,139,210,100,186, 94,156, 2, 80, 51,222, 45,219,121, 21,248,144,178, 54, 72,163,172,194,121,121, 23,130, 15, 66,161,147, 21, +119, 14,110,153,135, 1,114, 95,101,180,182, 8,236,179, 72, 78, 2,231,231, 41,178,153,166, 61,249,159, 87,230, 48, 37,138,153, +122, 58,163,102, 51, 12,138, 36, 22,199,144,146, 20, 16,211,183,206,211,169,249,231,200,220,248, 73, 47, 50,219, 67,167, 77,107, +204,249,232,147,219,101,178,130,168,201,194, 41, 83, 7,155,161, 74,226, 58, 19, 91,121,140, 94, 92, 15, 70, 46,120, 91, 72, 2, +158,143, 2,106, 19, 46,128,207,129, 77,241, 0, 40, 51, 34,118,176, 55, 15,247,152, 66,198, 3, 46,120, 10, 85,160,146,128,245, + 99,138,120, 68,240,193, 20,149,168, 39, 24,198,129, 42, 87, 90, 43, 33, 46, 49, 80, 85, 21, 31,188,120, 70, 63,116, 60,236, 59, +170, 98,201,190,219, 51, 12, 3,198,192,230,100, 35,157,172,115, 82,213,104, 77, 12,145,182,173,137, 78,232, 97,137, 72, 24, 70, +217, 91, 28,161, 41, 39, 27,144,235,123, 54,231,167, 92, 92, 92,240,237,159,191,231,254,238, 62,219, 41,224,244,249, 19, 52,224, +122, 73, 77, 43,154,138,213,201,154,229,242,132,251,219, 59,238,175,111,196,154, 21, 3,186, 42, 24,251,142,245,106, 67, 82,138, +113,112,194,149,111, 11,201, 53,183, 37, 69, 85,227, 6, 9, 48,113, 99, 79,247,176, 35, 5, 81, 23,171, 66,146,163,146,149,180, +165,164, 4, 65,148, 66,200, 44,107,142, 88,197,242,127, 93, 18,229,187, 53,130, 42, 76, 41, 18,131,216,246,166,189,143,210, 80, + 88, 75,221,212,114, 64,120,151,119,128,153,197,174, 20, 70, 31, 10,172,122, 89, 99,202, 67, 42,145, 86, 98, 43,211, 74, 49,142, +176, 88,181,236,118,143, 88,163,248,226,147,143, 48, 85,197, 98,181,193,197,145,127,251,151,223,243,112, 29, 48,213,146,215,215, +247, 92,223, 93,243,252,226, 61,231,207, 55,104, 28, 42,122,134,199, 29,175,190,249,129, 31,191,125, 69,101, 10, 78,158,159,114, +254,236,148, 63,254,199, 95,233,187,192,243, 23,207, 81,101, 1, 73, 83, 90, 88,174,150,248, 20,120,245,230, 61,119,221,200,102, +189,224,108, 81, 19,250,129,237,118,151, 69, 60,224, 50, 7, 95,216,207,106, 14,188,169,202, 66, 96, 49,161,167,219,239, 24, 93, + 20,144, 79,182,153, 85, 22,154, 74,214, 24, 81,201, 1,232,130,236,183, 70, 10, 6,109, 24, 99,193, 93,231,232,131, 76,119,146, +210,124,250,233, 7,124,241,197,199,216,162, 70,233, 74,128, 40,147,130, 62,136,117,139, 36,228,185,152,196, 14,164,149,198,249, +129,148, 20,117, 14,153,217,109,183, 92, 93,223,115,126,186,198,110, 26,162,239,164, 2,152, 62,107,115,112,188,169, 76,251, 59, +120, 92,165, 58,159, 82,220,166,168,214, 52,163,215, 99,246,206,100, 18,149, 86, 63,131,195,198,201,251,154, 69,162, 42,201,115, +167,178,208,107,166, 33,164, 44, 78, 50,217, 14,150,223,159,249, 66,197,204, 30,114,249,158,122,246,172,199,201,194,118,228, 97, +151,169, 92,250, 25,113,110,158, 0,232, 9,247,121, 56,228,213, 17,124, 99,198,205,230,169,133, 49, 89,179,144,149,243, 19,227, + 34,205,135,247, 17, 59,123, 42,114,109, 94,198, 7,133, 54, 86,242,204,139,114, 70,125, 18,246,184, 33,224, 93,162, 90,148,220, +190,189,101, 81,172,169,219, 92,112, 68,233,152, 72, 42,243, 22,188, 4,125,100,139,211,196,233, 15, 25, 66,163,180,166,170, 42, + 46, 46,158,243,201, 39, 91,118,143, 35,209, 39, 58, 2, 70, 85, 36, 31,208,121, 71, 28, 82,192, 69,121,103, 99, 72, 4,159,121, +233, 70, 51, 6,185, 60, 68,209, 31, 73,201,176,247,114,217,140, 10,250, 81,138,160, 46,105,246, 41, 49,160,176,201,160,162, 33, + 5, 97,113, 72, 46, 71,162,170, 45,166,176,124,246,217,199,124,242,249,167,116,251, 78,124,231,209, 19,189,131, 32,171, 42,183, +223, 66,244, 44,155, 5, 47, 63,253, 21, 39,235, 13, 69,128,135,253,150,177,235,112,105,228,254,113,203,227,227, 35,163,247,104, + 99,217,247, 29,219,221,158,182, 45, 89, 46, 74,202,194,210,237,247, 89,251,160,230,110, 92,214, 35,249,179, 73,242, 12,235,121, +194, 36, 66, 61,165, 20,101, 97,133,247,159,117, 44,211,221, 39, 31,177,160,138,156,207,224,149,194,204, 83, 50,113, 83,121, 98, +244, 25,203,157,159, 43, 37,151,158, 60,230, 41, 43,202,115, 33,153,197,181, 41, 23,163, 58, 23, 16,146, 93,158, 43,238,172, 46, +215, 71,141, 79,140, 81, 38,110,185, 8,159,104,127, 49,175,148, 98,254,123,169,233, 92,158, 72,118,217,218,236,189,207,113,178, + 71,202,250,124,193, 74, 60,183,199,230,245,152,168,253, 21, 26,157, 69,132, 96,173,198, 68, 89,207,133, 28, 73,172, 77, 30,171, +103,236,186,115, 78, 68,208,218,100, 43, 99,110, 24,146,154, 17,237, 89, 14,148, 35,137,193,110,187,158,211,182,193, 69, 79,100, +162,115,201, 30, 77,229, 0,248,169, 10,251,249,232, 79,208,161, 86,105,162,146, 29,223,232, 28, 47, 95, 60,231,242,242, 9,111, +223, 93, 17,141, 69, 25, 1,138,140, 62, 96,173,166, 93,174,114,186,218,100, 85, 19, 57,126, 89,149,196, 32, 21, 88, 8, 14, 63, +142, 20, 86,207,163,253,196, 20,237,170,233,198,192,233,197, 83, 98,183,231,246,250, 74, 20,143, 6, 46, 78, 54, 92, 60,127,202, +238,254,158, 20, 2,157,243,156,159,158,178, 57,219,160, 76,193,187, 55,223,163,162, 40, 43,149,181,114,104, 39,205,170, 93,242, +184,221, 50, 6, 9, 39, 89, 52, 37,182, 48,216,166, 70, 23, 22, 29, 3,193,141,244,219, 45,227,232, 51,209, 72,147,130, 1, 43, +118, 56,157, 51, 55,157,203, 35,189, 20,133,240, 53,195, 26,196, 59,169,130,236, 74,108,102,189,203,136, 57, 30,166, 30, 25, 90, + 80, 87, 5,182,180, 2,243,241,249,176,153, 38, 8,249, 67, 70, 43,108, 93, 82, 54,117, 46, 28, 76, 70, 60,202,159, 35, 73,145, +165,180, 4, 57,180,207,214, 40, 21,217,108, 78,248,226, 87, 95,113,183,187,231,246,237, 3, 87,101,195,144, 28, 15,157,167,119, +142,239,127,248, 29,231, 27,205,197,201, 9,227,222,241,246,213, 45, 55,127,191,134, 2,218,179,154,197,186,230,251, 63,127,199, +208, 7,206, 47,159, 16,180, 37, 41,205,105,219,210, 2,239,110,238,120,253,112, 79, 63,194,249,233, 9,235, 69, 65, 28, 29,183, +143, 59,153,198, 40,133,243,158,168,103,123, 54, 6, 77, 32, 96,155, 10, 83, 90, 98,242,184,177, 99,219,239,228, 96, 72,134, 66, + 37, 10, 27,105, 43,185, 24, 5,124,169,112, 70,225, 80, 12, 78,147,148,197, 41,203,118, 76, 12, 65, 99,138,138,228, 29,159,125, +242,146, 95,127,245, 25,109, 83,226,130,102,140, 62,139, 24,167,113,176, 39, 5,135,138,129,232,243, 75,159,156,116, 31, 33,176, +125,220,179, 89,149, 44,235, 6,255,224,184,127,220,225, 93,194,212, 5, 12,129,148,198, 57,129,205,102,136,140,132,143,232,185, + 79,179,202, 30,172, 53,250,224, 32,137, 58, 91,143,244,113, 8,105,154, 15,148, 56, 41,226, 39,254, 52,122,238,222,167,229,161, +158,125,233,204,118,159,140,181,226, 8, 0, 54,223,194, 9,255,179,112,152,233,176, 56,116, 68,217,171,159, 14,193, 47, 41, 31, +134, 51, 48, 35, 31,148,115, 17,192,241, 5,192, 60,222,156,186,247,137,156, 23,227,225,123,147, 51,201,103, 83,123, 58,116, 99, +218, 28, 14,211,164,213, 65,127,128,116, 43,166,176,164,232, 73,126, 96,247,248, 72,215, 57,234,186, 96,217,212,140,143, 35,238, +177, 67,157,122,148,150, 16, 18, 66,144, 56,210,113,144,131,177,174, 50,188, 35,231,201,198, 72,178, 66,255, 75, 49, 10, 44,168, +169,249,240,163, 15,233,251, 1,247,167,191, 16,211, 32,156,124, 20, 10, 79, 80,137, 24, 13,189, 79,104,157, 50,196, 72, 81, 89, +249, 57,199,201,215, 13,248,172, 61, 24, 66,196,197,196, 46, 88,122, 39, 11,224,104, 4,203,156,180, 98, 12,129, 48,200,222,223, + 37,249,207,154,178,164,174, 43, 94,126,244,156,175,190,252,130,228,246,140,206, 65, 4,239, 70, 8, 14, 63,220,209, 22, 37, 95, +124,246,169,172, 39,218, 10, 84,129, 27, 2, 59,215,113,255,240,192,227,195,142,253,184,103, 28, 3,251,126, 96,177,168,217,156, +110,184,190,189, 99,191,223,163, 84,192,141,157, 40,203,173, 17, 61,195, 17,248,103,122,238, 98, 18,245,191,228, 6,228,115, 44, + 72,222,187,201, 57, 12,211,240,122, 70, 27, 76,207,173, 22,129, 93,138,136,235,202, 88, 66,210,196, 40,132, 76,151,209,227, 33, +201, 68, 32,101,214,130,140, 66, 50, 12, 38,239,150,195,116, 49,107, 69,200, 73,112,147, 56, 84,234,217,124,209, 78,185, 16, 57, +177, 48,205, 84,196,148, 19,227,242,127,231, 36, 60,108,178,141,198, 12, 4,155, 92, 32, 50,186,159,144, 68, 63,207, 47,152, 44, +165,193, 74,131,155,156, 71, 87, 85, 78,138, 75,226,112, 81, 25,184,228,115,145,100,165,208, 8, 94,231, 59, 87,190, 86,136, 14, +165, 42,249,157,166,148,243, 49, 2,170,208,179,202, 63,197,120, 72, 92,204, 62,123,171, 20,214,143, 35,122,185,204, 54, 24, 40, +140,158,211,152, 80,154,160, 36,223,247,120, 57, 55, 85, 43,179,202,208, 72,212,221,190,235,248,229,139, 47, 88, 47, 23,252,233, +155,239, 41,180, 97, 28, 3,253, 16,216,246, 29, 23,231,167, 84,149,165,235, 70,188, 27,209,209, 79,184, 30,148, 81,184, 16, 37, +125,205, 59,156,119, 88, 83,230,209,168,140,160,108, 33,202,247,213,102, 67, 89,215,220, 92,189,101,232, 59, 72,134,209,119, 60, +249,242,115,108, 81,240,250,250,154,211,205,154, 48,142,156,189,120,193,230,226, 41,221,190,231,245,143, 63,101,124,171, 88,166, +186, 97, 96,185, 88,128, 81,244,253,136, 11,145,101,145,177,173,198,228,240, 16,169,138,134,174,103,124,120, 20,183,109,238, 24, +198,201,158,128, 70,233,192, 56,142, 50, 54, 74,210, 53, 42,201,178,156,109, 70,211,174,184, 40,138,217,142, 20, 67,200, 59,206, + 12,251,183, 96, 10, 77,189,172,179,125,199,207,230,222,233,130, 48,211, 65,172, 53,101, 83,203, 37,146,212, 1, 10,148,101, 40, +198,104,154,166,198,249,128, 31, 53,109,219,178,222,172, 88, 45,107,182, 15,119,116,219,158,243, 39,167, 44, 86, 13,125,223,243, +238,237, 21,187,221, 14, 23, 91, 82,125,194,237,245,150,239,255,240,103,252, 24, 41,219,154, 85,219, 80,151,150,119,223,189,198, +123,205,229,139,103, 12, 57,175,232,188, 89,176, 46, 74, 94,189,123,203,235,187, 45, 33, 40, 46, 54, 45,203,170, 68,135,196, 67, + 55, 16,189, 39, 42,133,143, 89, 28,149, 4,198,163,180,149, 42, 84,107,170,186,145,228,228, 48,242,176,223,210,123,153,120, 24, + 20,133,137, 44,171,136,181, 98,232,112, 33, 17,117,201,232, 13, 99,132, 81, 27, 34, 5,189,215,184,232, 40,139,136, 1, 46, 63, +121,201, 87, 95,253,130, 77, 93, 51, 56,135,142, 35, 38, 6, 98,180, 36,111,179, 45, 44, 71, 75, 6,143,139, 41, 59,183,164,232, +236,134,158,166,136,124,245,233, 39, 92, 61,222, 97,135, 17,147, 12, 78, 91, 74, 83,225,138,152,201,136,114, 56,160,204,220, 97, +155, 44,252, 19,160,108,200, 86, 27, 17,204,201,100, 64, 32, 8,138, 44, 0, 59,222,128, 79, 99,232, 35, 94,187, 60, 39,241, 72, +113, 35,239, 45, 70, 68, 62, 81, 29, 70,225,105,162,219,229, 88,203, 73,140, 71, 18,100,110,242,135,175, 55, 5,145,164,163, 65, +177, 62, 90,133,169,204,130,159,167, 9,179, 15, 93,253, 39,194,157,250,121, 80,203, 20, 58,147, 59,149,185, 49,152, 44,114,147, + 94, 96,130,115,166,233,107,134, 60,118, 21, 81,233,212, 29, 42,209,178, 97,173, 20,210, 41, 69,252,184,167,239, 71,182, 59,207, +201,162,161,110, 74,134, 49,178,221, 62,114,190,123, 68,117, 11,148, 45,241,195, 32,150, 93, 65,105, 98, 39, 85,117, 2, 51,113, +238,195,132,253,140,121, 60,175, 41,202,154, 47,191,248, 8, 21, 3,127,250,250,123,222,187,187,153,112, 89,228,108,237,164, 19, + 46, 65, 67,162, 44, 21,198, 70,124,210,185, 40, 74,160, 45, 46,106, 92, 2, 31,149,248,214,141,172, 56,189, 87,217,161, 96, 72, + 14,185,212, 93, 0, 35, 12,143,166, 17, 24,206, 7,207,159,241,233, 39, 47, 40,213, 3,219,253, 72, 26, 19, 62, 70, 58,183,231, +163, 39, 23,172, 87, 95,176,222, 44, 89, 44,214,140,126,100,191,219,178,219, 63,208,237,132, 22, 57,142, 3,247, 15,123,246, 99, +143, 81, 5,103,231,167,156,157,175,121,124,216, 73,160,203,178,149,252,238,164, 41,109, 1, 70, 84,225, 40,127,152,188,228,137, +147,156, 89, 49, 11, 38,229,179,142, 49,227,182, 76, 94,115, 28, 34, 88,230,180, 74,201, 25, 80,132,228, 80, 70, 75,212,178, 58, +224,100, 33,101, 93, 82,132, 56,138,109,142, 60, 25, 80,162,141,209, 40, 74, 35,118, 82,151, 3,190, 38,191,246,196,227, 78,121, +165,147,142, 88, 12,218,154, 89, 4, 62,137, 58, 85, 46,150,205,244,243,133,108,160, 79, 30, 21,195, 28,152, 18, 73,164, 41, 49, + 48,133,153,253,160,142,154, 49,157,215,105,222,201,132, 5,157,115, 31, 38, 93, 88,126, 27,101, 76, 21, 68,148, 25,181, 36,178, +153, 56,103, 52, 4, 37,171,158,178, 20, 66,171,115, 35,133, 45,232,195, 40,244,188,200, 92,148,164,152, 40,172,205, 3, 46,153, + 10, 88,131, 68,126, 74, 98,143,166,208, 38,227,252,228, 31, 42,181, 33, 6, 47, 23,119, 74,194,255,213, 54,199, 46,200, 97,162, +149,100, 26,147,224,195,203,151,116,221, 72,183, 27, 40, 23, 53,251,174,199, 57,199,126,191,227,147,179,167,121,212, 16,242, 14, +193,230, 49, 97, 14,150,200,135,125,244, 97,174,248, 39,248,140,112,110, 69,124,100,219,138,126,251,136, 95, 84,244,227,128, 15, +142,122,209,242,201,231,159,240,246,213,155,156,157, 43,162,180,243, 39,103,148,117,205,143,223,126,203,254,110, 75, 81,201, 46, +102,159,211,143,218,186,166,239,122,188,115, 84,218,208,212, 21,218, 26,202,178,194,218, 66, 46, 24,239,185,185,121,100,169,242, + 33,119, 4, 29,208,153, 75, 29,134, 72,223,117,164, 32, 52,180,114,126,144,197,242,167,243,248,184,177, 6, 83, 8, 73, 40, 56, +151, 17,178, 41,235, 21,132, 19, 94, 55, 5,109, 91, 17,242,195, 45,227, 60,241,182,171, 24, 37,147, 28, 69, 81, 85,148, 77, 35, +227, 67, 83, 28,216,192, 28, 42, 84,171, 13,195, 56, 82,150,137,245,102,193, 98,181, 0,173,216,109,111,185,190,186, 33, 4,205, +122,179,225,139, 95,252, 2,245,155,200,191,252,219,111,121,255,211, 59,118,175,223,179,125,253, 30,109,107,150,139,146,170, 44, +168,140, 97,123,223, 19, 82,193,234,233,154, 46, 70,124,128,203,167,167,108,154,138,239,126,248,137,159,174,239,105,235,146,197, +162,102, 81, 22,104,149,232,247,123,252, 32, 60,106,175,100,210,145,178,218,127, 74,107,138, 49,202,186, 65, 37, 66, 72,236,187, +145,253,110,148, 75, 71,201, 88,138,162, 36, 88,131, 43, 34, 41,106,198, 24,197,226,145, 44,126,178,146, 97,177, 10,150,133,161, + 52,112,118,126,202, 39,159,127,132, 49, 37, 93,223,227,189,203, 69, 82, 68,199, 81,210,219,178,162, 58,196, 4, 73, 46,252, 20, +109, 6,204, 68,174,223,188,229,127,249,205,103,252,227, 63,255, 51,255,242,219,127,101, 55, 36,138,197, 90, 46,156, 2, 18,150, + 20, 68,133,157,166, 61,122,202, 32,149, 25, 46,147, 57,239, 71,104,212,164,244, 1,190,146, 59,134, 57,128,229,200, 64,145,226, +164, 94,211,115, 71, 57, 29, 96, 83, 23,160,163,196,183,106,100,135, 23, 0, 21,163,104, 98,142,157,110,211, 33,169, 14, 89,236, + 90,107,252, 44, 12, 58, 62,140,227,156,107,158,244, 97,213, 62, 9,165,226, 84,252,115,240,193, 79, 1, 20, 90, 31, 37,195, 41, +241,176,169, 16,231, 29,251, 20, 70, 49,255, 61, 84, 58,242,204,171,156, 65, 33,246,198, 9, 30,162,146, 76, 18, 81,134, 34, 23, + 49, 41, 4, 66, 24, 51,120,197,177, 44, 91, 78, 78,106,126,120,235,184,126,120,224,242,254,129,234,116,201,144,223, 52,109, 11, + 57, 4, 13,196, 40,207,151, 10,204,207, 79,210,154,232, 21, 16,112,120, 76, 84, 88, 6,138, 74,243,171, 47, 63,161,108, 42,254, +248,199,191,241,238,237, 13, 67, 47, 74,111, 10,131, 85, 30, 98,164,211,154, 24, 53,102,128,136,155,113,184, 54, 70, 98, 42,136, + 81,227,147, 20, 56,202, 38, 10, 52, 4, 77,159, 20, 67,148,210,175,200, 34, 48,171, 21,109, 93,115,182,174,249,224,242,132,139, +139,150, 56,220,176,115, 29, 97, 52,212, 85,129,169, 12,159,125,252, 57,159,125,244, 57,202,104,182,187, 29,125, 63, 16,188,227, +238,250,129,219,237, 13,209, 39,220,232,112,126,164, 31, 7, 30,119, 3,171,214,210,214, 5,103, 39,107,252, 56,242,112, 51, 96, + 10,176,149,166,169,234, 28,156, 19, 51,235, 64,203,153, 51, 13,114,210, 65, 79,145,147, 76,242,228, 53,205, 36, 82,165,213,236, +232,153,131,132,146,153,247,242, 49, 32,211, 74,131, 88,193, 98,152, 47,169,148,197,123,113, 26,213,207, 1, 46,242, 3,152,162, + 64,217, 66,246,222, 33, 96,109,145,185, 13, 65, 58, 98,125,224, 56, 76, 43,131,105, 85, 57,243,219, 99,204, 96, 30,147,197,123, + 54,163,109,165,137, 20, 20,192, 52,133,146,172,120,109, 68, 27, 18,189,188,191, 62,132,185, 89, 83, 74, 76, 82, 74, 11,183, 96, + 42, 82,230,125,183,210, 96,210,236,144, 73, 72,242,164,137,226,138, 49, 38, 39,123,106, 59, 91,232, 66, 56,250,189, 26,177,204, +153,217, 20,159,230, 9,220,180, 38,156,104,115,214,230,212, 40,239, 2,166, 48,217,167,151,178,173, 74,186,140,120,228,155,139, +121,158,162, 76, 86,238,102,200,134, 15,158,170, 50,124,252,225, 75,174,238,110,228,161,213,134,113, 16, 59,155, 78,134,205,233, +138, 16, 68,244, 69,148, 93, 74,231, 28,198,218,124, 81, 6,116, 82,120,231,242, 88, 62, 7, 8,228, 78,160, 40, 10,154,118,193, +118,216,211, 56,135, 29, 43,134,126,192,167,192,211,103, 23,216,178,225,250,234, 91, 78, 87, 75,250,113,100,181, 58,225,233,203, +231,140,187,129,119, 63,190,206,162,126, 57,153,134,113,164,104, 27,116,165,233,110,247,164, 8,117, 85, 9,122,212, 24,138,170, +202, 12,106,216,110,119,220, 60,222,178, 90, 84, 68, 47,151, 78, 80,138, 98,217, 10, 96,196,192, 56, 12, 56, 47, 86,141,144,226, + 33, 70,149, 56,199,103, 74, 30,119, 62,224,144, 10,204, 26,157, 71,163,242,240, 77, 44,235,144, 28, 33,168,220,181,136, 90, 62, + 17,177, 90, 81, 24,177, 53,149,117, 41, 88,198, 73,233,156,209,141, 38,123, 53,147,210,162, 19,240,176, 94,159,208, 52,181, 28, +210, 58,161, 2, 20, 70,176,165,133,213,148,149,230,244,244, 25,191, 30, 28,255,250,238,255,226,111,175,223, 16, 98,164, 89,174, +178, 19,192,176, 31, 6, 60,176, 56, 93,227,131, 38,244,158, 15, 94, 62,227, 98,189,226, 47,127,251,142,119,119,247,156,175, 22, +226, 69, 54, 26, 83, 64,232, 71,134,177, 99, 12,145,152, 71, 99,122, 82,168, 30,197,217, 90,107, 49, 85,133, 87, 10, 23, 2,219, +110, 36, 96, 81, 58,100, 79,183, 33, 40,232,148, 21,151,168, 86,164, 34, 99,131,149,161, 52,134, 66,103,146,154, 82, 20,170,100, +189,106,185, 56, 59, 65,141, 29,125,144,209,191,247, 97,238, 56, 85,146, 16,162, 24, 10, 92, 84, 4, 36,183, 32,132, 36, 43,160, + 20,184,122,119,203,105,163,216, 84,240,205, 31,127,143, 86,154,151, 31,188,164,108,151, 88,228, 80, 47,138,146, 20, 28,209, 79, +221, 93,230, 63,103, 26,154, 50,114, 48, 38, 45,217, 9,178,203,254,185, 8,135, 28, 23, 59,121,106,167,253,180, 34,231,204, 39, +153, 78,160,192, 28, 17,139, 38,188,107,154, 5,150, 86, 46, 67, 45, 69,226, 36,218,137,185, 35,229,120, 28,170,212, 12, 84,210, +121, 71, 31,242, 69, 31,166,206, 53,239,210,211,244,187,157, 68,240,147,128, 46, 15, 34,211, 17, 90, 79,229,110,251, 0,150,209, +217,239, 46,127, 23,163, 52, 97,222,159,103,172,108, 74,243,104, 82, 58, 41, 57, 68,201, 22, 52,163,138,217, 21, 50, 57, 11, 20, + 9,162,199,187,142,126, 24,197,206,105, 19,155,133, 69, 61,171,249,238,213, 13, 63,222, 93,115,242, 86, 83, 84, 53,182, 44, 49, +101,160, 40, 53, 38,149,224,178, 97, 62,201,187, 32,251, 99, 13,222, 19, 85,144,149, 95, 10,164,216, 99, 16, 95,251, 71,207,150, + 44,171,143,121,243,246,148,199,237, 35,143,119, 91,246,189, 35, 69,199,162,170,242,239, 90, 81,151, 50,141, 49, 74,158, 79,107, + 45,125, 26, 24, 59, 71, 72, 1,178,243, 39, 26,197,216,141,168,221,158, 82, 71,170,210,230,241, 53,180,139,130,243,197,154,245, +186,101,185,168,208,193,131,174,120,126,121,201,201,233, 57,171,118, 65, 76, 35, 94, 9,168,201, 19, 73,222,115,115,115,195,221, +195, 61,183,239,239,121,244, 59,116,210, 24,165,217, 15,123,170,166,230,163,243, 13, 42,137, 96,238,167, 31,127,162,208,145,243, +211,154, 16, 34,166, 44, 81, 70,225,131,156, 17, 42,133,108,191, 61, 60,115, 17, 17, 47,155, 92,192, 29, 70,243,211,144, 61,127, +180,241,103,149, 41,200, 50, 87,158,173, 40,103,217,212,237, 79,117,164,120,235,167, 21, 38, 57, 86,152, 44,176,148,207,199, 22, +242,204,198, 16, 15, 12,116, 45, 9,118,122,202, 22,208, 83,156,175,153, 39,203,198,216,159, 17, 22, 83,222, 81,147,139, 86, 50, +162, 59, 77,209,204,153,155, 16,145,203,178, 44, 44,123,142, 62,207, 49, 39,188, 25,157,195,150, 14, 86, 77,113,110, 29,176,230, + 19,195, 64,233, 52,167,218,153,194,162,181, 63,128,168,194,228,199,215, 68, 21,113, 97, 42,170,196,209, 50,120,143,177,249,157, + 82, 38,179, 49,244,156,124, 39, 57,159, 9, 91,148,242, 34,185,209,209,214,181,252,210,179,135,207,228,110,111,154,189, 31,198, +242,147, 17, 63,205, 54,157,209,121,190,248,226, 83, 86,155, 53,223,189,250, 81, 42,136, 28, 4,224,189,151,104,196,182,193, 57, + 63,255,165,165, 96, 8,114,200,207,162, 57, 25, 99,171,169,155,139, 83, 82, 89,164,106, 26,130, 15,220,223, 92,115,118,113,202, +216, 15,184,193,211,212, 37, 79,158, 62,225,230,234,138,190,235, 89, 94, 62,231,246,234,154, 95,252,250, 75, 86,103, 27,190,254, +215, 63,112,251,254, 26,211, 88,130,146,170, 85, 43, 77,221,212,196, 81, 56,195, 66,120,147, 0, 13, 91, 20,152,194, 80,150, 5, +119,143, 91,174,239,174, 81, 90, 30,228,193, 7,124, 72,148, 77, 77, 52,242,178,196,152, 24, 71, 71,138, 9, 63, 29,110, 70, 75, +167, 52, 65, 76,148, 84,166, 70,201, 72, 94,133,233,179,205, 89,209, 57, 4,160,176, 2,213,144, 10, 77,207,221,155, 54, 26, 21, + 19,182, 20,180,160,173, 43,138,186, 58, 88, 77, 72,243,131, 51, 29,164,193,123, 92, 63, 80,149, 53,205, 98,113,192,145, 34, 99, +157,213,114, 67, 83,181, 56, 21,121,184,189,103,119,183,227, 79,255,207,111,249,238,119, 95, 83,149, 21,205,122, 37, 98,173, 16, + 24,250, 1,128,118,181, 17, 43, 90, 55,240,201, 7, 47,249,224,197,115,126,255,135, 63,240,234,221, 21, 79, 78,207,114,146, 91, +160, 41, 42,188,247, 12, 67,207, 56,122,249,123,170,248,179,172,112, 9,130,144,209,111,217, 54,232,194,128, 22,145,163,104, 23, +100, 15,169,162, 71,197,188, 83,114, 96,130, 40,255,163, 18,175,120,102, 32, 97,173, 66,171, 64, 85, 89, 42,107,105, 74,120,184, +189,193, 35,185,196, 49, 39,224,201, 69, 22, 80, 99,196, 17,217,251,146, 65,149, 36, 83,160,146,240, 9,220,208,115,117,117,205, +221,253, 61, 31,126,120,193,221,195, 3,129,123, 76,115,194, 87,255,248, 37,206, 5,222,191,251, 9, 21, 35,182,172, 9,182, 64, + 17,231,144, 18,109,242,193, 50,237,185, 85, 58,140,234,166, 53,114, 86,242, 79,148, 55,149,195,100, 36,194, 81, 29,226,134,173, +154,169,138,233,200,250, 53,189,151, 90, 9, 78,117, 66, 54,235,255,228, 9, 15,242,139, 62,194, 22, 30, 18,212, 38, 17,220,196, +166,159, 70,253,234, 64,173,153,149,227,233,168,192, 62,138, 29, 20, 17, 84,174,102,212,145,130,127,154, 44,204,255,137, 81,243, + 97,125, 88, 37,168, 67,241,144, 69, 74,202, 48, 63, 27,154, 41,161, 46, 78, 63,108,238,192,164,120,141, 74, 96, 37, 49,229,113, +181, 53,244,221,192,197,122,141,243,240,246,250,150,119,251,123, 22,203, 53, 79,159,191, 96,185, 81, 24,151, 72,110,151,255, 62, + 10, 31, 35,133,130,132,100,110,235,232,112,201, 17,149, 65, 25, 48,110, 47, 59,102,101,169,234,146,139,243, 11,158, 63,253, 0, + 91,150,120, 23,233,186,142,110,223,163,109, 73, 83, 20, 50,233, 43, 12, 36, 73, 73,139, 41, 81, 20, 6, 23,101, 95,235,163, 80, + 50,227,152,232,198, 14,231, 70,130,243,121,138, 33, 66, 77,107, 12,117,101,105,139, 34,211, 21, 45,182, 90,176,168, 87,172,214, + 27,108, 81, 18, 99,228,254,238,142,183, 55, 55,196,116,205,190, 31,184,126,255,158,237,246,145,136,160,116,123,231,233,251,129, +213, 98,193,229, 7, 47, 88, 45, 10, 22,117,201,237,205, 21, 87,215, 29, 87, 87, 59,158,158,213, 60, 57,223, 16,177,184, 0, 46, + 56,148,242,121,146, 98,114, 72,203,225,252, 63,214, 88, 28,132,233,234,103,132,194, 89,124,150,142, 69,148,210,241, 78,121, 31, +114, 89,203, 94, 92,101,168,145,192, 87, 4, 15, 78, 58,218,250,170, 52,135,141, 21, 86, 58,126,161,173, 77,137,161, 82, 94,154, +156,106, 56, 9,214, 38,239,153,209, 42, 55, 80,105,102, 45,168,120, 8, 8, 51,121,106,230, 50,148, 72, 27,137, 34,158, 56,245, + 74, 39,138,170,248, 89,247,157, 66,152,223, 95,149,223,249,152, 18,209,167, 76, 43, 84, 98, 65,155, 35,203,213,220, 76,144,153, + 12, 58,163,143,149,150,160,176, 73,127,147, 68,193,203, 56, 12,244,222, 97,138, 2,239, 60,177,178,135,201, 64, 18, 90,105,140, + 50, 73, 33, 6,137,155,181, 90,146,142, 30,199,142,147,213,114, 62, 14,130, 23,143,170, 54,134, 99, 63,129, 66, 97,242,129, 16, +115, 85,164,163,198,185,200,229,139, 75, 76,105,185,186,190,163, 40, 75,124,240,132,232, 25,134,129,186,174,104,154, 5, 49,202, + 72,121, 63,116,108,218, 86, 42, 19,157, 73, 56, 90, 60,195,222, 11,165, 41, 29, 37, 64,151,182,162,105, 27,110,174,111,164,195, + 42, 45,247,183, 91,162,242,156, 92,156,178,104, 27,110,174,175, 41,219,101, 78,200, 9, 92, 92, 62, 33, 58,205,171,191,127,143, + 11, 1,107, 42,188,119, 12, 93,207,162, 89, 98, 75,131,219, 14, 16, 99, 22,108,200,136,198, 86,245, 28,200,113,123,123,207,246, + 97, 71,133, 37,196,196, 16, 60, 74,105,138,178,146, 60, 99,196,215,153,178,234, 53,102,117,187, 28, 64,121, 52,121, 44, 30,202, + 59, 40,149, 61,141,113, 62, 84, 19, 90, 89,202, 82,192, 18,126,148,209, 47,128,177,226, 72, 48, 40, 10,107,133,178, 85, 23,115, +133, 56,127, 54,250, 32,154, 34, 38,198,125,159,197,137, 13,153,136, 32, 59,165, 32,149,114, 81,214, 4, 21, 24,135,145, 34,105, +126,255,219,127,231,223,255,199,255, 77,219,174, 56,185,188, 32,185,128, 27, 71,156, 15, 84,198, 82,175, 86,244, 67,164,223,237, +248,244,229, 7,124,244,209, 11,126,247,187, 63,241,221,171,183,124,244,252, 57,126, 28, 25,156, 99,125,182,128, 49,225,123,199, +190, 31,101, 68,153, 69, 28,147,232, 73, 42,244,172, 6,175, 45,245,106,129,109, 42,130,115, 24, 20,139, 69,133,215, 80,214, 37, +139, 69, 67, 89, 21, 50,233, 40, 52,198,138, 24,205, 88,129, 55, 20,214, 82, 22, 22,107, 36,141,173, 46, 75,202,186,162,212,137, + 48, 70, 58, 63,144,188, 32, 51,135,190,163,239,247, 4, 63, 48, 14, 29, 93,215,177, 27, 70, 30,247,123, 30,134, 68, 28, 35,117, + 93, 80,150,134,167,167,167,188, 88, 47,241,225,142,183, 15, 59,234,122,205,217,121,195,203,143, 63,230,187,111,191, 97,177, 89, + 96, 75,139,177,133,124, 70,136,123, 67, 46,117,185,104,167,209, 91, 2, 73, 75,155,195, 27,117,238,228,142, 20,239, 90,147,162, +154,237, 98,211,255, 24,155,119,240, 41, 29,221,167, 33,119,239, 89,129,156,157, 4,106,138,134,140, 82, 8, 6, 4,228,164, 98, + 62,129,245,148, 3,159, 59,247, 24,228,157, 12, 65,216,159, 81,212,218, 58,102,187,215,228, 73,143,146, 73,144,142, 45, 62, 42, +230,110,233,144,220,165, 81,115,129, 49,195,155,142, 89,239,217, 54,164,227,193,199,126, 60, 98,213,202, 28, 77, 5,227,193,154, +167,243,126, 61,127, 33,147,117, 56, 17, 73, 16, 36,122,180, 74,212,182, 64, 37,195,245,237, 3,203,114,193,233, 47, 63,231,233, +229, 37,167,151, 47,105,154,138,251,135,183,236,238,110, 24,186, 45,168, 64, 85, 84,252,127,108,189,235,179, 37,201,117,221,183, +246,206,204,170, 58,207,251,236,238,153,233,121, 96, 64,144, 32, 33,145,180, 76, 6, 25, 10, 57,172,112,248,147, 62,234,111, 85, +132, 45,217,162, 40,134,105, 26, 10,210, 0, 72, 10, 32, 8, 2,152,193, 60,187,167, 31,247,117, 94, 85,149,153,219, 31,246,206, +172,186, 67, 51, 98,130,131,158,190,221,247,158,115, 42,115, 63,214,250,173,166, 91,160,233, 58,132,118,161, 65, 28,206, 68, 76, +174, 85, 56,201,204,107,175,204,152,128, 96,243,214,148,129, 52, 14, 24,198, 81, 39,154,146, 38, 84,105,214,192, 13, 10,108, 19, + 21,213,145,164,156, 85, 52,149,116, 84,220,114, 0, 40, 33, 83, 66, 28, 70, 36,137,112,228,192, 96, 68, 17,117,226, 56,135, 40, +192,254,254, 22, 55, 95,126,137,126, 24,209, 44, 91,220,188,189,195, 63,252,252, 19,128, 51,156,107,144,179, 78, 65,137, 3, 22, +139, 6,219,139,181,242, 4, 82, 66,219, 16, 48, 30,112, 28,239,177,110, 5,249,188, 5,179, 67,211,181,112,109,167,188,140,195, +160, 62,115,209, 76,118, 29, 13,107,102,248,124, 61, 52, 97,133, 81,247,214,147,143,155,173,248,178,124, 6,211, 23, 57, 70, 37, +176, 5,207, 24, 37, 35, 15,170, 99, 80, 32,144, 50, 34, 84,103, 36, 53,122, 23,134,230, 5, 43,105, 50,120,133, 36,197,148,224, +157,183,213, 85,170,155,235,199,207,156, 93,194, 54,105,170,141,169,216,216, 29,170, 35,115, 68, 24,205, 99,159, 37,215,221,125, +153, 68, 21,178, 97, 74,130, 16,172, 35,143,169,214,201,197,178,154,114, 70,206, 92,167, 10, 4, 85,223,107,148,185,190,167,132, +108, 9,119, 70,100, 45,188,137,172,213,172, 99, 54, 81,101,198,221,126,143, 62,141,104,187, 78,117, 22,147,157, 30,196, 48,254, +190, 78, 4,117,151, 33,240,141, 11,136, 41, 98, 72,163,101,225, 90,166, 50,212, 70,196,102,227, 41,115,253,242, 80,123,103, 34, + 0, 19, 29,132,224,112,253,244, 9,250,126, 64,127, 26,177,108,181, 83, 27,163,230,177, 95, 95, 92,162, 9, 14,251,211, 9, 49, + 70, 80, 18, 52, 78,179,129, 57,120,181,136, 56,143,190, 79, 40, 81, 90, 98,124,233,156, 52, 49, 40,197,136,227, 97,135,245,122, +141,148,128,225, 52,160,107,150, 88,175, 86,232, 79, 39, 28, 31, 30,112,246,236, 41,134, 97,192,229,147,103,120,239,249, 7,120, +243,197,215,184,125,245, 10,205,226, 12, 0,208, 31, 78, 96, 31,208, 45, 23, 24,226,128,126,236,181, 59,183,139,208,123,143,208, + 54,112,222,227,176,219, 99,255,112, 15, 98,143, 60, 70,236,135, 17, 99, 4,124,171,150,183, 20, 5,227,216, 27, 50, 49,171,168, +205, 96, 34,190, 12,223, 75, 46, 98, 90,249, 0, 0, 32, 0, 73, 68, 65, 84, 7,194, 89, 1, 4, 57, 34,103,135,204, 94,119,110, + 5, 70,195,250,240,251,224,181,138, 23, 13, 80,209,209,151, 83,132,165, 49,132, 93,104, 13, 75, 57,133, 38,148, 61,108,217,105, + 14,125, 15, 34, 77, 34, 35,239,117,180,196,198,108,206, 4, 70, 80,118,192,144, 17,156,195,127,255,241, 79,240,211,255,246, 99, + 60,125,231, 57,174,222,185,198,253,221,141,238,193, 79,163, 38, 87,181, 43,236, 78, 39,156, 14, 7,252,238,243, 15,240,252,249, +115,252,232,167,191,192,139,151, 95,224,227,231, 79,208,159, 70, 28,251, 19, 46, 46, 54, 64, 76, 56,246, 25,195,177, 87, 0,131, +163,170,148,134, 5,133, 72, 9, 61, 32, 66,123,118,134,197,102,139, 76,140,227,105, 4, 66,135, 69,187, 64,179,110,112,117,113, + 6, 31, 58,112,201,189, 22, 61, 44,154,166, 65,211, 54,104,219,128, 54,232,255,111,218,128,118,217, 96,201, 11,120, 86, 91,102, +202, 26, 9,155,179, 64, 28, 97, 56, 28,180, 43,146,136,152, 6,228,116,194,119,143, 39,156,246, 35, 94,237, 78,184,217,157,240, +229,171, 29,190,121,245, 22,183, 56,226,157,115,143,101,179, 64, 20,194,237, 97,135, 77,138,248,199,159,255,147,162,102,207, 47, +208,180, 11,136,141,207, 20, 3,171,227,118,112, 65, 67,186,234,241,213, 93,187, 14, 40,139, 40, 77,102,201,105, 68,106,231,212, + 93, 94,174, 22,153,185, 26, 93,178, 93,228, 66, 53,115,129,172, 19,170,187, 71, 19,220,144, 1, 63, 52, 40,104,250, 61,112,140, +156,168,254,253,146,181,252, 76,150, 88,165,241,142, 83,148,100, 1,205,148,219, 89, 5,110,169, 70,184, 78,235, 2, 45, 96,203, +222,176,192,169,138, 39, 93, 80,198,166, 26, 40,172,190,218,100, 99,214, 50,165, 85,209,160,198,103, 90, 90,153,203,181,104,157, +102, 0, 25, 36,138,178, 37,187,128,251,126,167, 5, 73,183,194,119, 62,248, 61,124,252,193,119,176,106,214,232,253,136,219,155, +175,113,255,246, 5, 98,218,225,108,123,141,230,157,239, 97,185, 88,195,119, 43,184,110,133,166,237,128, 16,244,243, 90,196,176, + 16, 72, 26, 85, 20,137, 1,201, 18, 43,239,222,188,198,235, 87,223, 32,132,128,245,114,137,182,245, 72, 57, 34, 14, 35,118,187, + 3, 78,195,128,224, 24, 77,112,112,206,226, 81,225,116,237, 40,130,197,178,209, 20,177,164,211,139, 33,247,106,161, 34, 53,102, +171,216, 86, 87,150,167,211, 9,199,227, 9, 34, 25,139,110,133,187,211, 3, 62,251,236, 51,228,156,177, 92,175,113,117,113,133, +203,235, 13, 30,238,143,104, 26,194,229,217, 19, 4, 31, 48,230,136,205,118, 1,113, 71,112,140,184,121,123,131,227,237, 11,172, +175,182,104, 90, 15,207, 1,205,194,225,252,124,186,184,227, 48, 42,172,216,200,111,236, 4,228,179,173, 69,230,185, 1, 12, 34, + 93, 33, 84,180,112,161,254, 49, 43,169, 15,147, 69, 77, 3,142, 48,107, 96, 74,158, 70,129, 19,161,238,144, 85, 0, 54, 57, 68, +136,203, 36, 83,159,163, 80, 0, 45,182,254, 33,159, 43,204, 69, 87,238, 82, 57, 7,201,216,254,222,121,184,144, 43,103, 29, 89, +116,189, 98,207, 3, 59, 21, 58,202,144, 49,142, 10,178, 10,164,244,201,193, 38,138,193,121,211,125,141, 96, 94, 64, 68, 35,109, +139,126,201, 59, 54,202,155, 64,144,234, 68,172,236,243,129, 12,162, 96,118,211, 92,159, 9, 85,238,139,121,212, 53, 0, 70,197, +182,130,156, 35,250,254,160,246,104,231,244,153, 51, 95,126,121, 10,116,114, 18,145,147, 5,173, 41, 3,133, 49,166, 4,134, 50, +127,139,218, 53, 91, 5, 29, 88, 45, 67, 41, 26, 28,197, 14,103,103,169, 83,176, 3, 96,115,177,193,243,119,223,197,155,215,223, +168,119, 91,128, 97, 24, 17,163, 98, 82, 23,171,133,142, 54, 82,172,123,143, 12,179,233,176, 67, 76, 64, 96, 66,223, 31,180,215, +200, 35, 64, 58, 98,106,130, 71,240, 13,142,135, 30,121, 20,141, 73, 61,233,104,127,115,190, 6, 64,232, 15, 61, 60,171,200, 44, +157, 70,124,240,241,247,225, 26,143, 79,127,253,107,156, 14, 35,206, 55, 1,227, 48,226,112, 56, 97,179, 92,162,109, 29, 78,247, +218,161, 44,156,175, 59,233,166,109,209,182, 45,152, 8,119,183, 55, 72, 49, 34, 48,225,148, 19,142, 49, 2,206,171, 53, 13, 90, +117,199, 24,225, 89, 33, 19, 81, 84,153,174,162,142, 60, 19,254,184,122, 56,178,125,216,203,104,182, 30,104,204,104, 2,219, 27, +155, 43, 38,147,152, 33, 73, 65, 5,206, 51,200,121, 52, 93,176, 75, 3, 54,204,214,157,103, 34, 32,136,238,247,179, 8, 22,171, + 21,124, 27, 42, 52,200, 59, 45, 56,250,227,128,225,176, 67,211,117,112,142,240,163,191,252, 27,252,226,239,255, 17, 31,253,246, +199,120,246,221,143,240,250, 55,159,163,223,157,144,135,136, 16, 60,224, 61,222,158,142, 64,138,248,253, 15, 63,194,213,243,231, +248,209, 47,127,129,155, 23, 95,227,253,235,119, 49,244, 61,134,211, 9, 23,103, 91,181,164,156, 18,198,126,192,105,140,176,173, +150,117, 91, 52,241,202,157, 71, 20, 65,179,104,113,126,177,133,115, 30,199,195, 17,251,253, 30,137,128,213, 98,129,203,205, 18, +109, 19,208,180, 94,133, 34, 78,199,234, 33,120, 44,151, 11, 52,173, 89, 15,201,193, 7,143,198, 82,244, 64, 25,177,216,168,224, +144, 89, 57,229,146, 19,218,182, 65,116, 12, 68, 7,162, 0,225, 6, 66, 11,248, 69,198,242, 60,225, 3, 73,248,237, 15,119,232, +111,215,120,115,119,131, 23,175, 31,240,112, 56, 96,177,244, 88, 54, 30,119,111,191,196,195,245, 37,186,119,159,163, 91,109,224, + 67,135,156, 71, 12, 54,129, 44, 66, 56,221, 83, 23, 75,155,242, 28, 28, 89,180,177,141, 10,171,165,147,117,199, 76,165, 35,209, +132, 12, 77,177,178, 3,160,130,154,104,134, 87,173, 34, 29, 61, 76,115, 13, 88, 82,208, 6,205,152, 88, 92,104,114,170, 10, 82, +223, 43, 39,100,155, 38, 56,210,117,134,204,243,133,138, 63, 93, 52, 8,199,153,133,168,170,243, 31,197,186, 91, 17,145, 39,166, +132, 84,208,136,106, 39,136,241, 40, 5,171,184, 1,168,136,155,114,210, 17, 42, 57,139,106,181,159, 39, 9, 18, 39, 16,143, 16, +239,167,196,171,226,215,111, 2,158, 60, 89,225,213,238, 1,199,225, 14,191,117,253,125,124,252,241,119, 16,105,135,111,238, 95, +224,254,205, 27,180,155, 45,182,207,127, 7,221,250, 2, 46,180,138,248,101, 6, 56,215, 46, 17,167,193, 58,174, 17, 50, 66,133, + 80, 57, 33, 90, 33, 73, 25,104, 88,211, 21,151,205, 2,247,187, 7,228, 56, 98,179, 93, 35,248, 18,206, 33,150,176, 24, 17, 73, +212, 9,145, 35, 36, 70, 28, 78, 7,220,221,238, 33, 36,232,218,128,237,102,141,245,178,173, 66, 66, 45,192, 20,194,162,208, 17, +194, 55,183,183,248,230,229, 43,220,221,223,227,236,226, 2, 31, 62,191,192,114,177,193,205,237, 3,238,110,238, 16,188,195, 7, + 31,190,131,111,190,126,141,251,253, 1,187,195, 30,155, 21, 99,211, 17,104, 56, 1,164,129, 92, 87,103,103, 24,211,104,169,132, + 45, 28, 7,237,204,179, 0,113,196,216, 31, 33,105, 0,104, 4,187,140,192, 25, 66, 1,217,208,193, 37,249,175, 64, 87,170, 37, +204,128, 80,152,141,225, 85, 77, 94, 56,233, 52, 67, 11,139,225, 79,201, 8,109, 98, 5,101,137,105,133,121,175,213,206,198,213, + 77, 77,112,172,171, 81,133,121, 41,183, 61,231,137,192,168,225, 96, 5, 76,164,206, 8,181,221,205, 4,107,236,234,247,109,198, + 11,213,146, 56, 69,125,167,113,180,255,158, 77,148,233,177,175,244,104,163, 67,230, 4, 71,186,230, 74,197,250, 70, 74, 89, 77, +201, 64,105, 41,155,114, 62, 34, 4,182, 16, 52,125,129,216,214, 16, 98,103, 54,163, 60,127,122,182, 11, 39, 43,132, 13,153,219, + 39,200,152, 16,154, 0, 39, 90, 4, 83,178, 21, 27, 79, 46, 29, 17, 45, 44,114,202,240,193,121, 28,227,160,135, 34,171, 47, 60, + 37,181,103, 72,214,221,142, 50,135,211, 36, 2, 40, 70,122,219,133,199, 28,241,193,179, 15,176,217,108,240,197,139,175,181, 42, +203,186, 87, 24, 83, 6,177,195,186,107, 17,109, 87,146, 99, 66, 19, 26,139,118, 52,152,189,229, 84,167,104,220, 69,152,159,144, +213,138,144,213, 4, 14,202, 9, 77,211,224,212, 31,245, 0, 13, 1, 67, 28,144, 70, 29, 35, 5,246,240, 43,135, 15,191,251, 49, + 94,125,243, 10,159,254,211, 63,162,235, 58, 52,161,197,253,253, 61,188, 48, 66, 8,182, 7, 31, 42,224, 35,165, 17, 77,104,177, +216,174,177, 88, 44,240,246,213, 27, 28, 31,246,117,159,152,114,134, 48,192, 77, 3,118, 30,128,211, 68, 35,110, 64,226, 52,248, + 70, 4,206, 62, 48,206,252,156, 41,103, 36, 35,124, 65,212,158, 35, 16,100,199, 70,183,210,172,102,176,128, 60, 89,135,132,170, + 65, 38, 83, 21,115, 80,143,190,111, 26,176,129,102,116,228,101, 29,161,117,233,253,169, 71,150,132,213,122,133,182, 13,112,152, +132, 80,148, 29,142, 55, 59, 60,220,223, 99,123,125, 6,231, 90,252,228,191,254, 21,126,249,211, 95,224,119,254,213, 15,240,209, +247, 62,198, 63,253,237, 63,224,246,245,141,198,218,182, 45, 50, 19,110, 15, 7,156,115,135,239,255,214,199,136, 97,129,159,254, +242, 87,216,189,126,131,139,139, 51,100,137,200, 99,196,118,179,134, 16,208, 15, 3, 82, 28,209, 15, 39,100,202, 8,142, 53,205, +140, 9,189, 36,149,209,216,196, 71, 88,112,126,125,137,205,102,141,211,208,131, 60,225,236, 98,131,243,179, 53, 46, 46,214, 88, +110,214,240, 77, 64, 19, 2, 22, 75, 77, 8,116,236, 33,142,209, 82,163,157, 77, 81,227,218,133, 34,134, 22, 46,146, 30,201,166, +210,173, 18,112, 19,213, 80,134, 39,197, 74,102, 86, 90,140, 56,134, 75, 30, 43,231,176,104, 22, 88, 95, 61,195,243,223, 18, 12, +247,123,156,134, 35,226, 16, 49, 14,162, 94,246, 20,225,216, 35,201, 80, 63,199,108,185,246,112, 14, 32, 21, 60,105,241,102, 76, +130,210,151, 23,229,185,154, 33,103,226,178,153,223,213, 14, 19, 73, 82,173,109, 37,250,148, 30,177, 95,167, 11,191, 76,105,138, +213,172,106, 44, 36,215,156,211,250,247,204,246,227,115,202,214, 92, 59,163,214, 29, 76,108,120,115,184,148,169, 1,230,235,117, +251,223,142, 38,184, 71,141,129,165, 41,126,184, 94,226,164,217,220,204,143,139,222, 18,124,161, 43, 42,253, 7, 98,153,238,185, + 68,218,153,120,136, 9, 77,187, 64, 94,157, 33,241,136, 63,249,131,167, 64, 22,172, 55,107,220, 63,188, 68,118,132,118,115,142, +119,223,125, 15,139,102,133,108,252,128, 42,236,163, 92, 63, 51, 41, 39, 27, 27, 7,133, 95, 85,224, 83, 86,187,147,125,223,224, +140,229,170,133,123,231, 10,235,195, 66,245, 66,134,181,229,192,216,172,151,112,238,168,142, 33, 82,128, 77,211, 4, 45,212, 45, +168,232,112, 58,162,239, 7,236,238, 15, 32,142,104,221, 99, 76,239, 56, 70,244, 49,162, 99,143,165, 79,184,216,122,180, 97,131, +183,111,223,224,126, 73, 88, 45, 28,134,211,136,251,251, 30, 55,183,111,224,112,194, 34, 48, 86,103, 1,199, 49, 99, 56,141, 8, +235, 13, 66,227, 16,211,104, 73, 94,140,101,179,134,227, 0,242, 37, 75, 60, 1,121,196, 24, 79,136,185, 7, 56,171, 88, 51,120, +211,160,104,161,151, 69, 84,243,100, 66,220,152,203, 25,205, 54,170,206,198,101, 39,100, 74,150,248,107,122, 14, 27, 79,171,200, + 83,187, 82,216,251,170,155, 2,182,248,209, 88,133,106, 57, 71,251,108,230,234,139, 39,227, 48, 4,203, 15, 47,159,175, 98,209, +148, 89,234, 32,147,230,192, 37, 73, 64, 78, 96,202,138,113, 22,169,133,107,209,148,232,133, 76,144, 20,145, 6, 29,189, 39,232, +157, 16,230,185,229, 68, 24, 44,193,212, 57,135, 56, 12,245, 89, 83, 85,189, 38,178,229, 49,218, 30, 63,129,217,171, 99,201, 10, +238,106, 89, 43, 83, 74,179, 75,147,226, 0,148, 86, 24,245, 57,117, 2, 36, 8,118,251, 7, 28, 79, 39, 92, 44, 22,104,125, 48, + 59,106,210,233, 0, 49,162, 36,139, 62,182,194, 48, 37,120,207, 30,105, 60, 34, 56,133,101,196,156,149, 38, 71, 58, 42,172,195, +123,152,159,214,249, 41,255,149, 21, 23,155, 18,240,252,253,119, 49,198, 1, 55,183,247,106, 61,138, 17, 73, 50,198,148,224,188, + 67,215,118,200,199, 35,164,208,228,202, 11,235,116,227,207, 76,232,251,193, 70,216,147,169,127, 62,118, 76, 49, 33,132, 0,239, +213, 99,222,118, 11,236,236,207,146, 20,209, 45,215, 0,128,119, 63,122, 31,139,213, 2,127,255,147,159,224,180,223,227,234,201, +123, 56,157,122, 28,142, 7, 44,187, 5,154,198, 3, 24,113, 60,246, 10,184,177, 12,219,139, 69,135,237,249, 22,146,129,151, 95, +124, 1, 14,161, 82,237,114, 22,197,245,153, 63, 50,165, 30,167,195, 9,190,211, 7,182,218, 44, 81, 24,245,172,187,107,153,239, + 33,115, 61,120,201, 18,176, 8, 25,206,172,108,206,132, 22, 21, 57,104,231,177, 67,134,247, 1,236, 25,190, 41,194, 11, 76, 31, +102,251,176,196, 97,192, 56, 70,197,203,182,109,253,208, 50, 17,226,168,171,139,241,120,194,229,147, 75,120,120,252,217,127,248, + 79,248,234,147,207,241,199,255,246, 95,227, 95,254,171, 63,196, 95,252,239,127,134,215, 47, 95,161,243, 1, 77,215, 33, 9,225, +254,126,143,103,231, 91,124,239,221, 15,240,230,116,192,205,219, 23, 56,221,239,176,106, 90, 85, 86,167,136,182,107, 1,118, 56, +245, 3, 36,103,156, 78, 39,164,156, 16,156, 67,112,202, 60, 31, 68,145,152,101,183, 47,142,112,113,121,137,235,235, 43,196,172, + 84,171,229,170,195, 71, 79,158,227,234,250, 28,155,205, 10,226,236, 62,178,244,167, 41, 77, 77, 69, 77,179, 44, 81, 72,177, 22, +187, 9,135, 58,189,238, 82,177,167,197, 74, 37,236, 64, 28, 97, 81,105,152,160,231,217,184, 9,173,218,144,114,196,226,162,195, +134, 50, 88, 60,136, 27,132,166, 69,227, 67,181, 83,145, 8, 28, 75,229, 83, 51,121, 93, 79, 85,219, 24, 87,107, 26,179,199,236, + 8,154,186,134,242,128, 51, 67, 72,197, 68, 36, 83,112, 6,160,190,118, 46,193, 64,150,151, 94,140, 69, 74,199,114,143,129, 24, + 37,235,185, 10, 93,245,162,214, 72,213, 89,119,100, 76,234, 42,234,195, 52,218,151, 25, 14,150,100, 26,145, 79, 47,189,212,177, +108,241, 0,147, 76,151, 62,131,235, 72,126, 98,223,232,196,162,176,237, 39, 5,181,233, 78, 72, 71,152, 57,171, 87,157,131, 37, +208,101, 65,138, 17,236,116, 82, 5,231, 16,184, 5,209, 57,252, 98, 1,102, 93, 19, 53, 97,169,106,247,174, 3, 53, 29,156,107, +145,169,172, 55,108,154, 96, 69,138,148,159,223, 82, 38, 73,236,115, 37, 9, 36,198,136,160, 73,187,128,156, 77, 32, 37, 88,173, + 22,102, 57,158, 62,139,141,103,132,192, 56,245,131,198,101,122, 7,231, 60, 72, 70,160, 97, 16,117,104, 90,143, 20, 19, 28, 57, +116,157,142,190,115, 82, 17,103, 74, 9,226, 84, 91,145,242, 9, 77, 23,112,213,158, 99,185, 55,241, 24, 0,166,140,247,222,187, + 70,219, 29,113,138,163, 78,229, 22, 45, 90,231,113,177, 88, 0, 57,105,136, 14, 1, 44, 65,237,175,161,177,117,169,250,240, 83, +210, 64,155, 20, 7,165, 40, 50, 43,143,196,137,254,190,236,149,132, 87, 4, 49,133,184,151, 19, 28, 89, 60,175, 21, 87,229,209, +161,250,156, 77, 66, 58, 50, 75,106,237,227,201,219,202,197,242,235,165, 92, 47, 50,197,251,206, 52, 37,229,211,165,111,183, 78, +181,162,165, 70,242,183,246,228,142, 38,226, 41,164,140,243,109,237, 53, 35, 54, 22, 77,190, 90,136,117,172, 47, 81, 44, 17, 84, + 38,197, 58, 19,144,116,189,160, 2,184, 2,226, 97,133,103,217, 61,168,162, 63,169,206, 42,158,221, 91, 69,155,149, 45,252, 12, +162, 14, 16,242, 83,193,235,216, 33,115,180, 66,200,153,213, 78,215,148, 81, 70,140,227,160, 69, 99,201, 92, 47,247,140, 20,113, + 43, 76, 96,152,144, 82,134,215, 17,114,198,186, 9, 90, 69,164,132,152,213, 35,200,165,186,112, 54,106,207, 70,126, 48,128,190, +243, 14,195, 64,224,214,225,201,211, 39,184,191,127,192,195,238,136,245,101,107, 62,195,140, 97,140, 88,175, 87, 54, 98, 87,187, + 71, 74, 73,153,231,182,103, 20, 59, 40, 78,199, 83, 85,233, 22, 47,172,166,233, 88,142,114,206, 8,109,139,100, 2, 52,231, 29, + 78, 15, 59,172,214, 11,128, 24, 93,215, 65,152,240,238,251, 31,224,246,238, 14, 95,126,250, 25,186,229, 6,237, 98,129,183, 55, +119, 85, 92, 69, 36, 56, 29,149,114, 23,156,138,243, 56,120,108,182, 91,172, 86, 43,124,246,171, 79,241,230,171,151,120,254,221, +239, 96,159, 6,196,172,251, 34, 31, 26,243,243, 38,140, 99,182,174, 39,219, 1, 9,251, 96,153,109, 77, 80,147,176, 96,161, 25, +150, 51,169,224,134, 60,117,109,206, 58,120,103,135,162,227, 41, 89, 75,170,165,132,192,141, 55,229,167,190,225,174,120,128,161, +235,145,113, 24,208, 52, 29,150,171, 85,245,168, 3,130,195,225,136,227, 97, 68,240,140, 39,207,158,226,238,237, 13,254,252, 63, +254,103, 28,223,220,225, 95,255,219,255, 9,127,240,167,127,132, 63,255,207,255, 21,175,191,250, 6,221,106,129, 54, 52, 24, 82, +194,105,183,199,187,215,215,120,247,226, 12, 95,190,126,131, 35, 9, 98,223,195, 81, 70,219,182,186, 70,112,122,145, 30, 71,165, + 65,197,126,172, 1, 39,141, 17,213,134,156,148,237,238,188,178,177, 9, 88,110,214,120,242,244,210,246,235,130,166,245,184, 60, + 59,199,245,211, 11,248,182, 5,123, 19, 40,185,169, 35,204, 37, 68, 66, 74, 70,247,140, 37,109,187, 59,169,124,241, 34, 24, 52, +235,150,125, 29,151,172, 99,253,198, 45, 40, 8, 85, 71, 66, 38,222,202, 73, 38,238,116,200,200, 36, 38,226,114,154, 62,229,117, +101,147,199, 17,132,108,107,164, 0,231,117,146,163, 86, 67,179, 22, 22,210,149,133, 71, 64, 38,108, 38, 89,230,182,198, 27,228, +234, 65,103,231, 38, 68,102,201, 63,128,211,161,156, 0, 9,201, 28, 4,122,144, 58,114,181,184, 43,157, 76,217,183, 51, 5, 67, +241, 90,114,148, 5,189,168, 27, 59,219,104,208, 0, 29,228, 64, 52,106,151,157,105,242,153, 63, 26,177,206,144,159, 50, 27, 27, +200, 99, 74,149, 42,226,139, 47,247,113, 32,134, 6, 93,231,218,237, 76, 14, 27,125,187, 93, 89, 79, 88,184, 20,217,174,191, 88, +166,114,241,228, 6,229, 73,180, 2, 36, 38,120,223, 32, 52,107, 69,194,218,251,108, 19,113,157,122, 21,197,115,213, 7, 36,227, +129,232,235,147,211,104,211, 13,189, 72,178,177,249, 69,178, 98,172,169,236,253, 81, 67, 65, 80,146, 22,205,123,188,112, 29,124, + 19,144,204,217,163,154, 58,103,224, 28, 70,107,122, 24,125,217,117, 14,236,216, 67,252,180, 90, 17, 17,237,178,237, 61, 93, 47, + 84, 41, 61,142,131,237, 96, 61,222,127,255, 28, 55, 55,183,240, 65,237,194,177, 87,180,106,211,248,186, 67,113,174,177,233,137, + 10,203, 36, 13, 72, 57,234,170, 35,235, 4,132, 89,201,161,146,117,228,159, 51, 35, 13, 38,248,179,215, 1, 54, 61, 97, 43,227, +138,171,130,185,104, 39,168,114, 85,178, 9, 56,213, 25,100,193,228, 36,181,182, 22, 33, 64, 20,226, 82, 34, 89, 43, 6, 78,228, +159, 3,141,108,244, 95,156, 62,185,186, 55, 38, 62, 2,234, 46,157,109,173, 73, 54, 45,214,179,215,142,130,122,161, 11,108, 69, + 85,200,158,177,196,124,103,107,112,117,151,238,192, 16, 86,164,108,140, 17, 77, 19,180,153, 29,244,188,115,206,193,121,195, 15, +155, 0,185,124,208,185, 94,248,172, 44, 9, 43, 46,196, 0,104,115,129, 51, 89,208,141,247, 30,125, 63, 89,162, 53,111,190,215, +240, 47,207, 22,141, 92,102,185,100,118, 55, 45,182, 0, 45,100, 60,114, 2,198,132, 46, 52, 70,233,210,219, 94,102,105, 82,206, + 43,220,131,102,182, 22,178,170,226,212,143,120,242,244, 2,103,103, 27,124,253,226, 27,196,164,144,252, 24,163, 6,155,228,140, +245,114,137, 56,246,246,231, 1,167, 99,143,230,108, 1,246,202,228, 46, 74,215,195,126,143,205,114,107,129,243, 82,173,111,154, +126,170, 34,130,197, 98,105, 22, 6,198, 97,191, 7,204,199, 28,154, 6, 33, 4, 92,190,243, 12, 87,151,215,248,219, 31,253, 24, +187,251, 7,156,175, 55,216, 31, 15, 56, 30,143, 88, 44, 23,245, 33, 60,158,142, 24,145, 0, 4, 64, 8,235,243, 51, 92, 63,121, +130,148, 18,190,252,228, 55, 56, 30, 79,240,193, 33, 15,132, 8,232,104,220,118,102, 57,101,165,163,177,122, 46,217, 78, 34,111, +202, 76,102, 77,105,170,228,180, 98,255,155, 71,251,149,125,168,144, 90, 70,156,121,142, 77, 9, 95,246,144, 44, 2, 23, 26,181, +181,248, 96, 36, 63, 83, 83, 22,182,113,204, 24, 98,130,243, 1,203,197,162,210,156, 98, 76, 56, 29, 15, 56,245, 61,182,155, 51, +156, 95,108,240,203,159,254, 19,126,244,151,127,141,241,216,227,223,252,187,255, 21, 63,248,195, 63,192, 95,252, 31,127,142,175, +127,241,107, 44,215,107,132,101,139,177, 79, 24,134,132,239,188,247, 62, 2,128,159,253,250, 19, 44,207, 46, 17,114, 2,245, 39, + 44, 87, 75,171,170,245,251, 56,142,131, 98, 31,147,160, 31,122, 16, 17, 58, 23, 64,142,209,167,132,209, 44, 34, 37, 29,169, 91, + 46,113,126,121,166, 16, 9, 34, 52, 33, 96,181, 94,224,242,226, 76,245, 12,193,215, 84,167, 66, 54, 19,210, 17, 96,113,255,151, +113,118,165,171,105,244,133, 30, 6,181, 50,183, 80, 21,130,142,225,133,205, 68, 8, 93,147,176, 98,117, 21,218, 96, 33, 37,118, +240,176,183,127,183,218, 33, 75,170,197, 45, 25,187, 93,178,238,236,168,248,155, 73, 31, 58,118,197,250,105,170, 7,201,186,223, +179, 42, 92, 89,214, 60,203,128,146, 90,164, 20, 42,149, 53, 9, 54,221, 41,248, 85, 59, 36,145, 39,174, 58,161, 6, 70, 20, 72, +139,204, 14,149,218,161, 87,113,141, 97, 47, 43,242,179, 58,134,234,129,147,203,115,111, 34, 33,177, 9, 71,166, 60, 27,239,219, + 8, 59,211,244,231,155,202,120,186,184,167,145,190,218,245,120,154,192, 25, 19,219,144,146, 54,154,215,191, 55, 39,139, 94, 38, +179, 60, 90, 23,196, 41, 65,188,114,193,179,117,107, 42,184, 12,112, 76,112, 78,167,120,236, 9,217,236,110, 78, 20, 72,194,194, + 64,154, 49,186,197, 86, 82,146,144,163,137,166,114,210, 51,142, 38, 80,185,102, 51,160,174, 62,138,170,155,140,183,175,202,242, +146, 93, 47,181, 16,159, 82,246,202,238, 89,195,117, 8,186,118, 42,175,121, 6,192,117, 85,130,234, 0,162, 76, 8,190, 65, 17, + 68,144, 23,156,157,175,113,127,247, 0, 31, 24,195, 16, 65, 0, 54,235,101, 45,208, 66,231,129,168, 32,146,108, 17,188, 98,249, +220,202,145, 31, 33,105,176,240, 31, 45, 38, 83, 65,173, 18,131,189, 87,216, 74, 78, 0,162, 1,128,148,169, 1,163,135, 74,241, +144,231,162,211, 45,247,129,174, 39,179,237,138,203,231,104, 18, 94, 16, 38, 67,237,172,128, 51,145, 93,177, 23,166,148, 12,219, + 44,243, 48, 61, 45, 60,130,155,241,206, 21,241, 45,217, 62,243, 51,161, 40, 27,248,166, 68,147,186, 58,246,214,175,205, 81,145, +173, 5, 20,149, 18, 16,199,168, 1, 44,150, 4, 26,188, 71, 28,181, 40, 43, 35,126, 2,204,235, 94,130,185, 72,177,234,230, 22, +243,164,119, 67,209,181, 56,175, 19, 59, 29, 39,152, 93,205,238,130,154,164,152,103, 22, 64, 67,125,139, 49,234,109, 13,143,253, +254,168,161, 55,182,186, 21,232,106,132,188, 22,249,222,138,107,253,250, 12, 63, 36,245,182, 53, 77,131, 49, 38,140, 57, 34,105, +232, 15, 4,122, 81, 57,195,221, 73,212, 16,150,202,203,240, 42,116,123,250,244, 41,152, 25, 47, 95,188,134, 11, 1, 41,234,216, + 70,204, 66,211,116, 30,177, 31,148,182,211, 27, 77,206, 70,133, 69, 96, 48, 14, 9,187,135, 29,182,171,245,116,212, 89, 20,167, + 99, 7, 68, 37,176,249,179,160,187,135,254,136, 49, 69, 44,150, 11, 16, 4,109,215, 98,177,238,240,222, 71, 31,224,225,225, 1, +159,127,242, 41,218, 38, 96,217,117,248,242,171, 47,209,134,133,141,101, 50,242, 41,227,112, 56, 32,153, 31, 52,112,198,245,229, + 57, 22,171, 5, 94,126,254, 5,190,254,252,107,192,105,232,138,228,172, 29, 52, 57,253,144, 64,128,152, 77,253,168, 74,201,148, + 50,136, 50,218, 16,208,178, 3,160, 85, 93, 76, 89,211,138,140, 30, 70, 54,170,203,164,162,182, 18, 82,146,189, 86,146, 17, 89, +187,107,167, 34, 41, 78,198,159,102,237, 12,181, 34,212,157,209,196,217, 86,109,128,103,143,197,114, 1, 14, 1, 57,103,244,125, + 15, 57, 70, 56, 71,120,250,236, 29, 44,207,151,248,217,255,253, 35,252,228, 47,255, 27,124,187,196,255,242,239,255, 29,190,243, +253,143,240,195,255,243,255,194,151,255,248, 25, 22,155, 45,156,103, 12,199, 17, 89, 24, 31, 93, 93, 97, 60, 28,241,171,111, 94, + 99,253,236, 2, 93, 43,192,205,128,197,217, 6, 16, 85,202, 18, 51,250,113,176,208, 29,194,233,116, 4, 73, 70, 23, 26,120, 31, +112, 76, 35, 70, 73,128,115, 16,219,191, 53,203, 22,219,139, 53,150,203,133,170, 89,187,128,229,178,195,249,170, 67,183,106,193, +193,178, 7, 36, 85,154, 98,230,108, 11,102,182,100,165, 12,103,163,212,210,177,149, 80,131, 98,187,172,214, 40, 11, 81,200, 60, +157, 16, 92,128, 42,102,139,209,131, 12, 85,252,152,202,129, 12,221,131, 82,114,112,112,122,169, 17,215,203, 80, 82, 6,156,190, +183, 40,130, 51, 71,179,195, 61,219, 94,176,168,182,243,148, 83,110,121,132,101, 52,174,124, 10, 55, 11, 65,209, 28,241,226, 79, + 39, 43, 14,234,218,189, 94,226, 58,226, 6, 25,201,171, 32,132,169, 64, 42,180,107, 41, 93, 20, 9, 43,197, 15,165, 27,176,206, +211, 46, 72, 49,125, 64,150,233, 96,205,214, 5,100, 34,123,221,102,238,148,146,186, 70,154, 59, 15,139,215,156, 25,240, 39, 56, + 14,230,150,167,105,199,154,171,122,223,222, 47,161, 26, 76, 36,246,170,145, 9,147,168, 36,205,229,136, 52,142,230, 3,214, 78, +145, 68,131, 4, 84,224,156, 53,151,193,246,249, 72,246,117,165,219, 35,130,211,216, 63, 43,192, 12,110, 98, 17,212, 19,239, 91, +119,207, 98, 22, 85,201,169, 22, 35, 69,204, 68, 36,134,252, 45,226, 48, 6,160, 35,122, 97,139, 91, 46, 99,101,139,113,214,194, +140,234,103,118, 10,189,177,206,152,201, 38, 12,211,175,251,224,208, 45, 3, 32,122, 22,165, 56, 34,120,143,148, 6,164, 60,194, +243,204, 19,157, 1,145, 1,217, 86, 8,217,214, 6, 4,213,165, 32,103,100,137, 10,216, 2, 79, 1, 37,163, 24,148, 69,166,180, + 30,113,112,108,219, 28,130,238,208, 83, 50,129,154, 22,243,106, 75,204,147,133,177, 20,101,132, 73, 27, 65,197,150,105, 59,249, + 92,138, 63,174,182, 72, 49, 15,183, 88, 24, 12, 25, 90, 49, 4,181,245,229,168,107, 10,204, 86, 60,100, 6,246, 74, 30,164,169, +232, 76,197, 47, 14,101,187, 80,137,112, 51,190, 3,123,135, 36,202, 14,136,214, 64, 58,187,212,199,126,152,128, 75, 41, 41, 27, +193,196,104,121,140,202,199, 48,125,144,166,178,165,234, 98, 16,251,111,222,123, 20, 58, 59,151, 34,207,238, 85, 88, 10,159,103, + 66,118, 19,221, 81, 89, 23,133,109,145,113, 60,236, 65,206,169,171, 33,234,185, 43,172,162,220, 44, 2,182,156, 22, 16,193,123, + 15,159,146, 86,109, 93, 23,144, 33, 10, 66, 72, 94,119, 97,166,182,117,166,248, 78,105, 52,251, 12, 85,235,137,247, 14, 79,175, +174,241,112,255,128,251,221, 3,218,237,185,190, 0,162, 7,125, 23,130, 42,215,247, 39, 52,112,136,233,104,241,116,100,149,143, +218,218, 78,135, 3, 36, 41, 76,164,116, 48,185, 8, 33,236,197,104,152,209, 52, 45, 6, 33,156,246, 71,184,214,163,105, 90, 36, + 34,116, 93,131,139,171, 39,184,188,186,194,175,254,251, 63,224,254, 97,135,179,245, 22,251,227, 1,253, 97,143,139,247,175,241, +112, 24,208, 6,135,135,253, 14,187,211,160,251, 79,239,176,234,214,184,186,190, 68, 63,236,241,245,151, 95,232,161, 47,202, 40, +143,217,216,212,214, 93, 71, 73, 54,246,102,229,103,155,152,207,123,167,234, 68, 18,196, 18,147,202,122,108,123, 82, 90, 87, 78, +105, 74,217, 18, 1,231, 34,212,176,221,183,148, 7, 32,154, 93, 68,149,153,228, 53,218,181,116,113, 37,151, 24, 4,244,199, 30, +200, 64, 56, 91,128, 91,173, 46,199,211, 17,121, 28,208,110,215,216, 62, 61,199,106,125,142,191,250,143,127,142, 95,254,240,111, +241,244,253, 39,248,253,255,249, 79,113,113,241, 20,127,243, 95,254, 6,191,249,245,103,104,183, 29, 32,132,227,160,235,136,103, +155, 37,222, 60,220,227,171,151,183, 56,187, 58,199,197,114, 3,218,239,225, 55, 45, 32,192,113, 28, 16, 33,136,163, 96,200,218, + 5,197,190, 7,167,136,165,111,176,244, 1,247, 57, 98, 72, 89,109, 94, 32, 68,100,132,174,193,102,179,197, 98,209,129, 3,161, +233, 90,172, 87, 75,108, 58,143,110,185, 4,135,160,151,143, 36,245,174, 98, 62,118,151,202, 6, 47,251, 55,237,226,109,223, 10, +211, 41,240, 84,236, 8, 9,200,252,168,229,178,155, 58, 39, 11, 62, 97,134,136,183,113, 36,108,111, 93,246,131, 86,253, 54, 70, +234, 35,171,158, 39,216,115, 13,137, 96,114,149,128, 86, 44, 44,165,227, 21, 33, 83,230,250, 71,121,234,117,119,205,100,227,243, +217,101, 81,224, 48, 76,179, 17,181,118,140,100, 12,109,204,119,150, 53,214,151, 31, 5,171, 80, 86,205,138, 24, 15, 66,139,117, +182,174,219,242,209, 83,198, 24,245,146,148,148, 43,248, 99, 10,110,153,141,220,203,190,148, 38,138,220, 4,187,153,101, 67,148, +168, 78,154, 0, 37, 52,223,173,203, 44,125,174,238, 80,243, 52,137,127,196,147,183,241, 73, 78, 24, 71,192,187, 17, 57, 36, 80, + 78, 64,142,112, 28,204,119,156,145, 69, 53, 14, 30, 77, 85, 49,151, 49, 38,137,165,218,217,254,223,154, 60, 32,169,254, 5,208, + 53, 11,114,170, 1, 30,117,192,158,202,248,159, 43, 44,138, 74,135, 90,215, 35,250,222,144,173,135,244,231,182, 40, 91,219,185, +184,194,225, 7,207, 86, 27, 19,126, 55, 75,174, 84, 65, 41,203,106,209,181, 37,103,101, 48, 72, 4, 92,104, 32,146, 16,130, 71, +244,108,185,244,185,108,166,237,103, 16,251,123,116,105, 72,222,217,133,109,136,107, 14,246,210,106, 96,149,140,163, 78,195,156, +254, 93,250,167, 69, 91,177,184,153,122,162,116,175,147, 32,213, 98,134,192,149,115, 36, 19,236,202,177,129, 98,148,189, 81, 38, + 44,229, 22,208,137,117, 89, 97,146,113,219, 81,177,197,100, 92, 2,102, 69, 57,235, 58, 22, 85,220,153, 69,115,203,153,189, 94, +150,164,151,158, 8, 16,205,247, 77, 70, 95, 76, 89,157, 94, 36, 19,112, 38,165,132,113,136, 72,163,128, 2, 35, 4,143,100,252, + 8,130, 66, 94, 74, 14,132,186,147,146,225,105, 85, 12,171, 57,246, 26,139,155, 75,113,104,251,239,224, 59,100,214,113, 11,113, +145, 47, 40,208,167,100,167,232,148, 73, 39,223, 99,180, 61,188, 53,190, 34, 58,149,145,172,188,130, 49,142, 54,117,200, 26,104, + 85, 86,103,133,190,199, 14,126, 76, 3, 60, 1, 45,121, 28, 83, 68,180, 81,147,238,218, 20,236,231,170, 15, 80, 15, 8, 2, 65, +116, 21,133,213,114,137,213,102,131,251,187, 61,250, 97, 64,107,149, 55, 19,161, 31,123, 52,173,238,234, 41, 9, 90, 7, 60,156, + 78,136, 67,170,241,137, 98, 33,247,135,251,131,249, 26,181,147,114, 2,133, 51,192,130,237, 99, 66,100,135,110,187,193,235,215, +111,112,255,240,128,235,213, 19,197,180, 18, 97,189,221,224,252,189,119,112,220, 31,240,205, 87, 47,176,104, 28,154,206,225,230, +229, 30,171,245, 6, 12, 70,159, 34,154, 16,112,123,119, 15, 25, 35,194,162, 69,235, 28,206,174,207,208,173, 87,248,252,147, 79, +113,251,118,143,197,114,129, 97, 60,232,216,202,242, 64, 83,130,118,232, 57, 43,249, 12,164,192, 11, 71, 8,206, 40,110,150,110, +151,146, 32,138, 34, 65,217,222,176,100, 10, 82, 85,163,207,196, 65,146,224,201,195, 81,182,177,156,178,163, 11,145,201, 57, 6, +123,243, 82, 90,212,104,129,184,164,190, 71,206, 64,183, 90,193,183,140,113,223, 99,216,159,224,156, 96,115,125,137,237,245, 21, +228, 48,226, 47,254,183,255,128,159,253,221,207,241,225,111,127,136,255,225, 79,255, 4,205,170,195,207,126,252,119,248,234,215, +159,193,115, 64, 76,154, 57,181, 12, 45,214,139, 6,111,110, 14,120,241,246, 45,206,175, 46,241,252,201, 19,184,177,215,108, 95, +100, 28,198, 94, 47,116, 17,156,178, 82,167, 82, 76,200,227,136,101, 8, 8,141,199, 46, 38, 12, 54,210, 36, 83,192, 54, 93,131, +237,249, 26, 93,167, 69,222, 98,177,194,102,179,194,178,107,208,173, 2, 66, 23, 42, 90, 82,100, 26, 1,147, 41,185,179, 9, 16, + 43,172,100, 30, 62, 34,246,186, 33, 91,151,150,170, 22,196, 82, 75, 0,176,145,171, 80, 71,208, 76,140,236, 44,168,132, 25, 26, +187, 18,166,157,189, 93,236,176,216,111,230,105, 55, 95,188,136,250, 30,185,233, 82,202,118, 89,155,202, 87,108, 84, 91, 46, 94, +154,221,146, 57, 43, 35, 32, 89,207,238,170,213, 75,106,112, 15,156, 67,182,101,130,142,246,196, 70,138,206, 46, 45,177, 3, 2, +117,189,193,179,215, 37, 33, 91, 26,157, 77,126, 68,217,212, 40, 43, 54,152,187, 67,140, 99,109,218,132,100, 90,125, 93,185,233, +133,161,104, 68,155, 88, 64,117, 32,197,194,163, 87,137,138,119,136, 38,167, 65, 25,113, 18,125,203, 2,199, 58, 13, 96,199,168, +113, 46, 50,229,175,235, 91,108, 59,105,168,128,215, 89,104, 69,204, 17, 46, 69,112,147,145,210,104, 90,128, 22, 44, 97,114, 72, + 8, 64, 22, 18, 84,240,208, 19,213, 75, 47,189,178,112, 40, 26,140,156, 99, 37,155,205, 87, 96, 37, 80,137, 10,218,216,214,109, +206, 20,199,206, 3,100, 32,170,148, 70, 11, 35, 73, 6,232,178, 72, 95,187,164,146, 76, 5, 38,204, 61, 4,179, 16,139, 8, 88, +236,215,202, 56,159,236,188,173,112, 33, 7,118,162,226, 58,209,213, 94, 51, 71,147,230,100,187,102,211,150, 88,247, 92, 87,169, +206,235, 25, 94, 18, 34,211, 48,197,156, 82, 57,155,138,214, 41,195, 37, 70, 98,155, 74, 85,164,235,148,147, 94,175,121,187, 30, +196, 70,254, 92,134, 53, 76, 21, 90, 35, 85,120, 13,100,196,250,123, 37, 51,178,165, 52, 10,105, 88, 12,201, 36,206,244,196,104, +131,234,115,250,148,202, 18,169,234, 24,146, 8,156,176,225,169,237,114,203,122,129, 43,178,219,193,177, 83,184, 76, 76, 32, 35, +210, 21,221, 65,140,154,222, 39,144, 42,238, 45, 86,109,101, 58,140,160, 68,112, 65, 59,245,190, 31, 12,251, 93, 38, 38, 9,174, +209,213, 0,103, 88,177, 67,136, 36,136, 24,225,114,107, 75, 38,157,237, 36,182,245,155,136, 62,105, 78, 87, 45,142, 8,209,103, +196,172,211,151,178, 2,139, 99,196, 48,232, 36, 70, 25,244,206, 62, 99,214,218,204,162,189, 29, 59,237,212, 23,139,133,250,156, + 71,221,169,179, 85,225,169,164, 24,241,212, 1, 84,184, 60,233, 55,120,245,228, 2,236, 24,247, 15, 59,196, 24,213,115,152, 84, + 65,156, 36, 97,213,174,116, 76, 13, 65,204,168, 86, 39,231,125,245,244,142,113,196,195,253, 61,156,111,244, 65,175, 27, 24,181, + 27,144, 9,195,154,229, 2,222, 51,246,247, 59, 36, 35,109, 65, 50, 22,203, 21,206,207,207,112,117,117,137, 95,127,250, 75,220, +188,126,139,213,122,141,225,212, 99,127,216,227,250,217, 37, 78,125, 15,199, 30,199,227, 9,187,187, 29,168,213, 75,120,177, 92, +224,233,179, 39,184,187,187,193,215,159,125,169, 25,201,150, 78, 52,230, 92,247,254, 89, 20,119,235,204, 67,152, 36,195, 5,160, +241, 30,142, 53,250, 83, 5,115, 50,137,180,136, 39, 92, 33, 96,157, 58,235, 20, 36,151, 69,166,121,116,161,249,224, 58,247, 99, +131,149,144, 69,243, 89,202, 87,201,204,101, 69, 64, 82, 74, 88,174,214, 8, 77,131,211,221, 30,253,152,177, 92,182, 56,187, 56, +195,229,179,107,220,188,188,195, 95,254,167, 63,195,203, 95,126,138,223,253,195,223,199,255,248,111,254, 24,199,113,192,175,126, +246, 9,190,250,244, 11, 72, 18,140,113,128, 11, 30,155,229, 2,173,235,240,226,245, 43,220,189,121,192,249,229, 6,191,245,252, + 41,154,152, 48,200,168, 56,213, 97,192,152,117, 28, 58,196, 97,218,113,143, 35,150,222, 97, 17, 2, 14, 49,227,148, 98,181,109, + 36,100,248, 38, 96,115,182,193,162,109,192,193, 97,185, 89,226,236,108,141,229,178, 67,215, 41, 6, 83,234,184,218,210,236,152, +106, 55, 83,226, 20,245,140,144, 9, 82, 82,186,156, 34, 54,201, 84,174, 41, 45, 76, 83,174, 14, 3,178,196,166, 98, 27, 99, 7, + 35, 86,193, 58,248,105,244, 43, 76,240,152, 89,159, 68,102,182, 38, 27,243,218, 30, 92,227, 20,233, 81,119,170,123, 65, 21, 69, + 41,127,157,107,150,121,205, 64, 43, 48, 39,251,239, 66,201, 14,204,137,229,159,231, 88, 86,102, 21,121,102, 91, 13, 23,209, 32, +151,126, 82,149,185, 83, 7,108,127, 86, 77,246, 83,155, 10, 21,211,122,214, 91,142,164, 62, 0, 0, 32, 0, 73, 68, 65, 84,103, +184,180,198,204,110,250, 89,166, 20,244,170, 18, 46, 93,125,185,153,245,123,180, 75, 0,122,128,210, 44, 52,166, 98, 99,105,222, +145, 79,142,150,114,166,150,195,185, 42, 8, 75,228,108,129, 42,193, 68,127,166, 67, 8, 84, 10,132, 4,146,132,148, 24, 76, 9, +217,141,234, 7, 22,117,129,144, 43,241,195,217,220, 54,108,171, 62,153,255,100,147, 94,129, 12, 32,146,139,218,153, 12,244,161, + 69,189, 47, 93,161,173, 21,185, 88, 15,137, 43, 51,190, 64, 79, 50, 37,164,104,122,136, 44, 51,119, 5,166,247,212,188,252, 21, + 26,196,182,115,207, 0,139,105, 39,236,117, 41, 5, 19,213, 45, 54,102,156,252, 92, 85,215,165,120,205, 57,153,248, 76, 38,159, +183,115,211,138, 37,103,229,175,155, 22,162,228,140, 18, 57,205, 18, 52, 93, 20,139, 3,216,116, 77, 51, 77, 80,174,207,158,250, +164,245,188, 83, 47,182, 32, 78,128, 21,155,210,177, 21,112,122,142,203,228, 52, 17,227, 35, 72,177, 64, 71, 43,124,169,212,233, +250,236,177,118,207, 37,150, 85, 83, 21,109, 85,130, 92,167, 68, 69, 67,162,161, 43,165,145, 42,232, 88, 86, 71, 69,202,128,215, +203,223, 57, 87, 39, 8, 57,217,107,236, 84, 67, 70,245,177,155, 64, 80,141,115, 0, 13,166,139, 49, 54,132,173, 89,185,132, 68, + 21, 98, 40, 38,160, 88, 41,176, 29,151,245,158,173,113, 69, 5,161,206,177, 22, 13,228,224, 29, 16,188, 22,210,100,141, 68,202, +209,114,213, 89,167, 80,206, 97,140,131, 78, 84,108, 18, 88, 86, 37, 25, 25,126,140, 81, 59,102, 8,198, 52,170,141,193, 94,212, +156,181,210,119,204,245,129,159,103,170, 3,140,245,102,139, 44, 25, 15,187, 93,221,167,232, 14,138,208,184, 6,109,211, 34,246, + 90, 77,159, 70, 37, 35,109, 54, 27,132,208,212,209,250,233,225,136,135,135,123,156, 95, 62,209,195, 12, 19,212,160,140,190, 37, +103,156,109, 54, 56, 62, 28,112,216, 29,180, 42, 49,229,225,246,108,141,235,119,158, 98, 28, 70,124,241,155, 47, 52,176, 33, 52, +120,251,246, 6,221,162, 67,235, 2,246,251, 30,228, 61,250,211, 9, 12,197,103, 66, 50, 54,231, 91, 52,139, 14,159,254,234, 19, +244,199, 19, 90,207,232, 29, 0,110,192, 93, 7,138, 59,173,130,163,230, 5,151, 11, 8, 32,116,126,129,224,212,162,148, 45,181, + 42,212, 1, 42,213, 81,229,132,220, 46, 54, 34,158,204, 64, 70, 51,202, 66,112,117, 84, 41,213, 42, 65, 76,134,170,164, 58,102, +209, 56,190,136, 69,171,123,233,253,221, 45, 56, 9,186,179, 51,172,207,207,113,126,126,134, 87,191,121,129,191,250, 47,127,133, +135,183,175,241,131, 63,249, 35,124,239, 15,126, 15,247,247, 59,124,249,217, 87,120,241,229, 75, 85,169, 15, 39, 52,139, 14,103, +231, 91,200,144,240,217, 23, 95,227,225,180,199,179,167, 87,248,157, 15,223, 71, 43, 35,118,135, 61, 98,142,216, 13, 73,217, 5, + 96,140,105,192, 24,245,131,158,199, 1, 11, 8,150,161,193, 49, 39,156, 82, 66, 20,173,250, 51, 52, 70,118,125,182, 68,183, 80, + 75,205,250,236, 12,103, 23, 91,108, 54, 75,116, 93, 3, 23,252,164,102,101, 87, 71,175,213,219,140,178,143,179,149, 67,137, 53, + 46,213,234,196, 35,157, 68, 90,245, 43,139,237, 75,102,118, 45,121,244,143, 72,217, 35, 23,225, 26, 61,242,188,146, 35, 27,197, + 27,207, 31, 19, 48,136,236,115,174, 46, 14, 87,189,181, 82, 46,158, 18,202,194,100,232, 96,170,154, 20,229, 61,179, 45, 29, 11, +191,186,136,200,164,186, 71, 42,203,191, 76, 45,236,123,203, 37, 29,205,138, 67,157, 34,100,211,141,147,121, 87, 5,148,179,117, + 20,217,148,219,229,179,154, 38,245,109, 1, 74,177,131, 56, 13,112, 42, 83, 61,229,216, 98, 86,176,150,139,128, 30,231,168,179, + 42,147,132, 4, 16, 55,179,226,209, 76, 28,255,136, 86, 99,228, 56, 54, 48, 77, 17,206,101,123,175, 11, 98, 89,249,235, 76, 51, +124,174,237,135,211, 56,192,147,211, 78, 56, 18, 50, 41, 3, 94,179,250, 2,178, 35,179,253,160, 58, 79,216,214, 87,230,226,171, + 17,156, 50, 23,168, 86, 31, 63,166, 2,163,172, 42,114, 70, 50,209,227,148, 54, 87,132,219,246,238,176, 3,185, 12, 73, 58,122, +134, 21, 2,169, 70,205, 78, 94,233, 41, 92,104,150,128, 7,211,102,216,197, 86, 52, 11,170,169, 96,136, 43,142, 10,178, 53,140, +152,178, 31,255,204, 73, 80,126,158,138,250,197,164,137,208,154,129, 45, 10,164,136, 3,173, 16,204, 82, 39, 18, 84,215,254, 78, +199,220, 85,110, 58,211,169,152,112,181, 60, 87, 92, 62,235, 82,127,136,106, 97, 43,255,206,117,164,163, 65, 52, 72, 2,158,175, + 92,236,153,240, 65, 49,170, 73, 18, 82, 42,185, 33,108,133,130,213,154, 52, 17, 42, 75,209, 86, 72,137,117,205,145,129, 52, 10, +208, 77,175,145,106, 13,236,247,214,204,243, 41,167, 93,162,177, 34, 60, 27, 63, 98, 10,216, 34, 34,196,146, 44, 39,101, 33,152, + 81,118, 16,204,140,224, 28,178,176,162, 43, 72, 35,133,231,175,159, 6,177,136, 33,112,181, 51,247,172,244,203, 84,249,248, 10, + 99,115, 94, 39,191,136,166,123,104,169, 36, 4,215,187, 65,114,134, 31,199, 81,169, 97, 6, 61,200, 53,210, 77,106,133, 24, 44, +228,132, 76, 64,163,211, 43, 65,227, 9,235,229, 18,135,225,128,195,126, 15,242, 77,133,169,100,209, 88,210,198, 57,236, 78, 71, +237,218, 98, 6,250,136,102, 17,208,118, 45,124,227,117,244,190,219, 79,208,255, 60,137,111,170, 45, 70, 20,168,191,232,150,184, +187,123, 64, 28, 5,237,218,188,170, 44,120,250,238, 51, 92, 61,185,198, 23, 95,124,133,187,155, 59,108, 67,139,177,239,241,246, +238, 14,207, 55,231, 56, 60, 28,145,179,171, 74, 80,110, 24,167,220,227, 34, 44,112,245,236, 18,187,187, 61, 94,127,254, 18, 45, +123, 56,214, 52, 53, 23, 24,228,189, 89, 86, 21,152, 67, 85,242, 41,104,156,195, 88,169, 72,230,223,116,172, 22,136,113,138, 27, +164,121,149, 94, 71,128,250,193,116, 94, 67, 41,200, 16,129, 40, 32, 25, 18,120,167,191,198,158,173, 27,211, 93, 88, 22, 32, 31, + 19, 92,240,144, 4,236, 31,246,240,158,176,186,186,192,242,252, 18,235,110,131,127,248,241,207,241,163,255,231,135,144,156,240, +187,191,255,251,120,242,189, 15,112,127,119,143, 55, 95,191,194,203, 47,223, 96,216,159,192, 46, 98,177, 94, 98,185, 90, 99,247, +112,196,203,111,222,128,136,240,241,187,239,224,163,247,222, 65, 32, 96,127,123,192, 24, 19, 30,134, 1, 67,102,253,160,201,136, + 49, 41,175, 45, 36,129,203,192,170,241, 56,165,140, 67,138,213,186,150, 33,224,224,176, 61, 95, 97,189, 94,130,136,176,218,110, +112,117,125,133,179,179, 37,218,174,133, 11,174,250,200, 11, 89,169,122,159,139, 0,206,172,148,147,215,213,136,116,117, 71, 94, +253,110,143, 56,248,101,214,163,214, 50,247,248, 82,169, 72, 73,174, 99,195,146, 62,102, 31, 66,219,143,107,202,142, 43,227,204, +146,142, 38,147, 77, 78, 15, 70, 5,153,168,103, 87,133,142,101,252,204,108,212,196,146, 1, 96,112, 11, 38,167,130, 48,210, 92, +248,154, 58,134,140,104, 49,148,229, 16, 41, 86, 21, 61,188, 83, 5, 64,213,112, 24,227,194,144, 37,240,229, 10,137,153, 21, 27, +132, 26, 19, 89, 46,146, 34,121,247,129,181,115,103,227, 8,152,103,158, 69,113,178,100,162, 78, 37,137, 80, 77,113,148,146,254, + 86,109, 54, 83,129, 84, 1, 53,179,226,137,137, 31,117, 62,165,216, 40,152, 99, 56,170, 83,153,100,175,111,205,188, 46, 19, 47, + 46,123,113,157,136,184, 52, 24, 83,131, 16, 49,128, 93, 48,229,115, 6,167,172,249,242,165,139,177,236,237,108,186, 9, 97,182, +125,120, 73,198,162,186,238, 23,115, 29,168,184,144,108,127,174, 5,163,131,106, 47,146,249,232,105,166,232,214, 66,199,174, 21, + 11, 28,202, 50,206, 46,253,233,242,172, 97, 77,179,247,164,184, 5,166,104, 91,169,138,111, 46, 90,141, 28,205,130, 39,102,206, + 83,213,126,233,158, 65, 50, 41, 19,203, 89,158,103,188, 1,154,130, 77, 72,166,201, 4, 42,116,104,114,233, 20,174,195,220,120, + 88, 0, 70, 69, 0,234,170,126, 34, 87, 81, 88, 9,112, 41,171,178, 18, 98, 34,217,236,151, 86, 88,242,172,232,128, 69,173, 22, +213,188,192, 38, 93,222,129, 26,130,156,160, 93,113,209,213, 8, 12, 96, 36, 90,152, 56, 15,120, 87, 9,117,243,162,159,202,164, +201,149, 21,193,100,211,131, 5,176, 80,176,137,134, 5, 35,193,123,228,129,144,199, 12,242, 14,222, 51, 88,212,202,231,157, 62, + 87, 99,140,200, 85,252, 51, 1,162, 10, 41,149,185,209,169,157,133,127, 37,158,196,162,213,107,111, 19, 30,176,158, 87, 62,171, +110,195,121, 61,167,142,199, 35, 78,167, 1, 93,219,226,225, 97, 6,116, 44,148, 73, 17,179, 81,235,101,239, 97,170, 66,136,238, + 6,196, 58,132,156, 19,146, 17,209, 20, 20,161, 63,112,138, 99, 61, 60,155,197, 18, 97,189,196,238,230, 30,135,195, 1,232, 86, + 72, 2,180,172,170,241,198,121,131,211, 36, 52, 96,156,134,193, 46,111, 61,240,195, 98,137,254, 97,135,251,219, 91,196, 58, 34, +153, 10,138, 84, 44, 59,106, 8, 68,138, 3,250,227, 9,146, 21,225,199, 12,172,183, 27,188,247,254,251,136,125,196,203,207, 62, + 71,104, 90,120,241,120,117,251, 90,195, 63,156,195,235, 87, 39,116, 87,107,244,227,104,234,195,132, 99, 31,113,121,181,197, 98, +177,196, 39,159,253, 74, 17,138,190, 3, 56,131,155, 22, 77,219, 66,156, 51, 30, 73,180,135,220,129,235,174,156,235,152, 44, 89, + 71, 30, 74,112,134,221, 13, 33,132,194, 53,179,169,104,174,184, 65,253,192,185, 41,107,151,160,251, 24, 78,234,159, 54,159,173, +142,109,163,118,118, 57, 35,245, 17, 36, 14,144,136,129, 18,218,229, 2,235,243, 51,108,214, 27, 56,110,240,179,191,249, 49,254, +254,175,254, 26,203,197, 10,191,251, 39,127,140,179,235,115,220,191,185,193,237,203,123,220,190,185,193,241,225, 14,193, 51,214, +155, 37, 34, 49,110,111,247,184,185,185,195, 50,180,120,239,250, 18, 31,189,255, 12, 52, 70,236,238,238,112,236, 7,220,143, 61, +142, 41,106,108, 98,178,238, 44,101, 4, 38, 52, 41, 98, 77, 14, 71, 33,236,210,128,129, 0, 98,143, 40, 25, 46,120,172,182, 43, +108, 87, 91,176, 35, 52,171, 22,151,215,151,216,110, 55, 88,174,151,150,120,105,187,227, 74,196,195, 52,218,155,141,186,197, 14, + 3,182,200, 95,153,141,223, 43,124,225, 17,100,134,230, 13,252, 36, 26,155,141,130,241, 40,252, 38, 87,106,155,254,154,183,135, + 94, 69, 77,122,217, 43,188, 36,231,217,136,216, 43,160, 73,155,109,243,126,179,155,105,192,202, 69,196, 19,167,217, 58,211,148, + 70, 8, 49,188,225, 47,205,124, 61, 41,246,105,194,106,126,155,246,198,162,135,152,230,150, 3,158,130,177,221,169,118, 48, 98, +186, 2,189,164,242,163, 20, 45, 56,182, 93, 60, 85, 92, 51, 28,215, 11,157,153, 17,163, 84, 65, 91, 81,215,235,138,192,176,170, + 41, 67, 17,223,249, 81,236,102, 33,198,233,247,102, 2, 52,214, 14,104,130,207,208,180, 79, 38,182,117,151,197,233, 90,117, 85, + 46,114,169,191, 39,104,177,203, 14,222, 59,139,156, 44, 49,173,154,232,231,146,218, 8,136, 11, 12, 68, 32, 6,167,162,128,170, + 5, 34, 17, 12, 57,129, 18, 87, 94, 56,219, 94,221,251,160,248, 90,131, 9,169,168, 77,170,224,203,113, 48, 22,190, 84,109,133, + 94,126, 73, 11,167, 52,106,240, 13,166,156,121,125,221,203,164,179, 48, 4,237,189, 21, 87,209,187,121,190, 56,249, 22,176,199, +217,168, 94,109,164,222, 20,251,182,255,166, 80,120,186,230, 35, 47, 1, 4, 54,145, 17, 69,242,138,228, 73,237, 95, 69,168, 5, +128, 50, 99,252,215,212,204, 50, 46,215, 86, 36, 74,130, 80,170, 64, 37, 27,104, 87, 48, 84, 89, 15, 86,203,158, 33, 99,133,116, +133,155,162,212, 36, 54, 49,255,187, 72,137,240, 85,189, 80,130, 89, 57,205,167,173,163,247, 0,207,192, 33, 90, 65,155,149, 32, + 89,198,246,129,108,149, 21,184, 58, 30, 18, 13,230,177,159,204,134, 57, 79,235, 19,216,196, 45,199,168,127,169, 69,173,234, 10, +199,108,175,198,138, 40,250, 39,207, 92,223, 43, 50,166, 75,202, 81,145,195, 73,215,209, 26,200,100,209,195, 94, 39,220, 16, 82, +221,133,137, 91,156,215,181,164,190,246,108, 10,250,100, 10,119, 19, 54,138, 10,111, 27,102, 28,119,123, 12,227,128,101,187,177, +103, 70,215, 72, 49, 70, 45, 68,139, 96, 55,101, 68, 16,124,203, 30, 45,123,228,113,180,132, 26,181,244,212,132,180,156, 13,121, +232,181, 98, 74, 26, 74,192,142,176, 92,180, 8, 66,216,237,118, 56,141, 3,150,139,141, 85,100,154, 41, 30,218,160,222, 63,243, +157,247,125, 95,197, 50,190, 13,104,155,128,215,183,247,120,216, 29,224,120, 30,239, 58,193, 44,138, 34, 20,208,162, 99, 28, 7, +192,105,252, 30, 81,192, 59,239,189,139,245,197, 26,223,124,245, 53, 14,251, 19,218,224,209, 63, 28,176,123,184,199,170,233,176, +123, 56, 96,116, 17,231,237, 10,247,135,111, 64, 89,144,251,140,166,243,120,242,236, 9, 30,238,238,113,220, 31,208,117,173,222, +170,204,160,166,129,111, 61,162,168,138, 61, 21, 52,167,100, 48, 5,123, 19, 52, 14, 50,137,178,134,157,119,118, 57, 69,181,145, + 56,135, 16, 2, 36,142, 22,194, 97, 7, 94, 1,214, 84,181,179, 90,129, 88,156, 78, 55, 10, 75,216, 41, 62, 80,204,111, 74, 36, + 24, 71, 85, 89,106, 93, 48,224,252,252, 12,155,179, 45,186,213, 18, 49, 71,252,236,135,127,141,127,252,209,223,225,250,217, 51, +124,255,143,254, 16,221, 34,224,230,245, 13,110,110,246,216,221,190,193,112,127,135,166,113, 88, 44, 91,236, 79, 42,122, 27,246, + 7, 60, 59, 95,227,233,249, 5,174, 47, 46, 0, 12,216,221,239,113,127, 56, 96, 31, 51,142,227,168,159, 7,167, 29, 73,204,234, +199, 92,101,193,202, 49, 14, 16,220,143, 73, 5, 64,236,116,123,237, 24,139,213, 2,103,219, 13,216, 49,154,229, 2, 23,215,103, +184,184,222, 98,179, 89,193, 7,175,161, 62,179,138, 25, 44, 83,200, 11, 38,229,121, 46, 77, 7,127,139,106, 54, 59, 0,101, 54, +214,214, 61,110, 25,194,203,163, 49,228, 28,154,242, 72, 89, 93, 68, 38,166,134, 21, 42,157,134,117,223,149, 10,199,240, 30,143, +208,170,101,252,154,146,204,168,104,222, 4,102, 42,156,203, 68,160, 18, 74, 66,164,238, 10,187, 36,132, 38, 63,113, 73,186, 42, +211,154,106,139,179, 78, 54,143,170, 17, 16,102,163,103, 57,187, 12,148,113, 15,113, 64,214, 3, 58,195, 79,241,197, 5,254, 2, +227, 99, 27,116, 70, 89, 55, 82,137,141,229,239,203,121,196,180, 53,178,174,220,148,201,154, 9,173,182, 38, 98,121, 20,163,172, +181,247,108,128, 90,224, 49,179,203, 73,102, 17,193, 37,197,170, 72,211, 40,149, 41,162, 77,188,108,146,193,108, 89, 11,229, 36, + 47,235, 15,155, 62,176, 68, 43,166, 29,132,163,137,217, 52,246,180, 20, 17, 46, 82, 73,146,213,247, 41,105,103, 89,201,141,179, + 8,227,218,213,229, 66,188,228, 10,174,201, 53, 4, 4, 96,105,144,144,144,211,160,159, 52,235, 34,203,154, 98, 82, 59,200,163, +139,154,121,194,109,215,169,137, 93, 36,197, 62,248,248, 51, 43,117,186,151,109,226,129, 71, 29,183,174,244,200, 2,117, 74, 98, +217,124,149, 48, 69,165,202,255,175, 75, 1, 96, 60,170,121,217, 46,224,252,173,175,169,203,134,164,151,146,169,180,245,108, 51, +171,102, 33, 51, 22,215,129,117,235,108,186, 83,153, 9, 65,237,211,103, 56, 89,170, 23,124,125, 52,189, 58,172, 2, 57, 12, 67, + 63,235,138, 11,153, 80, 11, 16, 85,143, 91,195, 36,140, 28,205,194,102,249, 26, 98, 65, 40, 37,158,181, 0,154,212,234,104, 9, +112, 65, 95,131, 18, 5,235,137,244,226, 44,148, 57,231,173,193,117, 32, 97,164,216, 87, 11,167,152, 68, 53,139, 1,205, 82,174, +217, 15,204, 89,157, 6, 57, 90,129,227, 76, 13,159,173,131,119,102,225,101,125,145,144,225, 3, 35,140, 94, 35, 87, 83,194,233, +212,163,235,214,186, 30,176, 7,160, 48, 97,200,120, 14,176,169,177,111, 66,128, 11, 30,135, 97, 68,140, 73,213,138, 36,149,154, +148,102, 17,171,206,130, 76,146,100,120,239,208, 44, 90,140,121,196,113,127,128,119,172,163, 13,171, 78, 29, 49, 26, 31,176, 63, + 30, 53, 41, 71,128,227,225,128, 5, 51,188,211, 81, 70,235, 28, 30,238, 30,176,223, 29,141,212,131,105,244,110,112, 4,136,142, + 92,136,245, 27, 31,143,163, 17,154, 24,203, 85,131,247, 62,120, 31,227, 16,241,246,155, 87,104,154, 6, 71,137,184,187,187,135, + 3, 35,199,132, 97,119,192,234,242, 82,199,158,113, 4, 11,112,236,123,188,243,225, 7, 0, 1,111, 95,189, 85, 56,129,131,142, +208,185, 1,107,118, 43, 78,125,143,126,136, 85,248,166,170, 80,253,247, 97, 76,232, 7, 65,183,230,154,189,235, 68, 52, 61,136, +161,162, 8, 27, 31,167,148,144,104,250, 51,164, 90, 36,162,217, 58, 88, 69, 94, 37,192,195, 83, 1,158,233,123, 44,132, 52,100, +244,253, 8,246, 14,139, 38, 96,181, 89,163, 91,175,208,116, 14,195, 97,192, 79,126,248,255,226,197,167,159,227,249,199, 31,224, +119,254,229,247,193,174,197,203,175, 95,227,238,237, 45, 78,135, 35,134,135, 29,216,121,116, 77,139, 55,187, 61,210,224,177,242, + 1,239, 92, 93,227,217,102,141,118,217, 32,187,136,227,253, 1,187,227, 1,187, 97,196, 67, 44,232, 83,237,138,198,164,169,114, +107, 98,172, 25, 24, 50,176, 31, 6, 36, 18,136,115,245,192,111,151, 29,206,206, 54,154,160,182, 92, 98,115,190,197,229,213, 5, +206, 47, 46,192, 77,128,140, 99,141,214,165,226, 69,181, 54, 69,136,204, 51,110, 34,160, 50,246, 44,151, 12, 21,130, 28,207,148, +236, 83,176, 9,196,122, 21,158, 96, 23,147,173,138,106,138,158, 38,165,105, 23,227,204,239, 41,179, 0, 30, 41, 24, 70, 0,177, +132, 23, 97,178,170, 60, 26,129,137,141,185,107, 81, 50, 21, 29, 25, 2,166,201, 71, 42,223,218, 7, 82,161,191, 73, 13, 6,155, + 96, 29, 84,240,176, 58, 57, 83,151, 2,235, 1, 1, 45, 14, 10,140, 72, 4,179,141, 59, 61,122,109,234, 58,195,124,213,243,144, +152,156,100,186,216,139,189,204, 94, 27,157, 10,152,136, 41,219,120,213,138, 22,199, 2,112,130,136,171, 62,106, 50,148,180, 88, +160, 77,165,103,208,236,253, 43,151,146,129,122, 38,149, 67,249,253, 92,159,155,137, 60,103, 76,255, 12, 80, 96, 35,155,161, 90, +214, 80,124,217,121, 84, 93, 91,101,142,179,173, 23, 60, 82, 28,244,235,184,176,195,167,113, 53, 91,232,144, 32, 35,142,217, 10, + 27,189,232,216, 32, 51, 41, 25, 51,128,185,178,190,245, 32,143, 53,105,140,156, 25,179,237,236,172,182, 46,153, 96, 68, 85, 84, + 89,252,239,181, 22,157,112,125,115,150,127,233, 46,235,106, 3, 4,145,104, 13,151,212, 75,176, 8,245, 10,184,165, 20, 1,211, +159, 39, 83,164, 35, 27,248,198,190,207,170, 85, 33, 45,247, 64, 74,198,147,108,162,181, 84, 38,101,186,119, 46,118,203,233, 51, +103, 30,124,179,243,149,119,149,121,178,171, 17,102, 19,143,162, 1,180, 60, 17,178,176,165,210,225, 22,171, 92, 1,206,120,207, +232,143, 61,134,168,121, 1,133, 29,207,153, 17, 9, 22, 77,171,133, 46,153,242, 60, 21, 65,163, 87,231, 73,182,137,115, 48,113, +118,206, 25, 57,233, 93,151,181, 35, 65, 91, 65, 50, 9, 77,219, 98,164,132, 56,166,234,129, 47,248,217, 82,124,165, 52,183, 95, +210,252,147,172, 34, 54,199,245, 51,236, 24, 85,167, 64,150, 84,201, 16, 93, 29,148,194,199,156, 81,236, 8,142, 2,124,136,122, + 54,165,140,254,208, 35,111, 71, 52, 22, 62, 22,156, 67, 38, 65,202,202,126, 39,115,157,193,123,248, 54, 52,112, 62,160, 63, 28, + 48,166, 8,112,152,198,125, 37,146, 81, 84,112,195,134,188,203,146,208,180, 11,116,203,165, 90,217, 78, 3, 4,218,165,213,113, +150,189, 64, 57,101,120,231,113,218, 31, 48,244, 3, 22,157,230, 95,251,208,192, 49,240,112,123, 91, 13,249,211,126,169, 18,168, + 43, 83,183, 13, 65,189,180, 57, 33,180,122, 57, 62,125,254, 46,206, 47, 47,240,250,197, 75, 28, 79, 39,116,237, 2, 47, 95,124, +137,227,195, 30,174,105,176,219, 29,176, 8, 1,103,103, 75,220,223, 29,213,194,145, 19,154,229, 2,151, 87, 23,184,125,243, 6, + 78,128, 16,116, 10, 17,135, 1,206,121, 27, 73, 10,134,195,136, 56,142, 86,193,114, 5,234, 40, 43, 62, 33, 24,182, 53,155,151, + 84, 82, 6,137,114,218, 51,165, 58, 70,142, 57, 65,216,169, 26,114, 38,116, 74,153,107,103, 57, 39,106,217,180,182,144, 18,148, +219,126, 26,129,156,177, 58,223, 98,181, 93, 97,209,117,104, 67,139, 55, 47,111,241, 15, 63,249, 41,110, 95,223,225,187,223,255, + 29,124,244,189,143,112, 24, 6, 60,220,188,192,254,110,135,120, 58, 34,237, 85,179, 16,217,225,245,161, 71,235, 58, 92,110, 22, +216,120,143,167,155, 53, 92,208, 11,105,220,159,176,219, 29,112,127, 60, 97, 31, 35, 6,139,162,117,222, 91, 87,145,113,206, 1, + 75, 8,134, 28,113, 31, 19,198,146, 36,199,122, 72,119,139, 22,155,179, 53,218,182,197, 98,187,194,230,108,139,237,118,131,243, +203, 11, 52,134,248, 85, 97, 89,177, 48, 21, 1, 24, 89,122, 81,217,169,231,106, 59,209,195,103,234,152, 80, 3, 17, 38,123, 26, + 74, 33,106, 94,254, 2,161, 33,139, 49, 68,185,212,205,134,166, 65, 10,206,200, 78, 60, 89,134,216,212,170,164, 42,228,210,137, + 43,121,202,246,172,197, 71, 92,186, 70, 46, 86,160, 89,150, 52, 19, 28,154, 89,110, 60,106, 55, 94,134,159,201, 8, 79, 98, 29, +141, 24,151, 26,246, 61,168,170, 53, 77,187, 75,235,136,116, 77,192, 54, 9,152,196,152,196,217,158,207, 9,201, 73,179,132,169, +226,247,174, 86, 56, 27,113,167,210, 85, 39, 19,113,150, 28,104, 76, 19, 4, 98,170, 81,155, 21,238,227,100,138, 22, 22,133,169, + 76,168,207, 89,212, 43, 77, 74,113, 18,174,252,234, 89,253, 82, 44,250,134, 3,157, 44,112,108,213,159,173,161,181,192,113, 38, +194,172,151, 75, 70,202, 17, 9,118,176, 59, 45, 95,136, 66,101, 7,192, 4,126, 49,151,244, 60,163,137, 25,157, 78,171,129, 92, +247,187,204,133, 59, 96, 93,187, 36,253, 92,137,174,159,100,102, 35,171, 41,102,196, 22, 87, 45,186,190, 48,219,215, 36,189, 20, +235, 78,231, 98,193, 57,160, 71, 30, 49, 6, 38,199, 0, 77, 19,168, 34,218, 52, 73, 39, 83,225, 56,228, 89, 4,174, 60,250, 11, +106, 64, 14, 85,180,159,253,217, 22, 71, 90,216, 78,182, 17,151, 42, 14, 52, 70, 72,156,126,222,199,168, 95,123, 78, 92, 9, 14, +178, 9, 65,237,232,105, 34,206, 49,234,164, 18, 50,137,255, 42,234,181,124,127,245,181,210, 92,164,224,180,161,236,179,146,230, + 98, 54, 30,125, 89,203, 25, 92,202, 57,167,208, 54,150, 42, 46, 20,201,186, 66,181,159, 95,201,121,152,180, 97,128, 21,181, 9, + 46, 56, 91,151,194,244, 78,132,225,168,164,206, 18, 28,147,108, 58, 75,100, 9,126,146,109,238, 85, 86,101, 9,206,117,213,159, +207,198,170,119,166,169,132,185, 8, 96,228,202,224, 85, 15, 80,162,198,137, 13,180,214,170, 48,218,143, 94,181, 83,136, 24,210, +160,185, 7,182, 50, 11, 94,215,124, 49,235,207,226,172, 80,105,152,181, 83,143,105,196,105, 28, 17, 37,163, 41,236,104, 76,187, +151,152, 45, 74, 15, 58,130,200,105, 64,219, 53,104,156,195,155,253, 30, 17, 90,193,162, 74,235,245, 98, 19, 17,140,167, 30,203, +243, 45,246, 55, 55, 64,210, 29, 79, 19, 2,154, 38, 96,191,219,227,230,237,107, 69, 59, 22,208, 70,158,196, 82, 92,156, 46, 73, +171,190, 56, 40, 80,193, 59,143,197,114,137,119, 63,250, 16,177, 31,113,247,250, 45, 22,139, 14,135, 67,143, 23,223,188,196,134, + 8,227, 56,226,230,126,135,237, 59,207,224,201,226, 72,163,210,133,174,223,125,138, 56,246,216,191,186,199,197,245, 37,214,231, + 75,132,125,208,137,128,247,182,243, 20, 12, 67, 95, 43,215,218,121,101, 96, 28,149,151,204,222, 16,128,105, 4,210,168, 30, 82, + 98,195, 36,114,149,141,150,139,203, 21,161, 21, 21,129, 67, 81, 65, 90,130,151,192,180, 11, 58,254, 98,114, 24,135, 17,253,169, + 7,224,112,118,190,193,122,179,212,113, 84,240,120,241,245, 43,252,252,239,127,142,124, 58,226,251, 63,248, 62,158,126,240, 62, +110,111,239,177,219,157,208,159,142, 72,125,143,120, 60,169,207, 17, 17,201, 5,108, 87,107,108,125,139,165,103,108,218, 86, 47, + 67, 38,196,152,176,127,216,227,126,127,196,110,136,232,101, 84,150,128, 87, 28,109,234, 7,108,157,195, 57, 49,250,152,176, 79, +130, 30, 2,177, 66, 15, 4, 52, 93,192,122,187,193,106,181,196,106,179,198,246, 98,131,245,102,133,139,203, 75,116,139,165,226, + 32,147,142, 48, 41,207,196, 42, 66, 53, 7,128,106, 92,167,177,166,133, 38,165,173,217, 93,166,238,207, 14,210,156,235,133, 90, +236, 62,168, 59,102,175, 59,101,153,101, 19, 81, 41, 14,184,122,137,115, 25,250, 90, 60,170,100,212,100,170,210,245,122, 31,234, + 58, 72,236,114, 43,157, 37, 74,212,174,161, 36,139,251,139, 81,248,239, 51,107, 19, 77, 76,244, 82,210,136, 36, 85, 23,176, 22, + 13, 57, 97,234, 14,202,142,206,172,165,165,195,202, 86, 8,176, 83,129, 13,102,152,216,122,249,215, 88, 72,219,169,210,132,216, +173,222,226, 2,120,171,188,118, 54,191,180,117,102,245,194,225, 42,158, 42,238, 19,201,102, 19, 42,119, 13,219, 97,139,210,221, + 41, 9, 47,101,245, 0,195,138, 34,194,183,244, 16, 52,141,238,139,149,167, 80,198,156, 21, 21,194,147,246,162,124,120,116,212, +156,193,190,211,169, 65, 25, 73, 67, 71,183,165,216,171,211, 49, 34, 16, 41,155,223, 89,113, 52,142,163,138,244, 48,137, 47,137, +169,126,134, 74,151, 87,132, 85,197,178,148, 69, 25, 13, 58, 57,164, 42,134,205, 54, 26,198, 44,121,143,202,122, 71,242,196, 64, +175,106,120, 59, 39,242,183,147,246,102,197, 81,249, 94,172, 8, 36,153,194,113,184,232, 63,100, 22,180, 83, 87,151, 82,147,245, +170,242,190, 28, 65, 37,225,172,194,113, 74,117, 33,149,214, 88, 10,111, 33,117,232, 20, 15,187, 78,119,242, 44,184, 69, 42,145, + 15, 89,191,207, 34,242, 36, 46,249,233,168, 54, 51, 45,124, 85,232,134,186, 86,147,199,151,186, 21, 86, 34, 58, 18,159,172,125, +152, 37, 4, 42,190, 89,239,142, 60,179, 31,143,182,227,119,136, 98,147,150,156,109,117, 42,255,140,136,232,131, 3,121, 45,220, +149, 4, 71,218,208,141,154, 81, 78, 78,159, 9,211,234, 99,180,207, 60, 21, 16,216, 28,192, 67,229, 31,189,120, 61,123,221,147, +155, 70,146,237,217,212,115, 30, 53, 30,186,132,115, 81, 8,198,112,112,104, 44, 58,187, 31, 6,139,171, 45,107,105,109, 30,188, +105,120, 60, 57,155,123, 0,222,219,146,112, 28, 7,228,152,192,237,132,136, 76,146,235,222,174,140, 67,200,148,140,231,171, 53, +250,253, 9,135,195, 81,143, 70, 27, 97,146, 61, 28,142, 29,134,113,212,240,150,174,197,105, 24,208,199, 1,107,241,232, 22, 29, +188, 99,188,190,125,131,120, 26, 42,181,199,209,196,142, 86, 31,175,175, 31, 14,199, 14,199, 81, 69,114, 78, 4, 31,124,231, 35, + 92, 94, 61,193,219,215,111,144,199,136,174,243,120,115,243, 6,167,161,199,101,187,194,253,195, 1, 99, 26, 17, 28,227,180,239, +213,235,151, 18,206,215, 91,156,159, 47,240,229,215, 95, 66,118, 25, 87, 79, 46,225, 60, 41,130,207, 84,251, 41,101, 28,135, 1, + 68,101, 87,147,145, 51,219, 67,156,209,180, 14,206, 25,200,193, 84,172,117, 60,235,120, 74, 99,179, 41, 71, 17, 0, 85,217,147, + 37,143, 21,138, 89,204, 78,173,112,229,112,182,195,181,239, 7,244,199, 17,204,140,171, 43,219, 71, 27,185,238, 55,191,250, 13, + 62,251,197, 87, 8,157,195,187,255,226, 7, 56, 63, 59,195,219,215,111,113, 58,244, 24,135, 17, 24, 71,196,211, 17,183,135, 3, + 70, 52,184,188,188,196,166, 91,160, 5,161, 21, 96,211,118, 32, 50, 16,130, 36,236,143, 59,220,236,118,184, 31, 34,142, 49,194, +123,134,247, 65,147,251,226,136, 5, 57,156, 59, 70, 63,246,216,165,132, 99,249,185,216, 65,136, 16, 26,135,245,122,133,237,102, +137,245,249, 25, 86,231, 91,108, 55, 11,156,157,159,163, 91,173,107,228, 92, 33, 51,101,171,121,156,104,249,166,217,218, 54, 13, + 33,122,228, 28, 96,158,118,195, 92, 99, 60,231, 49,165,198, 78, 22,216,159,107,183, 62,151,174,191, 4,157, 20, 66,149, 55,241, + 35,163, 12, 6,153,184,238,223,234,232,155,184,218, 83,136, 93, 77,189, 19,243, 60,147,117,235, 69,148, 86,138, 55, 24,133, 80, + 72,213, 41,108,129, 20,165,162,159, 18,231,116,124,230,106, 48,131,169,203,205, 95,207,165, 99,158,197,157,214, 11,187,238,213, + 80,187,121, 38,135,114, 98,207, 96,181, 38,252,145, 71,228,185,108, 35,102,178,139,141,216,131,105,180, 46,195,200,100,179, 52, + 54, 24,172, 36,219, 36, 1, 41, 87, 1, 81,249,154,154, 72, 87, 86, 36,140,218,225, 57,123, 47,179, 21, 67,158,125, 53, 69,121, +210,172,107,178, 75, 79, 95, 3,153, 46, 60,195,159, 78,174,133,137,201,174,127, 44,195, 7, 15, 14, 30, 57, 43, 3, 94,167, 11, +206,208,174,185,186,107,156,247,112,206, 4,100,153,181,192,116,133,138,230,235,165,154,163,129,111,188,142,255,227, 56,117,228, +197, 58, 20, 69,119,232, 4,169,122, 36,178,184,223, 82,128,178, 20,234,217, 52, 22,175, 9,121,101, 66, 41, 48,103, 5,215, 93, +120, 52,228,111, 85,153, 23, 71, 7,205, 19,254,102,119, 49,232, 81, 23, 93,247,233,229, 51,199, 84,127,207,100,142, 84, 77, 7, +177,126, 94,116,251, 58, 77, 18, 10,143,125,162, 0, 74,117,138, 40,187,223, 24,242,179,194, 23, 25, 51,209, 99,182,247,222,205, + 85, 90,117, 93,192, 12,196,146, 76, 87,132,127, 52, 21,232,206, 68,111, 69, 60, 91, 45,193, 38, 90,206, 89,249,244,222,115,117, +117,148, 2, 72,191, 70,139,116,228,172,128,153,148,208, 54,139,234, 38,240,222, 91,116, 44, 27,180, 72, 65, 47,222,235,123,209, +247, 39,227,173,163, 38, 99, 82, 86, 76,108, 52, 50, 29,170, 2,205, 89, 81, 72,117, 74,168,159,109,125,111,235,218,160,204,109, +108, 13,168, 28,156, 92, 39, 42,204, 2,223, 54, 24, 82, 70, 8, 81,241,237,195,136,135,251, 61,226, 59,217,214,139,250,155,199, +164, 13,167, 7, 91,116,185,218, 87,185,241, 94,199, 82,253, 48, 75, 66,130,133, 99,212, 1, 10, 50,153,202,209, 1, 77,215,162, +235, 90,220,159, 14, 24,134, 17, 76, 14,153,156,209,139,180,123, 10, 46,224, 56,140,240, 93,139, 28, 51,134,227, 73,211,129,136, +224,183, 75,100,114,120,120,232, 53, 71,151,138,253, 88, 67, 57,146, 5, 86, 40,126,147,225, 26, 66,112, 64,142, 9,153,129,197, +102,131,247,191,251, 33,100, 28,112,124,184, 3,123,193,144, 78,248,230,171, 87,202,120, 23, 65,127,218, 99,209,182, 16, 73,216, +237,119,200,172,202,214,203,139, 11, 60, 60, 12,120,249,242, 45, 64,132, 32, 9, 44, 12,215, 53,200,158, 16, 37,227, 56, 68,196, +227,193, 94,116,167, 68,171,152,140,173, 45, 26,254, 84, 58,182,186, 71,210,113, 46,152,171,226,154,146, 85,165,182,147,173, 99, + 45, 27,217,164,242,208,102, 76, 35, 54,167,194,187, 52, 8,142,111, 78,200,228,113,113,113,142,229,178, 3, 59, 66, 66,194, 39, +191,252, 28,159,254,221, 39, 8, 13,225,189,143,222, 71, 27, 58,188,121,115,143,195, 65,187,114, 22, 85,101,222,222,222,163,239, +123,188,255,252, 25,222,187,126, 7, 43,231,208, 49, 97,219,117, 5,173, 2, 48,176, 59,237,241,246,254, 1,247, 67,194,113, 28, + 65,153,224, 66, 11, 14, 65,215, 21, 89,240, 52,120,112,202,216,103,193,193, 48,147,196, 30,228, 60,124, 19,176, 92,173,112,182, +221,224,252,108,139,237,229, 26,155,229, 18,219,203,115, 44, 86, 75,213, 91,176,250,123,181, 89,178,177, 55,216, 12, 66,100, 96, +133,169, 59, 83, 36, 99, 48,223,168,138, 73,138,151,251,145,226,205, 46, 38,246, 14,217,171, 48,133, 88,234,126,110, 30, 12,161, + 29, 7, 27,204,196,213, 14,180,130,174, 72, 44, 60, 68,153, 4, 98,246, 35,118,190, 90, 71, 98,142,234,133, 22,227,181, 27, 96, +166,134,163,144,194,107, 64,113,194, 57,148,147,215, 46,255,249,120,181,136,228, 74, 26, 24,108, 95,204,152,128, 79,108, 93, 61, +207, 68,103,201,108, 59, 42,100, 19, 83,231,146,197,150,170,195,163, 28,164, 21,248, 97,187,121, 49, 49,167,136,122,116, 29, 49, +224,237,130,203,211,225,203,204,186, 50,114, 37, 52, 99,154, 42,148, 46, 50,231, 34, 52, 51,156,119, 78, 58,206,154,217,118,244, + 33,208,127,119,200,240, 98,187,119, 43, 86, 28, 79,214,194,250,220,243, 84, 96,241,108,237,224, 28, 35, 91, 52,237, 56,142, 24, + 99,210, 76,170,211, 17, 57, 14, 16,210,248,204, 44, 4,137, 58, 42,207,182,243, 85,251,144,126,102,114, 26, 17,211,128, 52, 70, + 19,115, 89,167, 39,105, 34,184,213, 76,121, 85,216,151,228, 59, 97,205,229,166, 44,200,200,136,172,218,163,226,159, 71, 30,167, + 88,100, 46,121, 3,102,241,146,137, 91,225,138,126,128,109,140, 77,186,190,211,215,137, 30, 11, 14,205,186,248, 88,228,134,202, +140,151,194, 29,192,227,164, 55, 88, 28,112,229, 38, 88,232,145,174,154,196,186, 96,195, 35,147,118,165, 37,199,174,124, 29,187, +242, 99,204, 18,212,184, 48,204, 93, 93, 48, 8,105,232, 21, 16,225, 73,159,108,253, 8,167, 73,168, 55,155, 34, 24,153,215,112, + 53, 4, 18,135,156, 11, 62,156,234,164,197, 27, 38, 91,170, 80,114, 38, 26,116, 30,173, 83,141, 51,149,137, 14, 17, 82,172,139, + 78,203,120, 48,162,167,155, 4,174, 90, 48,235,251,216,182, 65, 63,115, 86, 64,164,148, 17, 79, 81,159, 67,115,176,104,172, 77, + 68, 76,209, 52, 8,177,114,228,173,163, 67, 91, 74, 34,139, 50,206,220,128, 60, 44, 71, 62, 2,228, 53,233,209, 9,188,211,245, + 9,121,103,184,105,129, 39,160, 9, 30,141,243,154,249, 65, 4,146,136,195,241,136,113, 28,173,220, 38, 36, 33,140, 73, 16,147, + 77, 84,114, 66,150,164,151,186, 11, 29,198, 97,192,105, 24, 76,212, 51,141,160,146,237, 56, 11,239, 24, 0,130,247, 88,117, 11, + 28, 78, 35,142,167, 83,149,213, 23, 11, 7,179,131,243,250,245,135,227, 17,141, 37,255,220,237, 31, 16, 92, 64,183, 94, 99,213, +117,200,167, 30,167,253,193,170,250, 60, 27,241,145, 9,244, 74, 94, 47,170,229, 46,198, 17, 41, 3,239,126,248, 46,174,158, 92, +225,254,246, 6, 99,138, 8,190,193,171,175, 94, 99,216, 31,176,104, 29,198,126, 64, 28, 18,218,166,193,195,238,132,253,254, 0, + 98,194,246,108,141,166, 9,216, 61,220, 33,166,140, 54, 56,245, 35,146,192,135, 6, 96,143,148, 18,246,251,123,176,115,240,228, +108,199,111,194, 11,166,234,247, 77, 41,214, 3,204,147,109,144, 44, 93,139,205, 82, 19,105,186,244,189,243, 54,114, 86,234, 79, + 54, 27,140, 62, 36, 84, 99, 25, 29, 24,195, 41,225,176, 63,130, 59,224, 98,179,210,168, 70, 7,140,125,194,175,127,254, 37,190, +250,252, 43,108,222, 57,199,251,223,253, 16, 20, 24,251,195, 14,227,208, 35, 13, 3, 88, 18, 40, 70,220,188,121,139,200, 30,223, +251,237,223,198,251,239, 61,133, 79, 35,188, 0,231,109, 7, 72, 68,162, 8,120,198,233,212,227,213,219, 59,220, 31, 6,244,227, +136,152, 19,124,235,208,249, 22, 30, 4,196,136,179,166, 1,242,136,187,216, 99,200,122,160,137, 35, 32,120,184,198, 99,217, 53, + 56, 63,219,226,236,234, 2,203,139, 45, 86,203, 21,206, 46,207,209, 53,157, 90, 37,115, 68,202, 17, 49,153,160, 71, 50,216, 94, + 59, 85, 1,231,106,195, 18,202,179,232, 93, 86, 74, 90,233, 48, 72, 11,128,146, 93, 95, 9, 82,204,154, 97,206,108, 43,144, 0, +204, 59, 92,171,158,185, 86,219, 50, 3,133, 88, 6, 58,123,176, 97, 24,137, 92,245,171, 26, 26,162,230, 48,215, 40, 81, 83,182, +151, 29,221,156,187, 62,183,204, 20,213,188,126, 63, 86,200, 76,180, 12, 59,221, 77, 93,173, 57, 82, 10,168, 96, 45,112,105,230, + 99,101,204,243,213,245,226,102,158, 4,152, 42,152,225,218,225, 83, 85, 73, 59, 99, 68, 23,238, 3, 63, 42, 46,166,200, 74,154, + 14,116,155,108,100, 76, 66, 39,170,139,109,122,236,251,215,145, 84, 77, 49,195,183, 56,240,250,186,228, 41,152,102,150,242, 86, + 84,224,117, 47, 41,147, 53, 79,217,218,190,118,200,206,196,152,138,115,197, 35,206,125, 74, 17,195,233, 8,244,154,123,144,178, + 22,182,131,141, 45, 75, 33,137,172, 9,146,202,158, 24, 32, 24,225, 45,196,163, 78, 8, 76, 24,108,117,152, 42,158, 77,107, 67, + 4, 56, 86,138, 36,121,167, 60,127, 98, 19,219,250,106,149, 20,179,238,234, 42,147,173,196, 42,151,134,152,237, 79,166,215,103, + 63,247,152, 0, 0, 32, 0, 73, 68, 65, 84,133,170,228,108,154,250,101,209,127,236,210,203,179, 46, 60,127, 75,197,254,109,129, + 29,190,101,141,171,220,246, 89, 65,153, 19,234, 46, 55,211, 68,167, 19, 82,209,112, 9,169,145, 92,194,129,138, 8,211,220, 3, +182,174,210,226, 13,245, 89, 96,226, 10, 48, 19,203, 96,208,104,227,153,215,125, 50,209, 63,242,208,107,226, 93,130,119, 4,179, +105,163, 13, 94,117, 79, 52, 5, 21, 77,220,116, 32, 56,182, 98,212, 94, 27,131, 35, 57, 98,243,223,107, 10, 91,127, 74,255,108, +146, 81, 86, 45, 28,252,244,181, 16,244,253, 9, 41,198,170, 59,112,182,170, 72, 41,218,175, 79,239, 83,209,205, 8, 4,217, 52, + 59,176, 16, 46,170,231,147,113, 18,156,238,216, 27,118,117, 76,239,157, 83, 75, 30, 3, 28,212,194,167,233,111,197, 58,219, 32, +165, 3,250, 99,175,247,146, 37,129,150,105,102,153,173,193, 49, 56, 4,120,199,130, 67,212,234,195,151, 81,187, 76,244,155, 36, + 9,153,188,125, 36, 53,205,205,123,143,195,225,136, 49,233,174,204,147, 84, 79, 46,219, 14,161, 31, 7,244,199, 35,158, 92, 92, + 96,232, 7,196, 40,144,152,177, 88, 45,176,104, 90,236,246, 71, 60,220,189, 5,177, 87,166,181, 76,234,217,170, 29, 97, 85,125, +251, 16, 32, 73, 48,244, 17,221, 38,224,131,223,250, 46,144,129,211,241, 0, 2,208,247, 3,190,249,236, 43,172,182, 43, 12, 41, +227,176, 59, 34,120,173,188,246,251, 3, 98,140,184,222,158, 97,117,185,198,152, 70, 28,118,123,120, 7,120, 38, 19,223, 49, 68, +185,129, 24, 15, 71,245,216,123,101,214, 67,102,123, 41, 51,248,171, 96,193, 33,152,181,136, 72,115,134, 73, 13,165, 90,149, 71, +235, 68,202, 14,140, 38,238,119, 5, 76,176,155,198,170,230, 9, 30,134, 81,247,143, 62, 96,185,106, 17, 26,253,251,247,247, 9, +111,190,122,129,135,221, 78,237, 97, 79,158, 96,136,130,241,216, 27,241, 46,194, 19, 33,193,225,213,235, 27,196,156,241,123,255, +226,247,112,177,221,226,120,183, 3,197,136,149, 87, 21,240,152, 19,194,162, 67,148, 17,175,222,220,224,254,112, 66,159, 51,134, + 49,162,235, 26, 52,161,209,202,114, 28,113, 21, 60, 58,137,216,141, 35, 78, 57, 99,176, 85, 11, 57, 7,223, 4,248,198, 97,187, +217,226,242,233, 21,214,219, 53,186, 69,135,213,118,141,102,209,214, 24,197,108,123,212,156, 35, 28, 38,209, 86, 21,245, 84,162, +154,237,194, 11,253,156,228, 81,247, 65,252, 24, 47, 42, 82,172, 41, 38,169,149,199, 59,229,122,192, 49,215,195,113, 30, 24,162, + 34, 44,174,226, 60,153, 99, 89,193,143, 0, 15, 52, 75,127, 42, 22,174,249,255, 85,198, 2, 48, 3,177,148, 17, 50,215, 85,129, + 88,110,122, 21,216,160,100,152,103,164, 24,171,221, 75, 71,246, 30,160, 18, 23, 25,109, 15, 57, 11,214,168,187,118,174,137,115, +142,189, 10, 90,193, 85,177, 94,186, 18, 33,101,220, 23,161, 23, 88,197, 60, 73, 24,136,246,250,242,164,109,147,122,129,207,114, +172, 31,153, 1,181, 32,171, 71,155, 1,149,138, 87,189, 94, 34, 52,189,246, 5, 23, 90,130,106, 98, 38, 43,220, 39,202, 26,113, +174,224,158,218, 97,146,252,127,108,157,231,150, 28,199,177,173,119, 68,102, 86, 85,247, 24, 0, 4, 9,208,136,114,199,220,251, +254,143,115,238, 49,148, 68, 11,146,112, 51,211,221, 85,105,226,254,136,136,204,106,232, 44, 45,173, 37,137, 16, 48,232,174,202, + 12,179,247,183,119, 66, 45,238, 9,143,158,142,167,228,216,138, 44,130, 20, 53,171, 32, 29, 38,180, 77, 70, 8, 13,108, 55,171, + 12, 87,111, 67,208,168,106, 24,147,129, 87, 42,213,209, 1, 99, 28,234,205, 39, 59, 82,119, 94,111,195, 90,123,129,198, 73, 39, + 50,198, 97, 7,243, 46,129,205,196,104, 93, 27, 66,160, 79, 20,239,238,128,129, 77, 2, 28,162, 36,187, 96, 35,159, 8,145,251, + 43,246,207, 40,174,215, 52,253, 98, 71,232, 19,169, 81, 76,181, 46,128,148,182,139,147,237,151,173,173, 18,250, 38,155, 59, 13, +141, 72, 49,186,134,136, 65, 96, 70,174, 35,102,214,149,244,206, 83, 16, 83,172,251,229, 39,220,186, 46,166, 63,203, 52,172,124, +188,211, 87, 44,135, 4, 42, 98,196, 53,133,203,104,138, 31, 97,138, 22, 62,230,194, 59, 82, 86,123,107, 21, 49, 4,108,246,217, +148, 82, 80, 90, 65,138,140, 92,122, 89,131,214, 4, 49, 76, 72,115, 28,146, 2, 8, 46,167,179,137,103,117,205, 26, 2,163,229, + 13,165,180,190, 14,208,134,163,245,194, 56,144,114,227,139,105,117,200, 38,205,126, 54, 52,187, 16, 34, 9,230, 41,130, 80, 13, +192, 52,120,251, 33,234,185, 90, 43, 33, 68, 86, 22, 70,136, 40,165,225,178,173, 56,208, 1,156, 34,194, 22,118,200,102,155, 24, +214,106,193, 55, 32,172,121,179, 8, 74,203,125,222,245, 2, 78,161,242,240,128,121, 74, 16,129,117,246, 52,108, 51,246, 67,249, +101,183,174, 23,172,231, 85, 5,108,235, 10,169,170, 80,189,185,187, 69,101,198,249,241, 17,235,227,201,170,193,235,177, 82, 87, +148,154,226, 55,132,128, 92, 10,214, 13,248,226,155,215,120,249,213, 43, 60, 61, 60,160,150,140,152, 34,222,252,252, 11, 74,206, +184,189, 61,226,227,195, 25, 79, 79, 39,112,140,168,173,225,178, 93,144,107,198,146,148, 53,127, 58, 61, 33,136, 89, 88,164,162, + 85,193, 42,181,199, 74,230,220, 48, 77, 19,152, 85,213,158,237,139,237,252,118,219,163,106,245, 69, 61, 93,141, 73, 5, 61,129, +245, 75,232,168, 80, 30,226, 8,119, 66, 57,114,211, 81,239, 94, 68,213, 90,177,174, 27,136, 9,135,219, 3,210,164,170,243,135, +247, 39,252,227,191,255,129,199,199, 19, 94,126,254, 25, 94,188,124,137,117, 45, 88,183,162, 81,132,185,216,222,153,240,238,237, + 59, 4,102,252,223,255,243,239,184,191, 63,226,252,240,128, 73,128,133, 8,168, 5,107,217, 16,166, 4, 4,198, 47, 63,191,197, +251,167, 39,108,181,225,178,109,122, 16,198,136, 24, 35,164, 21,220,166,136, 91,102,156,214, 21, 79, 34,216,152,209, 2,129, 99, + 68,154,103,164, 41,225,230,230,136,151,175, 63,199,253,243,103, 88, 14, 11,238,159, 61,195,180,204,200, 37,163, 88,117, 62,196, +108,210,225, 17,227,229,165,157,144,135, 16, 40,130, 57,153, 64,108, 16,184,254, 89, 17,140,222, 57, 55,251, 61,189, 82,223, 95, +232,126, 49,244,209,154, 29, 32,220, 59,101,253,181,193,172, 46,163,179,236,179,194,110, 79,210,164, 46,234,148, 54,231, 70,251, +175,119,202,218,232, 0,180,235, 7,237, 2, 54, 90,221, 21, 53, 59, 72, 7, 39, 93, 55, 24, 60,197,149,245,165, 22,228,188,161, +228,172,233,135,110,225, 19, 50,107, 25,239,226, 90,197,246,199,232,251,127, 30,222, 65,219,197,177,230, 9,216,255,167,162, 89, + 87,214, 6,238,210,144,163, 54,245, 29,228, 45,167, 77,118,104,223,167,208,153,189,168, 9,144,157,205,167,131,210, 48, 46, 51, +218, 5,219, 52,207,122,166, 65,172,243, 3, 86, 33, 35,246, 73,177, 70, 34,251,238,158, 76, 8,216,119,149, 86,120, 83, 45,144, +156, 53, 29,177, 21, 13,236,104, 5,144,218, 17,187,170,139,208,247, 46,151,140, 92,183,190,154,168, 45,235,229,109,159, 77,109, +122, 81, 52, 91, 97, 40,248,165, 42,140,171, 86, 13, 3,242,125,179, 33,128,133,131,229,103,200, 46,120, 72,139,165,218, 77,243, + 97, 28,127,246,107,107,107,253, 98,247, 34,213,125,243, 99,116,108, 34, 81, 43,186,252,217,237,161, 60, 93, 31,178, 75, 51, 23, +190, 66, 86, 19,211, 85,110,129,119,191, 14, 75,246,130,108, 12, 94,248,106, 14,195,221,173,212, 12, 78, 72, 87, 99,246, 93,216, +174, 21,113,210,187,119, 29,102, 82,199,107,143,160, 28,251,187, 48,247,169, 69, 8,172, 84, 83, 75, 52, 75, 81,157, 68,209, 48, +172,125,122, 0,103, 91,212, 78,244,243, 44,134, 82,117,199, 30,246, 23,172,137,243,226, 20,251,116, 89,131,110, 26,242, 37,155, +155, 65,119,246, 68,172,231, 89,105, 87,241,174,216,227, 94, 13,167,110,227, 51, 85,191, 7,111, 14,135,101,150,153, 16,131, 65, +157,172,176, 36,227,147,164, 52, 33,197, 9, 8,220,127,253, 52,165, 30, 9,220,233,155,253, 50,186,246, 82, 68, 78,136, 13,122, +112, 52,235, 32, 53, 57, 42,154,208,193, 67, 72, 4,141,204, 95, 30, 2,182,124, 65, 46,181,127, 89,181, 42,156, 36,134,104, 51, +253,136,203,229,130,229,176, 32,197,132,211,195, 3, 68, 52,216,227,254,249, 51, 52,138,248,248,225, 35,202,186,234,126,196, 33, + 30,123,129,135,147,156,152,192, 8,184,228,130,121, 6,254,242,111,255,138, 86, 86,172,151, 19,152, 9,143,151, 13, 63,252,240, + 51,158,221,223, 65, 74,195,187,167, 39,220,163, 97,158, 3,214, 75, 70, 45, 21,135,227, 4, 74, 9,235,163,118,246,105,137,104, + 15,130, 82, 11, 40, 48,114,110,104,172, 35,167,178,163, 59,137,104, 39,227, 15, 92,237,254,211, 49, 71, 10,187,209, 43, 7, 70, + 76, 9,107, 51,192,128,141, 81, 7, 90,116, 39, 62, 49,129, 16,139, 62, 68, 13,130,198,130, 41, 69, 28, 14, 51,226,164, 7,194, +195,175,143,248,240,246, 17, 83, 32, 60,123,249, 28,105, 89,240,244,152,251,161,202,205, 5, 38,140,211,233,130, 16, 18, 94,191, +122,137,105, 78,168,151,130,155,116, 64, 61, 63,162,230, 13,185, 21,132, 41, 33, 78, 51,126,252,249,103,252,254,238, 17, 43, 53, +108,155,170,249, 15,243,132,101,158,192, 16, 76,194,184,143,140,135,211, 9,143, 85,176, 50, 41,142, 51, 6,164,121, 65,136, 1, + 83,100,188,122,253, 10,175,190,250, 28, 28, 19, 14,199, 35,226,148,176,149,162, 47,124, 72,102,143, 26,246, 47,208, 24, 39, 59, + 26,146,119, 40,153,230, 30,117,232,225,171, 42, 88,119, 36,212, 49,134, 53,193,150,244,233,206,117,128, 72,223,111,187,229,202, +187, 15, 25,220,125,177, 81,219, 30, 55,203,124,141, 50, 29,133,136,134,194, 48,239,178,175, 59, 60, 71,174,198,157,234, 51,114, +187,154,217, 91,204,106,198, 24, 94,236, 97,133,178, 75, 56, 68,219,233,235,218,166,182, 60,126, 95,179, 13, 9,105,151, 47, 46, +112,219,121,147,119, 40,109, 8,181,126,112, 57, 31,190,203, 17, 76, 91, 80,225, 59, 74, 45,230,157,164,133, 46,230,145,190, 34, +217,181,145, 32,110, 61, 81,177,203, 5,236, 29, 32, 26, 2, 69, 47,112, 84,197, 28, 70,150,188,107, 78,204,162,216,108,255,204, + 52, 46, 35, 21,146,202,136,163,221, 21,107,158,212, 71,228,254, 92,173, 62,244,236, 9,136, 28, 64, 4,108,167,179, 29,174, 26, + 85, 73,136,230, 93,142, 72, 33,162,150,166, 4, 56, 79,186,226, 6, 80, 49,149,177,232, 97,106,170,116,215, 31,244,213,154,141, +166,245,178, 54, 72,139,127,100,165,152, 98, 58,216,202,197,211, 5,205,253,225,184,105,119,122,200,181, 40,209,159,127,125,119, + 58, 98, 73, 69, 87,206,186,104,205, 44, 82,218, 49,170, 88,211, 71,193,216,173,130,134, 88,114, 55,246,234,246, 73, 31,225, 50, +233,196,194,227,135, 71,135, 95, 45, 30,221, 26, 59,177, 29,121,115, 74,224, 96, 68,116, 3, 6,174, 17,206,190,195,183, 97,136, + 77, 54,148,210, 81,188, 0,198,112, 25,176,105,147,154,193,139, 8, 64, 49, 38, 1,251,101,104,227,245, 24, 8,129,109, 90, 96, +232,214, 90,202,184, 67,100, 88, 15, 99, 12, 35,223,221,133,155, 0,162, 93,154, 34, 26,224,149,115, 69,222,114,183,190,134,228, +147,176,102,202,125,250,167, 41,157, 17, 0, 80,125,245, 96, 93, 55, 39, 65,172, 22,130, 37, 5, 19, 77, 72, 97,175,177, 82,119, + 15, 27,219, 97,158,103,117,142,225,220,239,142, 24, 35,114, 46, 56,157,158,240, 74, 94, 90, 14,132, 54, 41,106,195,212,194, 52, +196,136,196, 51, 98,110,197,212,182,187, 42,208, 21,192,208,170,180, 65, 5, 20,190,219,238,176, 10, 75,140,145, 90, 32,134,187, + 99, 27,233,125,252,248,132,187,103,154,208,182,173, 27,164, 54,188,248,252, 37,110,110,239,144,215, 51,158,158, 30,177,109,219, + 0, 47,248,180,117,208, 23,123, 39, 71, 32, 60,157,158,240,197, 55,175,240,249,235, 87, 88, 79, 43,106,222,192,203,132, 55, 63, +126,143,211,233,140, 63,124,126,143, 31,127,121,135,237,124, 1, 79, 51, 90, 21,108,219, 6, 2,227,112,184,193,122, 94, 81,106, +193,237,205, 1,113, 74, 26,103, 26, 25, 18, 2,182, 92, 17,142, 73, 69,123, 80, 85,107,148,134, 41,204, 32,206, 38,182, 40,246, +130, 74,183, 3,105,181,101,221,132, 87,148, 83, 64, 43,140,104,159,105,147, 48, 60,157, 96,128, 90,183,130,232,136, 20,168, 77, +192,161, 97, 10, 1,243,156,112, 88, 18,100, 43,120,247,118,195,246,177, 98, 90, 24,183,207,238, 16,166,132,188,105, 21, 29, 2, +148, 94, 71, 0,167,132, 45, 23, 4, 8,158,223, 29, 48,217,131,113,115, 56,162,254,246, 59,242,233,140,181,173, 72,203,130,229, +120,131, 95,222,188,193,207,111, 62, 32,115, 69,206,250,217,207,115,194, 60,205,106, 59,202, 5,207,227,132,135,243,138, 83, 41, +216,162, 9,182, 34, 99,158, 15,152,150, 25,204,130,175,190,124,133, 47,255,244, 45,230,192, 72,135, 25, 33, 37,228,214, 6,179, +217,129, 24,210,186, 64,112,207,133,110,125,151,214,118, 59, 85, 54,134, 57,131, 17,199,248,154,116,199,214,175, 23, 27,135,246, + 87,108,135,121, 21, 25, 21, 44,217, 14, 28,206,164,111, 35, 10,245,211,131,103,223,165,127,250,207,250,225,212, 6,253, 11,181, +129, 2,153, 90,223,247,217,218,185,168,213, 73,250,248,216,119, 94, 20,120, 12, 51,201,255,191,142,152,229,161,122, 39,205, 74, +102,183, 61, 18, 35,164,104, 22, 38, 86, 3,205,206, 50,197,108,138,124,219,221,161,175,125,120,228,115,219, 13,223,204,231, 75, +163,125, 86,190, 55,121,183,133, 29,119,222, 60,248, 14,158,177, 96, 13, 37,189,169,222,164,143, 87,125,202, 6,165,105,137,137, +158,132, 91, 31,199,235,247, 25,186,199, 30,187,142,189,214,134,148,162,117, 92, 99,133, 98,141,143,174, 61, 40, 2,148,205,215, + 31,245, 98,161, 10, 10,113, 20, 21,118,233, 11, 11,216, 18, 35,137, 53,145,144, 17, 16,172, 91,175,101, 32, 71,165,173,170,134, + 15, 24, 60,123, 23,180,118, 79,178,141,198,113,141, 88,239, 26,164, 90,213, 98,215,244, 66, 31, 23, 53,235,102,201,166,131, 42, +156,211, 11, 59, 24, 36,167,118, 46,127,181,159, 95,221, 19,216, 55, 58, 67,105, 54,158,183, 62, 73, 25,186, 5,236,146,224,135, + 88,115,156,171,157,179,190,203, 60,111,150, 51, 47,109,248,116,154,122,110,205,206,182, 43,136,253,207,223, 21,179,174, 8, 25, +213, 10,250,180, 83,113,193,138,176,245,224,154, 43,251, 92,247,172,155,198, 5, 10,242,146,214,208,136,112,105, 21, 91, 46,170, + 49,161, 1,166,209,204, 12, 49,154, 13,247,162,190,245, 0,157, 1,250, 42,165, 96, 57, 44,154,210,215,154,197,100, 87,112, 99, +164,152,250, 4, 46,176,224,124,190,216,100, 10, 96,210,105, 88, 21, 85,207, 95,119,198,246, 14,120,113,196,232,132,185,200, 46, + 52, 68, 15,104, 18,229,137, 35, 69,182,232, 92,189, 51,107, 19,132,164,246, 53,159, 18, 71, 63, 63,217,186,239,156,241,248,225, + 1,248, 51,174,154,138,214, 44, 85,175, 5,101,173,112, 5, 55, 3,186,244,135,195,126,113,112,209,129,113,156,149,137,172, 66, +129,209,101, 8, 66, 74,125,247, 73, 76, 72, 41,161, 86,193,251,247,239, 16, 99,196, 90, 86, 52,105, 40,107,198,243,103,247, 8, +199,128,167,243, 5,151,135, 71,148, 42, 35,113,113,183,183,236,187, 32, 64,171,171,214, 16,166,132, 47,191,249, 70,131, 20,182, + 13, 32,194,118, 94,241,195, 15,191,224,238,217, 13, 46,219,134,199,119, 79,106, 45,136, 1, 37, 87, 60,157, 51, 98,140,152, 98, +196,229,124, 65, 94, 11,136, 3, 82, 10, 56, 78, 9,105,153,148,193, 91, 27,242,249,210,199, 64,217, 94, 74, 88,148,163, 38,180, +237,119, 87,170,162, 84,117,226,158,245, 62, 97, 58, 44,136, 41,233,168, 40, 70, 85, 47,146,199, 28,180,157,152, 68, 44,160, 69, +109, 66, 33, 48,166, 41, 32, 6,194,249,105,197,239,191, 61,224,233,221,134,120,100,220,220,223,128,195,164, 49,135,202,213, 67, + 46,103, 84,169,136,179, 98,107, 67,173, 72,196, 8,243,132,195, 97,198,171,207, 94,160,126,120,196,211,227, 25,235,118, 70, 72, + 1, 55, 47,110,240,203,111,191,225,135,159,223,160, 82,197,165,168, 24,114,142, 17,199,105,198,148, 2, 40,103,220,134,132, 83, +221,240,176, 93,112,178,106,154, 66,196, 97, 57,224,120,179, 96,158, 19,190,120,245, 10, 95,124,251,149,170,125,205, 78,148, 91, +233,201, 98,212, 19,134,220,246,101, 69, 33,235,133, 84,219, 14, 68,209, 2, 74,110,168,185, 2, 98,226, 20, 11, 35,113, 90,152, +187, 11, 66, 24, 10,112,135,140, 18, 15,225,151, 39,114, 9,174,209,176,218,205,140, 29,158,194,100,106,255, 55,246,153,212, 87, +123,244, 33,198, 75, 41,234,100, 10,130,236,161, 43,125,140,183, 11,206,216, 17, 8,117, 92,187,239, 88,124, 36,238, 30, 89, 64, + 26,117,252,104,103,163,179, 9,254, 68,121, 5,228, 83, 9,242, 76, 0, 71,115,169, 37, 9,187, 80,145,145,247, 29,186, 66, 93, +122,176,138, 71,128,214, 49,209,112,190,184,103,194,211, 14, 10,202,123, 65,209, 78,231,224, 93,243,238,239,231, 69,145, 19,239, +252, 14,148, 54, 62,215, 43, 56,138,217,240,124,239,152,156, 12,230,216, 81,242,245, 91,236, 7,164, 22, 64,220,219, 98, 45,142, +212,121, 35,168,144, 92, 84,195, 83, 11, 2, 8, 85, 10, 90, 46, 64,105,144, 82, 45,126, 84, 47, 96,130,170,224, 69, 42,196,119, +230,173, 1, 85,167, 11,254,125,130, 90,207,247,214,207,143,175, 68,122,176,213,215,240,221, 27, 90, 91,148, 41, 15,169,186, 2, + 48, 15, 30, 25,168,169,138,185, 24,140,247,176, 31, 89,107, 1, 22,122, 78,132,238,192, 45,105,205, 59,205,158, 43,128, 46,242, +218,219,223,246,251,214,235, 21,214,126, 45,228,218,136,218, 87, 55, 87, 65,105,192,213,238,219,167, 38,154,176, 73, 87,191, 54, + 18,129, 59,216,232,138, 14,172, 66, 65,249, 84,172, 39,182, 81, 24,108,148,125,151,175,123,228,134,199, 39, 93, 15,187, 69,140, + 13,208,165,241, 24,193, 70,166, 98, 25, 2,106,117,132,243, 33, 0,108, 89, 27, 8, 7,180, 52,115, 23, 72, 19,112, 98, 68,203, + 66, 15, 70,137, 41, 57,107, 49, 64, 58,213, 9,129, 81,106, 69, 17, 30, 25, 19, 87, 89, 18,131, 1,224,246,229,106, 77, 48, 59, + 36,167,170,198, 63, 26,223, 61,250,218,204,222,239,101, 57, 96, 89, 22, 76,211,108,171, 64,237,208,153, 96, 46, 44, 70, 46, 21, +101, 83,210,165, 59, 39,116,176,204, 86, 92,234, 52, 44, 94, 74, 67, 41, 67, 84,209, 59, 22,210,142,160, 52, 69,180,198, 16,176, +149,140, 32,109,160, 41,161,190,207,188,106, 37, 28, 2, 97, 94,102,156, 63,126,192,186, 22,220,222, 29,177,174, 5,185, 84,112, +138,184,123,118, 7,146,128,243,199,143, 56, 63,124,212,234,213, 70,133, 46,220,184, 74,218, 34,177,240, 2,193,139,151,159,225, +197,231,159,161,228, 77,125,174, 68,248,229,231, 55, 88, 79, 23,188,248,242, 11,188,123,251, 59,182,173, 96, 54, 59, 76,206, 5, + 28,128,101,153,212,184,143,134,105, 94,208,214, 13,145, 9,203,205,130,105,153, 77, 77, 93, 81,214,162,149,157,219, 52, 88,103, + 69,185, 84,148, 98, 7, 82,147,142,254, 99,214,159, 33,128, 81,108, 39, 59, 77, 19,166,101,193,214, 46, 8,107, 64, 16, 61,130, + 26,177,117, 65,214,225, 51, 89,228, 36,161,133, 6, 4, 45, 90, 2, 69, 92,206, 25,231, 83,133, 84,194,124,191, 96, 94,110, 85, + 61, 91, 20, 6,195,108,241,122, 33, 96,185, 81,178,220,227,187,247,184,156, 47,184,191,187,195,221,237, 45,190,122,249, 18,143, +191,189,195,249,227, 71, 60,124,252,136,229,176,224,238,249, 11,252,250,235, 91,252,240,211, 27, 84,142,216,138, 10,134,230, 41, +225, 48, 77, 56,164, 4, 42, 77,115, 0,164,225,105,203, 88, 3,219, 4, 34, 98, 58, 28, 48, 31, 14, 88,150, 25,135,155, 3,158, +127,254, 2,204,193,132,147,214,161, 75,195, 68, 17,125, 21,103, 47,113,171,202,212,223,143,180,225,209,172,230,229,111, 61,205, +194,210,187, 58,132,134, 92,154,211, 21,237, 3,187, 46,125, 71, 62,238, 87,238,251, 45,103, 33,137,119,235, 14, 93,129,238, 89, +251, 52,200, 46,120,247,218,250, 24,111,191,111,220,115,234,251, 10,128, 53, 15,221,185,244,251,168, 93,146,157,145,206,119,250, +172,199, 12,219,222, 85,107, 72,157,242,216,232, 0, 66,101,248, 89,201, 98, 92, 45,122,180,185,253, 13,176,139,162,117,103,128, +126,102,230, 79,234, 93, 63,174,216,225,100,120, 90, 31,181, 75, 87,149, 19, 80, 9, 69,246,159,177,194,110,244, 48,149,221, 37, +189, 23, 47,238,162,177,165,237, 16,168,131,176, 5, 98,115, 21,168, 8, 13,182,210,114,117,184,143,235, 67, 48, 45,135,211,199, +236,189,103,123, 23,251,232,189, 40, 35, 91,189,197,220, 85,227,181, 86, 52,163,163, 81, 19, 48,151,221, 34, 65,212,166,217,209, +192,100,107,142, 33,200, 10,190, 31, 30,161,200,250,231, 85,181,169,181,214, 52,208, 37, 4, 27,213, 82,255,140,155, 99,119,253, + 96,165,206, 51,238, 41,112, 62, 98,214,144, 75,233, 5, 83, 19,117,213,120,226, 29, 59,234,212,139, 41,227,243, 59,105,111,223, + 25, 19, 26,164,238, 34, 68,119, 95, 12, 15,181,163,173, 39,228,234, 98,239,153, 26, 93, 16,167,214, 90, 71, 8,107,182,184,173, + 2,140,161, 31, 2,117,206, 60, 80, 13,166,229,151,179,185,181, 67,210,252,250,254,222,232,223, 59,133,128,205,178, 11,104,247, + 57,215, 42, 87, 49,168, 28,149, 58, 88,106, 70, 35,193,150, 11,242, 38,125, 42,234,107,181, 64,132,200, 90,208, 69,230, 62,146, +111, 6, 67,106,187,223,179, 20,125, 39, 98, 8,104, 85,159, 21,207, 82,143, 41, 98, 58,204, 42,172,139, 17,235, 89, 59, 95,101, +172, 19,226, 20, 33, 80, 56,151, 59, 3, 6, 3, 64, 58,127,159, 92, 51,149, 24,220,180, 64,136, 33,234, 68,134,199,119,144, 66, + 64, 12,186, 18, 82, 62,129,174, 18,167, 20, 49,207, 19, 82,138, 40, 77,179, 8, 66, 8, 54,106,215, 38,164,228,205, 62,163,169, +187, 63,138, 61, 63,129, 2,230,105, 82,167, 85, 46,234,191,228, 30,250, 80,205, 39, 25,117,196, 71,106,199,106,214,209,112,112, + 64,130, 62,112, 20,116,151, 92,136, 84, 13,205,140,199,199, 51,150,105,194,113, 62,224,231,223,222, 33, 23,193,237,253, 29, 62, +255,252, 57,106,206, 56,157,206, 88, 79,167, 94,193,195,189,160, 46, 74,234, 98, 28, 5,160, 76,211,132,249,120, 64,156,103,151, + 8,224,252,120,198,207,223,255,138,219,227, 1,185, 20, 92, 78, 39, 80, 36, 36, 11,204,216,242,134,105, 82,230,238,227,211, 3, + 14,135,103,186,234, 44,250, 34, 56,206,180,214,128,243,233,140,162, 89,107,136, 83, 66, 89, 51,152, 68,125,176,107, 81,207,178, +200, 63, 97, 28,117,220,107, 49,146, 28, 49,207, 9,233,152, 16,114, 70,156,162, 21, 68,150, 71,189,123,200,163, 52, 4, 12,136, + 3,235, 41,143,245, 92,112, 57,101,240, 20, 49,223,207,152,166,131,237, 75,204, 95,217, 42,164, 2,105, 90,112,115,119,196,225, +102,193,251, 55,239,241,254,237, 7, 28, 14, 11, 94,190,184,199, 31,190,248, 18,167,119,239,112,122,255, 30,143, 31,222, 67, 2, +240,226,139,207,240,254,225, 35,190,251,219,143,144, 56, 97,171, 21, 91,221, 48, 69,214, 11,253,112, 0, 89,218, 81, 34,193,135, +203,138, 26, 84,125, 61,165,132, 52, 77,224, 20,112, 56,204, 26,215,122,123,131,105,158, 16, 99, 64, 92,230,190, 58, 9, 28,187, +104,133,105,196,210,178,231, 9, 88,194, 24,172,128, 3, 44,169, 11,142,145, 52,145,161,235,122,237,162, 96, 3,191,184,192, 78, +200,226, 80,157, 58,231, 74,117, 47, 70, 3,237, 56,251,130, 98,240, 15, 14, 42, 64,171,173,129,164,218,158,219,121,228,225, 42, + 3, 29,144,238,151,118,241,146,170,178,119, 54, 45, 26, 86,185,209,137,154,138,159, 26, 40, 72, 23,210, 41,116, 38, 14,114,152, + 91,177,236,231, 80, 10,155,245,109,210,192, 98,162,182,160,201, 98, 38,167,233, 41, 81,221, 74,135,189, 61,167, 89,241,178,219, +149, 90,245,238,118, 57,111,238,106,109,200,101,211, 73,139, 11,171,124,207, 23, 24, 84, 70, 71,214,204,134, 37,159,240,201,135, + 63, 95,139,146,218,196,176,151,250,157, 48, 19, 40,144, 17,225,176,179,204,237, 83,203,164,255,103,191, 28,187, 0, 46,132, 94, + 80,140,131, 51, 24,122, 51,118, 68, 45, 51, 35, 82,236,212, 48,183, 3,138,184, 50,157, 76, 0,172,197, 28, 74,213,100, 45, 10, +218,233, 89,162, 91, 67,237, 65, 33, 26,229,107, 97, 84,117, 36,162,233,223,189,238,166,139, 90,180,214,106,118,224, 96,226, 53, + 49,218,157, 23, 57,181, 1, 84, 13, 75,218, 76,243, 64, 29,117,204, 96, 29,217,119,238,188,244, 38,107, 8, 33,185,115, 20, 70, +130,159,186, 28,212, 10, 70,125, 4,220,187,125, 23,195,237, 73,115, 54,154,222, 51,106,123, 29,226, 43, 38,167,100,217, 14,188, +250,127,183,189,186,230, 60, 40,132,136, 58,201,157,118,110,133,193,103,208,232, 90,163,251,245, 2, 72,208,106,209,188, 17,225, +126, 7, 4,203, 50, 47, 77,167, 37,193,130,130,106,177,207, 41,114,127,119, 82,136,136,193,138,187,160,103, 78,173,122, 94,182, +218, 52, 42,218, 46,117,157, 0, 41,135,164,212,138, 20,212,194, 54,207, 19, 16, 4, 40, 64,152,168,251,223,131, 17, 9,167, 20, +209, 74, 67,169,178, 19,215, 93,163, 50,216, 69,137, 52,226,144, 21,133,158,172,197,176,103,135,217, 70,239,218,189,115, 8, 61, +150,149, 99, 80,134, 61, 49, 10,106, 23, 5, 42, 1,207,178, 68, 90, 5, 73, 49,174, 3, 95, 77, 35, 57, 38, 76,211, 13,138, 84, +196,146,115, 23,180, 88,205,165,169, 79,174, 70,214,229, 45,182,156,193,104, 8, 8, 40,100,202, 73,123, 48,244,160, 72,152,162, +142,130, 63,190,127,192,225,230, 8, 68, 29, 25, 68, 0, 55, 47,110, 17,150, 5,173, 49, 78, 15, 15, 56,157,205,118,230, 35,160, +110,221, 29,190,187, 24, 35,230, 41, 64,234,132,229,230,160,104,199,192,216,106,197,111,191,252,138,199,143,239,113,243,249, 87, +184, 60, 61, 0,141,145, 44,209,108, 45,218, 93,164, 20,177,230,140,181,100,220, 48,237,118,174, 4, 9, 19,150,227, 17,231,167, + 13,231,167, 51,106, 4,210,178, 32, 36,128,182,172,214, 5, 85, 83,217,129, 61,230,236,100,163, 19,167, 7,185,215, 48, 78,201, + 40,108,161,251,139,137, 73, 35, 85, 93, 32,230, 98, 44, 31, 69, 66,119,106,235, 57,163, 93, 42,226, 50, 99, 62, 44,136,105,234, + 41, 72, 33,250,193, 10, 44,243,130,227,241,128,155,219, 5, 31,127,255,128,223,126,250, 5,203,225,128,175,191,124,133,175,191, +122,141,199,223,222,226,241,221,123,156, 30,158, 80,208,240,252,139,215,120,220,206,248,219,247,191,160,133,136, 34,130, 82, 50, + 34, 51,150, 52,225,176,204,122,248, 74,195, 18, 3, 30,214, 11,178,123, 30, 57,128, 99,212,240,156,195,130,195,237, 65,125,144, +243,140, 56, 39,164,121,214,184, 78,216,126,182, 41,114,214, 15, 35,183,238,121,186, 90,171,130,198,181, 35, 45, 71, 90,151, 88, +113,227, 45, 55, 15, 30,154, 83,202,100,140,155,121, 96,204,251,190, 61,152,160, 17, 77,254, 73,224, 54, 14, 87,238, 48, 15,146, +161, 24, 38,251,254,250,116,128,105,135,243, 20, 99,177,219, 72,221,252,245, 94,112, 80,208, 24,196, 79,149,176, 20,163,193, 72, + 6,191, 97,156,163,158,208, 85,245,229,102,199,138, 74,223,211,142,221, 5, 13,150,180,197,196,182,166,194, 72,230, 79, 24,226, +230, 79, 23, 23,197,181,253,248,212, 63, 76,139,135, 69, 86,152, 83, 43,230, 94, 25,214,249,190, 17,187, 26,227,234,142, 79, 47, + 3,234,217,216,110, 63,234,251, 84,247,188,251,247,105, 42, 20, 29,177,143, 14,180,251,178, 69, 16,253,123,180,194,153,254, 23, +207, 53, 58,120, 75, 11, 5, 87,250, 91,236, 74, 47, 44,200,254, 28,229, 72,232,247, 25,231, 25,221,129,232, 16, 30, 1, 66,180, +255,119,136,182,247, 28, 65, 86,204, 4, 50,174, 54,122, 34,158,190, 59,212,253,210, 86,104,214,214, 15,176,189, 99,192,131,116, + 52, 94, 19, 54, 2,166, 1,193, 38, 21, 34, 59, 90,251, 90,233,104,252,244,125,103, 93,180, 80,188, 10,104, 17, 15, 56,218,143, +204,109,172,221,157, 9, 3,141,170, 29,125, 27, 55, 80,195, 88, 17, 57,233, 91, 6,147,189,135,202,216,185,233, 5,184,152,224, + 76, 76, 47, 34, 68,125,133,235,133, 16,197,221, 37,239,230, 6,222,191, 39,227, 17,171, 93, 52, 75, 88,119, 83,135, 20, 76, 55, +208,100,204,139, 76, 63,147, 98,180, 2, 78,250,119, 15,201,182,127, 55,111,127,147, 46,176,109,187,176, 1,105, 90, 56,207,203, +108,132, 79,203, 59,175,213,102, 32,212,241,196,181, 89, 33,213,234,245, 20,103,183,137, 34,179,139,162,234,179,155,194,220, 65, + 88,108, 43, 20,134,130,197,180, 33,208,252,245, 42,202,153,143, 41,128, 67,210, 60, 10, 17, 3,111,185,107, 71,159,155, 42, 5, +181, 65,241,228, 24, 32,158,177,122, 84,216, 89,220,182, 13,213,237, 19,221,114,160,202,214,196, 1, 8,176,177,123,196,226,217, +211,236,222, 91,181,118,132, 24, 32,102,152, 71,171,120,255,240,132,151, 47,158, 35, 48, 33,215,140, 16, 25, 95,188,252, 66,199, +200,149,240,241,221, 71,148,186, 97, 50, 81,140,179,133,189,102, 12, 32,160, 54, 68, 98, 76,105, 66,109, 13,203,205, 81,171,150, +200,120,250,240, 30,111,190,251, 30,211, 28, 64,129,240,112,186,224, 64,132,196,186,151,201,185,130, 99,128, 24,106, 53,236, 52, +189,243, 20,177,214,128,138, 11,106, 46, 40,181, 98,173, 21,136, 42,206, 8, 28, 80, 75, 65, 14,140, 24,210,136, 60,172,186,183, +209,195,138,181, 90,178, 42, 45, 48, 35,164,128,120, 51,129, 26, 33,146,239,126,165, 91, 61, 60,199,184,143,123, 91,211,207, 29, +130,237, 2, 32, 50,230,195,130,180, 36, 16, 71,212, 18, 52,178, 47,160,251,143,231,229,128,233,118,193,243, 23,183,120,120,251, + 27,126,248,251, 79, 72, 49,224,207,127,252, 26,223,124,249, 21, 30,223, 62,224,225,237, 91,156,222, 63, 96, 45, 43, 94,125,253, + 53, 54,102,252,191,255,247, 29,114,141, 40, 66,200, 69,215, 15, 83, 76,184,155, 14,136,129,209,164,224, 48, 77,120,186,104,144, + 11,197,164, 20,167, 73,215, 19,105, 74,184,187,187, 3,197,128,152, 18,142,119,183,152,142, 71,240, 52,171, 47, 25,128, 20, 25, + 7, 17,128, 98, 66, 28,233,202,102, 27,111, 82, 83, 18,157,240, 96, 19,128, 59,158, 51,198, 48, 64, 13,204,182, 63,166, 78, 38, +243,180, 40,120, 55,181,139,168,148, 42, 59, 70,247,232,156, 73, 70, 62, 14, 3, 16, 14,138,102, 13,193,239, 57, 85,252, 6,197, +141,106,103, 80, 77, 53,223,174,176,153,173,234,190,212,119,154, 21, 98,107,145,216, 71,237,193, 19,219,200,125,232,102,213,106, + 74,162, 11, 59,250, 92,136, 1, 20, 20, 82,209, 74, 53,229,179, 97, 67, 91,129, 52,237,136,200,172,127, 12,178,201, 17, 84, 56, +103, 72, 86,118, 76, 40, 73, 15, 76,161,238,151,180,203,167,169, 0,203, 53,249, 76, 30, 12, 99, 73, 79,212,239,107,140,220,182, +182,235, 74, 76,217, 47, 29, 1,105,214, 51, 61,188, 32, 21, 26, 71,104,205,129, 24, 74, 25,187,108,120, 25,121,211,186, 87, 24, + 81,165,159,162,112, 7,230,180, 89,126, 55,117,244,108,237, 9,101, 26, 60,235,218, 31,142,161,219, 23,115,182,238, 47, 37,245, +232,187,248, 77,188, 32,242,184, 76, 79, 53,211,140,234,152, 8, 44,220,147,190,200,166, 21,128,244,233,129,127,158, 99,165, 42, +221,186, 8,195,198,238, 3, 80, 68,154,178,223,131,185,189, 13, 53,123,173,163, 30,235, 34, 31,167,147, 71,185, 82,235,207,163, + 79, 9,125,167,203, 38,100, 35,218, 87,120, 24, 10,239, 98,127, 14,201, 21, 24,199,181, 46,253,215,182, 81,220,117, 61,160, 12, + 40, 88,179, 85,131,199, 65, 51,116,239, 92,199, 28, 65,233,115,196, 29, 28, 83, 76, 20, 75, 8,157,219,175, 59,102,203, 87,104, + 13, 66,213,126,126,117, 12, 85,115,142, 56, 65, 48,144,234, 9,246, 86,205, 72,218,241,250,109, 21, 72,113,213,167,156,113, 94, + 21, 72, 70,162,231, 70,173, 43, 82,154,193, 70,138,243, 4, 72, 10,192,178,204,104,210, 84, 44, 7, 66, 46,254,198,219,100,143, + 8,155,197,103,251,251, 48,156, 30,220, 19,247,186,109,185, 53, 48, 53, 4,182, 46,221, 4,166, 45,171,120, 52, 37,107, 64, 44, +183,161, 65,144,162,250,219,131,185,133,132, 24,136, 9, 21,132,104,250, 48, 45,136,245,210,102, 14,154, 24, 72,140, 64,186, 78, + 10,162, 77,108,190, 92, 16,115, 45, 35,105,137, 20,165,231, 22,156, 37,205,200,109,195,150, 51, 38,195, 51, 22,114, 8, 22, 43, +199,153, 0, 14, 19,230, 24, 48, 45, 51,206,219,134, 42, 27, 14,135, 25, 37,107, 69, 28,231, 5,183,183, 71, 44,145,241,225,225, + 9, 31, 30, 63,104,142,237,126, 66,208,170,118, 14, 58,107, 64, 36,210,139,229,144,144, 46, 23, 28, 22, 29,191,183,188,225,237, + 63,126,193,195,233, 9,247,175, 62,199,227,227, 3,182,203, 25, 55, 83, 66,108,140, 86, 11, 96,118,130, 92, 50,168, 22, 28, 38, +237, 6, 99, 12, 72,203,132,144,207,192,198,248,240,254, 1,155, 48,230,227,140, 44,222,181, 0,144, 12,105, 12,132,180,131, 53, +216,120,151,199, 67, 69, 54, 94, 39, 14,136, 49, 34,197,197, 98, 98,181,203,149,102,178, 93,177,174,159,204, 30,199, 77, 69,111, + 34, 96,139,187, 13,199, 5,113, 94, 64, 20,141,105,157, 77,180, 97,202,200,101,198,225, 56,227,197,109,196,249,227, 71,252,253, + 63,126,134, 72,195, 95,254,245, 47,248,230,171, 87, 56, 63, 62,226,225,247,183, 56, 61, 60,226,148, 47,248,236,243,151,168, 9, +248,143,255,248, 79,172,155, 34, 77, 75,217, 16,152, 48,133,136,155,121,194,178, 36,180, 90, 49,135,136,117,219,240, 80, 50,132, + 24,115, 74,224,121, 70, 12, 1, 83, 0,158, 63,127,129,120, 88,176,173, 27, 62,123,118,139,195,113, 54,139,149,236,124,247,205, + 2,146,162,190, 20,141,108,119, 43,125, 87,217, 88, 16,144,140, 76,101,157,233,174,221,100,142, 29, 61, 67,246, 12, 32,232, 14, +182,149, 58, 2, 47, 48,160, 40,204,174, 6, 85, 6,248, 62,161,170, 83,210,122,248,135,118, 84,145, 89,153,222,158,105,224, 54, + 20,139,127,116,200,135,239, 81,181,219,110, 64,136, 26, 43, 26,147,161, 79,205,147,108, 99, 93, 54,144,135, 66, 88,184, 11,227, +252,103, 8,213, 56,112,100,104, 86,231,166, 27, 30, 54,216,206, 91,209,149,163,209,238, 23,137,104, 33, 72, 49,244, 67,197,247, +217,166, 13, 82,139,101,231,231,123,206,188,237,114,253,239,101, 42,246,144,162, 42,155, 75,247, 91,218,129,183, 11,103,114, 63, + 52, 90, 39,203, 57,255,190,106, 48,243, 46,212, 6,215,188,114,208, 46,123,222,186, 21, 17, 8, 34,216,104, 91, 93,128,183,235, +111,187,239,191,162,251,249, 41, 66,245, 29, 32, 35, 2,234,251, 8,138, 74,226, 34, 77,237,227,104, 63, 75, 8, 6,172,105, 38, +162,227,193,154,183,239, 94,215, 58,134,216, 4,208,178,146,230, 16,175, 65, 68,210,174, 11, 59,189, 44, 91,207, 62,191,102,173, +239,130, 88,108,212,222,120,156,175,161,237,112,169,181,234,119, 97,158, 58,247,222, 55, 43, 90,221,226,213, 90,181, 70,106,124, + 76,173,209,206, 81,128, 46, 46,116,134,122,221,197,174, 58,147, 30, 77,140, 55,194,134, 35,214,113,180, 23,109, 30,216,130, 62, +117, 98,195,146,198,225, 82, 18,178, 75,244,122, 82,235, 54, 68,246, 81, 15, 25, 76, 69,160, 65, 59,141,174,163,129, 77, 44, 40, +238,182,106,210, 67,148, 80, 27,216,132,178, 49,250,132, 40, 43, 0,166, 89, 31,205,102,243,100, 70,224,136,104,211,181,203,150, + 81, 1,204, 4, 84,169,200,165,129, 36,140,253,191, 21, 82, 69,128,155,121,193, 60,235,165, 30, 66, 80,152, 90,173, 61, 53,146, +195,100,234,242,114,101, 47,220, 79,143,156,110, 39,213, 96,105, 36,224,160, 80, 46, 45, 88, 9,145, 68,215, 9,139,169,226, 27, + 84, 95, 99, 43,161, 24, 35, 98, 76, 72, 41,129, 98, 64, 48,189, 75, 45,205, 50, 17, 10, 2, 17,110,166, 3,164,149,254,156, 69, +102, 43, 75,109,250, 11, 70,205, 5, 92, 74,233,208, 1,199,178,122, 0, 64,138, 17, 37, 23, 85, 53,183,106, 99, 18,116,143,160, + 86,196, 6, 35,153, 34, 82,140, 56, 61,157, 64,204, 72, 41,160,214,134, 72,192,237,253, 17,105,158, 65, 33,225,227,199,247, 40, +231, 51,144,102,179, 88,140, 17, 82,109, 21, 82,138,170,184, 67, 64,156, 34, 32,192,124,115,139,180,204, 0, 51,126,255,233, 55, +188,249,251,247,152,142, 11, 98, 10,120, 56, 61,170,240,128, 24,213, 90,177,101, 89, 64, 68,216,114,214,131, 78,244,241,156,231, + 4, 78,218,193, 83, 21,252,250,235, 91, 92,107,129,196,165, 0, 0, 32, 0, 73, 68, 65, 84,114, 70,156,102, 68,138, 40,155, 6, +208, 48, 71,165, 44,237,132, 64, 61, 23,152, 25, 81, 29,175,195, 43,206,100,118, 35,233, 80, 6, 31, 59,145,120,174,207,128,168, + 52,239,160,154,118,173,233,184, 96,138, 11, 4, 19, 74, 83, 33, 19,219,232, 55,196,136,101,154,112,115,156,113,115, 51,227,116, +190,224,239,255,253, 3,206,219, 5,127,253,243,183,248,211, 31,191,197,211,186,225,227,219,247,120,122,120, 68,121, 58,225,217, +171,207, 48,221, 31,240,223,255,245, 29,158, 30, 10, 16, 2,214,124,177,151, 36,225,144, 34,150,121,209,203,135,117,116,250,148, + 87,173, 26,231, 9,241,176, 32, 26, 68,232,249,203, 47,240,252,213,103,200,151,134,251,231,247,120,241,217, 75,101,113,123,242, + 81, 41, 40,101,179, 46, 66,201,253,110,229,169,230,247,173, 54, 46, 14, 28,109,245,224,163,197,112,229, 13,223,251,105, 83, 74, +152,166, 5,137,146,205,110,248,147,151,201, 21,242,123,208, 12, 13,178, 23,112,181, 87,239, 35,108,178, 9,139,237, 22, 9,154, + 93,172, 40, 85, 40,167,128, 9, 48,197, 53, 55,221,175,161,169, 75,130,153, 16, 98, 2,219,154, 37,116,255,181,141,126,237,191, +215, 90, 59,192,165, 86, 69,202,170,154,149,255, 41, 30,179,153,101,202,250,131,254,119,245,203,251,106,242,208, 87, 63,122,209, + 42, 36, 69,174,126, 63,241, 21, 3, 73, 63,232,101, 23, 89,171,158,120,189,212,187, 77,206, 62, 31, 88, 40,147,240, 46, 27,222, +236, 78, 16,182,253, 40, 58,130,214,187,226,253,159,239,227, 87, 49,172,166,119,175,123, 93,138,167,145, 48,209,142,245, 46, 87, +164, 62,218,229,219,247,252,119,203, 85,247,160, 31,117,161,112,239, 92,155, 21,218, 28,212,137, 51,207, 75, 15, 1,106,194, 22, + 20,227,209,183,165,131,111,164,212,142,166, 29, 33, 56, 59,177,191, 23, 39, 50,252,247,212, 4, 82, 85, 81,143,118,253, 29,184, + 0, 16, 70,155,140, 59, 45,130,243, 64, 58, 68,201,178, 26, 26, 10, 64, 5, 44,138,176,133,113,250,149, 88,233,194,185,177,184, +237,159, 7, 93, 91,172,252, 95,253,153,105, 58,234, 21,155,176, 40,247, 95,245, 27,254,185,245, 24,217, 54,240,181, 3,174, 72, +125, 71, 46,173, 90, 97, 38,154, 93, 1, 66, 4, 43,145,207,181, 18,254,188,209,238, 59,228,157, 6,131,232,170, 64,218,255,187, +213, 97,215, 59, 76, 19,102, 11, 28, 99, 18,204,129, 53, 79,220, 86, 44,238, 44, 82, 29,136, 42,193, 47,167,162,239,170,213,253, +181, 20,163, 2, 74, 71,146,131, 26, 90,174, 72,243,100, 26, 8, 29,129,151,173,154, 93,123,172,187,244, 82,199,152, 98,203, 39, +148, 73, 47,182, 2,141,100,198, 24,245,130,118,246, 97, 21, 16, 85,204,209,245, 62,176, 50, 73,211, 79,167,168,174, 26, 29,183, + 19, 82,156, 65, 8,102, 85,211,213, 72, 21, 1, 79,170, 35,209,252,119, 35, 8,152, 43, 38,132,128,117, 91, 81, 75, 65,244,238, +199,247,195,186,207, 84,165, 99, 49,229, 38,193,194,228,125, 7, 70,116, 5,133, 16, 2,166,105, 66, 8,132,117,205, 54,202,208, + 95,114,123,123,211,173,111, 2,193,229,227, 3, 74,190,104,248, 68,219, 1, 39,197, 59, 62, 19, 65,196,128,144, 18,106,107,184, +189,191,193,124, 60,226,114, 57,227,135,239,254,129, 82, 11,142,135, 91, 92,158,206,104,185, 42,108, 34,168,104, 35,133,128, 52, + 69,108,143,151,238,163,159,162, 96, 94, 52,238,181, 20, 5,204,172, 91,214, 10, 44, 55,196,201, 70, 94, 86,245,164, 20,116,143, + 66, 35, 29, 12,205,198, 76,212,224,110, 14, 5, 46, 40, 57, 42,164,212, 65, 30,100, 85,115, 16,173, 60,187,208,129,236,129,169, +118, 48, 6,198,180, 28, 16,211,162, 15, 97, 94,117,231, 22,128, 22, 26, 98, 92, 48,165,128,233, 38,225,112, 32,212,203, 3,126, +254,241, 3, 30, 62,158,241,199, 63,126,137,191,252,245, 79,216, 78, 23, 60,254,250, 59,206,239, 31, 81, 78,103, 28, 63,127,137, +105, 57,226, 63,255,235, 7,252,252,246, 35, 14,135, 35,182, 90, 84,157,159,162, 6, 6, 76,179,117,184,170,168, 62,175, 43, 26, +128, 52,205,136,135, 5,147,193, 57,158,191,122,137, 87, 95,191,198,135,143, 31, 48, 79, 1,207,190,120, 6, 49,216,129, 91,126, +202,150,141,120, 59,118,119, 14,234,113,221, 0,153,152,133,193,230,130, 9,112,134,238,232,159,198,174, 41,118, 37,180,142,234, +208, 47,180, 8,219,124,247, 68,175,110,149, 3,122,183,172,158,221, 93,215, 4,181,176,120,238, 58,153, 31,184, 7,188,176,177, +248,199,162, 87,161, 40,173,161, 72, 85,101, 52,252,249, 24,239,138,212,177, 94, 24, 29, 90,187,198,218, 98,100, 69,139,141,174, +155,231, 58, 91, 23,136,221,132, 97,196, 89, 50, 58,199,198,236, 80, 74,219,163,110,107,242,203, 62, 70,127,111,201,124,238,212, +199,180,109, 79,184,219,141,117,221,186,170, 53,186, 25,222, 56, 24,220,164,117, 58,217, 80,180,155, 73,200,104,104,109,191,199, + 37,135,234,132,127, 86, 17,185, 72,172,235, 6,184,235, 5,250, 69, 73,181, 59,112,174,166, 43, 50, 98, 90, 73,118,196, 48,163, +227,249,206,179,245, 16, 93,143,205,181,253,108, 12,187,212, 61, 70,206, 85, 39, 34,193,139,136,170, 66,173,238, 32, 80,120,150, + 96,104, 33,122, 42, 27, 13, 95,119,159, 48, 50, 1,141, 81, 90,237,235,150,161,211,208, 98, 86, 53, 66,154,246, 23,154, 99,117, + 13, 55, 45, 13,108,168, 86,245,112,107,241, 55,118,241, 54, 86, 22, 93, 45,233,175,106, 87,123,246,174, 31,161,107, 6, 60,253, + 47,207,228,192,203,114, 47, 38, 58,209,111, 15,191, 33,111, 98,168,103,213,139,140,231, 97,143,221,237, 2, 59, 18,115, 9, 40, +156, 72,237,190,186,174,213, 2,119,231, 71,103, 61, 3, 53,176,145, 17,132,123,234, 96, 35,157, 2,207,147, 10,199,136, 3, 18, +105, 65,124,146,172, 48, 24,182,245, 38,239, 4,174, 28,208,202,134,167,167, 83,127, 14,155,241, 34, 92, 88,182,143,194,109, 44, + 88,142, 11, 4,218,165, 83, 32,163, 14,142, 52,200, 0,160,116,132, 57, 15,188,119,191,144,141,195, 97,239,108,181,220,249, 24, + 39, 76, 83,236,162, 64,231,110,133,168,247, 69,240, 9, 72,107,192,164,231,114,163, 8, 72, 64,224,104,226,190, 77, 27, 76, 91, +181, 20, 17,204,199,163,230,162,180,210,249, 27,100, 68,211,128, 17,163, 27, 1, 21, 9, 85,170,157,172,228,202, 94, 87,125,163, + 35, 82, 27,164, 51,132, 25,204, 13,197, 44, 10,243, 60, 89,214,120,193, 97,158, 59,136,225,217,221, 45,242,182,169,229, 70, 8, + 31,223,189, 67,109,176,253, 55,153, 44, 15, 26, 61,186, 19,103,204,203,226,217,176, 88,142, 71, 16, 19,222,124,255, 51, 62,188, +125,135,105, 86,197,245,118,186, 32, 65, 61,209,218,185, 20, 37,158, 25, 58,144,109,239,178,204, 11, 14,203, 2, 98, 21,250,108, +165,216, 56, 60, 98, 91, 87,101,222,179,118, 40, 33, 48,184, 5,180,213, 81, 92, 46,128,145,222, 29,120, 80,131,238,211, 53,164, + 37, 37,173,162,136,117,188,167,163, 84,181, 14, 49, 93, 7, 86, 40, 43, 57, 98,154, 39,164, 52,155, 39,211, 66, 2, 96, 29, 98, +136,136, 41, 96,185, 73, 72,145,240,116, 90,241,248,246, 1,239,126,125,139, 87, 95,188,198,191,252,235,191,160, 20,205,146,127, +122,255,128,211,211, 19,158,189,252, 12,135,251, 59,252,215,119,127,195,143,191,188,197,124, 60, 32,183,134, 64, 74, 42, 98,105, +152, 56, 24,103, 91,223,224, 53,103,108,230, 53, 15,135, 5,243, 52, 97, 9, 1,207, 95,191,196,231,175, 95, 99,221, 52, 9,235, +254,229, 51,196, 56,161,212,166,137, 73, 61, 7,188,117,241,161, 95,244, 74,116,210, 10,159, 41, 96, 74,169,139, 83,164,139, 6, +197, 42,109, 87,102, 13,187, 81, 35, 61, 72, 72, 44,255, 73, 44,229, 74, 21, 50,104, 82, 70,204,103,183,174,216,222,137,130, 93, +236, 21,165, 20,228,172,209,181, 77,170,146,205, 44, 42, 86,204, 18, 70,113, 40,141, 53,206,177,245,223, 75,160,246, 22,112, 0, + 71, 30,126,208, 62,230,212,149, 74,224, 17, 87,220,233,115,174, 74,237,248,202,113,209,178,141, 50,105,119, 0,235,120,123,192, +111,196, 10,200,214,134, 24,211, 89,213,186, 91,108,187, 40,203,225,233,211, 64, 28,250, 39,223,125,207, 32,223,231, 72,187,149, +137,172, 27, 99,218,145,245, 8, 18, 24,181,177,237, 5, 13,148,179, 11,148,241,201, 19,219,138,105, 72,115,124,117,161,239,193, +158, 60, 87, 91, 83,112,146,237,131,155, 40,136,197, 47, 29, 63,200, 58,207,221,243,217,141, 44,201,104, 40,238, 85, 14,161,219, + 16,253,210,232,121,217, 80,129, 19, 44,201,203, 83,209, 26,154, 77,227, 70, 68,236,222,115, 60, 44,121, 54, 97,177, 61,186, 39, +183,193, 32, 56,123,254,125,109,173,255,111, 26, 66, 51,120,231,188,139, 48, 17,195,204,142,194,183,130,105,232,227,164,239,236, +113,141, 42, 38,116,247,136,174, 2,168,255,186,125,183,235, 20,191, 94,116, 16,118,251,119,190, 78,112,235, 89, 7,237, 74,109, + 73,178,191,228,229,147,243, 15, 59,107,222,128,219,200,222,206,105,247,200, 8, 15,218, 97,102,101,151, 5, 64, 99, 29,230,191, +175,152, 78, 34,197,128,105, 74,136,172,116,192, 24, 20,210, 21, 91, 67, 22, 1,170,174,228, 70,192,142,138,201, 30,159, 54, 92, + 46, 21,203,141,102,144,139,173, 63, 60,229, 15, 59,203,105,136, 17, 55,183,183,168,173, 97,154, 39,136,136,157, 21,106,137, 12, +150, 48,168, 12,139,113,255, 93, 5,230, 88, 51,220,106,219, 77,203,168,231,142, 56, 60,205, 5,165, 49,170, 37,217, 69,171, 2, + 82,138,231,113,198,211,217,237,126,250, 61,229,178,170,174, 45, 90,113, 16, 24,243, 50, 67, 88,144,107, 53,136, 14, 16,146,106, +147, 66, 76, 90,137,213, 58,158, 57, 87,108,251, 3, 85,237,133,231,192, 93,230,167,114,255, 17,226,187,135,123,184, 65,191,214, +138,227,114, 80, 4, 99,107,120,118,123,139,217,254,146,121,219,240,241,247,223, 48,197,212,169, 94,210, 81,160,182, 79,106,181, +115,213,107,171, 56, 28,143, 56, 62,187,197,122, 58,225,111,255,253, 29, 2,116,127, 93,214, 77, 67, 76,250, 75,172,163,161, 20, +244, 48, 98,179, 4,196,168,157,123,154, 82,215,247,104, 16, 73, 68, 41,122, 1, 93,206, 39,172,235, 10,105,192,180, 36,132, 52, +245,189,217,158, 63, 29,108,204, 68,226,156,105,182, 0,155,176,131, 81, 48, 82, 4,106,222,128, 43,225, 78,233, 57,192, 33, 6, + 76,203,130,148,102,212, 38, 40, 89,163, 26, 21,167,169,214,150, 20, 35, 14,139,122,133,215,211, 25,143,239, 30,240,219, 47,239, +240,252,238, 6,255,231,223,254, 12, 22,224,221,111,239,240,248,241, 17, 15, 15, 31,113,251,226, 25,142, 47,158,227,127,254,254, + 15,252,240,230, 55,164,121,210,238, 3,140, 37, 37,213, 40, 16, 89,146,153, 86,148,185, 86,172,185, 0, 28, 48, 31, 14,152,230, + 9,135,121,194,203, 47, 95,225,197,235,151, 16, 18,172,219,138,229,120,196,205,243, 27,179,111,208,110, 44,165,233,107,128, 34, +130,153,117,140, 45, 54,177,240, 49,241,136,137,108,150,112,103, 65, 47,130, 14, 2,169, 37,119,219,100, 41, 5,173, 20, 29, 75, +219,139, 94,107, 53,219, 14, 16, 67,234, 42,103,223,169, 67,254, 25, 26, 83,204,174,217,109, 82, 59,190, 66,175,215,196,226, 50, +101,247, 76, 59, 1,206,199,135, 49, 34,164, 89, 3, 86,236,197, 11, 20,236,178,208,124,101,241,151,201,126,159, 49,206, 70,223, +135,251,228, 40, 96, 40,167,199,103, 52, 78,112, 7,173,180,162,157,100,171,109, 88,146,154,244, 34, 70,236, 51, 38, 26, 32, 11, +197,137,211,232, 40, 33, 3,151,251,201,129,180,183,198,233,120, 82,122,148, 44,119,196,215, 40, 16, 92, 5,236, 28, 11,124,146, +187, 61,216,243,215,187,229,225,113,167, 46,222,114, 49,224,222, 79, 63,138, 23, 26,112, 21,241,188,119, 82, 53,117, 96, 21, 83, + 6,135,209,140,105,137,195, 67,252,103,247,169, 31, 89,138,156,255,239, 98,187,106, 17,218, 37,249, 82,183,237, 57,133,204, 59, + 89,231, 33,136, 40,153,108,255,239, 1, 32, 26,122, 3,218, 41,245,101,119, 97, 85,119, 67, 52,253,253, 34, 13,251, 27,174,146, +242,208,163, 76,193, 52,242, 81, 72,119,201,159, 66,146,122,238,252, 46,152,200,173,153,190,190,216, 55, 21,170, 5,104, 86, 72, +238, 32,105,114, 29,215,227,133,179, 10,216,118,176, 29,215,130,208,152,186,104,238,133, 95,242,228,146, 50, 43,130,121,104, 58, +118,246, 75,223,167, 19, 84, 5, 94,204,181, 20, 2,171, 93,141,157, 46, 57, 28, 71,190,202,113, 13, 1, 58, 76, 10,120,124, 92, + 85,115,210,179, 25,180, 8,230,206,106, 31, 60,150,195,113,193,188, 76,246,190, 48,242,154, 33, 69, 69,166, 97,231,239, 31, 24, +232,235, 48, 35,159,122, 48, 15, 80, 26, 12, 96, 19, 99, 26,249,235,164,240,162, 24,212, 30,215,133,130, 2, 20, 91,201,133, 48, +219, 59, 28, 16,130,122,208, 91, 85,235, 26,199,136,144,130,226,189,163, 70, 97,251,153,230,132,187,158,213, 82,205,101, 50,126, + 94,245, 18, 70, 26, 7, 54, 44, 21,167,211,177,170, 86,137, 34,232,163, 47,152, 76, 63, 68,214,139,209,170,213,117,213, 7,254, +217,221,173,238, 32,167,132,203,233, 9,235,227,166, 81,127, 78, 82,130,138, 34, 98, 84, 28,159, 56, 16, 65,212,199, 55, 31, 22, + 76, 41,225,251,191,125,143,247,191,189, 71,152, 21, 74,145,207,151,238,113,101, 81,235, 66, 43, 13, 83, 74,224,121, 2, 88, 20, +242,194, 1,211,113, 6, 72, 69, 70,211,116,192,241,112, 68,136, 9,231, 83,197,249,124, 65,173, 13,219,186,226,114,217, 80, 10, + 97, 57, 46,230,105,214,159, 37, 55,115,132,146, 81,147,172, 42,246,249,104,140, 81,199, 31, 85, 31,210,117,205,104,181, 32,197, +164,106,122, 35, 53,165, 16,144,230,164,160,153,192, 26, 23,185,173,246,224,113, 7,112, 76, 49, 98, 78, 0, 33, 35,159, 46,168, +107,193,195,239, 15,184,153,102,252,235,255,253, 55,196, 57,226,227,187,247, 88, 63, 92,240,240,254, 17, 55,207,159,225,230,197, + 11,252,207,223,254,129,191,255,248, 11, 66,156, 77,213, 45, 56, 76,179,122,113, 91,211,221, 87,208, 19,162,244, 11,157, 49,223, + 28, 48, 77, 9,199,153,241,242,243,207,240,217, 87,175,145,226,132, 92, 10,114,201, 56,222, 29,109, 12, 56,118,211,210,170,138, + 18, 69, 61,160, 26, 7,232,246,151, 29, 16,163, 9,106,206,200,219,182,139,153, 36,248,217, 95,107,189,122,201,217, 20, 82,253, +224,204, 14,216,216, 17,173, 68,237, 39,106,147,211,159, 67, 15,222, 48, 78, 39,123,193,166, 52,245,241,121,255,206,196, 70,194, +150,185,173, 54, 22,244,192, 29,213, 10, 84, 11, 20,210,125, 23, 40, 88,144, 72,208,189,159, 42,117,244,239,144, 11,234, 86,144, + 87,205,231,238, 99,185,214,180,139, 51, 63,150, 42,231, 91, 31,123, 19,211, 21, 61, 77,174, 40, 85,134,131,149,138, 86,178,117, + 3,238,200,170,253,100,225,224,234,122,116, 48,146,236,188,222, 96,238,145,165, 87,185, 10,178, 11, 58,150,129,106, 22, 59,172, + 59,176,196,221, 5, 59,118,188,142,100,135, 8,203,209,209,251,232,120,182,248,218,190,171,197,160,140, 57,119,191,181,138,108, + 23,227,126,175, 26,236,103,246,184,211,224, 35,112, 11, 21,231, 29, 9,175,115,231, 3,239, 46, 12,253, 53, 1,187,159, 61,120, +146,159,185, 26,140,168,135,125,208,146, 11,148,170,137,102,247, 65, 78,173,162, 90,250,215, 16, 98,106,209, 29, 3, 15,186, 97, + 19, 21,117,214,214, 35,118,247, 99,113,105,227,146,135,157,163,254,161,244, 14, 25,163,203,237,191,206,104,138,154, 24, 55,182, + 27,221,145, 46,109, 23,244,226, 46,130,182,235,186,219,149, 16,209, 47, 6,222, 37,197,117, 7, 5, 62, 33,211,185, 37,194,241, +198,221,182,122,205, 65, 39,187, 92, 53,194,182,237, 98, 87,101,100,209, 96, 76, 63,221,166, 75, 76,200,181,162, 88,152, 88, 52, +232, 10,184,107,139,117,253,213, 87, 87,114,149, 29, 65,204,120, 58,101,156, 62,174,218, 92,216,243, 93, 60,217,144,168, 67,111, +244,223, 13,199,155, 69,167,129,172, 13,105,222,242,136,106,118, 99, 97, 27,161, 47,236, 98, 62,217,135, 48,233,154, 78,255, 74, +212,133,179,105, 74,131, 21, 97,159, 65, 10, 64, 12,232, 69, 68, 35, 93,153,196, 20,205, 94,171, 33, 86,243,188,160,201,134,243, +249,178,211,102,145, 21, 11,154,104,234, 9, 71,101,219, 64, 34,253,125,240,115, 44, 54,214,160, 1,183,106, 97,247, 15,197,226, +227, 92,197, 89,131, 50,138,197,230, 52,110,213,137, 81, 71,197,143,143, 23, 83,225, 1,151,245,132,210, 26,238,110,110,240,225, +240,128, 16, 34,222,124,124,196, 41, 63, 97, 90, 22,235, 21,117,215, 22, 83, 64,136,138, 84,172,173, 34,215, 2,212,134,187,251, +123, 28,110,110,112,121, 56,225,151,255,250, 59,146,237, 81, 90,222, 80,242,138,184, 44,250,187, 16,144,107, 65,171, 43,142,203, +140,144, 98,255,181, 20, 2,230,152,208, 74,213, 25,127, 10,192, 69, 15,149,199,243, 25, 11, 8,199,229, 0, 1,225,116, 94,113, +179,108,184,155,143,152,150, 3,206,151, 51, 24,132,137, 25, 23, 84,125,152, 72,173,217, 1,132,100,182, 40, 50,251, 28, 53, 96, +219, 86,148, 90, 77,209,216,144,115, 54,203, 91, 66,140, 90,169, 5, 48,114, 85, 60,111, 98, 69, 0, 34, 68, 80, 72, 8,161, 98, + 78, 5, 4,198,118, 41, 64, 3,182, 83, 65, 20,198,159,255,229,175, 56,222, 29,240,240,251, 3,206, 15, 23, 60,188,125,135,155, +231,119,120,254,234, 37,190,255,199, 79,248,238,167,159,144,210,100,188,124, 96, 49,198,125, 43, 21,144,166, 83,136, 16,176, 1, +216,234, 6, 33,198,116, 92,144,150, 9,203, 28,241,234,243,215,248,242, 15,223, 96, 45, 5, 13,130, 75,222, 48, 29,149, 34,215, +170, 90, 23,153,213, 97, 80,179, 10,180, 82, 74, 8, 97,178,228, 50, 43, 6, 45, 62,195,247,210,125, 92,109,212, 51,118, 13,135, +143, 57,115, 70,176,233, 68, 12, 81,187,127, 27,223,249,197,184,199,174, 86,169,187, 28, 65,205, 60,231, 96,164, 56,139, 21,117, + 56,133,143, 69,155, 19, 1,221, 79,106,151, 41, 39,237,186, 9,164, 98,165,210, 76,200,103, 2,163, 24, 76, 48, 38,190,104, 68, +105,162,214, 21,102,144,249,188, 61, 89,172, 51,202,173,187,132, 77, 19, 36, 23,181, 0,217,244, 39,196, 56, 98, 84, 5,136, 20, +213,227,223,109, 81, 13,149, 70,128,205,245, 94,220,160, 50,221, 89,224,137, 91,108, 97, 65, 78, 59, 83,101,186,163,116, 75,173, +118,161,183,190, 26,104,187,224,143, 61,124,167, 23, 92,142, 37,197, 0, 46,245,233,179, 17,226,250, 72,217, 92, 9,194,116,181, +207,143,209,254, 78, 82, 32,136,166,252,109,198, 50, 81,106,161, 7,189, 0,172,160, 19,210,189, 44,177, 22,191,132,134, 16, 38, + 85,100, 75, 53,198, 61, 13,254, 57,211,224,250,203,216,103,179, 99, 80,141, 45,224, 42,237,102,214, 35,236, 24,243, 29, 56, 67, +212,197, 88,213,220, 44,112, 65, 86, 15,165,177,239,181,212,206,176,104,173,161,126,146,213,125, 45,116, 84,113,218,136,182,182, +207,181,217,106, 83,212, 46,204,230, 85, 38,132, 49, 45, 49,104,144, 72,222, 53,142,195, 94,133,189, 90,127, 47,234,130,158, 37, +108,105,147, 34, 46,168, 99, 27,119,203,248,236,233,186, 35,173,197,117, 39,166,241, 86,179,129,197,133,182,254,255, 23,155,240, +184, 48,144, 96,171,156, 29,217, 80,164, 42,118,181, 23, 48, 50,210,219, 10,161,212, 81,220, 5,243,161, 7, 75, 98, 19,115, 15, +120, 66, 33, 27, 35,133,125,162, 4,224,178, 21, 60,158, 54, 76, 11, 27,126, 91,163,158, 99, 48, 72, 26, 41,114, 58, 52,128,227, +140,101, 57, 66,154,190,135,144,136, 82, 76,226,197,131,182, 87, 81, 71,250, 51,253,111,227,119,179,118, 51,245,169, 16,135, 73, +155, 54,118, 95, 32, 33,116,112,143, 10,254,244, 41, 3, 8, 21, 28,180, 83,143, 97,181, 38, 36, 65, 74,195,182,109,136, 86,140, +232,107, 28, 17, 34, 97,107,130, 92,172, 40,170, 38,208, 76, 10,241, 42,230,226,136,213, 70, 32,201,242,137,201,170,161,224, 59, +157, 93,149,217, 28,245,111, 59, 1, 45, 4,128, 57, 38, 72, 17,212, 86, 16, 19,163,173, 5,151,156,149, 52, 87, 10,150,227, 1, + 89, 26, 78, 79,143, 64, 80, 1,133,127,217, 41, 36,179, 89, 40, 93, 43,214,134,124, 89,241,236,217, 51,220,221,220, 35, 36,198, + 63,254,243,123,188,253,240, 14,183,119,247,144, 42,200,235,170,135, 16, 15,197,110, 35, 29,253,205,243, 2,134, 50,212, 11, 59, +163, 88,191,144, 24, 2, 74,187, 96, 93, 47,144, 74,216, 46, 1,113,206,126, 5,129, 74,197,211,195, 35,166,103, 71,164, 20, 33, +152,112,190, 60,234, 5,212, 60, 88,130,187,151,158, 64, 72,156, 16,131,238,112,214,147,142,127,162, 93,158,109, 83,148, 98, 58, + 76, 6, 48,209, 47,161, 20,181,206, 48, 3,113, 78,160,121,177, 46,102, 67, 96, 5,255,215,220, 32, 20,176,157,129,146, 43,254, +248,215, 63,226,249,139, 59,156,222, 62,225,242,112,198,195,239,111,176,220, 63,195,179, 47, 62,199,247, 63,190,193,119, 63,252, + 12,142, 19, 2, 43,111,126, 73, 1, 83, 12, 40, 37,163,150,162,127,159, 24, 80,108, 44, 45,194, 72,135, 5,135,148,176,196,132, +151,175, 94,225,213,215,223,224,148, 87, 76, 41,225, 92, 42,206, 91,198,171, 47,238,251,184,213,187,202, 90, 93,160,150, 44,196, +135, 81,107, 67, 41,217,198,194, 35,123,222,255,101,154, 25, 21, 16,153,232, 40,144,147,182, 20, 24, 75, 78,150,115,248,140, 37, + 67,229,210,204,179,207, 54,194, 87, 50, 23, 76,133, 29,236, 32,241,157,181,119, 91,215,157,150,170,156,201,214, 73, 41, 37, 69, +112,216,225,214, 90, 49,116,172,168, 67,162,233,193, 46,174, 5, 48, 10, 32,211,142,215,221,148, 85,175, 1, 39,164,250, 10,120, +151, 80, 17,130,250,208, 21,109, 10, 5,250, 32, 40,144,130,117, 77, 65, 85,252, 36,209,113, 62, 0, 41,185, 11,191, 18,235,200, +121,143,216, 85,161,215, 96,120, 59, 63,187,217, 26, 34,248,101,219,187,115,116, 31,115,179, 21,138, 90,166,168, 23, 61, 42,224, +132, 22,240,134,146, 65, 51, 33, 95,199,167,181, 14,252,113,235, 95,143, 68, 53, 40,147,127, 7,176,127,214, 83, 10,187, 7,219, +212,199, 2,163,206,177,117,148, 74, 8,239, 4, 28, 14, 22,162,196, 16,112,119, 45, 64,236, 79,104,122,233, 43,211, 64, 32, 89, +186, 86, 68,196, 85,206, 3, 53,236,222,103,180,134,138, 2,174, 1, 20,141, 11,208, 4, 34,185,175, 7, 66,138, 87,133, 78,105, +150, 83,189,203,254,246,226,161,249,159,245,137,229,141,250,120,186,117,160,140,135,230,120,135, 92,247,129, 65,162,250,147,158, +158, 78, 52,198,255, 77,118,194, 79,187, 80, 6, 37,230,218,126,231,100, 65, 23,101, 90,145,231,173,245,248,231,158,168,103,107, + 86, 48, 26,170,145, 27,251, 82,252, 42,129, 15,210,108,146, 99, 54, 67,182,164,184,206,200,177, 80, 25, 91,137,105,145,101, 39, + 64,211,137,146,159, 3,165, 86,181,238, 34, 32,151, 13,185,232,228,140, 3,107,163, 64,132,100, 68, 57, 50,241,227,126, 53,235, + 84, 57, 69, 39, 52,156, 30,207,200,173, 98, 54,246,132,199,213,178, 21,141,250,243, 20,211, 23, 45, 88,150, 4,145,134,148,102, +148,186,106, 87,239,228, 75,140,104, 91, 66,179, 16,174,208, 89, 80,104,210,243, 38,184, 91, 55,165, 99,110,217, 50, 67,152, 26, + 18, 3,133, 9,161, 53, 4,179,249, 53, 5, 45, 96, 74,140,148, 38,136,173,190,117, 20, 31,177,174, 89, 21,252, 65,147, 58,153, + 8,145, 35, 2, 7, 76, 32, 72,205,250,249,132,164,157,185, 77,120,115,205,104,104,136,173,217, 95,196,104, 1,185, 84, 80,140, + 61,112, 68,177,155,122, 57,171, 80, 78, 80, 45, 12,128,155,165,179, 89,220,104,105,130, 41, 36,156,202,218,191,156,188, 21, 28, +231, 25,191,127, 60, 97,189,100,204, 81,195,225, 17, 72,247,227, 18,145,183,130, 82, 5, 37, 55, 48, 21, 84,105,184,125,113,135, +116, 55, 99,125,218,240,235,247, 63, 96,154, 34, 98, 36,180,173,162,172, 89,125,226, 48,188, 32, 68, 67, 71,152, 16,231,201,212, +178,163, 43,139,196,104,182,183,220,158, 50, 46,231, 21,156,108, 44,212, 76,133,106,194,136,167,211, 9,199,199, 39, 28, 38, 29, +251, 79,243,140,202, 5,113,215, 77,184,248,173,239,124, 2, 97, 91, 85, 80,182,220,206,104, 84,177,157, 78,224,152,112,156, 15, + 10, 99, 41, 69, 5,100, 89,187,224, 48,105,240, 12,113, 4,183, 10, 9, 85, 15,141, 38,200,181, 25,246, 18,200, 69,240,245, 55, +223,226,254,238, 25, 78,143,103,172, 79,103,156,126,123,135,112,127,143, 23,175,190,192, 15, 63,255,132,191,127,255, 70,153, 31, +236, 69, 86,192, 97,154, 80, 74, 85,241, 7, 65,255, 30,126, 82,147,210,243, 98,138,136, 83,196,171,175,191,196,235,111,191, 65, +169, 85, 15,230, 24,241,240,238, 29,238,110,143,184, 57, 44,168, 16, 5,199,193, 95,126,189,192,180,225, 77,125,127,181,247,135, + 7,203,135, 87, 53,177,189, 8,164,197, 87,107,202, 64,110, 36,157, 95,238,121,195, 77,218,128,173,128, 64,246,123,244,171,161, + 41,231,152, 24,170, 69,160, 10, 97, 65,181, 54,162, 39, 78,121, 86,114,140,163,243, 48,133,111,112,218,159, 5, 45,120, 60,105, +173, 2, 4, 45,217, 66, 52, 93,137,253,157,185, 85, 84,179,126,138,193, 69, 24,214, 85,217,120, 22, 34, 64, 86, 95, 50, 60,110, +181,209, 64, 5,155,240, 74, 58, 38,149,117, 71,237,151,166, 69, 32,239,173,126,238,131,213, 93,106,219,137,203, 67, 23,213, 4, +251,220,244, 82,178,142,130,209, 89,222, 93, 40, 7, 87,241, 15,203,229,126, 31,220, 76,245,175, 59,125, 66, 11, 12,106, 1,212, +170,121,196, 25, 21, 64, 69, 5, 7,160, 86,128,155, 0,145,187, 16,178, 59, 89,200, 63,103,101,252,235,251,136, 62,157,241,245, + 4,147, 11,153,164,179,249,153,154,217,231, 70, 23,184,167,255,145, 17, 47,135,168,208,108,123,126, 65,146, 42,223,175,146,245, +140,192,213, 68,193, 86, 96, 2, 87,234,157,101,109, 58, 95,210, 56,100,235, 64, 81,212, 18,107, 49,151,174, 92,103,211, 32, 48, + 70,196,185, 79,170, 28, 6, 84,107, 54,239, 60, 13,134, 60, 12, 12,212,154,185, 98,164,167,243,169, 24,145,187, 88, 76, 45,120, +117,160,180, 93,188, 72, 98,209,158, 24, 88,224, 61, 31,192,200,130,108,164, 70,116,135, 6,117,135,136,235,133,220,154,167,231, +186, 79, 10,212, 94, 32,238,193,247, 76, 65,183, 48,210, 8,120, 9,196,168,253, 66, 39,203,250,142, 8,216, 84,108, 22, 77, 68, +104, 22,185, 96,217,241,206,175,112, 29, 67,206, 10,247, 18, 8,166,164, 13, 25, 71, 86,202,154, 73, 69,138,219,138,137, 16, 34, + 27, 67, 72, 16, 34,112,202, 21,167,211, 69,149,236, 70,240,116,222,138,239,199,217,190, 23, 97,194,116,152, 16,226, 12,176, 58, + 15,202,118, 65, 41, 69,159,123,183, 41,154,109,215,249, 12, 74,146,172, 86, 44,235,148,150,186,102, 67, 17,207,149, 13, 93,171, +177,127,128,199, 27, 83, 0,102, 86,232, 22, 37,251,254, 11,120, 14, 72,105,238,113,229,243,164,187,245,143, 79,239, 81,132, 48, + 91,164,157, 64,227, 95, 83, 72,168, 85,215,146,193,237,177,240,169,159, 78,244, 74,205, 70,220,180,179,162, 74, 27,170,102,135, + 4,224,154, 82, 36,162, 84,155,102, 2,135, 67,140, 8, 81, 61,117,190,236,223,242,134,231,247,207,208, 90, 67,174, 27,110,110, + 15, 40,235, 5,151,243,134,152, 84,192,149, 98,232,227,104,183,152,229, 77, 47,190,249, 56,227,249,103, 47,192,129,241,230,251, +159,240,241,189,178,205,217,172, 31, 66,158, 61, 77, 61,125, 42, 26, 13, 44,165,136, 41,164,158,154,196,236, 66, 13, 29,109,157, + 79, 23,148,220, 16,130, 94, 84, 53,107, 7,199,182,159, 20, 8,214,203,138,156, 55, 16,128,155,227,130,155,195, 17,174,125, 38, +168,239,157, 44, 27, 92, 64, 40,173, 32,111, 43, 98,210,151,225,241,253, 35, 66,152,112,115,127,131,249,176,152,221,193,132, 53, + 4,164, 73, 17,171, 26, 90,209, 32,117, 3, 33, 43, 77,169,232,131, 83,138, 96,203,130, 47,191,124,141,219,219,123,108,107,198, +250,116,194,187,223,127, 3, 29, 23,188,124,253, 26,191,252,246, 59,254,246,247,159,144, 91,213,208, 21, 38,204,204, 56, 46, 51, +154, 8,182, 53,163,150,134, 52, 45,106,249,176,240, 20, 78, 81,139, 46, 6, 94,127,245, 37,254,240,167, 63,232,184,169, 53, 28, +110,110,112, 62,157,208, 32,184,127,118,175, 98, 64,182, 0, 13, 67, 50,122,110,181,171,122,115,206, 93, 44, 21, 66, 68,224,104, +126, 83, 26, 76, 50, 10, 90, 64,149, 2, 49, 65,220,232, 46,198, 97,143, 30,253,233,236,243,128,148,146, 2, 67, 60,102, 52, 68, +176,217,146,216,114, 57,197,146,199,196,158, 15,223, 37,182, 58,160, 53, 74,171,211, 98, 96,219, 76,136,231, 98, 58,150, 65, 10, + 52,113,144,231,222,179,137,127,170,135,110, 48,247, 93,158,170,237,131,146,201,124,231,198,132,152,162,226,125,197, 2, 34, 12, + 79, 90,107, 70,117,241, 27,196, 68, 61,109,164,197, 25, 97, 75, 80,250,229, 40,166, 44,215,240, 11,227,171, 95, 51,200, 52,235, + 27, 67,153,236,110, 13,217, 41,179, 97,221,181,123,200,175, 98, 36, 29, 41, 7, 23,103,113, 15,193,129,219,222,104, 40,243,197, + 4, 77,158, 40,181,211, 79,233,250,199,220, 3,221, 35,239,254, 60,222, 89,232,164,141, 24, 77,178,181, 68, 96,211,215,208,117, + 94,232, 85,218, 87,235, 36,183,102, 59, 98, 2, 20,214, 97, 19, 37, 95, 21,185, 38,136, 49, 96, 63,250,191, 97,215,209, 27,202, + 53,197, 62, 90,246,231,211,177,170,123, 43, 89, 23,132, 88, 71,172, 59,102,233, 64,154,214,106, 95, 57,117, 15,191,115, 12,118, +172, 5,234,217, 1, 67,205, 14,115,143,212, 82,122,197,224, 9,108,181,238,246,227,123,239,255,149, 64,116,183, 18,105,215, 22, +172,253,175,107,117,136, 79, 33, 59,177,157,214,181,157, 31, 64, 68, 93, 96,250,105, 60,182,211, 10, 5, 35,224,196, 57, 12,100, + 29,102, 8,187,160,176, 93,113,224, 44, 20,152, 96,215, 45,160,202, 28, 1, 98, 36,196, 96,220,244,214, 80,170,139, 94, 71,126, +185,223, 93,167,199, 21,231,203, 10, 13,129, 12,157, 80,184,143,138,243,226,133,154,224,112, 60, 2, 50, 28, 16,121,205,166,229, +209,127,174,231, 70,177,243, 93,174,132,159,180, 15,117,114, 90,164,115, 49,160,147, 6,213,251,120, 96, 81,208,233, 89, 36,187, +239, 20, 48, 37, 44,218,212,197,164, 35,123,160, 91,174,223,127,124, 64, 16, 75,160, 51,140, 47,243, 72,163,108,162, 17,197, 49, +106,199,239, 98,118, 47,148, 35, 72,247, 31, 77,164,123, 5,129, 6,166, 73,213,151, 40, 86,241,232, 31, 32,108, 12, 97, 59, 0, + 92,125, 94,107,237, 35,123,102,198,221,237, 13,206,219,134, 45, 23, 5,157,136,114,174, 67, 72,160, 86,213, 70, 87, 43,170, 52, +172,219,138, 38,108, 22,186, 9, 47, 63,255, 28, 55,247,183, 56,191,127,194,175, 63,255,140, 48,205, 16, 41,144,102, 59,220, 24, +108, 52,106,246, 40, 49,161, 89,138, 56, 76, 9,231,181, 98,221, 54, 76,193, 84,247,181,168,109,171, 10,182,146,193, 49, 98,138, + 13, 69, 51,230,187, 7,214, 61,197,101, 43,168,169, 90,210, 19,227,238,120,192, 41,158, 20, 56,227, 1, 52,212, 44, 29, 74, 64, + 80, 64, 68,173, 5,107,222, 84,240,112,183, 64, 64,216, 12, 8,224,214, 10,133, 98,204,134,146, 92, 65,161,170,205,193,216,211, + 1, 4, 41,250,136,124,241,234, 21,158,223,221, 64,114,193,229,233,140,247,191,191,199,114,115,139,207,190,248, 2,239,222,190, +197,247, 63,252,130, 75, 1,166, 37, 98,142, 17, 83, 36,220,164, 25, 16,224,124, 89, 53,212,102,158, 16,167,164,251, 44,142, 61, + 96,100, 78, 9,223,124,243, 26,127,248,246, 15,221,226,183, 44, 11,178, 8, 30, 31, 30,112,255,217,103,152,230, 5,210,170,170, + 57,141,165,225,138,117,181,103,196, 43,175,236,222,166,164, 35,248,193, 59,111,246, 82, 87, 25, 52, 53,191, 56, 52,117, 75,127, +237,182, 21, 29, 45, 55,128,194, 2,226, 4, 70, 67,222, 86,253,124, 12, 62, 65, 36, 8,211,212, 5, 34,181, 22, 45, 52, 88,172, + 35,147,206, 70,102, 87,132, 91,196,173,142,217, 27,234,166, 7,100, 76, 9, 49, 78, 96, 54,203,145,237,166,216,237, 50,180,231, +177,235,127,153,166, 73, 47, 76, 19, 71, 6, 98, 72,212,207, 55,196,136, 52, 77,250, 93, 86,197, 94,170, 51,142, 17, 16,140, 73, +174,233, 74, 32,179,101,217,243, 44, 50,226, 65,245,244,100,219, 35,203,200, 31,232, 72, 88,236,118,169,122,248, 50,135,157, 48, +234, 26,136, 2,139, 46,149, 93, 4,235,216,167,162,123,192,155,140,172,238,108, 23,168,238, 14,197, 0,114, 4,169, 1, 64, 53, +177,172, 82,247, 26,118,184, 82,227,154, 11, 25,215, 2,102,207,227,253,126,126,136, 4,181,160,182,124, 4,111, 7,197,115,189, + 7, 49,173,217,168,222,105,106, 3, 37,107,232, 86, 41, 72, 83,236, 41,121, 30, 61,218,176,179,206, 25,125, 12, 77, 64,209, 4, + 89,189,203, 55,215, 0, 25,207,156, 2, 36, 24,147,191,201,192,153,186,197, 87,118,123,104,207,176,223,215, 34,210, 84,213,156, +162, 21,236,114,181, 18,242, 46, 94, 61,206,158, 55,110,211, 21,183,198,238, 10, 51,234, 10,247, 1,185,146,174,231, 48,241,168, +140,213,147, 84,233,225, 62, 61, 45,112,167,240,215,241, 57,119, 75,160, 51, 33, 58,132,133,130,185,227, 77, 69, 46, 35,240,136, + 12,236,229,147, 0, 29,181, 59, 61,147,250,207, 19, 48,162, 98,217,124,242,205,118,252,173, 86,219,167,171, 0, 46,217, 51,225, +151, 59, 1,200, 46, 48,181, 54,193,133,175, 44,132,146, 27,158,206, 43,114, 89, 17,120, 66, 79,229, 53, 96,117,182,238, 92, 0, +117, 75,221,104, 56, 24, 8, 38, 60, 19,180, 92,237,251,245, 34, 71,250,218,161,235, 69, 26,140,138,103,128,182,174,197,224,142, +243,101, 27,155,117,184,148, 0, 83, 32,108,246, 14,116,190,133, 77,103,210,180, 96, 74, 11, 66, 32, 76,203,130,121, 89,240,244, +116,214,233,247, 60, 33,196,128,182,109, 96, 27,177,239,115, 19,216, 24, 24,213,127,246,170,158,252, 82, 43,162,152,250,181, 54, +233, 73, 74,189, 63,183, 67,131, 13,106,209,122, 38,180, 83, 58, 9,193, 80, 73,213,186, 69,110,130,195,225,160,150,177,156,177, +149,130,105,158,193,212,208,138,104, 53, 34, 10, 9,217,114,193,121,203, 40,165,130, 24,168, 53, 35,166,136,207, 62,127, 9, 10, + 1,111,126,248, 9,151,167, 51,194, 52, 97,187, 20, 61, 20, 57,106,154, 17,233,139, 26,205,239, 14, 2,164, 20, 28,167,132,211, +166,184,207,121,154,209,154,224,241,114, 65,110, 64, 44, 21, 91, 43, 88,150, 9, 85, 54,108,173, 34,182, 97,201,209,135, 45,163, +228, 13,210, 52,253, 77, 59,235,128,251,231, 17, 92,139,206, 28,169,161, 73, 70,105, 27, 66, 22,112,156, 0,106, 40,185, 34,205, +139, 66,115, 8, 40,219,134,154, 55,144, 84, 76, 49,154, 64, 75,201, 86,212, 54,212,118, 70, 99, 2,144, 76,217,169, 47,218,156, +102,188,248,226, 91,204,199, 4,217, 8,235,229,132,223,127,250, 25,247, 47, 95,225,254,245, 43,188,127,243, 43,254,254,195,175, +248,253, 82,112,115,156,112, 8, 1, 19, 1, 55,243, 1, 68,140,199,147, 90,244,152, 24,211,172,187,163,192, 73, 41, 97,196,152, + 67,196, 31,191,253, 6,175,191,125,133,181,102, 77, 15,154, 38,132, 41,226,237,175,191, 33,196,136,187,187, 91,163,167, 77,125, +132, 45,102,133,169,149,250,193,230,201, 88,251, 3,163, 39,147,241,200, 14, 47, 85, 95, 88,207, 41,142,182,115,231, 64, 0,162, +238,218,172, 56,148,162,227, 93,237,156,146,249, 89,175, 41,217,138,148,213,142,133,236, 34,108, 77, 71,190,129, 8, 85,198, 37, +161,103,107,177, 46, 38,216, 62,180,234,142, 29,238, 25,133, 37, 94,149, 1, 84, 33, 29,197, 27,222, 28,137,167,209,245,218,120, + 13, 70,190, 14, 49, 64,160, 89,194, 41,165, 93, 2,211, 80, 35,131, 77,152, 83, 75, 31,139, 18,196,160, 52,178, 11, 96,113, 17, + 97,238,177,155,174,226,245,125,103, 8,100,145,152,118, 41,197, 1,220,161,171, 60,244, 29,137,207,199,236,192,149,197,205, 47, +213, 62,146,247, 34, 44, 4,112,141,168, 53, 91,151,101,217,237,214, 85, 73, 53,129, 90,105, 59,177,156, 77, 9,120, 31,196, 34, +198, 66,101,180,170,209,195,112,159, 50,138,117, 32,209, 20,236,220, 87, 39, 62,245, 8, 59, 50,224,222, 58, 58,242, 89,170,217, + 31, 27, 2, 8,173,242, 53,152,197,216,241, 46, 92,172,214, 73, 15,177,166, 78, 76,122,168,139,104,206, 54,211,208,217, 55, 75, +106, 33,143, 90,165,214,213,229,189,168,178,157, 48, 35, 64, 32,216,154, 54, 34, 82, 42,216,215, 3,245, 90,244,233,211,164,234, +239, 80,207, 69,119,106, 98,216,177, 3,116,189,214,139, 76, 43, 90,219, 46,239, 0,198,115,124, 90,168,120, 0, 0, 32, 0, 73, + 68, 65, 84,240,137,192,222, 86, 41,246,129,249,164,134, 45,144,200,191,239, 79,145,184,251,247,186,237, 46,147, 38,205, 70,209, + 38, 34,244,247,236, 19,250,158, 91,250, 96, 43, 5,101,149, 72,119,114, 48,128,205, 92, 2,228,157, 46, 11, 66,212,149,169, 71, +186, 42, 7,192, 44,160, 65,197,102,170,250,102,156,183,140,243,233,130,214, 8,211, 18, 58,130, 90,164, 94,217, 68,165, 86,148, + 92, 48, 47,179,210,222,164, 32,198,128,203,101,181,181, 47,239,212,238, 86, 96,187,125, 76,194, 40,168,125, 93,197,205, 2,246, +168,243, 37, 56, 4, 36, 11, 98,209, 34, 41,244,207, 47,134, 69,181, 49,246,125,177,217,173,167,195, 12,106,132,148, 38,164,152, +112,185,188, 87, 82, 31,239, 86, 8,166,124, 15,113, 66,163, 19,106, 43,152,211,132, 64,140,203,122,129,228,138, 45, 16,182, 82, +176,149,130, 8,199, 98, 90,178, 69,163, 6, 65,188,242, 22,187, 13, 98, 63,146, 42, 68, 72,204, 72, 33, 40,121, 78, 4,201,148, +170,203,178,128, 4,200,173,161,136, 32,113, 66,226,128,210, 52,146,180,102,253, 75,231, 92,181,122, 7,247,151,239,112,123,192, +221,243,123,188,255,253, 29,222,252,240, 6, 20,185, 31,138, 4, 32,204, 51,152,253,162, 2,230,200,216, 74, 83,168,204, 86, 44, + 75, 59,129,161, 35,184,146, 11, 78,167, 21, 33, 45,200, 77, 21,183,199,227,130,119, 31, 46,104, 40, 22,109, 90, 1, 25, 54,161, +142,206, 21,133,233, 48, 19,150, 99, 68, 91, 5, 21, 69,177,144,165,161,110, 25, 56,120,231, 24,176, 44, 19,210,113, 65, 94, 43, +182,109, 69,206,185,115,153,117, 20, 11,100, 52,112, 61, 1,200, 93,100,209, 32,224,214, 80,203,134,103,247,247,248,226,229,159, + 16,166, 3,176,109, 56,157,206,120,255,227, 47,184,249,236, 57,238,191,122,129,223,127,251, 29, 63,252,227, 71,252,190, 94,112, +179, 44,184, 73, 17,145, 4,199,229, 6, 32,194,211,233,130,203,101, 85,181,251,205, 2,137,198, 57,247, 93, 36, 11,190,250,227, +215,248,246, 79,223,224, 82,139, 30, 68, 49, 65,152,241,248,248,132,243,233, 9, 95,126,249, 21,110,150,131,118,177, 83,234,135, +141,234, 55,164,163, 80, 91,175,234,155,141,150,232,250, 0,138, 81,201,132,165, 88,232,129,141,211,106, 67, 51,246,179, 18,161, +236,197, 35, 2,199,128,154, 27,106,174, 8, 38,216,114,254, 65, 12, 97,215, 37, 21, 20, 27,251,235, 88, 61,246,223,191, 89, 30, +117, 12,220,119,188,222,142,149, 90, 45,100, 68,192,209, 43,231,134,146,183,171,238,201,119,203,149,138,229, 21, 39,163,132, 21, + 48,212,218,214,227, 77, 99, 48,226,148, 41,137,141,152, 71, 96,227, 83, 3,141,117,180,231, 45,246,176,129,251, 40,163,117,145, +152, 31,216,222, 49,177, 71,151, 54,183, 91, 1, 34, 81,119,255, 33,118, 59,119,181,145,176,239,250,154, 40, 46, 51,154,114, 91, + 33, 62, 90, 84, 42,120,193,196, 79,112,139, 97,235,172,117, 64,181, 38,187,112,194, 29, 96,103,196,116,170,111, 86, 6, 20,167, +211,215, 84, 4, 37,162,254,217,128, 65, 89, 28,220,126,233,171, 7,238,236,242,235, 14,156, 93,128,103,234,222, 64,123,116,174, + 34, 51, 69, 4,185, 20,179, 49, 38,237,164,106,179, 4, 65,116, 40,142,114,201,119, 24, 84,244, 96, 63,197,125,218,178,168,167, +134,210, 80,244,171,189,176,237, 28, 0,229, 19, 62,188,147, 11,249, 58,119,187,255,179, 81,179, 57, 82,185, 88,222, 5, 72,145, +190, 16, 71,185, 10,132, 89,241,164, 84, 59,242,215,133,186, 98,205, 86,103, 62,224,147, 17, 60,239,211,245,104, 71,229,181, 78, +116, 23, 28, 67,123, 40, 12,212, 45, 84,119, 30,248, 94,196, 54, 45,198,201,236,102,246,116,219,190,221,178, 9,106,233,207,179, +236,224, 74, 2, 91,211, 4,213,108, 53, 79, 82,132,116, 94,132,199,198, 6,235,210,125,253,162, 43, 2,119, 79, 84, 93,163, 88, +177, 90, 81,241,116,186, 96, 91, 11, 74, 83, 43,156, 23,202,100, 43,148, 42,162,211,132, 38, 64, 99, 28,110,143,186,166, 50, 18, + 91,217,178, 82,227, 24,150,105, 95, 59,167,190, 51, 6, 44, 45,115,159,220,200,118, 97, 11, 60,134, 55,128,211,132,227,172,153, +230, 5,130,164,121, 84, 88,169,161, 81, 3, 7,199,188, 86, 76,139, 42,251,181, 17, 6, 98,156,193, 28,112,217, 46, 96, 36, 84, +108,216,234,134, 4,193, 20, 2, 98,152, 17,252,157, 43,213, 98,103, 35,114, 22, 19, 25,234,133, 94,155, 32, 2,154, 55, 77, 18, +145, 20,150, 11,225,216,197, 44, 61,232,158, 24,220, 61,197, 6, 21,176, 93,107,174,101,120, 71, 9,152,230,164, 99, 1,214, 23, + 47,111, 25, 47,238,159,225,230,230,128,173,102, 59, 12, 74, 71, 85,170,210,167, 33, 53,193,243,103, 47, 0, 38,252,250,211, 27, +156, 79, 79, 56,222, 31, 65, 85, 16,236,197, 92,230,132,167, 57,161,229,130, 41,178,237,216,212,231,120, 90, 5,147, 37,225,104, +102,182,160,148, 21, 92, 50, 40,205, 16,106,152,231, 73,119,147, 44,125, 39, 83,107, 65,147,145,227,221, 21,162,148, 84, 4,209, + 26, 82,100,136, 4,195,241, 1, 82, 26, 48, 1,136,201, 2,237, 19, 66, 82, 40,206,122, 94,145,171,230,100, 83, 72, 32,182,116, +165, 82, 65,181,233,102, 48, 50,168, 9,168, 85,112, 3, 90,201,248,226,245, 55,248,195, 55,127, 65,206, 27,234,182,162,109, 27, +126,253,241,103,220,188,120,134,207,190,124,141,143,239, 79,248,219,119, 63,224,253,229, 9, 55,135, 35,110,151, 25,129, 5,203, + 60, 65, 2,225,233,227, 25,219,229,130,210, 50,150,227,172, 98,138, 24, 65, 41,162, 72,195, 77,136,248,230,219,175,240,215,127, +255, 23,228, 77,191,203,233,112, 64, 54,209,201,195,195, 3,238,110,158,225,249,139, 23,246,146,169,165,136, 53, 55,242,106, 23, +200, 59,184,139,218,247, 70,158,181, 56, 2,182,169,128,132, 45, 59,120,223,109,169,162, 89,161, 19, 84, 13,161,234,110, 6, 83, +103,215, 86,209,182,210, 33,160, 54,211,213, 67,188, 53,228, 53,155,213,204,124,200, 66,144, 74,125,223, 75,126,169, 59, 72,137, + 99, 7,215,232,233,220, 12,114,100, 23,139,199,192,154, 96, 81,199,185, 10, 16, 18,174, 67,249,109, 84, 65, 61,202,130, 61,231, +213,118,138,225, 19, 82,234, 0,128, 52, 42,154,204, 69, 42, 4,146,125,194, 42, 70,134,184, 64, 80, 90, 1,113,210,231, 14,213, + 78, 62, 2,144,117,164, 15,210, 49, 51,219, 24,211,187,114,208, 63,125, 79,126,176,249,231, 26, 68,195,117, 90,169,253, 61,177, + 23, 90,191,167,178,237,246,198,122,184,215,221,238,212,119,178,159, 50,231,255, 57,114,140,204,187,204, 59,126,128, 5,153,104, +137,222,125,245,210,212,206,202,157,187, 29, 64, 20, 7, 46,118, 71,234, 83, 5,116,184,226, 27, 4, 99,225,147, 46,132,205,194, +104,169,112,102,203,106,187, 4, 56,180,253,133,111,241,200,172, 34,180,198,186,146,147,170, 77,206, 72,208,115,123,155, 89, 51, +177, 11, 63,225, 29, 77, 80, 60, 57, 15,150,200, 53,244, 3,253,123, 49,241,233, 72,143,195,136,110,237,163,114,186, 74, 81,219, + 79,195,252,153,197,142, 14,183,247,195,151, 82,123,148,177, 51,248,177,115,135,184, 90,219, 61,248, 93,240,183,163,249,249,228, +167,161, 90, 81, 3, 75, 89, 68,119, 59,136, 97,128,135,101, 80,140, 31, 97, 98, 64, 26,218,138, 38, 52,242, 50,155,139,130, 11, + 54,195,236, 6,211, 28,152,100, 5,176,220,132, 38,117,116,209,221,214, 47,184,172, 13,151,139, 34,134,131, 77,213,136, 2,130, + 23, 47, 13, 8, 8, 64, 83, 4,236,180, 48,110,239,111,181, 17, 72, 9,141, 24,219,186,105,145, 97,207,159,236,168,139,226, 57, +186,132, 14,112,242,117,142,176,241, 38,154, 65,211, 80,145, 82, 2,130, 6,157,181, 86, 17, 16, 17,109,181,170,157,181,254, 57, + 81, 4, 73, 4,137, 18, 34,235, 59,156,210,140,173, 20,228,109, 3,115, 67,176,194, 56, 64,155,101, 45, 0, 18, 88,204, 21, 17, +244,254,221,182, 21,185, 22, 4,142,253, 25,136,212, 69, 95,254,161,135, 97, 11,145, 1, 32,144, 43, 86,180,141,229, 77,249, 91, +106,235, 2,147, 20, 84, 16,176, 94, 54,164,168,177,139, 79,235, 19, 94, 60,191,195,237,225,136,183, 15, 79, 40,214,129,144, 9, + 76, 2, 7,108,185, 97,126,113,143,251,151,207,241,225,253, 3,222,254,242, 70, 85,144, 76,168, 91, 54, 70, 55,105,222,248,241, +136,252,116,178,234, 86,189,209,165, 10,132,129,121, 14,152,141,154, 84,115, 70,185,172,106,254, 23, 1, 85,181, 28, 88, 49,140, + 41, 6, 84,113,159,233,200, 91,175,165,161, 86,193, 60, 3, 83, 74,216,182, 85, 71, 44, 32, 76,209,104, 95,100,209,164, 14, 6, + 8,140, 86, 43,182,203,134,156, 11, 66, 12, 72,105, 82,220,174, 84,228,154,209,195,178, 57,116,120, 66,171,186, 6,248,230,155, +111,241,167, 63,254, 21,219,186,161,174, 25,229,178,225,183,159,127,198,241,217, 17,159,127,253, 26, 31, 62, 60,225,127,190,251, + 9,239,206, 79, 56, 46, 7,220, 45, 11, 18, 19,166, 89, 69, 22, 31,222, 63, 98, 93, 47, 64,107,152,166,164,126,245,148,204,158, +211,112, 31, 24, 95,255,241, 27,252,229,223,254,172, 20, 59, 1,166,155,131,122,132, 1, 92, 78,103,228, 92,240,234,203,103,186, +203,241, 24, 81,163,116,229, 98,161, 62,190,243,219, 41,146, 99, 84,225,154,131, 17,220, 23, 92, 90, 54,238,191, 90, 53,106, 46, +150, 3,110,214, 56,235,168,168,169, 13, 75,153,236,210,139, 33, 87,139,187,184, 68,147,167, 24, 49, 24,244, 1,181, 51,227,221, + 10,215,119,111, 86,112, 58,136,194, 78, 43, 93,221,184,199,119, 15,254, 40,106,117,114,106,109,143, 47,117,174, 35, 25,177,201, +193, 24,162, 87,173,147,223,106, 43,224, 20, 70,198,171,171,188,237,214,110, 85, 70, 6,187, 9,125, 90,109,195, 47, 79,193, 68, + 72,250,249,121,192, 77,140,170, 53,104,181,218,255,174,184,101,238, 83, 8,125, 47, 3,177,217,197,168,231,178, 19,212, 97,224, + 21,134, 42,117,185, 91,165, 64,215, 0, 23, 31, 59,162, 82,199,252,246,194,190,226,154, 98, 38,100,182,188,106, 17,194,214,157, + 83, 64,145, 98,244, 60, 30, 48, 20,242, 94,149,186, 45, 81,106, 67, 74, 19,136, 45, 2,181, 54,213,206,136, 32, 82, 68,228,235, +196, 61,247, 16,195, 71,192, 6,186,210, 3,184, 2,102,129,130,175, 16,101, 68,135,178, 77, 81,196, 11, 11, 75, 18, 20,232,184, + 87,159, 61,234, 5, 68, 45, 58,190,173,172, 10,114, 29,185,122,202, 90, 53, 94, 59, 91,108,245,128,204,136,180,222, 13,147,199, +168, 26, 3,220,109,187, 20,198, 72,218,199,228,173, 99,100,140, 98, 38, 99,111,142, 29,144, 72,118, 56, 98,215, 5,224, 42,212, + 72,159,139, 82, 11,106, 29,217, 10,213,242, 6,116, 63, 92, 60,111,204,222,171, 61,145, 86,174,152, 8,125, 37, 19,212,247, 2, + 25, 76,147,126,137,219,191, 60,115,158,168, 14, 30,125, 95,217,170, 27,137, 88, 11,249, 42, 21,165, 85,228, 54,194,109,174,216, +255, 54,254, 22, 66, 87, 41,184,109, 84,109,134,130,243,121,195, 86, 84,236,170,227,111,181,183,114,159, 34, 14,139, 99,149,134, +251,155,123, 76,211,162, 92,136, 24,177, 94, 46,216,182, 12, 56,139,160,138,190, 31, 84,122, 6,188,214,210, 14, 13,218,191, 47, + 35,122, 86,108,228,207,204,168, 92, 59,168, 43, 25, 38, 89, 45,105, 38, 44,110,110,205, 53, 84, 56, 39,180,168,172,150,211,229, +132,188,109,144,186, 33,248,125,195,140, 32,202,159,159,162,130,117, 20,181, 28, 33, 0, 46,235, 69,167,201,118,255, 2,132,216, + 97, 1, 98, 36, 48,225, 62,102,195,142, 48,228, 37,146,216,173,238, 94,100, 85,127, 3,243, 20, 1, 84, 21, 16,217, 88,110, 14, +202,128,127,248,248,255,201,122,179,102, 73,146,227, 74,243,168,154,153,123,108,119,205,165, 54, 20, 64,128,196, 16, 32,184,205, + 80,186,101,100,254,255,235, 60,140,180, 72,147,221, 32,216, 93,168,172, 37, 43, 43,151,187, 69,132,187,153,169,205,131,170,154, +251, 5, 31, 64,128, 64, 85,229,189, 17,238,102,186,156,243,157, 7,124,249,242, 18,219,221, 6, 8, 65,173, 85,228,184, 82,149, + 91, 10, 51, 46, 94,220, 66, 32,184,127,247, 51, 78,119,143,216,109, 55, 8, 20,244,139, 3,169, 92, 63, 37, 28, 14,123,220,159, +206,104, 82, 48,231,140,156, 5,149, 9,227, 54, 96,187,219, 32,206, 39, 77, 62, 42, 69, 85,198,137,187,103,148, 12,172, 79,149, +144, 6,224, 60, 47,228, 32, 10, 90, 85, 74, 33,148, 92,250, 75,151, 66, 64, 57,235, 67, 18, 99,194, 56,110, 85,192,101, 17,175, +129, 25,173, 86, 76,167, 19,242, 84, 45,253, 42, 32,196, 37, 38, 84,164,161, 5, 66,131,238,149,168, 9, 88, 26, 30, 30,158,240, +119,127,247,123,252,230,215,191,197,227,253, 3,166,167, 35,144, 43,222,191,125,135,253,213, 21,190,248,242,115,188,127, 60,225, +127,127,243, 29,126,190,191,195,110,191,195,197,110,139, 0,193,184, 25, 65, 0, 62,222, 29,173, 67,159, 49, 12, 3,226, 38,130, +147,138,115,216,162, 29, 63,255, 74, 85,238,197,192, 28,227,102, 3, 68,234,216,202,233,120,196,213,213, 21, 46,175,174, 58, 77, + 79, 33, 42, 70,255, 19, 49, 13, 90,123,150,235,172,240,153,128, 90,170, 41,118,213, 38,226,251, 61,102, 19,180, 84,253,223,155, +189, 44,181,137,121,189,139,170,168,193, 10,252,242,152,208,106, 59,111, 2,168,233, 58, 36,164, 96, 64,144,130,106, 12,250,192, + 1, 49, 69, 29,171, 86,243,193,122,243,211,154, 70,225,118,128, 11,245, 9,138,239, 9,181,227,145, 5,159,233, 2, 36, 45,177, + 59, 86,178,102, 59,188, 29,181,233,123, 80,165,205,244, 14,165,182, 2,145,166,169, 85, 45,168, 99,160, 19,204, 22, 5,113, 53, + 63,127,128,137,254,172,163,171,181,160,216,254, 81,247,254,250, 55,180,158, 29, 31,244,247, 78, 30,204, 97,241,170, 30,142,227, +151,186,103,135, 27, 64,163,209,130, 48,237, 69, 64, 15,230,104,207, 46,148,214, 11,121,233,214, 38,120,126,184,229, 64,115, 35, +212,182, 92, 4, 30, 22,243,204,147,142, 53, 87,221,132, 96,214,101,177,199,246, 66,215, 10,141,218,106, 50,208,250, 42,192, 27, + 9, 94, 5, 72, 57,112,167,173,163,105,215,233,119,182, 58,105,150, 29,176,136,204,200,124,203,214, 69,138,141,203, 13, 63,236, + 33, 65, 82,171,109, 73,130,229,215,103,171,235, 28,139,170,147,186,117,115,178, 2, 30, 46,133, 4,150,204,108,157, 88, 80,183, +196,214, 90,140, 46,136,190,187,175,134,254, 93,227,210,251, 78,219, 86, 47, 94, 40,118,155, 91,159,210,144, 5,230,180,174,124, +239, 9,125,213, 18, 33,163,254, 57,197, 5,122, 94, 32,186,214,101, 21, 20,244,159, 57,239, 90,212, 52,209,130,167,249, 5,108, +184,108,215, 72,196,224, 86,204,106, 23,144,241,252,217,214, 22, 85,223,185, 82,235,194, 57, 88, 11,213,121,137, 51,213,150,127, +149,104, 72,206,244, 7,230,156,113,158,179, 90,133,107, 70,140, 74, 13,101, 10,104, 34, 10,247,114,225, 99, 19,156,115,197,197, +229, 65,149,232, 28,144, 6,194,195,221,132, 50,103,157,210,132,230, 96,130,254, 46,123,184,139,131,146,158,197, 32, 18, 48,176, + 38,131,174,117, 5,204,209, 96, 84,202, 69,233,130,224,192, 61,211, 94, 57, 17, 13, 20, 34,184, 41, 22,188,161, 33,231, 25, 77, + 42,130,217,195, 9,238, 0, 80,251,116, 12, 17, 33, 64, 81,178,172, 63, 82,169, 64,205, 21, 37,102, 20,209,230, 86,157, 30,236, +209,132,125, 19,179, 10,130, 88, 88,204, 74, 33, 90,249, 5, 57,116, 28, 32,179, 75,250,195, 82,169,198,136,218, 4, 15,143,143, +136,156,240,242,246, 6,176, 75,192,237, 74, 62,230,189,190,189,197,205,237, 13,238,238,239,241,112,119,143,121,154, 12, 46,209, +129,144, 24,135,141, 98, 63, 83, 68, 35, 85, 30, 79,115, 69,129, 32,163,226,230,229, 13,198,113,131,156, 51,114, 54, 46, 57,169, + 48,131,216, 43,153,138,196, 9,104, 13,227,192,144, 2,148,162, 10,101,143, 12, 21, 49,171, 83,213, 15,118,136, 17,193, 58,250, + 33, 13, 24, 54, 91,181,170,249, 30,166, 84, 76,211,140, 92, 84, 41,158,226,208, 3, 56,134, 65, 15,246, 24, 20, 31,200,209, 85, +139, 51,202,249,140, 63,252,225, 15,248,253,223,253, 1,167,227, 17,167,251, 39,212, 83,198, 79, 63,253,132,237,213, 37, 94,127, +245, 5,238,239,158,240,167,111,222,224,221,253, 29,246,251, 45, 46,118, 91, 36,104, 72, 77, 26, 6,124,124,120,194,241,116, 66, + 41, 89,131,100,134, 8, 30,146,218,251,108, 18,242,171, 95,124,133,191,254,237,223, 32, 12,154, 62,151,134, 17,108,227,114,110, +132,233,116,198, 44, 5, 87,215,151,166, 14, 23, 80, 19, 85,169,155, 71,211, 49,193,213, 98, 66,229, 47,128, 27,176, 40, 83,191, + 48,186,104,206,192, 33,206,117,247, 60,129,102,240,150,104, 10,217, 82,149,174, 20, 77,161, 95, 74,182, 75, 51,246,177,162,147, + 11, 61, 57, 47,196, 4,138,209, 46, 33,191, 60,218, 51, 11,145, 62,203,250, 47,248, 72,214, 86,216, 29,185,104, 7, 8, 71, 70, +138, 81,197,108,180,172, 30,154,233,188, 84,196, 84, 49,231, 25, 37, 27,159, 62, 23, 11, 14,105,246,223,233, 63,211, 63,167, 82, +139, 70,233, 6, 94, 44, 75,213,146,238, 98,236, 85,123,195, 66, 14,235,163, 79,235,198, 74, 46, 29,181, 10,219, 79,106, 60, 43, + 47,201,107, 82, 61, 54,164, 95, 44,112,136,198, 74, 13,188,116,107,203, 5,188,134,103,136,163, 88,153, 58, 54,116, 73, 1,227, +110, 99,244,203,215, 65, 41,226, 84, 61,183,152,217,162,191, 86,183, 35, 45,138,123,145,102, 9,119,102, 41, 19, 60,179,221,249, +116,164, 54, 99, 59, 88,218,214,162, 68, 94,199,184,182,149, 58,121, 57,115, 5, 42,194,228,160, 7,170,143,129, 61,106,244,153, +138,204,159,109,167,231, 17,155,149, 83,119,233, 76,218,149,247,226, 92,164, 23,189,253,178, 93, 57, 14,220,179,239,236, 6,238, +104, 93,179,115, 22,181, 89,130,245,188, 12, 81, 53, 55, 49, 42,198,153,136,251, 89,180,184, 29,218, 51,145,166,195, 85, 28,171, +187, 96,102, 91,207, 74, 55,236,120,255,238,125, 18,180,160, 80,165,239,233, 29,199,235, 4, 51,223,115, 43,237,174,233, 62,222, +104,142,206, 75,144,214,250,103,237,207, 30,153,136,147,152,150, 41, 89,171,230,139,175, 70, 56,109,221, 48,144,139,103,127,168, + 53,212,215, 87,173,227,124,177, 68,221, 90,215,158,139,224, 52,205, 40, 85, 80,170,194,195,152,117,157,193, 68,200,115, 69,246, +130, 9,126, 14, 3, 23, 23, 7, 37,160,166,136,210, 42,242, 52,169, 46,170, 23,100,212, 85,229,221,191,223,211, 19,219,179,100, + 82, 47,100,217,227, 83,140, 19,146, 40,217,119, 94, 17,195,178,166, 48, 76,165, 22,161,222,189, 15, 35, 40, 70,133,162,149,130, +243,121, 70,173,130, 60,103, 45,129,205, 21, 67,204,202,126, 55,203,101, 12,177, 39, 60,138, 80,119,145, 21,107, 78, 98,127,232, +124,159, 99, 66,163,214,253,138,139,194,215, 57,202, 26,234, 16,123,104, 70, 50, 32, 71, 10, 10, 29,153, 69,208, 2, 35,218, 69, +250,243,135, 79,200,191,252, 13,110, 95,222,234, 23,158,140,244,196,212, 71, 42, 95,124,254, 2,148, 5,143,159,238, 48,157,206, +154, 26,213,204,182,196,172, 62,116, 19, 91,128, 26,166, 50, 67,114, 85, 40, 1,233,152,252,226,226, 2,113,136,104,164, 21, 76, + 48,116,100, 48,202, 80,109,130, 16, 18, 34,180,154,243, 42, 40,215,162,150, 40, 11,236, 0,150, 23,156, 89,201, 70,155,180, 55, +170, 92, 4,199, 4, 10, 22,137, 89, 21,157, 43, 32, 80, 26,187,160, 48,128, 48,110,212, 95, 93, 74, 70,218,140, 32, 84,148, 50, +227, 92, 51,104,158,241,187,191,251, 61,126,245, 55,127,141,143,111,223,227,225,195, 29,100, 46,120,252,120,135,195,197, 21, 94, +124,245, 37,238, 30, 30,240,199, 63,189,193,199,199, 71, 28, 46,246, 56,236, 54, 96, 17, 12,155, 13,246,155, 61,222,126,248,128, +167,199, 35,164, 22,140, 73, 51,124,213, 34,145, 16, 83, 66, 2,240,250,243, 87,248,235,223,252, 10, 45,169, 37, 99, 24, 6, 72, + 36,204, 70,101,147,154,113,127,255,128,171,235, 43, 92, 94, 93,118, 13,133, 86,240,150,204, 85,107, 95,184,113,207, 76,182, 3, +115,181, 47, 93,231,125, 55, 52,180, 96,253, 95,173,139,226,214, 64, 13,205,108,141, 49, 4, 29,123, 5, 54,250,154,244, 0,151, + 20, 55, 58,134,111,179,249,129, 93, 61, 10,112, 10, 42,234,177, 66,131, 81,122,170, 82,140, 73,189,162, 65, 87, 45,117, 22, 75, +115, 10,102, 67,203,230, 9,175,171, 52, 37, 19,114,217,152, 94, 86, 30,109,205,126,175, 32, 10,168, 69,119,218,218, 89, 51,164, + 49, 66,212,203,222, 21,190,190,163, 86,139,170, 44,151,182, 65,145,148,198, 21,150,110,184,182, 30,119,218,218, 10, 41,105,127, + 77,224, 69,169,222,172,184,164,198,139, 53,203, 96, 52, 76,246, 44,250, 8,223,246,197,205,216,228,142,173,212, 24,225,229,208, +106,118,145, 50,145, 9,199,100, 1,138,128,209,200,146,211,160, 25,206,122,169, 82, 15,146, 17,169,221,237,231,235, 3, 8,245, + 9, 15,170, 32, 14, 97,249, 44,205,233, 65,253,240,244,100, 41, 83,123,147,118,238, 61,137, 10, 4, 97, 2, 75,235, 17,161,228, + 43, 22,155, 64, 52, 91,205,168,144,108, 73,144,243,209,189,208, 51, 41,184, 53, 22, 46, 14, 52,119,143,217,114, 67, 76,224,158, + 65, 33,207,226, 96,155,136,217,121,237, 50, 91,137,194,244, 35,174, 54,138,102,163,217,201,138, 23, 79, 43,237,134,254, 53,110, +213, 11,206, 78,183,233,144,102,189, 87, 52, 9, 86, 80,173,156, 20,210,250, 30,219,139,233, 82,107,207,234,240,203,102, 41,198, +128,166, 51,127,123,135,168,123,238, 26,150,144,149,238,139,239,207,154, 21,134,125,218, 54,233,228, 38,196,103,177,219,212,156, + 51, 95,245,247,133,172,244, 36,246,103, 98,161,188, 73,169,198,109,104, 54, 41, 4,152, 23,203, 28,181, 10, 84,237,234, 69,138, +173, 90, 90,231,125, 72,107,152,179, 78, 91,114, 46,104, 80, 70,137,138,223, 84, 79, 80, 61,130, 88,116,181,118,185,223, 97,216, +140, 90,116, 12, 17,243,116,194,249,116, 70,205, 69,173,109,129,140, 90, 88,141, 79,207,171, 66,211,198,157, 78,176,107, 58,225, +233, 90, 35,131, 66, 50, 49, 34, 17,230,218, 64,164, 25, 30, 42, 68, 71, 31, 69,136, 84, 12, 33,129, 56, 96, 59,238, 16, 6,181, + 48,207,179, 21,190,128,106,220, 72, 87,121, 58,222, 23, 32,170,216,150, 89,233,114, 98,100, 82,145,138,220,170,134,117,197,128, + 90, 21,196,108, 42,200,214, 71,115,141,178,141,148, 24,196,110,223,208,131,161, 4,173, 14,124,124, 87,107, 69,226, 1,145,116, + 52,208,247, 49,208, 10,163, 22,193, 79,223,255,140,243,223, 31,113,117,117,192,144, 6,196,176, 69,149,251,142,158,188,188,188, +193,197,229, 21, 62,222,125,196,124,212,174, 51,164,136, 44, 21,151, 33, 33,142, 35,164,101, 32,207,104, 85, 16,226,136, 83, 86, +245, 98,173, 25, 28, 45, 43, 60, 4,164,210, 16, 88, 1, 57, 76,172, 73, 80, 73, 61,241,177, 54,196, 97,196,169,156, 80, 90, 85, +243,190, 77, 40,216, 40,105,141, 27,144,109, 7, 42, 38,192, 72, 17,117,183,211, 76,227, 24,144,203,132,132, 8, 48, 33,139,118, + 4, 67, 72, 61, 97,172, 73, 69,136, 9,195,102,192, 60, 77, 32, 2, 82, 26,193, 53, 35,207,132, 13, 2,254,143,127,254, 23,124, +253,235,175,240,225,187,159,112,247,238, 14,181,204,120,184,187,195,225,234, 10,175,191,252, 12, 79, 15, 19,254,215, 31,191,197, +251,167, 79,184,188, 60,224,176, 25, 16, 74,197,118,183,197,184, 25,241,227,167, 15,184,123,184, 71, 41, 51,134, 20,109, 36, 59, + 34, 36,133,119, 48, 69,220,188,186,194, 87,191,254, 5, 36,217, 14,103, 28, 45,248,198, 58, 11, 52,156, 78,103,180, 6, 92, 93, + 93,216,101, 94,148,202,228, 24, 84,160,231,191,195, 8,106,108,128,139,126, 33,182,165,162,100, 86,201,103, 0, 65,168,118,209, +140, 11,228,136,245, 82, 11,108,123, 38,219, 9,166,148,144, 98,196, 44, 25,181, 1, 69, 52,109, 40,250,120,210,166, 73,220,160, +126,212,160, 99,107, 38,128, 68,105,106,186, 43,244,180, 35, 85,241,214, 60,235,239, 90,147, 97, 84, 27, 90,105, 75,190,183,249, + 93,157,218,214,201, 89, 80,222,178, 90, 93,178,249, 95, 85,119, 18,120,232, 22, 60,110,174, 76, 39, 83, 80,215,101,172,234,197, +142,167, 93, 33, 24,223,160,185,187,213,186,151, 37,140, 67, 12, 38,209, 21,222,198,172, 15, 65,119,145,170, 28, 46, 32,108, 80, +101, 57,148,181,147, 50,145,145,119,147,180, 96, 73, 65,210, 15,107, 4, 6,213,188,220,113, 43,123, 27,155, 63,155,104,137,221, +100,168,255,191, 90,126, 56, 81, 53, 21,185,123,211,101, 57,164,155,114,173,123,146,163,131, 79, 5,224,224,237,116,120, 22, 16, + 3,142, 64,208,105, 13, 9, 33, 57,216, 39, 6, 16, 59, 26,212,118,184, 85,121,205,228,163,108, 52,212, 86, 44,250,215,124,226, +164, 5, 34,153, 85,183,231,173, 87, 81, 29, 71,183, 92, 54,160,114, 39, 2, 46,254,114,195,139, 54,107,117,219, 34,120,132, 21, +237, 96,127, 39, 76,207, 97, 50,250, 90,141,217, 23, 22,213,185,207,180,152, 86, 17,168, 48, 50,156,169,244,117,236,110,246,200, +160,197,180, 78, 5,170, 77,189,244,217, 16, 46, 43, 30,185,255,117,178,112,251,149,123,104,103,159, 78, 15,148,127, 47, 43,155, + 28,140,172,215,122,138,152,238,135, 45,216,162, 53,112,117, 94,131, 77, 85,136,141,159, 17, 12, 63, 12, 72, 49,139,163,211, 10, + 77,172,197,196, 43,176,148,246,241,145,128,218, 2,114,213, 14, 91, 12,118,166,253,194, 26,242, 36,144,202, 11, 18,183, 49,164, +101,157, 42,136,190, 3, 89, 8,181, 52,139, 87,206, 8,148, 16,195,128,104,223, 77,245, 98,135,212,134,157,155, 96,123,117, 1, +180,138, 24, 7,132, 68,200,247,130, 60,149, 30, 72,212, 26, 64, 49,232,164,205, 87, 44,221, 73,235,107,172,102,244, 56, 61, 27, +100,212, 28, 17,182,226,154, 34,117,102, 75, 10, 25, 28, 2,170,110,184,251,212,130,155,122,214, 41, 13, 72,195, 14, 73, 70,228, +118, 70,206,103, 61,207,188,252, 55, 30,130,152,123,128, 72,239,151, 16, 7, 48, 39,213, 35, 84, 5,164,229,105,198,102,127,129, +192,128,148, 89, 59,245, 96, 64, 6,141,195,109,160,208, 22,186, 23,120,201, 79,134,199,221,137, 90,149,154, 32,163, 97,140,108, +184,102,238, 85,169, 19,130,114, 46,248,240,241, 61,158,142, 71,188,188,185,196,213,237, 13, 30,222,255,140,153,124,103, 25,112, +184,216,163,214,138,211,241,136, 86, 42,242,108,116,125, 17,140, 67,194,118,136, 40, 19,161, 49, 35, 79, 74,226,137,126, 96, 17, +236, 66, 72,170, 42,103,125, 8,209,128,163,141,221, 67, 28,112,154, 39,112,217, 98, 23, 66, 15, 15, 24,198, 17, 1, 51, 90, 1, +106, 85,161, 76, 64,192,169,204, 58,250, 13, 58, 34, 77, 12,205, 97,158,102, 96,206,152,114,134,108,183,216,238,246,224, 52,116, + 10, 81,149,108,150, 39,198, 97,183, 5,170,102,244,166,113, 64, 74,140, 57, 87,108,247, 35,254,225,111,255,128, 23, 47, 95,224, +167,239,222,226,227,251, 79, 40,243,132,233,241, 9, 23,215, 55,120,249,250, 37,238, 30,158,240,199,255,120,131,251,135, 71,220, +222, 92, 99, 28, 6,180,121,194,102,183,193, 48,142,120,255,254, 14,159, 30,239, 81,207, 51,198, 20,144, 98, 0, 15, 17, 60, 4, +196,148,176, 29, 18,110, 95,238,241,139, 95,125,137, 33,141,104,212, 48, 14, 90, 36,149,234, 85,181, 86,180, 79,143, 79,184,190, +185,194,246,176,183, 39, 91, 64,164,190,251,138, 98, 7,149,139, 89, 66, 63,164,105,213, 21,192,208,143, 70, 73,208,120, 76, 14, +154,197,109, 20, 57,199,122,135, 16, 48, 12,163, 85,216,250,226,249,133,238, 99,252, 72,140,228,201, 72, 16, 85,240, 7, 2,135, + 6,110,209,190,123, 21, 71,185, 13, 41,164,128,136,173, 30,105, 33, 64,152, 80,167,138,124,158,236,130, 72,157, 40,133,160,175, + 78,128, 94, 20, 20, 22,111,109,235,154,109,223,129, 54,179, 21,233,116,194,245, 19,205, 46, 11,117, 67, 24,207, 29, 74,164,171, +157,174,165, 29,127, 99,152,123,130, 32,205,118,229, 16, 48,196, 14, 66, 35,200,193, 40, 83,214,209,169,109,202,138,252,186,182, + 11, 6, 52,148, 21,119, 61, 44, 59, 72,159, 48,240,146,108,198, 85, 39,103,194, 4, 10,234, 19, 47,246,115,181, 21,210, 4,180, +164, 26,172,199,242,205,166, 16, 66,250, 89,113, 85,251, 92,183,184,214,218,137,100, 85,124, 98,179,100,201,123,247,217,132,236, +176, 81,129, 99,224, 65, 57,255, 85, 44,245, 78,213,224,165, 20,180, 0,108, 2, 1, 33, 24, 18,117, 21,219, 89,107, 15,175, 89, +198,239,166,138, 71,232, 19,142, 37,187, 92, 22, 26,222, 74,104, 70, 43, 47, 61,179,138,222,168, 71, 76, 47,153,237, 30,119, 25, +140,205,175, 62,109,107,108,170,129,106,108,157, 80, 45,121, 76, 45,124, 75,119, 74, 28,236,112,247, 48, 25,238, 73, 98, 44, 97, + 89,123, 54, 49,235, 41,247, 34,233, 89,212,170,131,157,104,161,208,173, 59, 74,145, 98,107, 19, 47,170, 90,143, 26,110,180, 6, + 26,201, 18,161,203,230,109,183,112, 44, 2,161,144,102,120, 83, 89,206,115,215, 65, 41,171, 66,189,255,246, 55, 88, 97,195, 6, + 78,178,237,140, 16, 66, 51,116,141,159, 19, 85,122,168,145, 23,251, 20,104, 73, 72,107, 48,155,179, 18, 46,179, 40, 77, 17,162, +129, 75, 25,192, 92,117, 74,146,179,118,183,195,160, 54,184, 8,194, 44, 21,165, 11, 16, 9, 82, 51, 2,116,244,206, 70, 43, 36, + 0,211, 52,161,204,165, 71, 1,147, 52,133,228,180,250, 76, 27,225,223,181,167,174,249,187,194, 12, 12,196,200,164,103,144,144, + 38, 19,138, 71, 81,179, 6,107, 33,104, 1, 64,118,119,114,100, 32, 0,149,129,113,216, 33,141, 3,142,119,143, 56,205,211, 34, +238,101, 91,195, 64,167, 17, 3, 15, 29,244,149, 44,182,188,148,217,178, 31, 8,211, 52, 97, 87,206, 8, 67,244,226,113, 25, 81, +249, 78,178,227,103, 72, 3, 1,252,152, 35,163, 1, 49, 41,126,209,115,177, 99, 82,201,189, 10,125,150,209,117, 12, 9,185, 84, + 76,117,198,135,187, 71,140,105,131, 23,215, 87,234, 38, 49, 21,244,213,213, 21, 54,187, 45, 30,238,239, 81,138,210,133,148, 95, +171, 85, 75, 26, 24,227,160, 23, 39,106,133,200,132, 20, 9, 67,136, 22,110, 17, 49,152, 32,140,154,133,100, 72, 65, 19,160, 20, + 65, 26, 6, 8, 8,231,227, 25,173, 9, 54,187, 17,197, 42,219, 52, 68,112,100, 21, 27,152, 34, 87, 95,100, 32, 13,170,216,230, + 24, 49, 12, 91,203,184,173, 93,224,196,156, 16,134, 1,129,128, 58,159, 49, 79, 39,148, 50,161,200, 9,135,195, 14,227,102,196, +233,241,168,225, 33, 49, 64, 74,198, 97, 51,226, 31,254,225,239,113,115,115,137, 31,191,251, 1,159, 62,222, 35, 31,103,156,238, +143,216, 95, 95,227,229,235,207,112,255,120,198, 31,255,227, 27,220, 63, 30,113,113,115,129,253,120, 64,206, 39,236,183, 91,236, +182, 7,252,244,254, 35, 62,126,250,132,233, 52, 35, 4,253, 29, 98, 84,177, 24,167,132,113, 72,184,190,217,225,243,215,159, 35, +166, 4, 48, 97,220,237,128, 16, 80, 12, 18,226, 28,255,243,249,132,214, 4,215,215,151,136,198,233, 14, 97,232, 97, 6,209,172, +141,117,181, 91, 10,172,223, 27,135,160, 98, 60,115, 64,232,132,172, 41, 25,222,188,210,145, 21, 78,228,163,243, 30, 44, 1, 45, + 8, 66, 72, 58,234, 76,209, 2, 60,168, 35, 91, 99, 12,138,125, 52,197, 58,135,216,213,201, 68, 2, 72, 65, 43, 5, 82,116, 79, +199, 33, 34, 36,213, 50, 72,209, 20,185, 90,178, 9, 85, 84,117, 26,250, 51,109, 94, 86,166,158,119,207,166,241,224, 24,208,108, + 23,171,192,138,185, 59, 28, 52,135,161,160, 74,214, 81, 59,209,210,117,245,125, 28, 43,157, 46, 4, 32, 16, 56, 69,196,152, 0, + 35, 38,162, 7,225, 12,221, 78,196, 38, 80,117, 7, 77,111,161, 69,150, 60,233,181,110,128,160, 73,117,181,116, 74,154,183,133, + 30,100,226,185,232,145, 98,247,121,187, 55,217,223,113,119, 42, 52,114,127, 61,245, 3,121,109, 81, 18,243,146,147,237, 55, 23, +158,247,130,112,117, 7,156,171,160,201,112,179,108, 81,191,190,239,246,136, 86,114, 5, 59, 41,200,132,155,227, 86,165, 79, 60, +171, 95, 72,109,241,179, 47, 28,251, 69,207, 33, 6,183,233,228,181,102,204,115,247,105,117,127,127, 93,148,255, 29,222,130,103, +151,189,200,243, 75,116,253, 47, 71,249, 58,255, 93, 76, 0,217,173,154,208, 49, 50,153,206, 70, 86,232,108, 45,128,249, 25, 1, +174,154, 24,212, 98,233,208,215,207, 6,194,106, 43, 22,132,167,168,177,141,246, 59, 16,106,229,147,119,158, 72, 7, 62,149,188, +138, 94,109, 30,210,222,125,226,138, 73,181, 12,140, 90, 59,124, 70,177,219,161,175, 9,168,139,189, 20, 82, 20, 35,233,187, 29, + 66,207, 39,112,245,119, 23,207,185,126,162, 25,168,202,224, 46,253,207, 49,100,117,255,156,123, 14,187, 90, 48,171,185,108,164, + 22, 99, 20, 8,166, 90, 85, 43,149,171,253,126,122,206,107, 99,163,233,110,205,154, 16,152, 93,182,206, 21,135,203, 3,182,219, + 61,216,206,154,233, 84,113, 62,158,213, 54,234, 56,116, 11,251,241, 24,231,231,190,255, 21, 12,105, 37,254,140, 38,138,107, 22, + 7, 77,224,142,221,140,129,177,137, 65, 75,100,171,170,154,148, 69, 84, 41,132, 97,183, 5,199,128,167,211, 19,166, 41, 35,196, +212, 1, 85,108,180, 77,103,187,243,160,206, 2, 61,239,217,200,155, 74,226,244,152,106,215, 30,196, 53,130, 74,217,177,171,112, +142,213, 94,170,167, 19, 53, 50,204,167, 69, 80,218, 72,149, 89, 21,206,158, 8,229, 94,228, 92, 50, 38,169,248,244,225, 35,134, +113,192,213,197, 14,155, 52, 98,134,118,193,187,253, 14,200, 5, 79,143,143, 72,166,206, 45,185, 96,147, 34, 60,198, 35,198,136, + 54, 23, 80, 10,104,181, 42,247,118, 8,160, 73, 69, 15, 49, 38,148, 90,145,204,206,114,124,120,232,192,145,237,144,240,233,116, +198,124,174,136, 28, 16,168, 33, 79, 51,208,128,237,168,255,156,167,163,160,148, 10, 12, 98, 80,253,102,216,213,136,200,106,209, +113,106, 39,197,132,237,110,143, 48, 12,200,101,214,243,163,100, 75,134, 23, 28,246, 7,220,220,220,224,211,199, 15,152,167, 25, +105, 19, 80,206, 25, 23, 87, 7,252,250,215,191, 70, 24, 34,222,190,121,139,251,143,119, 56, 61,205,200,167, 51,174, 94,188,192, +213,171,107,220, 63, 62,225,143,127,122,131,135,167, 51,174, 47, 15, 24,134,132,167,199, 59, 92, 92,238,177,187,216,225,135,183, + 31,241,241,225, 30, 50,207, 8,129,145,198, 0, 78, 12, 74, 17, 41, 4,108,134,136,171,235, 61,174, 95, 92, 35,109,212,102, 54, +238,182,224, 20,113,158,206, 93, 72, 35,198,151,126,124, 60,226,246,246, 6,251,253,190, 67, 27,188,242,119,164, 33, 89,206,187, + 64,197, 94,227,184, 89,241,167, 93,212, 84,109,103,205, 93,160,227,175,168, 24, 91, 59,196, 0,110,202,220,246, 17,164,103, 15, + 83,212, 46,206, 43, 85, 52, 6, 5,243,214,214,128, 8, 94,242,162, 3,173, 0, 23,150, 22,104, 93,169, 52, 49,198,254,108,127, +134, 30,168,176,112, 34,106,161,219,189,217,118,236,128, 42,113,201,207,120, 15, 37, 33,182, 20, 54,237,200,137,158,195, 56, 90, +107,104,165,104, 21,238, 23, 2,233,103, 17,131,210, 3, 91, 63,154,213,227, 91, 91, 67,228,214,233, 91,126, 25, 5,142, 8,156, + 58,190,214,119,218,204,186, 95, 94, 20,200, 54,163, 36, 70,171,197,108,125, 98,107, 2,234,137, 78,100,186, 16, 80, 67,160,136, + 74,134, 68,245, 75,144,208,179,177,225,116,178,117,202, 23, 96,122, 11,233,106,127, 98,130,148,134,103,210,236, 85,160,137,191, +111,100,140,120,255,220, 59,135, 30, 43,223,115,211,134,221, 45,164,224,168, 22,212, 89, 16, 82,234,231,144,255, 44, 88, 65,111, + 58,216, 40, 40, 31, 94, 44,166, 86, 25, 7,140, 34, 21,200,232,124,126,113,231,128, 39,223,184,168,203,172,140,193,214, 40,232, +250, 33,159,182,232,136,184,149,188, 92, 68,171, 67,189, 85,233,110, 50,103,111,115, 47,151,184, 79, 30, 92, 88,216, 65, 77,173, + 62,243,157,183,254,190,105,210, 97,205, 85, 51, 36, 44,117, 82,207,156, 69,248,232, 23,178,172, 60,233,206,230,167,182,232, 70, +150, 34,198, 66,117, 68,186,152,235, 57, 15,126,161,134,246,239,212,136,118,180, 10,200,161, 16, 16,124,133, 99, 86, 81,113, 7, +197,234,217, 9, 86,112,156,203,180,216,162, 65, 61,244,169, 72,235,127, 70, 46,139,120,178, 59, 48, 68, 25, 10,173,169, 22, 3, +162,207,162, 54,124, 42, 6,211, 21,128, 21,154, 20, 48,166,132,193,190,131,156,139,217, 49,173, 16, 19,224,226, 98,143,180, 13, + 32,214, 28,137,211,227, 9,231,167,147,126,175,150, 93,208, 45,198,242,151,164, 5,211, 56,180,149,120,208, 50,224,153,164, 59, +100, 60, 44,225,245, 74,109, 0, 0, 32, 0, 73, 68, 65, 84,169,182, 10,230,134,113, 80,160,151,254, 94,138, 75, 86,125, 70, 68, +107,140,221,238, 2,219,205,128, 10,193,253,227,157,158,139, 62, 57,139,201, 32, 77,122,174, 14,105, 68,108,128,216,103, 43, 21, + 40,249,108,162,191, 96, 2, 76, 1,137,174,153,162,135,146, 52,172,171, 86, 90,198, 45, 14, 95,176,100, 50,183,120,249,248,109, +136,131,146,187, 8,253,176,175,162, 88, 82, 33, 65, 46, 21,224,136,159,127,254,132,214, 42, 94,220, 94,227,234,230, 6,143,247, + 15, 72,131, 50,178,207,211,132,167,199, 19,110,175, 14, 8, 32,141,164,227, 1,176,136,190,148,162,141, 55, 84, 60,193,134, 53, +165, 16, 16,147,118, 60,109,214, 3, 61,162,106, 7, 39, 64, 26, 19, 8,132,211, 52, 33, 50,212, 75, 46,217,210,189, 28,237, 71, +154,109,219, 8, 41,105, 24, 73, 76,140,221,102,163,163, 36,209,145, 62, 51, 97,220,108, 85,108,193, 1,243, 60, 99,122,154, 16, +134,100,113,120,130, 52, 50,110,110,111,113, 60,157,241,244,240, 0, 6, 97,206, 21,183,175, 95,225,247,191,253, 45,136,128,239, +191,127,139,251, 79, 15, 56, 61,158,113, 62,157,112,251,226, 37, 46,175,175,241,225,238, 19,254,247, 55, 63, 96, 42, 13, 55,183, +215, 24, 2, 35,159,102, 92, 94,238,177, 63, 92,224,205,219,119,184,187,187, 71,206, 5, 3, 3,105, 36, 85,210, 39,205,115, 79, + 67,194,203,171, 61, 46,111, 15,250, 51,198,128,221, 97, 11, 30, 35,230,236,116, 59,235, 22, 65, 56,159,180, 48,184,186,186,234, + 22, 14,221, 19, 87, 27,255,234, 33, 64,129, 17, 73,109,136,222, 49,198, 16, 76,117, 89,186,215,155, 2, 33,134,193, 84,217, 11, +120,165,154, 29,145, 45,186,146,221,227,233,234, 98, 19, 57,181, 10, 77,251, 98,173,122, 35, 51,106, 54,208, 70, 41,154, 49,128, +134, 92,102,237, 16, 98,210, 61,111, 41, 64, 17,195, 71,234,164, 70,170, 96, 72,186,118, 81, 49,147, 35, 98,205,254,101,108,119, +105, 90, 57,251,158,204,164,185, 70, 99, 91,246,198, 10, 40,209, 56,226,186,212,246,230,253,181, 72, 87, 50, 12,112,211,177, 57, +194,194,236,102,110,160, 48,152,213,175,174, 44,162, 6,178,160, 37, 1, 79,197, 47, 89, 85,192, 43,177,146,180,214,119,237, 4, +157,148,137,253, 89,221, 10,200, 4, 18,219,239, 89, 84,109,179,247,151, 93,247,103, 22, 63, 93, 95,160, 79, 50,106,191, 8,100, +229,239, 94, 14, 91,244, 52,175,101, 54,233, 10,109,239, 18,189,144, 82,208,139,249,214,155,115,234,101, 25,243, 27,170, 84,130, +253,125, 65, 45,158,234, 21,182, 44,109,114,193,151,203,182,161,147, 51, 91,145,176, 93,154, 98,191, 15,160, 5,208,218, 2,213, +125,212,180,248,156, 29, 14, 94,139,237,170, 85,232, 14, 49,208,137, 78,158,150,200,208, 37,242,180,245,184, 91, 21,187,181,191, +200,159,247,245,133, 62,195, 13,170, 38,247, 20, 50,143, 2, 86,212,238,114,169,119,166,189, 77, 63, 40,120, 56, 76, 83,161,113, + 47,104,106,183,122, 18,209,127, 10,106,241, 48, 22,136,244,226,220,223, 49,167, 5,118, 7,194,127,250,123,109,162, 98,223,165, +159,237, 78, 38,212, 98,162,106, 70,134, 61,175, 62,121,227, 85,118,124,103,223, 91,199, 46, 54, 5,242,128, 27,233,207,151,190, + 7,181,182,190, 66,241, 41,129, 88, 81,170,234,119, 69, 82,151,172,211, 69,189,212,171,186,120,138, 97,185, 99,194,144, 18,152, +129,156,181,147, 87,241, 32, 67, 74, 1, 18,176,191, 56,104,193, 19,245, 12, 57, 31, 79,152,143,249,217,196, 34, 4, 70, 37,177, + 34, 8,221, 10, 7,211, 8,244,231,201, 7,105, 6,131, 1,205,203,253,201, 13,173, 40,156,103, 59,170,192, 27,129,122,210, 91, +176,149,101, 41,130, 97,123,129,113, 24,241,240,248,132,227,227, 17,187,195, 14,212,106,119,109, 5,203, 83,108,173, 42,116,134, + 53, 55,130, 18, 48,213, 25,179,135,104,145, 62,183, 37,103,240,118,163,234,120,235, 3,122,166,121,199, 47,154,144,170, 11,160, +224, 15, 33,235,135, 35, 13, 82,129, 52, 90,232, 64,245,204,219,102, 35,198, 0, 20, 65, 43, 21, 3, 15, 56, 30, 79,120,120, 56, +225,230,230, 26, 87, 55, 23,120,255,243, 78, 5,120, 4,243, 47,235,113,185, 25,148,129,171, 34, 14,160,205, 25,105,171,192,153, +211,121, 54,153,127, 64, 28,146,122,255, 88,247,143,173, 78, 11,172,164, 1, 45, 2,105,187,197,241,233, 17, 85,148,168,165,176, +155,128,211,121,234, 60,203, 33, 2, 3, 1, 97,208, 24,210, 20, 71, 29,177, 86,245,238,213, 82, 16,199,136,205, 97, 15,204,106, +173,153,142, 71, 76,179,126,176,220, 0, 30, 18,168, 2,183,215, 47, 49,132,136, 31,254,252, 6,231,249, 17,151,219, 3,126,241, +245, 47,241,219,223,253, 14, 53, 87,252,244,237,247,120,248,112,143,251,199,123,148,169,225,197,235,215, 56, 92,238,241,254,227, + 71,252,249,219,239, 81,114,195,245,213, 78,147,235, 78, 5,135,139, 29, 54,135, 29,126,124,251, 14,159, 62,221, 97,158, 51, 66, + 96, 12, 67, 48,251, 75, 66,160,136, 49, 68,220,222, 92,225,240,226, 18,137, 3, 98, 72, 24, 47, 15,192,102,128,212,102,202, 74, +233, 86,160, 90, 43,206,211,132,155,235, 43,108,183,155,222,101, 19, 5, 27,119, 85,139,246,212, 17,120,150,220, 49,155, 77,234, + 42,192,197, 14, 27,144,118,139,150,138, 21,250,136,177, 64, 12,180, 17,109,164,100,139, 87,243, 26,235,136, 21,181,234, 75, 56, +207, 93,141,204,164,197,138,160,244, 46,210,253,186,205,246,149, 33, 16,132, 27,202, 92, 81,114, 0,178, 70, 81,166, 56,244,248, + 86, 14, 58, 2,115,111, 59, 27, 13,173,148,138, 22, 53, 32,168,239,143,221,219, 75,253, 30,177,139, 65,137,139,139,185,133,160, +193,171, 58,226,140, 65,215, 56, 68,203,232,185,138,160,213,162,251,115, 22, 4, 19,177,233,164,196, 70,103,196,136,148, 44, 9, +190, 90, 52,174,121,194,185,233, 56,206,161, 59,180, 74,180,107,210, 35, 73, 93,140, 68,100,133,142, 84, 13,168,208, 96, 88, 85, + 84, 55,210,145, 48,121, 0,146,237, 47,217, 52, 52, 62, 89, 91,217,197, 56, 4, 43, 28, 74,239, 89, 66,224,174,175,168,221, 94, +165, 32, 22,178,213,163,184, 2, 94, 13,246,104, 20,122, 82, 87, 15,142,113,222,190,214,251,253,130,139, 49,246,223,137, 61,100, + 69, 76,201,110,105,107,154, 32,103, 19,135,178, 34,164,137,238,128,121, 21,150,210,224,144,157,208, 47,115,216,212,167, 91,130, +220,161,111,234,249,102, 97, 85,109,237,111,127,182,162,228, 78,198,211,226,175, 24,187,220,152, 1,188, 34,182,209,130,251,245, + 74,215,217,248,210,178,138, 34, 77, 1, 95,171,165, 69,134,160, 66, 69,169,253,179,172,121,233,244,188,171,127,206,131,215, 41, +141,148, 2,167, 39, 5,203, 84,112, 5,122, 88, 97,120,171, 77, 30,124,122, 16, 83,210,169, 68,173,152,165, 90, 97,160,154,165, +102,130, 64,223,249,215,226,106,110,233,223,149, 22,226,234, 78, 80,183,140,116, 45, 69,105,213,166, 55, 43,196,176, 77,249, 22, + 42,161, 95,244, 10,181,162,158, 46, 8,187,208, 53,214, 58, 23, 45,150, 19,219,159, 81,128, 97,163,151,186, 2,119, 42,138,152, +176, 76,244,159,119,113,177,197,197,205,101, 95, 5, 73, 41,120,186,127, 82,113,165,235, 72,236, 92, 18,172, 10, 20, 24,147,129, +232, 57,116,201,197,163, 94,212, 88, 17, 87, 87, 20,201,253, 38, 97, 72,193,166, 29, 65,117, 23, 82,193, 80, 16, 88, 17,224,176, +189,196, 16, 70, 60, 61,126,111, 89, 4,140, 86, 26, 74,206, 72,141, 53, 37,174, 85,196, 72,125,106,199, 20, 77,108, 63,163,228, +108, 58, 32, 88,179,163, 34, 80,142,188,116,234,125, 28,103,146,184, 10, 32,218, 88,171,153,128,134, 65,214, 29, 39,101, 22, 55, +221,167,147,117,192, 98,156,110,183,200,204,181, 64, 0,140,227,136,135,167, 35, 30, 31,143,120,245,250, 18,215,215, 87,216,239, +119,152,207,103,173, 0,165, 98, 11,237, 46,121, 63,130,238, 25,114,202, 16,243,231,198, 52, 34,114,192, 24, 25, 40, 5,219, 65, +191,200, 96,208, 4,106, 13, 45,207,118, 25,233,139,125,216,141, 40, 85,211,218, 2, 17, 90,110, 72, 38,150, 58, 29,159,176,217, +110, 32, 41, 97,183, 9, 56, 14, 64, 76, 73, 59, 1, 16, 74,107,152, 37, 99,164, 45,198, 52, 96,179,217,162, 72,197,233,241, 1, +249,244,136,105,154,186,141,165,206, 51,102,110,248,236,197, 75,220,222, 92,227,155,111,191,197,221,199,119,120,241,234, 37,126, +253,183,191,197,175,126,243, 43, 76,211,132, 15,223,255,132,135,187, 71, 60, 61,158, 48, 72,192,205, 87,215,216,110,246,248,249, +253, 7,252,249,199, 31,145,198, 13, 46,175, 19,242,148, 81,167, 25,151, 55,215, 8,105,192, 15, 63,218,133, 62,205, 72, 32,140, +145,109,223, 60, 32,134,136, 49, 6,220, 92,239,113,251,106,167, 66,159, 20,177,185,220, 34, 13,106,183,152,107, 69,157, 51,170, + 85,199, 42,172, 56, 35, 72,195,213,229, 5, 82,138, 11,198, 84, 68,149,222,194,160, 32,207,144,167,250,238, 90,193,100, 85,105, +196,168,251,221, 58,247,248,200,192, 97,217, 93, 11, 41, 9,176, 45,116,186, 16,244,162,174, 34,125,215, 94,171, 94, 58, 14,236, +168, 77,144,155,218, 2, 57, 14, 74, 22,236, 47,151,216, 75,111,135, 40, 5,196,164, 93,113, 32, 65,133,146,252, 20,220,162, 59, +231, 92,171, 5,186, 4,125,177,109,181,227, 59,193, 92,178, 93, 98,218,178,201, 74, 68,197,196,150, 98, 88,128, 74,214, 85, 85, + 3,198,232,193,169,187,124, 19, 31,177, 98, 41, 81,103,181, 2,154,239, 88, 90, 1,153,178, 83,139,209,160,202, 94,143,233, 92, + 93, 20,196, 42, 14,115,171, 23, 89, 23,204, 28, 12, 46,146,123, 60,170, 62,255,171,203,134, 44,210,178, 17, 80, 21,255, 43, 54, + 38,100, 27,235, 11, 90, 47, 32,136,150,112, 17, 16,158,229, 44,244, 34,204,139, 0, 49,101,189,177,200,251, 57, 71, 58,230,182, +127,184, 2,115, 96,187,116,203,254,238,187, 68,248,122,174,153, 58, 91,139,188, 16,212, 9,224,211,133,234, 98, 52,211,108,192, + 38,128,108,118, 74,129, 90, 1,187,192,183,255,172, 86,152,144,152, 15,219, 4,185,160,103, 43, 0, 47,220,156, 29,239, 35, 91, +162,246,108,199,238,163, 99,142, 1,129,130,103,168,152,187, 64,139, 90,166,184,140,144,215,204,116, 43,110,200, 52, 36, 34, 22, +247,187, 14, 61,106, 42,166, 37,120,168,142,254, 12, 69, 68,237,157, 88,144,220, 94, 96, 20, 35,168, 45,145,162,134, 41, 22, 65, +181,159, 63, 37,127,159,107,239,208,215,212, 54,119,234,232, 63, 47,235,196,173, 74,183, 85, 49, 27,100,136, 85, 58, 89,173, 75, +173,173,233,229, 16,220,134,183,202,238,142,122,129, 17,251,248,158,204,158,173, 86,200,236, 0, 35, 16,106,109, 40, 69,250,200, +155,104,133, 3,110, 13, 69,128,154, 27,230,217,187, 87,237,236, 55, 73,217, 37,165, 86, 72, 34,108, 54, 90, 52,234, 56, 95, 51, + 64,124,237, 81, 50,112,113,125,109, 56, 94, 32,166, 1,143,247, 15, 56,157,207,125,116,175,247,133, 22, 47, 30, 54,165,208,162, + 21, 51,194,243,209,237,241,225, 14,253, 41,171, 16,155,214, 39,214,227, 56,232,251,109,159,119,149,220, 33,107,126,243,143,251, +107, 72, 35,156,143, 39,212,156,123,146, 96,100, 32, 17, 33, 55,221, 62, 12, 60, 32, 38, 61,235,213, 82,171,174,137,156, 51,164, + 85,132,160, 99,255, 82, 20,196, 51,112, 66, 92,231,251, 98,153,132,244,135,183,239,246,196, 84,198, 54, 2,204, 70, 89, 74, 49, + 42,163,183, 0,173, 54, 11, 40, 80,223,177, 87,132, 67,136,120,124,122,196,135,187,143,120,245,250, 5,110,111,110,176,223,111, +209,106,198,249,120, 70, 8, 1,227, 62,161, 65, 52,156,131, 3, 38,201, 8,194, 40,181,234,206, 36, 38,148,167, 25, 44,218, 85, +234,206,194,118, 46, 57,163,205,106,151, 17, 38,164, 33, 97,224, 1,211,211, 81, 31, 50, 34,108,134,134, 33, 6, 76,231, 51,206, +231, 51, 54,219, 17, 0,176,217, 14,216,111,107, 63,208, 17,180, 7, 11, 41, 97,123,216, 99,179,221,161, 53, 32,159, 39, 76,167, + 19,230,243,209, 19, 32, 64, 13,152,159,142,120,245,242,107,188,254,234, 51,252,240,211, 91,188,249,246,207,248,252,245,231,248, +135,127,254, 7,124,246,197,151,120, 58, 62,225,231, 31,222,225,252,120,196,221,195, 3,194, 56,224,234,250, 21,136, 4,111,223, +253,132, 31, 63,124,194, 16, 7,108,198,164,190,201, 82,113,117,121,137,237,110,135,111,223,252,128,159, 63,126, 64,157,179,229, +237, 6,251,252, 35, 82,100,164, 24,112,121,177,195,235,215, 47, 49,151,134,152, 26,246, 23, 23, 24,134, 81, 87, 7, 45, 67,102, +125, 65,164,101,181,125, 53,224,124, 44,184,186,190,192,102,187,241, 57,141,197,129, 54,176, 56,168,195, 33, 23,244, 44,171, 89, +109,111,122,249, 70,183,112,128, 13,242, 97,128,159, 30, 84, 99,251,183,213,200,207,119,186,170, 52, 94,196,153,250, 60,105, 86, + 58,168, 65,114, 54, 86,251,208,115,192,245, 98,179,161,176,100, 61, 48,141,234,167,153,226,165,119,157,186, 31, 87,150,114,206, + 89, 83,214, 34,161, 22,245, 61, 83, 82, 26,221,114, 57,182,197,243, 29, 66,159,248,196, 97, 48, 96, 76, 65,233,151,185,142,192, + 21,132, 99, 59, 84,179,166, 53,169, 32, 81, 20, 43,219,162,108, 73, 11,211, 29,174, 78, 64,146,129,139,102, 52,243,253,170,154, +127,161,212, 73,155,221, 4,162,186,146,186, 82,110,203,178,131,243, 11,147,171,217,242, 66,208,206,167,233, 33,199, 22,148,193, +254,185,147,142,242,106, 43,166,128,239,217,178,230,243, 14,157,234,197,157,104, 86, 93, 8, 0, 39, 87, 40,116,141,225,130, 97, +169,205,178, 20, 44,133,139,171, 90, 74,201, 71,187, 70,209,163, 96, 34, 57, 2,139, 98,127,189,251, 21,139,202, 36, 59,216, 27, +137, 9, 52, 3,194, 10, 27,235,241,162, 30, 57, 75, 29,127,210, 12, 90, 68, 93, 5,239,208,156,103,153,224,180, 44,149,123, 39, +110, 8, 96,219,166, 47,152, 84,135,243, 52,233,153,246,254,191,245,145, 54,173,172, 80,134, 98,237, 90, 5, 82,166,133,172,216, +226,207,199,223,122, 25,164, 24,123,106,155,228,210,225, 52,235,119,177,245,204,118,253, 69,168, 46, 96, 35,159, 2, 40, 58,119, +129,209,168,200, 80, 86, 24, 89,244,117,137, 67,165, 56,104,134,133,246,171, 75,160, 73, 41, 21,193, 82, 8, 59, 65,177, 71,183, +182,133,240, 71,100,223,181, 91,218,202, 51,162,160, 71,230,138, 16, 74, 89, 44,195, 61,243,189, 25,121, 81,164, 71,179,206,179, + 70, 89,207,181,232,207,193, 1, 97, 72, 42, 86,174,130,145, 53, 68,203,220,121,125, 34,201,204, 40,181,128, 34,112,251,226, 70, + 45,216, 49, 32,113,195,211,227, 17,199,199,220,247,219, 93, 16,222,117, 28,207,133,147,125,101, 34,205,173,234,234,254,114,240, + 19, 47,235, 41, 10,122, 38,111,134,132, 72,107,219,119, 65,106,164,193, 74, 85, 48,110,174,113,113,121, 1, 42, 25,231,211, 89, +161, 50, 28,186, 0, 29, 22,233,173,236, 31,234,107, 39,237,214,243, 2, 73,130,122,211,137, 44, 41,177, 86, 72,101,196,117, 16, + 0,185,232,200, 14, 18, 90, 5, 11, 84, 90,108, 62,160,134,138,138, 49, 42, 33, 77,154,147,149, 84,208, 16,147, 30, 52,165, 20, +139,103, 85,200,200,221,195, 19, 66, 32,236,183, 7, 92, 93, 30, 80,230, 51, 78, 31, 63, 32, 13, 35,104,183,197,148,207,168,121, + 82,191,178,161, 47,107,206,136, 49,170,160,202,169, 92,165, 96,191, 25, 65,118,104, 73, 46,186,147,173, 21,141, 25, 67,138,200, +245,140, 90,213,103,238, 31,142,176, 18,140,220,154, 18, 67, 80, 40, 76,204, 64,109,166,128,142,216,111,183, 24, 55,131,114,183, +107, 69,153, 39,204, 79,143,168,229,140,106,201,102,166,121,196,213,229, 37,190,252,226, 11, 60, 62,156,241,253,247,111,241,234, +243,207,240,143,255,252, 79,184,253,236, 21,238, 62,221,225,227,219,159,241,120,255,132,249, 84, 48,238,119,216,238, 15, 56,157, +207,184,127,124,192,221,253, 61, 54,105, 64,160,128,243,227, 3, 98, 72,184,121,121, 3, 10, 1,223,124,251, 6,239,127,190,135, +148, 25, 32,141,172,229,196,106, 91, 11,140, 52, 4, 28, 46, 6, 92, 93,239, 52,177,172, 17, 46, 15,215, 24,134,168,227, 92,129, + 37,215,233, 88, 87, 59,217, 1,167,211, 17,141, 10, 14, 87, 7,196,196,168,173,120,131,101,232, 95, 21, 91,248,197,174,145,186, +154, 3,239, 21, 49,172,131,108,166, 6, 94,118, 98,170,168,230,168,251,222,214,227, 63,105,133,106,125,174, 44, 21,169, 75,246, +183,237,242, 69, 4, 82, 50,178, 93,140,105, 72,102,117, 50,171, 74, 19,228,170,192,147,148,210,106, 28,153,156,164,164,212,174, +166, 43,157, 20, 19,116,229, 29, 86,249,210,161,235, 64, 22,241,155, 32, 26,102,146, 44,165, 43,215, 2, 22, 77,162, 10,145, 33, + 85,225, 51, 28, 3,196,178,208,165, 42, 76, 7, 6, 13,137, 72,170,170,247,231,132,116, 31, 12,182,181,194,226,136,214,253,179, + 79, 32,176, 62,236,165, 11,180,180, 75, 46,186,187, 51,109,128, 64,128,106, 5,136,225,194,200, 46,150,230, 42,167, 85,148,164, +111, 3, 21, 82,163, 57, 9, 36,220,199,214, 20, 8, 92,245,112,227,192, 96, 97, 21,156,145,114, 28, 32,238,138,113, 74, 31, 86, +227, 84, 88,154,158, 24, 74,150, 1,214,171,145,164,106, 88,143, 81, 40,153,150,241, 43, 75, 48,161,163,199,137, 54,176,212, 30, +164,228, 86, 0,189,168, 43, 24, 10,246,145, 90,117, 84, 31,162,241,189,139,118,135, 70,180, 91,160, 86, 97,149,216, 75,125, 74, +225, 66, 39, 18, 64,109,201,203,234,177,216,216, 94,253,214,209,132,139,205, 2, 90, 44,155,192,156, 34,122, 65, 7, 43, 48,100, +185,160, 97, 97, 43,182,178,232, 98,179, 21,145,108, 61,210,245,255,159,109, 74, 84,139, 22,167,244, 23,172,119, 15, 90, 97,219, +203,250, 51,211,224,248,100, 89,229,175, 47,216,215, 62,170,183,159,217,167, 46, 46,238, 18, 17, 20,152,243,103,149,180,232,110, + 0, 11, 71,214,115,192, 33, 48, 85, 59, 70, 83,206,117,173, 7, 69, 2, 23,245, 45, 40,233,172,162, 33,160, 9,247,139, 92, 28, +205, 44,189, 78, 84,251,150,216,237,140,134, 60, 23, 13,123, 41,217, 60,217,138, 32,143, 28,112,156,102,212, 90,177,219,142,136, + 49, 88,178,102, 69,206,181,235, 28,230, 82,112,253,234, 26, 87, 23, 7,156, 75, 70, 74, 3,206,231, 9,167,227, 9, 13,185, 23, +177,158, 81,222, 68,108, 26,161,146,231,158, 94,231,216,106,105,166, 61,117, 77, 4,119,219, 34,208, 84, 3,194,132, 97,136, 24, +134,193, 62,203, 96, 19,148, 12,178,189,120,147,130,221,230,128,237,120,129,227,253, 3,206,211, 73,221, 50,204, 26, 73, 12,255, +124, 10,134,141,166, 48, 6,142,157,192,106,190, 64,117,140, 16, 35,133, 1,129, 38, 72, 41,200, 83, 70, 8, 81,213,239,110,199, +112,165,109,143, 18,116,118, 55, 7,133,191,144, 82,218,208,128, 92, 10, 46,118, 59,221,155, 20,179, 16,152,159, 19, 28, 33, 77, +237, 95,196,250, 96,115, 76,248,112,127, 7, 17,193,126,183,199,126,183,199,253,112, 7, 74, 73,119,233,155, 29, 30, 30, 31, 48, +165,140, 97,136,120,178, 79,189, 24,224, 98,216,140,136,251, 4, 97,194,156,103,240, 48, 42, 20,102,158, 81,179, 10,159,226, 56, + 32,133,128,185,100, 28,143, 25, 97,163,158,105,176, 70,229, 5,138, 40,243, 19, 24, 98,118,181,164,105, 57,131,166, 97,165, 49, + 97,123,184, 64, 12,140,154, 51,242,121, 66,105, 19,202, 52,105,178, 84,205,168,243,172,146, 38, 14, 24, 54, 91,252,213,175,126, + 9,105,130,239,223,124,135,219, 23, 47,240, 15,255,248,247,120,245,226, 22,159,238, 62,225,227, 15, 63,227,254,195, 7,204, 21, +216, 94, 94, 96,220,111,113,124, 60,226,254,241, 17,199,115,198,126,127, 1,112,195,241,225, 9,227,102,131, 23, 55, 47,144, 91, +197,155,239,191,199,251,143,122,161,115, 83,143,121, 76,212, 81,146, 99, 34,221, 21, 93,108, 16, 55, 17, 21, 5, 99,218, 96,220, + 12,166,250,213,209,228,156,149,129, 76,102,123,170,181, 98,154, 38,236, 47, 54,184,184,216,154, 66,122, 65,186,118, 1,142,117, +191, 61, 66,210,170,250,238,141, 13,193, 44, 26,158,117,108, 35, 55,240,179,132, 50,106,106, 31,139,113,201, 94, 15,134,197,132, + 37, 88,209, 74,193,235, 76,235, 82, 50,230,233,100,254,111,141, 97,140, 67, 68, 83,169,114,199,248,114,228,190,143,107, 22, 88, + 65,172,163,208, 24, 24,115,182, 44,226, 16, 86,104, 91, 21,148,181, 78, 39,147,158,125, 80,107,134,241,152,116,100,106, 7, 70, + 21, 7,194, 4, 37, 86, 81,233,151,181, 34, 79, 75, 71, 31, 71, 94,246,108, 94, 29,251,174, 93, 25, 10, 90,233, 55,243,235,138, + 84, 19, 96, 89,153,200, 12,110, 98,136,226, 85,114,150,143,116,151, 69,154,238, 96,221, 91,236,145,175,118,105,120,196, 43,175, +252,234, 30, 7,170,157,182, 44, 35,127, 31,195,175,194, 55,124,111,216,136, 87,255, 60, 59,132,171,239, 60,235,146,161,110, 86, + 44,159,126,178, 37,163,245, 81, 52, 55,227,220,163,139,247, 52,177,173,233,158, 54,134, 69,204,135, 37,107, 94,133, 74,232, 17, +166, 20, 76,183,192,139, 32, 83,245,239, 11,185,175,209,115,118,186, 11,205, 52,175,221,119,192, 98,159,183,254,195, 57, 68,237, +166,209, 86,161, 29,210,119,235, 58,145,169,221, 75,189,228,180,219, 84,170, 9, 98,228,110,237, 99, 14, 29, 7,172, 25,235, 64, + 53, 74,153, 98,101, 77,161,173,153,166, 86,184,152,248,212, 38, 32,157,184,103, 73,136,181, 86, 76,115,214,103,131, 96, 54, 98, +233,241,182,110,129,114,235, 31, 76, 15,194, 33, 44,182,198,230,146,125, 23, 63, 58, 65, 81,122,225,133, 78,231,163, 62,173, 45, +213,146,212, 34,119,209,160, 54, 55, 11, 89,176,139,241, 22, 71,155,141,147,236, 44,175,102, 59, 52,193, 91, 17, 89, 70,230,173, + 26, 35,222,214, 60,173, 97, 46, 85, 47,107,131,253,196, 20,245,204,153, 84,143, 48, 12, 73,139, 38, 81,145,156, 79,134,171,193, +159, 94,221,222, 64,168,118,130,224,233,116,194,249, 52,233, 57,196,100, 58, 34, 90, 83,143, 45,213,111,113,132,201,138, 91,209, +224,144, 31, 66, 76,140, 38,193,156, 19,190, 95, 39,108,183,169, 63,147,221,209, 80, 69,239, 34, 34,212,198,184,185,125,137, 20, + 8,111,159,238, 48,231,169,139,182,165, 53, 67, 42, 91, 54, 1, 8, 28,163, 10,184, 61,240,201,194,181, 60,164, 42,218, 10,177, +172, 34,109,227,146,136,216,250,190, 11, 96,192,186,176,100, 96, 25,205,191, 54,202, 26, 19, 54,105,163, 2,133,162, 34,187, 44, + 25,185,248,174, 47,232,206,195, 64, 8, 49, 6,108,134,128,199,187, 71,204,231, 9,219,109,194,126,191,195,184,217, 96,191,223, + 99,122, 58, 97, 28, 19, 68,128,243,148,113,123,117,129,187,159, 63, 1,150, 75, 91, 1, 12,227,160, 47, 59, 19, 42,130,133, 19, + 4, 76,211,140, 96, 15,118, 28, 20,143,122,124,120,130,204, 0, 13,186,251, 97, 34,236, 46, 14, 32, 52,228,121, 66,140,205,188, +214, 9, 3, 1, 23,219,132,195,229, 65,255,154, 24, 81,202,132,233,116, 68,144,134,104, 84, 31, 33, 91, 45, 84, 61,244, 98, 98, +124,249,213,231,184,184,218,227,251,159,222,225,197,235, 91,252,254,239,126,135,203,171, 3, 62,125,122,192,207, 63,190,199,167, +119,239,208,152,113,243,249, 43,180, 16,113,255,233, 30, 79,119,247,168,129,113,216, 31, 80,203,140, 79, 31, 62, 96,127, 56,224, +246,234, 26, 79,211,132, 55,111,126,192,195,195, 35,100,206, 0, 10,226,144,144,172, 75,102,110,216, 15, 1,183,215, 59, 12,219, +104,140,121,221, 57, 14, 99, 66,138,193,212,218,106,237,153,103, 67, 54,138, 22, 86,231,124, 2,152,112,121,113,109,202, 74, 27, + 65, 59,174,212,108, 95,174, 48,214, 70,143, 86,135, 75,179,144, 24, 66,201,179, 42, 85, 99, 64, 16, 19,133,144,118,192, 58,210, +213,151, 60, 4, 54,237,131,197,237,250,168,147,212,211,238,209,151,181, 1, 77,114,223, 69,198,180, 49,165, 61,119,143,178,103, + 69, 55, 65,231,201,103, 0,148,180,123,175, 22,214,192,182,195, 76,113,128, 67,235, 20,173,234, 25, 97, 58,190,173,197, 64, 33, + 68,221, 50,231, 25, 0, 10,169,208,145,152, 4,187,124,197, 40, 27, 29,169,106,192, 21,118, 11,215, 66, 17,243, 8, 19,144,143, + 41, 61, 6, 84,158, 1, 91,208,196, 72,115, 22,233,217, 68,119,241, 38, 86, 83, 95,184, 66,110,216, 44, 77,160, 98,158,125,253, +206, 96,151,122,179, 11,219,173, 82,238, 59,103,167,131, 88,129, 80,154, 49,184,237,210, 98, 1,178, 84,237,198,155,217,172, 12, +232,210, 21,131,204,186, 99,195,194,124,247,253, 39,154,239,219,101, 21, 57,251, 60,255,194, 51, 51, 16, 21, 37, 93, 69,223, 41, +178,177, 61, 32, 64,100,187,100,213,130,231, 44,242,148,210,114,234, 82,195, 82, 59,154, 77, 8,122, 54, 53, 75, 40, 35, 67, 80, + 11,214, 86, 45, 49,165,252,178,239,239,103,119,179, 5, 38,245,204, 30, 99,189,235,247, 68,172,138,162, 30, 52,227,151,104, 80, +138, 32,170,142,238,245, 99,214, 6,162, 86, 91,123,152, 86,163,211, 25,225, 77,146,122,243, 37,120,124, 44,117,145,177, 10,198, +236,231, 55,173, 68,173,165, 43,192,165,106, 26,166, 67,104, 22, 72, 0,117, 39,130,143,180,189, 32,171, 77,150, 40, 94,219,235, + 55,114,155, 31, 33, 64,159, 51, 69, 58, 55,117,147,128,108, 55,175,214, 48,181,113,218, 59, 19, 66, 23,191,137, 52, 8,170, 53, + 79,188,216,252, 96,246, 84,210,247,170,218, 26, 64,154,238,191,115, 41,154,175,110, 20,184, 30,109,218, 8, 21, 21,121,178,188, + 8, 0,227, 48, 0, 12,204,150,127, 62, 14,140,113,140, 32,210,139,179,204,179,105, 93,244,243,186,185,185,198,139, 23,215,152, +138, 32, 68, 45, 80,142,199, 19,242, 52,171,125, 54,232, 61,230, 33, 43, 77, 17,119, 86, 80,152, 2,159, 91,199,194,146, 51, 29, + 52, 29, 94, 11,113,210, 39, 76,171,200,128,200,132,171,237,166,231,237, 17, 3, 98,206,135, 49, 24,167, 32, 4,220,190,120,173, +172,247,233,132, 34, 25, 33, 12,189, 24,213,220, 18, 99,191, 67, 35,134, 21,210,105, 66,230, 38,152,114, 70, 33,247,227,235,174, +190, 22,160, 88,129, 17, 93, 24, 35,230,113,237,123, 69,132, 46, 6, 91, 12,248,100, 99,182,138, 33, 37,164,144, 80,244,179, 64, + 45,210, 47,252,214, 20,190,160,127,168, 2, 61,134,113, 84,193,216,221, 35,190,124,249, 26,187,221, 14,145, 3,118,219, 29,242, +211, 73,163,228, 8, 56,207, 51,134, 52, 34, 13, 9,179, 20,204, 77,209,133,155,253,168,191,120,174,200,243, 25,227,238,128, 34, + 5,243, 92,176, 97, 31,225,232, 56,183,228, 9, 28,151,125, 25, 19, 99, 28, 71,228,170, 8,210, 97,187, 55,136,130,122, 23, 95, +190, 30,251,203,221,166,140,243,116,194,249,116, 66,106, 64,177,248,216,148,116,151, 93,160,221,230, 23,191,248, 18,175, 94,189, +196,249, 60,227,246,250, 22,191,252,237, 95,225,226,242,128, 79, 31, 62,226,135,111,222,224,167,183,111,113,177,191,196,213,237, + 75, 84,169,248,240,254, 45, 30,158, 78, 24,182, 7,140, 67,196,244,244,132,199,199, 71, 92, 94, 94,225,197,205, 13, 30, 78, 79, +248,246,207,111,241,248,240,132,156,103, 13,176, 73, 17, 27, 82,207, 54, 24,216, 15, 35, 94,223,236, 17,198,164,177,124, 99, 52, + 81,138,254,126, 61, 27,185,122,214,185, 94,150,100, 54,170,114, 46, 56, 28,148,132,231, 47,156,136, 44, 9, 92,176,156,224, 90, +128,106,236,109,195,231, 50, 27,162,180, 86, 43,238,138,138,196,130,174, 5,164,102, 11,167,214, 75,162,245,100, 34,221, 9,181, + 90, 84, 40, 99,128, 31, 77, 38, 50, 96, 69,211,177, 97,169, 74,131, 35,106,136, 33, 34,142,201, 88,234, 54, 46,101, 27,215, 70, +197, 23,207,243, 73, 89,208,172, 65, 7,205,240,145,106,141, 3, 34,121,199,236,161, 49,170, 70,247,216, 75, 72, 85, 64,143,237, +240,188,203, 36,243,198,242,192,207,130, 52,218, 42, 34, 82,204,150,197, 54,205, 82,181,181, 21,145,214, 1,232, 42,161,118, 15, +172,123,124,125,196,166, 29,124,180,103,111, 85, 60,253,101,240, 70,207, 18, 55, 14,180,229,119,251, 14, 48, 52,233, 75,238, 6, + 1, 69, 67,136,154,216, 73,140,106, 22,162,173, 63, 86, 92,251, 14,107,241,212, 69, 6,168,160,127,230, 61, 60,165, 73,151,210, + 50, 43,139,157, 68,255,247, 92,129,108, 1, 54,108,118, 46,207, 77, 96, 90, 58,240,102,207, 89, 99,151,230, 90, 14, 0,121, 28, +107, 1, 26, 33, 84, 70,115,116, 42,177, 18,194, 88,245, 53, 84,163,126, 14,188,208,245,224, 25,211,180,234,170,100,161,152,209, + 18, 60,102, 93,244,202,103, 95,237,239, 32,253,156, 84, 56,103, 12,120, 27,223,123,130, 95,223,205,183,234, 53,129,193,116,244, + 98,119,104, 12,200,134, 41,141, 87,193, 39,102, 15, 38,127,142,188,218,161, 30, 27,234,202,123,125, 39,165, 39,101,198,152,180, +238,168,106,115,107,196,154,183,109,188,113,125,215,237,217, 52,235, 99,239, 64,109, 82,193, 29, 43,107, 5, 98, 19, 20,180,197, +146,102,107,173,181, 82, 95,247,211, 75, 76, 52,122,206,189, 62, 19,186,187, 95,233,113, 86,222,201, 14,175,115,225, 91,177, 14, + 93, 4,197,166, 51,181, 8,178, 59,115, 86,240, 31, 23,223,214, 98,162,189, 20,144, 70, 21,244,206,101,134, 52,193, 48,166, 30, +187,155,171,142,234,155,176, 18, 15,153,112,123,123,133, 16, 19,166,233,140,113,136,168,101,194,244,116, 66,201,181, 11, 68, 3, +185, 53,180, 45, 98,207, 30,216, 66, 29,215,234,137,132, 88,227,126, 27,208,130, 94,254, 68,170,165,217,140, 3,134,237, 6,229, +116,182,169,101,132,200, 25,209,214,214, 2, 32,140, 91,140,155,173, 10,219,114,209, 84,207,173, 77, 85, 68,212, 85, 53, 21, 5, + 57,216, 59, 20, 99, 2, 7,234, 22,205,211,164,171,229, 38,246,252, 26,240,199, 67,133,162,131, 27, 86,203, 39, 29, 77, 53, 70, +245,234,157, 86, 21,159, 9, 41,246,195,160,187, 57, 11, 66, 40,181, 44,185,199, 22,205, 41, 22, 80, 16, 66, 0, 82,194,241,238, + 9, 63,189,255, 25,191,252,197,103,216, 29,246, 40,173, 33,109, 70,212,144,192, 81,189,125, 31, 63,222,161,197,128,184, 25,144, +103, 69,149,206,210, 48, 12, 7,147,243,219, 88,159, 4,210,253,201,232,182,172, 92, 4,121,158, 87,227, 55, 29, 1,141,195,136, +214, 84, 57, 62, 12, 3, 98, 8, 24,237,193,200, 83,198,116, 62,219, 94, 98, 70,145,130, 86,102,228, 34, 64, 27,177,217,108,109, +172,205,144, 66,248,234,235,207,240,197, 47,190,132,128,144,152,240,249, 47,191,198,118,179,193,221,167, 7,124,247,205,119,248, +225,155, 31,112,245,226, 26,175,191,248, 28, 15,199, 19,190,255,254, 7, 72,107,184,184,185, 70, 26, 6,220,127,252,128,251,251, + 35,110,174, 47,241,226,246, 18, 31, 62, 62,225, 63,190,249, 30,231,211, 17,179,253,236,155, 20,144,152, 32, 9,136,145,177, 79, +140, 23,183, 91,132, 77, 66,174, 13,135, 67, 2, 15, 17,115, 46,216,108,162, 10, 89,172,171,200,165,218,184, 76,119,159,145, 24, +243,156, 65, 17,216,237, 54, 8,161,117,145, 90,107,170, 44,133, 65, 34,200, 32, 17, 29,149, 26,168, 7, 94,144, 67, 55,208,204, +107, 78, 22,190, 96, 74, 98, 19, 83, 54,243,188,194, 32, 33, 13, 13,165,233,202, 67, 68,122, 50,145, 7,198,232, 14,136, 1, 40, + 61,138, 44, 95,216, 81,143, 28,151,157,103,179,132,138, 24, 2, 36, 4,197, 72,250,222,144,213,174, 70, 85, 39, 1,238, 33,134, +117, 60, 49, 68, 72, 35, 20, 20, 11,145,176,181, 3, 91, 50, 89, 13,198,206,214,238,185,228, 98, 34, 66,141,121, 93,239, 66,201, +212,194, 10,153,145, 69,144,213,180, 91,235,176, 38, 90,226, 66,181, 11,172,125,199,218,204,110, 85, 69, 59, 35,107, 23,236,130, + 82,127, 88,179, 60,103, 14,158,238,166, 63, 27, 57,194,214,231,156,158, 21,201,218, 5, 19, 25,139,221, 40,100,158,201, 78,171, +240,157, 30,224,226,212, 48, 98,104,244,193,210,149, 88,184,157,118, 46,198,173,119, 44, 43,108,244,175,133,198, 82, 64,243, 42, +134,149,108, 63,160, 17,165, 30,160,194,253, 66,100, 19, 27, 25,133, 95, 59,165, 64, 29, 83,189, 6,219,104, 19, 79,203, 10,128, + 26,162,217, 31,245,249,177,155,210, 16,190,110,222,232, 19, 5,255,188, 40,244, 92, 49, 10,181, 7,212,232,202,161,217,158,222, + 20,211, 33, 24, 69,112, 1,244,192, 14, 81,247, 93,187,194,222,191,215,190,175,181,103,182,227,116, 69, 52, 40,198, 27, 37,104, + 10,156,239,202,125,116,204, 6, 46,106,166, 70,215,130,194, 20,226, 6,225,107,108,233,147, 97, 13,141,145,110, 95, 10,129,148, +146,105,133,128,102, 39, 24,178,208, 46, 62,154, 91, 95, 71, 8, 22,223, 61, 7,178,252, 2,101,179,119, 56,116, 87,220, 99, 5, +108, 49,188,179,198,185, 65, 88,186, 79,188, 86,233,116, 56,177,139,188,152, 74,125, 46,106, 15,174,181,234,243,215,153, 0, 22, +239, 42,170,152, 7,128, 20, 20, 26,211,154,160,204, 90, 92, 13,195, 96,185,234,154, 98,168, 28, 14, 13,220,218, 94,108,176, 63, +236,213, 37, 96,113,197,167, 83,198,124,158, 0,169, 32, 54,228, 57,187,230,129,208, 26,171, 91,199, 87, 42, 13,214,156,232, 89, +162, 1, 72,254,174, 24, 18,221,116, 32,206,141,191,190,186,232, 12, 7, 37, 74, 2, 85, 50,136,131,138,106, 91,195,245,205, 23, + 72,227, 14,231,211, 17,249, 60,117,157, 90, 8, 17, 37,207, 56,158,158, 80, 73, 16,173, 81, 25,135,193,146, 35, 53,222, 58,215, + 25,167,227, 9,185, 89, 46,123, 92, 92, 60,173, 86,148, 57, 35,202, 42,227,149, 86, 15,110, 67, 67, 45, 6,167,143,254, 5,146, + 97, 45, 89, 71, 98,134,226,147,102, 68, 54, 83, 69,147,117,243, 32, 71, 80,186,157, 9,184,127,124,192,156, 51,174, 47, 47,145, + 56, 34, 83,198,197,197, 14, 82, 42,182,155, 45,222,151,247,170, 58, 30, 7,100, 57,226, 16, 7, 20, 99,166,199,144, 32,176, 61, + 75,113,138,153,193, 42,130, 61, 12, 13, 56, 77,115,127,201, 68,101, 36,216, 95, 28,108,191,200,216,142, 91,164,113,236,168,197, + 34,130,199,135, 7,205,246,230,136,102, 84,178, 64,172,137, 95, 28,144, 75, 6, 69,198,175,126,243, 43,124,249,245,151,216,236, +118,104, 76,184,186,190,198,225,176,199,211,211, 19,190,253,230, 13,126,248,238, 7,188,250,242, 21, 62,251,234,115,124,120,251, + 9,127,252,243,159,177,221,140,248,252,243,207,145, 69,240,225,253,207,168,185,224,179,207, 94, 97,191, 31,240,227,187,143,248, +246,155,119, 56,231, 35,230, 89,129, 2, 67, 2, 66, 84,169, 52, 19,227,144, 2, 94,190, 60, 96,115, 72,152,231,130,152, 6,164, +253, 96,133, 84, 67, 74,177, 7, 79, 72,107,168, 53, 63,131, 8, 85, 19,223,108,182, 27, 12, 67,242,225,144, 94,222,188,100,132, + 51,175,125,193, 62,174, 54,168, 9, 49, 22,221,172,134,182, 16, 12, 34, 66,189,109,240, 27,192,246, 76,122, 81,137, 84, 85,166, + 19,247, 63, 79, 29, 72,173,115,148,217, 90,143,129, 2,192,193, 42, 85,128,173, 19,114,202, 21, 72,109,119,154,121,253, 60, 74, +147,154,244,223,187,174, 34, 47, 93,221, 31,109,117, 64,213, 85,192,109, 97, 47, 4, 70,105,106, 11,241,182,174,212,210, 45, 73, +136,232, 32,144,142,226,236,221, 94, 91, 66,100,218,130,164, 90, 72, 99, 90,228, 58, 33, 12,182, 51,117,209,156,239,165,215,250, + 2, 49,177, 30,153, 58,189, 54,251,174,196,194, 47,236, 18,204,181, 88,118,117, 70, 13, 80, 44, 44,173,148,213,236,254,236,250, +172,235, 95, 34,115,177,228,198, 27,108,136,152,122, 59,203, 68,200, 88,137,180, 2,161,102, 43, 18,236,249, 32, 35, 6, 90,248, + 50,152,108,247,104,227, 77,215, 51, 48,169,119, 94,180, 22, 90,108, 90,109,253,220,160,103,117, 47, 14, 52,123, 30, 93, 31, 80, +107, 39,182, 85,131, 21, 33, 24, 49,176, 39,131,152,240,149, 88, 89, 7,230, 82, 32, 7,214, 4,215, 33,176,253, 30,188, 16,189, + 76,240,215, 72,208, 56,118,198, 62,218,115,107,216,250,226,238,223,217, 10, 42,179, 94, 69,232,206, 55, 35,152,144, 49,198, 96, + 99,241, 6,170, 98,188,115, 60,107,172,146,113,239,251,207,236,133, 20,180,113,209, 73, 8,247, 70,170,174, 38, 64,176,253, 53, +155, 8,146,176, 40,187,169,145,173, 60,168,235,102,214, 98, 24, 49,108, 45,131,193, 38, 80, 80,216, 15,117,202,159, 58, 11, 22, + 82,157, 7, 0, 50, 2,140, 12,108,153,233,130, 70, 1,185,106, 28,106, 45,130, 57, 23,228,108,163,119,127,191,157,123, 1,233, +221,186,190, 67,192,102, 76, 96, 98,204,121,134, 52, 96, 72, 17, 99, 74,102, 23, 19, 83,211,235,148, 44,109, 18,118,251, 45,246, +187, 13,178,173,236, 34, 3,247, 79, 39,204,115, 89, 86, 32,182, 70,107, 30, 34,179,230,235, 99, 85,228,216,123, 82,237,221,245, +192,181, 68, 1,213,211,231, 42,112,216,141,184,184,220, 40, 8,127,246,151, 0, 0, 32, 0, 73, 68, 65, 84,190, 89,128, 96,216, +218, 42,162, 69, 21, 41,179,254,242,242, 6, 32,224,124, 62,227, 52,205, 58,149,140, 9, 12, 21,101, 79,118, 7,168,246, 72, 69, +194, 10,159, 9, 0, 42,206, 83,214,132, 77, 79, 64,102,181,148,195,180,109,211,148, 17,213,186,195, 11, 24,194,255, 67,179, 15, + 76, 4,161, 41,121,173, 9, 33,215,210,119, 20,126, 40,228, 92,123,186, 20,200,129, 29,235, 7, 94, 71,135,105, 51,226,225,225, + 1,249, 84,144, 54, 35,118,155, 13, 62,157,142,184,184,188,192,241,241, 9,227,198,194, 81,102, 85, 43, 82, 10, 8,196, 40,121, + 66,107, 35,198,221,136,233, 60, 65,178, 96, 46, 19,134, 33,225,220, 57,194,170,212, 46,249,212,149,166, 14,207, 57, 92,236, 49, +110,182,104,173, 98,179,221, 88,165,174, 35,186, 82, 42,142,143,143,120,124,248, 4, 2, 43,161,136, 8, 67, 28,108, 63, 93,117, +100, 19,128,175,255,234, 43,124,246,249, 43,108,182,123,132, 24,177,189,220, 99,136, 3,238,239, 62,225,135, 55,111,241,246,135, + 31,241,197, 87, 95,226,197,203, 27,124,255,253, 79,248,211,191,255, 47,188,252,252, 53,190,248,252, 75, 60, 60, 62,224,167,239, +191, 7, 98,192,203,155, 91,108,182, 35,222,190,251,132,111,190,121,171,220,248, 58,161, 9, 99, 72, 1, 67, 20,139,242, 35,108, +108,135,190, 25, 19,202, 92,209, 56, 96,187, 79,170,220, 45, 98,169,108, 70,101, 11,213, 44, 35,234,157,117,242,150,100, 49,255, +164, 22, 50,205,198,244,234, 69,108, 38,128,140, 86,197,115,207, 93,102, 59,145,164, 54,180, 8,203, 96,111, 88,154, 30, 49,127, +167, 94,106,212,237, 51, 74, 68,106,230,183, 85, 5,142, 44, 60,132, 38,157, 75, 29,120,217,163, 58,254,147,204,214,209, 44,133, + 77,164,116,108,165, 90,171,150,196,177, 24, 83,191,160,157,218, 36, 22, 79, 26, 44, 11, 93,106,177,113,102,181,136, 97,177,196, + 57, 61,168,156, 24,229,188,116, 31,173,186,178, 63,172,186,109,216,231,247, 28,159, 28,116, 20, 38,203,116,192,255,108,162,214, +139,159, 42,139,104,135,157, 92,101,211, 44,169,210, 47,134, 42,158, 6,165,232, 71,177,203, 45,153,216, 78,164,162, 54,197,153, + 58,249,106,158, 38, 12,219,208, 5,114, 32,181,227,105,185,176,124,126,180,128, 35,187,224,203,105,102,158, 40,230,132, 49,197, +212, 82, 87,212, 19, 45, 94,240,110,107,178, 78,168,251,214,205,242, 8, 75, 33, 19, 11, 57, 17, 17,196, 96,124,255, 38,230, 52, + 97,251, 30, 93, 20, 39, 61,197,207,139,181, 46,182, 51,142,186,139,231,154, 41,209,117,101, 80, 77,155, 81,123,185,211,227, 67, +237,251, 97, 44,100,180,214,180,129,209,174, 28, 61,189,172,193, 9,120,254, 59, 18,106, 46,182,202,167, 46,156,243,189,247, 95, + 94,230,254,239,193,172,157, 11,231,221,153,243,170, 84,175, 69,208, 44, 13,113, 61, 77,210,117,140,231, 40,152,203,161, 35,106, +165, 43,159,157, 74,232,248,215,214,154,137,230,216, 34, 91,181,248,114,167,129, 72,179, 75, 1, 75,182,135, 61,207,197,246,235, +196,203,239, 77,157,170,230,212, 56, 45, 14,181,176,244,247,101,217,233, 47, 41,113,246,185, 26,208, 69,178,189, 15, 85, 48,103, + 35,200, 85,195,197, 22, 93, 99,166, 4,228, 92,250,119,222,204,150, 73,117,137,200, 77,195, 96, 43,221, 2,166,134, 20,162,118, +216,166,147,200, 70, 87, 27,198, 17,227,118,196,118,183, 5, 18,163, 76, 19,198,113, 68, 43, 13,199,167,163,190,207,254, 30,183, +149,179,203, 69,150,174, 75,240,113,188,137, 52, 23, 82,159, 57, 6,130,190,123, 41, 13,234,185,151,130,139,195, 14,155,205, 8, + 75, 33, 54,167,150, 66,100, 40, 41, 89,115, 24,119,184,184,190, 65,205, 5,243,108, 26,180,160,211, 32,128, 49,151,242, 12,209, +158, 82,194,208,161, 93, 58,197,154,115,198, 92, 50, 40, 69, 8, 83,207, 96,112,145,113, 19, 65, 36, 86,225,138,143, 91,201,118, + 64,193, 30,182, 92,139, 74,238, 45,254, 50, 24, 78,213,129, 8,173, 20,148,172,194,155,216, 61,185, 75,167, 16,201,196, 6,129, + 49,140, 1, 31, 62,125,194,211,233,136,235,235, 43, 92, 92, 93,224,135,239,222,224,197,203,151, 56, 31, 79,216,237,182, 72, 33, +224,241,233,136,253,197, 14,219,180, 81, 17,207,121, 66,184, 14, 24, 54, 35,166, 73,115,212,143,143,103, 23,112, 46,220,122, 52, + 60, 62, 30,193, 4,196, 0, 72, 84,145,202,102,187,197, 48,110, 80,234,140, 84,245,165,158,230, 9,231,227, 17,243, 84, 81,166, + 9,119, 15,103, 12, 41,224,229,229,128, 20,212, 51, 95, 74,198, 76, 51, 82,216,226,215,191,254, 37,126,241,171, 47,123, 64,197, +184,209, 29,255,251,119,239,241,238,167,143,120,255,225,103,252,226,235,175,113,243,242, 5,254,227, 79,127,194,255,252,227,127, +224,215,127,243,215,248,236,139,207,240,225,221,123,252,252,211, 59,108,182, 91, 92, 95, 41, 12,225,187, 31,222,225,205,247, 63, +163,230, 51,114,157, 33,181, 34,197,136, 20,122,191,131,205,144,112,125, 57, 32, 14,234, 44,104, 8, 72, 99, 64, 76,208,248,212, +202, 8,227,138, 20,213, 42, 90, 70,247,205,234, 75, 95,145,231,140,221,126,131,113, 76, 75, 56, 72,179, 21,137,120,231,217,122, +158,117,183,115, 48, 47,182, 25,207,201,118,110,121,173,118, 24, 91, 16,136,191, 48,108, 7,121,201,154, 59,111, 59,109, 30,130, + 41,164, 21,244, 83,114,177,164, 51,243, 91,114, 68,215,156, 64, 71,139, 94, 48,120,247,227,170, 97, 2, 27,168,163,154, 61,145, +108,199,191, 88,226,152, 25, 45, 24,154,178,138,141,110,205, 74,211,225, 17,170,166, 86,144,137, 93,244, 49,169, 0,198, 58, 16, +194,130,242, 92,198,166,139, 21, 46,152,167,125,157, 76,184,144, 25,171, 98,121,109,212,238, 66, 63,178, 29,170,194,244,108, 31, +106, 1, 40, 85, 76, 28, 21, 96,222,119,152,135,213, 47,236,218, 73,119,220,150,160, 25, 47, 10,180,160, 48,246,169,113,207,217, + 99,148,125,206,210,184,143,140,129,245,168,152, 58, 34,214,215, 49,202,115,231, 30, 59,219, 76,213,222,150,132,120, 19,157,249, +174,210, 47,245,197,155,223, 44, 72,166,153, 56,206,247,152, 36, 98, 83,166, 5,244, 65,190,139,247, 12,115,239,210,125, 39,207, +254,204, 88,134,128,225,107,201,127, 46,169,182,133, 88, 46, 27, 70,176,207, 73,201,125,205,247,145,102,167, 84,226, 93,232, 59, + 73,159,112,244,117,135, 5,112,244, 2, 96,197,203, 95,252,234,203,231,239, 42,108, 37,228,121, 80, 77,235,190,246, 42,106,201, + 76,131,254, 92, 93,211, 96,154, 38,130, 32,196, 4,145,134,105,242,132, 56,234, 69,138,171,176,253,207, 98, 7,251,180,149,218, +127,165,224,246,120,233, 78,222, 91,113,231,125,173,225,249,244,158, 59,224,226, 89,112, 48,228,239,226,167,127,238,119, 95, 10, + 92,113,154,103, 91, 68,111,205, 87, 63,102,177, 45,173,161,106, 22,145,242, 26, 98,131,136,185, 88, 58,241,208, 49,185,140, 97, + 72,134,165,214,234, 54, 48, 43,244,201,178,210, 75,209, 75,157,154, 96,179, 25, 49,164,132,205,102,131,105,154, 49,207, 51,118, +187, 45, 30,158,142, 56,157,166,133,243, 0,111,100, 44,210,185,162, 19, 55,217,133,180,238,224,233,185, 11,173,127, 46,222,229, +115,136, 54, 69,201,184,188, 86,215, 84,105, 98,177,205,182, 62,168, 5, 12, 65, 45,192,213,171, 91, 37,150, 86,189, 91,106, 46, + 86,108,234, 51,126, 62,159, 53,182,155,213, 33,228,140, 8, 13,119,209,231,113,206, 30,139, 78,189, 64,238,161, 85,166,142,143, +190,219,241,128, 3, 2, 20,242, 96, 68,167, 82,181, 26, 8, 65, 21,168, 9,140, 33,170,168, 77, 15,161,106, 80,142, 5,212,160, +140,111, 11, 60,176, 64, 12, 61, 68, 2, 30,166,130,143,143,119,120,113,251, 66,185,227,172,251, 81, 21,166, 48,246, 87, 23,120, + 58, 62,225,213,103, 47,177, 25, 20, 53, 59, 63, 60, 1,159, 85,140,219, 13, 30, 30, 30,113,158, 38,176,112,231, 63,187, 18,166, +150,138,199,187, 71,112, 8,184,188,220, 98,106,140, 22, 3,182,219, 45,234,192,168, 71,221, 41,230, 60,227,241,254,147,229,246, + 50,114, 41, 96, 38,108, 66,192,134,163,198, 14,182,134,105,154, 16, 66,196,111,127,247, 27,252,242,215,191, 0, 71,173, 86, 67, +140,104,212,240,227,119, 63,226,254,195, 29,106, 5,126,243, 55,191, 65,220,238,240,111,255,227,223,241,205, 55,127,198,223,254, +254,247,120,253,249, 75,124,247,237,247,248,240,254, 61, 46, 14, 23,184,188,220, 35,112,192,219,183,239,240,230,205,123,204,249, +132,106,193, 7, 49, 70,196,160, 68, 50,226,128, 97, 76, 56, 92, 36, 12,227,114, 40, 18, 11,134,164,136,222,146, 51,152, 71, 12, + 49, 46, 25,205,246,223,135,160,249,215, 28,128,124,206,104, 85, 83,231,124, 87, 36,165,168, 45,141, 93, 49,171,120,198,110,127, +178, 78,211, 45, 25, 30, 58, 33,198,113,151, 38,221,171,217, 71,130,173,244,113,144,139,165,216, 8,114,232,195,159, 6,105, 12, + 10, 17,145, 24, 82, 22,228,172,192,195, 72,150, 49,152, 72, 67,206,179,174, 89,204, 6,199,150,118,165,194,161,185, 7,206,232, +190,190,245, 20,174, 70, 13,115,205,234, 96, 48,127,188,179,205,251, 65, 12,141,241,108,181,117,218, 30,140, 57, 46,118, 40,123, +234, 20,173, 4, 76, 14, 41,105,107,112,147, 11, 73,215, 9, 92,150, 74,213, 89,217, 49, 44, 36, 48,251,191, 85,150,125,244, 34, + 86,109, 11, 89,206, 86, 90, 42, 36,204,102, 31, 12,230,248,104,203,229,215, 76,136,179, 66,248,250,239,228, 5,185, 43,238,189, + 32,161,238, 61, 90,208,112,220, 24,226, 86, 31, 87,251,175, 46,113,169,102,115, 52, 52, 40, 86,162, 62, 45, 98,176,136,233, 60, +167,220,139,178,142,161, 21,164, 72, 38,160,170, 8, 1,160, 24,187, 45,136, 77,100,232,107,138,208, 86,228, 56,178, 16, 25,167, +207,225,121,225,231,142, 3,240, 10, 23,107,133, 5,155, 19, 3, 34,157,199,173, 19,158, 37,105,172, 81, 89, 68,179,109, 9, 82, +113, 46,133, 67,116, 28, 10, 67,171, 48, 44,230, 53,239,159, 87,218,127, 39, 37,218, 86,131,170,101,161,154,207,190, 40, 24, 42, +197,212,247,255,204,206,202,119,157,133, 62,151, 20, 8,145,147,166,114,173, 87, 1,100, 59,115,159,246,212,176,128, 73, 68, 32, + 40, 54,194,111,102,191,139, 70,100,244, 66,188, 90, 52, 44,247,239,218, 3,119,200, 18, 49, 57, 44,231,131, 22, 19,188,224,155, +155,116, 27, 99,183, 2, 58,103,160,138,174, 31,204,194,150,179,141,221,237,203,100,183, 83,194,115, 23,244,239,139,204, 24, 98, +210,159, 47,183, 30,160, 3,131, 13,105,176, 73,209, 46,120,191, 69, 26, 19,134, 33, 97,140, 17,167, 73,249, 38, 49, 6, 60, 61, + 61,233,180,181, 65,201,149,212,116,250,128,214,125,242, 74,106,179, 41, 69, 87,175,219,239,215, 90, 15,166,129, 43,251,109,125, + 38, 82, 48, 14, 9, 23,251,173, 29, 3,173,199,208, 54,136, 82, 49,195,136, 92, 4,135,171, 27, 3,210,100,189,192,169, 89, 76, + 51, 44,182, 59, 91, 51,161,107,143,142,108,166,128, 0, 77, 99,203,211,140,196,154,197,209, 22,241,134, 90,144, 45, 23, 37,114, +199, 27,186,245, 69,255, 93,153,221, 38,236,108, 64,178, 74, 48,245,113,231,243,253, 92,239, 98,154, 30,162,226,177, 54, 30,219, +202,202, 42,130, 0,247,247, 71, 16, 11,174,247, 23, 24, 56, 32,180,134, 77, 76, 56,149, 25, 23,251, 3, 62,124,248, 8,196,136, +205, 56, 98,154, 79,168, 25,152,243,140,180, 29, 64,196, 56,231, 35,130,169,243,245, 2, 81,152, 70, 17,224,156, 43,120,127,192, + 54,204,224, 34, 56,151,170,121,221, 28,112,154, 51, 78,247, 15,152,230, 9,159, 62,190, 71,138,123, 12,155, 17, 41, 69, 92, 93, +238, 64,185, 32,215,108,230, 33, 96,179,137,248,199,127,250, 3,254,234,183,127,133,113,147,192,182,131,191,187,191,195,183,127, +254, 22, 79, 79, 79, 56, 12, 59,188,254,226, 11,112, 26,241,223,254,191,255,134, 31,223,190,197, 63,253,159,255,132,195,229, 30, +223,253,233, 27, 60, 30,143,120,249,226, 37,246,135, 61,230,154,241,195,119, 63,224,219, 55, 31, 81,235, 17,165,232,142, 40,133, +132,200,203,225, 62,164,136,195, 62, 34,140,128, 52, 45, 94, 74, 19,164, 16,117, 92, 84, 4,181, 50, 66, 92,198,148,210,148,194, +214, 68, 15,112,134,142,173,171, 20,164,113, 64, 76,193,206,103,187,200,130,138,162,214,213,189,250, 97,217,178,127,249,153, 45, +137,123,178,149,177,194,221,123, 77,128,216,248, 12,190, 91,135, 66, 98, 2, 67,211,214,138, 10,241,244,141,172, 40,197,198,245, +182, 87,132, 89,104,186,122,223,186,191,102,163,127,230,160,162, 72, 86, 33, 12, 92,188,102,137, 84, 26,184, 99,174,171, 44,125, +252, 87, 75,209,228,178,166, 99,108, 90,173,132,196,217,225, 70,192,114, 2,155, 43, 73,121,133,212, 68, 87,150, 90,156,137,180, +101, 85,229, 73,105, 70,209,210,231,158, 23, 40,133,219,210,154,174,177,154,169,228,253, 66,142, 41, 46, 35,112, 83,184,195,168, +111, 32,245,197,235,234,162,244, 14,200,242,208,144,115, 70,180, 66, 4,171, 43,160,181,134, 4,244,232, 93,189,231,170,137, 32, +107, 47, 78,168, 45, 23,149,216,122, 66, 12, 5,236,108,120,231, 99,123, 50, 89, 51, 12,108, 15, 2,177, 17,160, 59, 3,106,191, +224,165, 3,140,250, 88,179,135,159, 16, 74,109,198, 10,215, 61,108, 99,251,107, 25, 43, 95, 56,245, 85, 81, 8,106,233,233, 26, +157,200,171,180, 63,111, 74,184, 11, 36,105, 21, 52,226, 34,172, 30, 82, 2, 15, 31,209,103,181, 79,182,160, 7,104,235,206,130, +106,216, 83, 99,202,219,106, 17,127,225,131,119,208, 12,173,254, 92,101,100,149,110,255, 83, 24,142,142,196, 83, 12, 16, 49, 81, +226,124,238,164,178, 92,178,229, 39,104,204,112,206,217, 68,118,110,159,163,206,159, 95, 43,198,151,139,188, 46,207,145,173, 36, + 37,232, 72, 27,118,153, 3, 64,168,193, 40,108,158, 44,103,115, 22,115,182,132, 96, 68, 70,147,141, 70,103,204,219,133,191,214, +149,212,213, 78, 94,159,109, 35, 79,186, 91,132, 85,112, 93,138,210,248, 28, 80,134, 70,171, 8, 93, 89,212,133,254,252, 70, 70, + 26, 34,134,209,119,231,246, 93, 68,157, 42,250,116, 42,215,140, 22, 26,118,187,157,133,110,141, 90, 6,157, 39,108, 46, 47, 48, +231,134,227,241,132, 42, 25,209,102,160,106, 99,229,149, 70, 67,150, 72, 94,183,250,249,212,203, 27, 94, 47,236,204, 62, 26, 98, +128, 88, 4,234,237,229, 30,251,221, 70,175,240,214,148, 38,199,202,153,231,192, 72,148, 16,199, 3,118,151, 55, 16, 91, 87,151, + 50,235,247,100, 22, 63,133,241,216,249,138,166,133, 68, 85, 65, 42,135,132, 22, 52, 35, 37,159,158,148,110,167,143,187, 54, 44, + 34,168,204, 8,134,174,142, 13,188,202,121,213, 81,188,170,127,217,108, 14,158, 94,165, 74,216, 20,130,217, 53,124,148,217,172, + 58,182,142,223,114, 21, 21,117, 89,125, 78,229, 91,125, 16, 70,188,255,244, 17,196, 13,195, 97,135,221,245, 21,206, 85,253,216, + 81, 10,246, 23, 7,252,244,254, 29,202, 52, 97, 59, 38,204,159, 78,104,161, 97,154,102,108,247, 59, 20,139,134,205,168, 40, 77, + 76, 41,219,192,219, 8, 26, 85, 49, 63, 12,163, 70,103,206,130,153, 11, 34, 7,228,227,132,167,143, 15, 56, 61, 61, 98,154, 39, +204,167,130,225,146, 48, 14, 91,197,211,134,136,105,154, 48,231,140,141, 0,195,230, 10,255,248, 47,255,130, 47,190,126,133, 49, + 37,140,135, 3, 8,192,207,239,126,194,191,255,247,255,129,243, 57,227,139,175,190,194,245,139, 43,220, 63, 62,225,223,254,223, +127,197,195,116,135,255,250,127,255, 95, 72,156,240,237, 55,223, 2, 32, 92, 95,223, 96,140, 1,243,121,198,159,191,251, 17,111, +223,190,211, 80, 24,139,107,221,132,128,192, 62, 80,100,140, 67,192,238,192, 74,229, 3,129, 18,161,216, 33,226, 93,111, 46, 58, +218,217, 70, 85, 23,251,161, 82,109,148,222,164,161,133,170, 66,199,214,112,177, 25, 84, 76,200, 75, 21,222,114, 69, 13,154,237, +189,222,139,245,212, 43,170,125, 79, 19, 8, 22, 88,178,116,117,212,189,237,234,249,110,165, 32,166,100,129, 20,234,251, 37, 17, + 96, 86, 58, 28,113, 0,183,212,189,191,205, 67, 38,152, 65, 49,129, 97, 94,218, 20, 16,237,153,203,173, 34,196, 96, 93,167,128, +161, 98,145, 34,234,215,101, 39, 57, 53,152,247, 86, 15,209, 16, 7, 43, 46, 8,146,103,163,189,169, 94, 32, 82, 68,131,160,150, +220, 63, 15,173, 67,184,163, 97, 65, 14,210, 89,196, 65,125,131, 46,210,173,111, 48,194,161, 64, 21,247, 54, 63,126,150,220, 21, + 67, 80,133,187,237,213, 27,105,134,187,219,197, 52, 68,196, 26,102, 59, 84,249, 47, 46, 43, 50,122, 95, 91,237,110,117, 92,233, +161, 45, 38, 70,196,176, 26, 93,187, 62, 97, 65,140, 74, 83, 98, 28,181, 53,219,220,117, 1,139,122,189, 17, 67,124,231,109,184, + 75,177,110,208, 39, 3,108,211, 12, 72,235,104,224,190,155, 53, 10, 25,236, 80,119,202, 25,236, 2,232,151,187,193,143,148,162, +150,129, 20, 84,139, 81, 13, 70, 99, 19,159, 46,122,181, 46,134,140,167,207,171,113,240, 50,109,166,103,208,153,165,227,108, 43, +236,177,211,224, 74,247,184, 73,243,194,236, 47, 68,132,139,143,201,245,134,157, 38,183, 52, 53,173, 91, 68,219, 95,228,177,147, + 77, 79,132,150,166, 71,127, 54,115, 12,181,102, 88,222, 69, 81, 30, 12,170,228, 86, 51,226, 0,177,221, 84,240,206, 91,164,139, + 58, 67, 72,102, 21, 43,150,107, 30, 81,237, 29,105,133,150,117,154,141,105, 75,171, 8, 89,145,218,213, 87, 83,174,172, 39,179, +132, 90,215, 78, 38,134, 14,246, 76,186, 0,176,139, 69,187, 32, 89, 59,216,106, 35,110,106, 90, 76, 40,149, 81,215, 80,218,140, + 20, 93, 19,146,125,102,144,191, 8, 58, 53, 36,112,208,169, 92,140, 58,129, 43, 89, 58,176, 42, 70,133,208,148, 90, 81, 91,195, +126,191, 71, 72, 1, 28, 52,247, 33,231, 2, 64,149,227,247,247,247, 56,159,231,190, 67,119, 13, 7,155,242,221, 94,100,139, 79, +174,157, 27,175,117, 94,131,106, 47,185, 63,135,254, 78,166, 16, 64,173, 64, 80,112,121,245, 66,113,181,181,129,147,139,197,105, +113,165,196,128,139,155, 23,216,111, 47,208, 80, 32,181,160,230, 98,250,167,217,178, 32, 24,211,116, 66, 41,130,221, 86,159,125, +161,140, 97, 28, 13,140, 36,152,231, 25,243,164,120,108, 48,131, 90, 64, 2, 67,162,125, 78, 14,233, 81,228, 28,150, 4, 33,167, + 83, 17,235, 11,102, 53,138,194,230,109,247, 9,182,177, 1,117, 21, 42,217,178,213, 71,188, 17,170, 64,246,153,191, 10, 12,128, + 24, 26, 78, 57, 99, 58, 11,198, 49,225,242,234, 18, 15, 31, 62,153,103,156,113,216,239, 49,139,224,233,116,198,205, 56,224, 33, +106,133, 47,165, 96,140, 1, 3, 1, 79, 82,144,115,197,241,116, 2, 71, 85,226,115,220,128, 57, 32,143, 13, 97, 24, 48,132,128, + 22,128,199,243, 7,204,121,194,252,105,194,241,238, 3,178,104, 38,111,218,232,200, 54,134,132,218, 38,176, 20,200, 84,240,148, + 5,175,191,254, 26,255,242,255,252, 87,236,118, 35, 54,187, 13, 46,111,175, 49,213,140,239,223,252,136,127,255,215,127, 69,158, +102,252,205,239,126,139,195,213, 45,254,252,230, 71,252,143,127,251,239,184,184,186,193,127,249,199,255,130,121, 62,227,199,183, + 63, 32, 16, 99,216, 38, 4, 0,143,199, 19,190,125,251, 51,126,122,247,222,198,255,202, 30, 30, 82,180, 23, 74,125,213, 67, 10, + 24, 55, 1, 49, 89,204,125,208,233, 70, 17,193, 72,172,159,105, 46,200,133, 17, 6,117, 31,148, 82, 0,102,181,220,216, 75, 66, + 38, 34, 42, 69,176, 29, 6,108,118, 35, 34, 47,187,209, 78,112, 19,194,255, 79,215,155, 62, 75,118, 28, 87,158,199, 35,226,222, +204,124, 75,237, 85,168,194, 66, 16, 34,137, 2, 9, 2, 92,164,166,212,173,150,205,223, 59, 54, 54, 95,100, 54,102,211,221,195, + 97,183, 90, 77, 35,197, 85, 36, 69,144, 4,137,133, 4, 10, 64, 1,133,170,122, 75,102,222, 27, 17,238,243,193,221, 35,110, 22, + 52, 50,147,145, 0, 11, 15, 47, 51,111, 70,248,114,206,239,196, 88, 0, 26, 76,137,109, 9, 98,164, 7,177,212,170,150,161, 16, +204,251,108,209,162,182, 47,139, 22, 77, 75, 54,162,247, 47,142, 82,170,130,249,194,181,235,209, 61,147,104, 44,151,152, 21, 72, +130,237,238,205, 58, 85, 4,129,169,209,180, 6, 35,159,113,213, 67,197,199,116,206,160, 23,155,199, 21, 46,134, 73,141,205,163, +205, 92, 27,241, 76,199,229,122, 48,199, 24,144,179, 19,179, 82,179,236, 33, 18,132, 6, 19,225,117,209,152, 83,217,196, 0,231, + 33, 82, 19, 31, 81, 53, 0, 59,245, 61,176, 88,250,159,219,113,170,139,136, 22,234,226,254,133, 95,162, 60, 23, 29, 97,211,138, + 24, 88, 69,218,160,205, 68, 82,154,167,221, 8,105,128,186, 57,156, 15,109, 73, 95, 98, 99,123, 52,210, 91,191,196, 93, 4,233, +251, 99,226, 0,144,249,193,219, 53,165,152, 74,150, 2,202, 45, 26,188, 89,159,122, 90,179,151,164,250,231, 43,101,227,224,227, + 64, 49, 46, 14, 53, 50,181, 49,193, 48,181,165,232,212,166, 70, 4,182, 29, 52, 51, 88, 2, 16, 59,130,115,217,129, 55,246,121, + 88,200,191, 22,246, 91,113, 21, 31,235, 20, 15,109,207,236, 31,108,109, 17,154,228, 65, 57,246,221,105,219,230, 24,108, 50,160, + 19,128, 22, 84,211, 58,100,203,233, 50,194, 98,205,165,229,165, 87,214, 81,183,254, 12,133,211,136, 88,196,176,193,122, 92, 75, +224,124,144,234, 41,147, 45, 63, 68, 52,140,196, 87, 94, 66, 22, 17, 91,155, 77, 78,147, 2,185,105, 52,128, 62, 49,171,181, 64, + 92,216,230, 19, 54,139,198,205,108,118, 56,113, 11,159,192,201,239, 62,157,104,227,253, 5, 11, 29, 22,211,236,186, 1, 7, 21, + 41,252,200,114, 1,108,202,163,186,143,128,156, 5,185,104, 81,202,213,104,137, 22,134,163, 73,104, 61,204, 5, 13,152, 24, 48, + 12, 9, 41, 16,166,146, 81,185, 88,234,162, 77,108,132,181, 56, 73, 9,235,245, 26, 36, 58,225, 12, 1,152,230,140,184, 73,224, + 40,120,122,113,129,186, 47,182, 50,165,150, 43,160, 5,139,103, 28, 48, 36, 2,168,177,217, 30, 73,196, 50, 32,216, 72,131,108, + 32, 26, 96, 8,150, 81, 17, 18, 18, 8,199, 39, 27,164, 33, 45,210, 76, 67,211,135,104, 80,207,128,227,211,107,246,122,147,226, +187, 75, 54, 97,167, 21,210,194,200,211,132,200,190,138,141, 72, 65, 51, 79,198, 20, 49, 23,198,110,191,213,247,181,154,134,198, + 86,160, 3,169, 91,104,178,226, 58,233,152, 70, 85,208,186,175,116, 79,173, 81,133,173,155, 82,206,108,104, 99,201,106, 97,245, + 68,182, 39,100, 86, 72,101,240,110,197,108, 19,228,193,240,182,119, 90, 43, 62,113,151, 39,172,211,128,171, 87,174,226,236,179, +199, 24, 78,142, 16,230, 25, 49, 17,198,148, 80,166,130,116,237, 68, 31,234, 16, 81,166, 2,204, 5,171, 33, 90, 36,161, 86,146, +105, 92, 35,165,136, 52,174, 52,197,198,216,227,196,140, 60, 93,162, 78, 51,166,105,111,163,216,130, 16, 6, 68,138, 24, 19, 16, +136, 33, 60,131,114, 69,148,128,167,231,192,215, 94,187,133,255,252,191,253, 3,226, 42, 96,125,188,193,173,231,110, 99,218,205, +248,243,123, 31,224,237,183,254,136,205,152,240,218, 95,191,142,163,163, 35,252,246,247,111,227, 55,191,121, 11, 95,126,229,101, +188,252,202, 43,184, 56, 63,195,118,123,137,148, 18, 74,209, 29,210, 84, 5,239,127,252, 16,159, 63, 58, 3,184, 98, 46,234,227, + 28, 82, 68,244,179, 61, 0,113, 80,110, 48,155,224, 36, 69,103, 26,107,114, 15, 37, 83,247, 87,221, 45, 13, 11,255, 45, 87,237, +244,245, 99,208, 67, 81,147,141, 24,235, 43,167,230, 81, 53,123, 89,101,179, 64,104,231,171,221,132,137, 68,162, 94, 8, 94,212, +153,199,177,241,157,171,165, 83, 49, 23, 35, 9,162,229, 96, 7, 68,235,184, 84,213, 74,209,186,255, 64, 72,145, 12, 18, 86, 65, +208, 36,183,234, 65, 18, 86, 25,179, 37,151, 84,210,203, 32, 44,148,197, 77, 85, 13, 35, 1,138,134,201, 52,112,150,219, 41,163, +142,162,217,208,140, 61, 58, 51,244, 44,114, 34,196, 32,160,100,208, 6,163, 52, 85, 19, 35,105, 87, 71,186, 50,128, 40, 68,205, +198, 90,132, 62,154,131,189,247, 20,160,209,171,182,255, 38,179,246, 5,161, 86,241,195,120,250, 36, 93, 84, 69,141,137,170,135, +155, 78, 68, 66,251,185, 22, 8,170,244, 43,244, 49,184, 78,127,237, 34,182, 98, 35,164,100,107,137, 30, 84, 18, 2,117, 8, 73, + 8,234,169,247,113,182, 65,114, 98, 26, 44, 34,118, 65, 31,107,216, 76,123,239,130, 42,214,225,214, 25,137, 45,151,156,200,186, + 60,235,222,196, 70,250,174,125, 16, 99,160, 47,247,175, 45,194,210, 44,131,176,179, 37, 88, 96,134, 91, 23,169,169,202, 23, 8, +227, 3,152,140, 62,127, 41, 46, 60,239, 1, 7,118, 62,109,194,251,200, 88,220,182,193, 93, 22,236,169,142, 42, 18, 43, 45, 14, +212,199,233,136, 29, 3,219,214, 1,134, 38,118,159,126,180,179, 78, 67,124,168,217,223,220,209, 17,205,163, 92,133,148,204,102, + 7, 55,129, 80,165,168, 94,194,236,195, 58, 55,135,125, 38,106,135, 42,238,248, 16,106,127,174,229, 29, 56, 27,126, 17, 29, 27, + 66, 23,120, 22,174, 45, 46,217,129, 50,210, 52, 34, 70, 85, 19,183,183,234,141,170, 5,145,178,197, 53, 99, 94,249, 30,226, 8, + 86, 39,222,177,114, 17, 90,209,106,196, 68,253,172,169,141,200,231, 92,148, 32,200, 58, 78,214,193,153,173,178,204,142,231,163, +237, 94,147,144,217,111,201,114, 28,148, 73,162,232,102,106,137,125,171,205,216, 38, 6,142,182,230,170, 46,167, 50, 21, 92, 92, +238,155,139,166, 41,244,161, 36,204,182,190,177,166,181,138,163,210, 23,140,137,224, 13,130,126,230, 94,188,199,213,136, 92,129, +205,209,145, 98, 92, 99, 68, 24, 8,168,228,150, 16,212, 50,155,150, 99,192,213,171, 55, 26,192,169, 84, 70,206,147, 69, 94, 57, +242, 57,163, 74, 69, 92, 13, 88,173, 87,160,168, 88,243, 20,245,130,223,207, 10, 69, 43,149,205, 81,162,223,228,144, 92, 51, 19, + 44,123,130,145, 20,170, 82, 23,177, 69,253, 63,165,169,145, 85, 65,170,209,171,118,216,216, 67,230, 60,120, 33,105,164, 38,155, + 42,218,101, 66,182, 91, 81, 74,204, 24,181,130,156,230,140, 49, 38,156, 30,159,180,189, 83, 76, 9, 41, 68, 4, 36,112,169, 24, + 87, 27, 12,195, 10, 85, 8,243,126,194, 60,103,140,171, 17,235, 20, 81, 66, 66,145,162, 12,246, 33, 33,141, 43,189, 56,246, 5, +121,206,184,188,184,192,197,249, 25,202, 60,163, 72, 69, 45, 21, 20, 71,140,227, 26,177, 86,228, 42,144, 58, 67,242, 12,201, 26, +244,242,173,239,188,130,255,248,159,254, 3,194,138,112,122,245, 20,119, 94,184,139, 39,143,206,240,187,127,251, 61,222,126,231, + 93, 60,119,243, 54,238,127,227,107,160, 49,225,173,127,123, 11,127,122,251, 93,124,253, 27,223,192,205, 59, 55,112,241,244, 12, +219,221, 22, 57, 23, 8,107,162,218,246,178,224,143, 31,124,136,179,179,115,128,171, 90, 24, 68, 89,228, 1,162,168,200, 24, 17, + 7,141, 74, 12, 65, 48, 87,193,224, 97, 54, 76,150,136,109, 73,154,204,224, 26, 16, 19,108, 63,215, 57,253, 61, 25, 90, 16, 69, + 65, 52, 33, 18,198, 77, 50,245,246, 98,172, 44,189,250,174, 76,198,109,167, 22,239,217,178,164,101, 17,102,197,104,150, 32,216, +184,191,165, 80,153,121, 51,134,104,108, 2, 52,241,101, 23, 48,233,232, 13,194, 11,101, 50,244,242, 51, 11, 23,200,184,209,190, + 83,165, 67,239,238,179, 9, 87, 46, 96, 67,140, 45, 47,125, 97,216,106, 9, 85,205, 75,235,120,146, 5,117,139,165, 46, 14, 62, +135,229,216,185,204, 2, 34,141,104,196, 34,192,132, 93,161,141, 96,171,166,216,130, 60,228, 32,226,211,196,135,182, 51, 12, 54, +106,182,255,197,118,209, 21, 98, 80,152, 64, 29,250, 2, 83, 17,107, 26, 91, 56, 80,220, 67, 20, 72,212,255,156, 49, 9, 66,104, + 34,190,208,116, 1,104,204,111, 46, 11,129, 82,211, 12, 68,123,141,193, 70,225,181,199,115,134,106, 73,109, 81,223, 23, 81,120, + 10,217,197,165,214, 55, 37,157, 57,220,165,112,110,239, 51,215,250, 5, 79,119, 88, 20, 53,209, 38,126,123, 91,143, 16, 23, 68, + 36, 8, 23, 48,169,109, 41, 24,171,161,209,242, 14,236,135,221,134, 20,140, 5, 47, 45,205,204, 24,246, 68, 7,251,239, 46,128, +146,198,176, 23, 40,160,197, 30, 72, 21, 41, 73, 51, 48,153,151,218, 38, 61, 68, 16,163,103,122,185, 85,109, 53,226,190,111, 90, +140,255,185, 86,203, 40, 0,184,216,243, 99,242,146, 24, 2, 34, 6,101,125,248, 39,111,251, 85,174,140,100, 54, 51,242,120,105, + 43, 44, 26,189, 16, 93,165,174,224,148,174,162, 79, 33,160,136,189, 46,235, 58,217,153,240,254,121,216, 69,236,252, 5,134, 78, +223,220,151,190, 12, 51, 97,247, 85,114,251,226,245, 96, 79,199, 12,144,230,108,184, 3, 65,229, 50,172,238,168, 42, 10,158,241, +239,232,130, 9, 79,141, 60,199, 77,176,157, 6,245,104,231, 82, 80,102, 85,137, 47,145,211, 44,130,113, 53, 42,121,176,126,209, + 74,184, 94,173,241,228,243, 39,152, 47,102,196,193,166,127, 30,121, 27,151,192, 31,179,183, 9, 25,235, 67, 14,210,229, 26, 75, +136,186, 27,128, 98, 64, 28, 6,204,115,198,201,201, 6,171,213, 74,159, 63, 46,141, 93,223,136,126, 53,227,228,244, 30,142, 55, +167,200,134,154, 46,121,182,231, 71,140,167,175,231,181,178, 80, 20,188, 37, 8,216,108, 54, 88,175, 55, 32, 82,101,252,110,183, +213,233,164, 9, 38, 17,201, 24, 22,186,102, 21, 17,148, 82,244, 82, 87, 36, 44,233, 47,108, 15,190, 82,109, 67,251,130, 16, 69, +164,164, 21,152, 86,216,158,238,160,153,185, 66,202, 49,134,197,235,197,164,111, 36,172,139,130, 5,107, 8, 39,108,119, 23,216, + 93,158,225,234,241, 17,214,167, 71, 45, 93, 39,132,128, 20, 35,174, 28,173,177,207, 25, 97, 28, 48, 30,173,176,223,238, 81,230, +130,203,139, 11, 28, 29, 29, 41, 29, 46, 87,172,198, 21, 66, 84,177, 17, 69,165,166,213,221, 37, 46,167, 29, 46,119,151,152,231, + 61,198,213,136, 50,101, 72, 97,196,144,176, 30, 6,204, 16,228,108,214,146,185,160,112,193, 27,223,126, 3,247,191,254, 42, 32, + 5, 87,110, 92,195,189,123,119,240,241,195,199,248,245,143,126,142,247,223,127, 31, 95,122,237, 53,124,253,254,125, 84, 76,248, +245, 47,127,131, 7, 15, 62,193, 55,222,248, 6, 54, 87, 78,177, 61,187, 64,222, 77,152,182,123,221,117, 31, 31,225,236,209,231, +248,211, 95, 62,194,110,159, 33,149, 13, 79, 24,116,116, 99,230, 26, 10, 1, 33, 69, 12, 67, 68, 10, 64, 37, 29, 67,207,181, 98, +101,116,129,102,187, 18, 49, 52,160,190, 14, 49, 97, 29,132, 13, 66, 19,155,183,188, 84,229,154, 31,175, 55,122, 25, 5,235,202, + 89, 15,180, 16, 18,188,133, 20, 81, 95,123, 34,160,230,106,136,203,254,133,246, 17,143,198,251, 77,198, 37, 71,171,100,245,243, + 54,226, 90,240,221, 35, 45, 98, 37, 15, 47,119,129,237,149, 27,213, 78, 43,245, 16,196,226, 82, 77,192,213,192, 36,190,191,235, + 64, 20,177, 17,224,179,255,231,194, 73,191,196, 99,164,174, 26, 14, 74,115,227, 69, 78,182,119,101,114,224,110,238, 95,230,106, +217,237,234, 43,235, 23, 71,127,253, 58,193,112,141, 64,179,150, 64, 26,101,107,105,119,242, 92,105,223, 71,114,209,196, 55,103, +119,179, 88,236,232, 82, 54,100,157, 19, 75, 23, 66,121, 39, 4,210,148,182, 56,168,134, 32, 46, 60,251, 8,142, 42, 21,179,206, + 85,117, 76,176, 78,190,170, 93,102, 61, 70, 52, 44,118,142,212, 44, 99, 4,122,230, 77,182,208, 15, 39,228, 25, 15, 93, 42,218, +161, 90,204, 47, 27, 44,206, 20, 33, 52,191,117,138, 17,213,188,245,195,144, 48, 91,176, 71, 29,208, 92, 22, 65, 98,123, 31,225, +201,107,194, 54, 13, 65,135,149, 64,218, 30,218, 22,194,109, 90, 34, 44, 7,147, 1, 17, 75, 32, 51, 28,176,152,114, 82, 68, 32, +149,144,171, 24, 98,180,135, 12,249,115,228,225, 54,100,163,247,102, 61, 51, 95,185,126,198, 90, 84, 69, 77, 0, 82,253,132,139, +208, 44,187, 91,160, 25, 14, 82,116,199, 28,137, 16,134, 4,120,151, 46,130,146, 53,227,156, 82, 68, 37,211, 82, 64, 67,145, 68, + 76,165,109,142, 21, 15, 20, 42,165,182, 98, 39, 25,249, 16,139, 12,118,239, 94,155,199,193,191, 91,166,123,240,252,244,106, 46, +152, 24,226,194,202,133,182,206, 91,134,159,232,223,115, 43,149,180,189,125,191,170,180,128,201, 2,228,162, 54,182, 82,245,172, + 82,203,116,104,254,123, 90, 76,111,252,105, 27, 71,125,150,107, 41, 42, 32,164,168,254,116,155, 30, 12,227,168,133,138, 77,217, +146,173,174, 74,209, 81,123,150,130,243,139, 45, 74, 53,173,143, 49, 14, 66,208, 66,167,185, 19, 92,252,200,114,248,189,243, 73, +141,161,141,221,222,230,157,190, 14,230, 43,142,143, 55, 24,134,161, 89, 19,237,196,110,120,222, 90, 24, 71, 39,215,108, 90, 86, + 17,169, 98,222,239, 44,201,175, 96, 24, 87,136, 20, 48,205, 5,101,158,176, 30,244,175,171, 64,237,121,155, 35, 32, 16,246,251, + 75,181,229, 89, 88, 16, 69, 61, 15, 85,185,239, 34, 90,157,164, 36, 55,227,115, 59,144,244,232, 81, 69,173,126, 57,106, 97, 96, + 85,193,136, 54,214,244,180,158,170, 66, 12,210, 12,108, 50,146,151, 4,168, 2, 80,244,130, 18,219,213,184,157,178,102,198,229, +110,210, 75, 60, 37,172, 78,213, 14, 16,135,132,121, 55,225,234,181,107, 56,187,184,208,157, 70,178,189, 7, 87,228, 60,227,100, +115,138, 56,142, 8, 92,176,138,118,128,146,218,207,230,178,215, 12,109, 46, 22,185,169, 49, 24,181,152, 2, 54, 69, 67, 37, 22, + 68, 10,184,188,216, 34, 31, 39,252,195,127,250, 30,222,124,253,235,248,244,211,143,113,245,246,109, 60,127,239, 30,222,255,224, +207,248,233, 63,255, 28, 31,127,244, 0,223,120,227, 27,248,234, 27,175, 98,222,237,241,167,223,189,135,203,203, 61,238,191,254, + 85, 12,227, 10,187,167,231,184, 60, 59,199,167,159,125,134,227,147, 19, 92,187,118, 21,159,125,250, 25,222,251,240, 99,236, 38, +181, 91,228, 57,131, 65, 88,145, 42, 13, 42,122,182,113, 24,140,171, 30,180, 67,156,107, 5,101,224,104, 24,193, 4, 36, 27,147, + 87,219,117,105, 96,137,163,124, 21,226, 32, 54,242, 34,170, 0, 37,212,146,149, 7,239, 40, 95,239, 92,165,194, 49, 28, 28,244, + 48,142, 20,218, 23,131, 8,144, 74, 61,156, 66,200,198,233, 2,146,238,185,118,245,109, 74, 73, 41, 78, 20,109,109, 64,246,101, + 21, 48,172,235, 51,197,117,143,153,244,137,142, 10, 61,204,216,213,172,113,126,225,186, 61,134, 12,101,250,239,220, 45,166, 18, + 39,243, 26,199,118,121,122,196,235, 65,167,239, 24, 92,243,227,251, 88,184, 93,146, 62, 66,110,130,162,128,136,100, 73,104,110, +125,169, 45, 29, 76, 19,195,130, 9, 74, 53,223,218, 59,192, 46, 14, 13, 61,111, 27,106,101,242,137, 85, 49,255,188,152, 85,208, +215, 4, 62,186,243,105, 66,207,197,230, 5, 11, 58, 54,107, 31,217, 1,229,151, 50,130,219,194, 98,235,174, 74,158,144,231,217, + 18,180,164,141, 18, 29,141, 74, 22, 68, 66,210,150,230, 86,230,244, 78,155,164, 1,102, 53,140,199,118,246,193, 87, 37,164, 22, + 31, 4, 83,181, 27, 24, 6,207,164,165,177, 95,244, 76,160,152, 48,132, 81, 39,133,164, 35,197, 80, 11,162, 4,144,145,241,154, + 82,223, 8,135,190,127, 20, 19,221,181, 56, 74, 67,251, 54,192, 81,176,152, 18,135,205,184, 53,143,208,186,115,247, 72,249,165, + 37, 69, 87, 83, 75,167,159,142, 76, 67, 27,249,187,168, 48,196, 37, 31, 93, 87, 19,206, 88, 39, 16,138, 99,214,200,175, 0,168, + 77,141, 5, 37,207,218, 97,145, 0,177, 64,106, 86,181, 51,116,229,229,227,244, 20, 34, 42,233,133,174, 43,189,210, 84,211,174, + 64, 87,204,105,159, 90, 44, 53, 5, 68,164, 7,190, 21,202,250,123,198,131, 63,195,237,123, 66, 72,166, 89,233,252, 5, 28, 76, + 90,150,186,144, 46,178,164,133,166,202, 6,119, 66,112, 40, 69,206,140,108,184,219,154, 25, 37,203,129,175,221, 53, 55,254, 25, + 5, 67,214,166, 65, 27,143, 60, 23, 85,107,196,208,176,191, 14,164,201,181,152, 93, 46, 99,125,116,210,162,148, 55,195,128,186, +221, 97,123,118,105, 43, 34,187,203, 96, 26,131, 24, 13, 94, 35, 7, 97,102,186,255,145,102,203,142,160,102,205,107,240, 69,187, + 39, 39, 48,130, 8,214, 43,205, 13, 73,209, 34,141, 73, 64,131, 61,135, 34, 72, 99,194,149,107,215, 80, 75,209, 59, 85,180,235, + 86, 10,107, 65, 28,162,225,247,148, 59,225,248,219,128,138,148, 70, 21,125, 11, 99,154,247,216,239,118, 96,115,148,196,168,130, + 86,177, 38,161,154,117, 86, 4, 72,226,220,119,203,139,149, 0,112,136, 72, 80,203,131,144, 10,150,216, 8,104, 89, 11, 74, 0, + 0, 32, 0, 73, 68, 65, 84,115, 83,169, 54,122,212, 61, 82,149, 10,162, 1,140,164,112, 50, 34, 68,203,157, 21, 10,230, 57,212, + 47, 38, 83,176,204,218,128,189,101,226,130, 8,183,111,220,196,147, 71,159, 35,164,128, 9,140,147,227, 99, 92, 94,110,245,194, + 24, 6,236,109,220, 95,107, 69, 74, 3,198,213, 10,179, 0, 50, 85,228,105,198, 84, 38,236,231, 89,199,160,145,154,231,121, 29, + 18,136,146,117, 37, 58,142, 46,172, 99,218,139, 41, 35,142, 9,255,241,239,190,131,111,190,241, 26, 42, 87,220,251,210, 75,184, +121,247, 22,222,125,235, 93,252,175, 31,254, 24,243,126,198, 27,223,253, 54, 94,122,249, 37, 92,158,157,225,193, 7,159, 67, 6, +194,151,238,127, 25, 17,132,179, 71, 79,240,248,209,103,248,244,209,103,184,113,243, 22,174, 94, 59,197, 7, 15, 62,194, 71, 31, +127,134,125, 17, 72,206,168, 89,157, 4,131, 81,171,178, 70,110, 33,217, 23, 50, 82, 64,133, 17,196,172, 84, 44, 69,144,171, 32, + 66, 71, 49, 58,214,179, 29, 97, 20, 8, 21, 11, 99,233,120, 81,162, 2, 96, 4,177, 6, 95,172,215, 99,179, 75, 5, 97, 19, 41, +185,197,200, 68, 66,214,197,195, 62,235, 64,130,212,146,183, 13,167, 29,213, 78, 82, 97, 52, 54,240, 2, 42, 38, 42,112,162,216, +180, 22,206,222,246, 72,201, 34, 85,119, 84,246,250, 28, 47, 73, 77, 41,206,221, 82,133, 62, 94,103,143, 5, 53,140,163,238,114, + 23,170,109, 75,144, 99, 62,156, 6, 28,238,111,209, 44,127, 75, 53, 52,183,253, 42, 29,142,246,201,247,128,213,114,185, 85,111, +175, 89,217,150, 72,105,150,166, 32,139,208, 19,163,141,185,239,219, 71,145,170, 72,239, 35, 81,182,226,148,141,136, 39, 38,146, +107, 72,213,160,163,108,221, 83,106,229, 47,220, 11, 64, 9,157,208,197, 40, 10,247,177,207, 42, 88, 32,146,176,114,168,165,101, +197, 23,204, 83, 70,201,181,145,180,164, 90,222,183,229,216,123, 80, 4,216, 70,207,236,254,115, 79,122,245,130,188,219,252, 98, + 36,148, 98,129,162,100, 41,105,182, 26,136, 20, 80,169, 30,216, 92,197,112,195, 7,202,105,120,204, 39, 76,208,167,105, 96,154, +112,166,221,173, 43,131,189, 64,162,160, 23,170,111,197,181, 64, 9,150, 54,102, 29,118,117,188,110, 62,176,159, 57, 79,222,105, +152,220,162, 65,169, 21, 48,194, 69, 47, 24,183,108, 25,128,166,154, 1,174,131, 89, 60, 8, 92,249,230,228, 78, 0, 66, 19,200, + 37, 43, 42,170,129,145, 52, 81, 76,189,200,106,209,243, 61, 51, 90,199, 27,136,218,179,230,197,170, 79, 15,194,194, 54, 23, 77, + 35,226,164, 56, 37, 52,126, 81,121, 47, 11,180, 49,154, 7, 62, 52,113,230,178, 90, 94,218, 0,253,115, 90,254,245,114,237, 37, + 7, 23, 62, 31,176, 23,156,158, 87, 5,138,132,157, 51,114, 41,152,106,177, 92, 2, 28,252, 76, 9,138, 36, 15,164,233,146,227, + 56, 98,220,140,168,147,199, 58,195,226,107,213,250,184,218,172,192,246,217,207,147, 22, 57,171,113,108,247,137,164,136,179, 39, +231,152, 38,181, 11, 38, 11,111,169, 28, 52,130, 59,134, 5,124,199,139, 91, 89,240, 40,170, 81, 18,169, 57, 54, 28,153, 28, 76, +216, 54, 82, 4,134,132,245,106,108, 49,205, 18, 8, 67, 8, 80,121,177,226,163, 55,227, 9,174, 92,189,142,105,187, 69, 72, 35, +132, 42, 74, 85, 28,245,110,154,176, 73, 71, 42,158,166,130,176, 25,128, 90, 81,130, 96,218, 51,134,213,218, 28, 5, 26,153, 93, +252, 51,234,114, 34,123, 38, 52,161,176,146,238,235, 19, 28, 36, 81, 61,188,195, 21,141, 93, 5,234,251,171,185,168,157,104,140, +169, 51,114,205, 18, 82,237, 0,107, 30, 87,235,182,220,195,218, 98,245,236,167,238,237,195, 32, 17,108,142, 54,248,236,227,140, + 20, 70,112,101, 92,189,114, 5,159, 61,252, 20, 82, 9,227,166,179,202, 75,169, 40,165, 96, 28, 7,240,197, 5,166,253, 30,251, +237, 37,230,146, 81,131,238,145,200, 70, 31, 33, 16, 70, 74, 64, 8,152,230,172, 1,244, 85,197, 57,251,221, 14, 55,111,220,196, +119,255,250, 91,184,247,252, 93,148, 90,113,227,230, 77,156, 94, 57,197,191,254,252,151,248,201,143,126,138,147,211, 83,220,255, +230,107, 56,189,118, 29, 79,207,206,113,113,126,142,213,209,128,107,199, 87, 80,106,197,227, 71,143,240,240,195,135,120,248,232, + 33, 94,250,210, 75, 88, 29,109,240,167,119,255,140,143, 63,249, 28, 66,132,154,171,217, 48, 68,213,136, 16, 20, 41, 16,131,154, +251,131, 93, 45, 5, 40,152,246,128,139,160, 4,197, 42,174, 67, 68,145,170, 22,175, 34,154, 58,102,239, 35,123,114, 22, 83,195, +170,122, 32, 4, 17,176,222, 12, 58,129,177, 3,210, 57,117, 32,141,222, 12,238,120,176, 3,197,125,213,204,140,100,163, 77,241, +189,161,123, 38,133,218,248, 83, 21,168,166,122, 54,208,130,239,195,244,231, 20, 83,152,122,218, 22,236, 50,136,237,240,105,112, + 11, 4, 48,117,146, 23, 45,128, 34, 45,157,123,121, 1,183,184, 68,179,186,133, 5,182,213, 19,228,218, 62,217, 89,207,189,179, +234,140,103, 28,208,226,150, 23,189, 19,160,245, 31,179,247,151,186, 71, 89, 51,170,227, 98,196,235, 88, 87,135,152, 72,155,118, +160,125,214, 93,113,205,108, 17,171,140,131, 48, 15,233,184, 50, 93,241, 82, 80,189,132, 21, 19, 98,187,113, 15,211, 33, 12,154, +244, 22,146, 9, 33, 5, 53,168,207, 87,225, 55,154,224, 17,130,253, 12, 27,211,249,235, 57,216,203,179,153,249,193,141,181,238, + 34, 89,161, 0, 48, 33,194, 45,122,101,145,104,101,229, 30,231,246,190,166,164,164,184, 96, 99, 73, 93, 45,248,248,151, 90,100, +102,132,118,232,194,130, 48,216, 62,125,193,224, 14,209, 4,152, 13, 51, 43, 29, 8, 99, 59,206,222,113,121, 88,140, 44,246,154, +212, 38, 75, 7, 44,121, 7,250,112,143, 83,213,243,169, 11,235, 28, 15,171,212, 48,235,194, 66,104, 32,146,234,121,229, 14,235, +177,167,198, 87, 40, 20,131, 42,167,165, 34, 81,180, 14, 43, 34,141,105,145,210,166,171,129,104, 4, 64,253, 53,217,112,177,166, + 51, 49, 1,148,127, 39,116, 13,138, 14,157, 90, 36,156,197,168,254,248, 42,207,100, 9,160,211,218,184,173, 16,208, 18,215, 26, +131,130, 66, 75, 63, 59, 20, 29, 30, 78,190,218,119,166,217,149, 45,182,180,193,141,244, 63,167, 92, 80,170, 40,124,166,112, 43, + 36,220, 65, 2, 15, 7,114, 77,141, 8, 86,171, 1, 49, 4, 76, 57, 55,155,110,176,115, 38,141, 3, 40, 6,212,156, 81,230,140, +203,243,115,220,184,125, 83, 93, 45,165, 98,181, 26, 65, 53, 99,123,161,250,166, 97, 76, 8, 73,221, 32, 62,233, 81,241,119,215, + 35,201,129, 46,128,122, 22, 10,186,222, 0,158,115, 96, 64,140,213,230, 8,137, 9, 73, 98, 43,172,180, 8,202, 6,128,210,181, +203,205,155, 55, 90, 39,157, 70, 66,206, 85,163, 85, 89,191,167, 78, 87,172,181,106,209, 66,192,156, 43,114, 41, 88,173,109, 20, +207, 5,251,121,198,106,189,194, 92,170,194,195,156, 43, 99,191,243,152, 34,192,131,210, 57, 85,253,137,102,251,160,208, 47,101, + 18,198, 96,162, 11, 0, 58,238,112,118,176, 1, 11,216,208, 5,108, 2, 3, 29, 91, 24, 55,152,170, 14,241, 22, 57,203,100, 59, +182,167,103, 79,154,221, 71,131, 85,130,141, 48, 72, 5, 94,235, 99, 76,219, 9,113, 28, 52,106,179, 0,211,118,194,249,249, 25, + 88, 24, 57,207,200,101, 70, 46, 69,225, 20,105,180, 15, 66,139,246, 24, 18, 98, 32,204, 37,155, 31, 52, 66, 80, 48,149, 61, 94, +122,233, 5,252,245,223,126, 15,171,113, 0, 98,192,205, 91, 55,177, 57, 90,227,167, 63,249, 25,254,249, 7,255, 19,119,238, 61, +135, 87, 95,187,143, 97,179,198,229,249, 57,246,251, 29,142, 78, 79,176, 62, 62, 70,222, 79,248,244,225, 39,248,183, 95,253, 22, +105, 72,248,202, 87,191,134,253,180,199,111,127,251, 54, 46, 46, 46, 80,197,178,147,205,238, 20,130,142,105,114,101,100, 75,207, +138,198,195,214,138,156, 48,112, 84, 91,151,113,190,185, 42,121, 41, 37, 83,180, 87,237, 82, 57, 42,156,196, 71,129,181,170,250, +180,237,122,161,123,241,180,138,182,131,171, 0, 52,146,148,153,145, 72,195, 69, 74,163,101, 57,197, 77,215, 20,202, 32,175,202, + 17, 31, 82,183,168,185,168,195, 84,191,100, 59,110,239, 32, 28,152, 32, 82,109, 76,235,151, 92,181,195, 51, 54,166,186, 67, 50, +244, 31,139,189,139,162,133, 56,197,231,237, 44, 93, 81,238,225, 44,210, 65, 48,144,195, 67, 71,217,239,177,117,158, 98,149,181, + 78,121,164,237,186, 27, 62,116,177, 67,110,224,137,198,135, 70,247, 9, 91,106,151,170,108,141, 91, 30,108,166, 81,171,141,229, +173, 98,102, 71,154, 86, 5,153, 16, 14, 10, 9,135, 69,112,219,165,183,197, 94, 99,171,187, 48,174,181,202,134,127,100,115, 47, + 56,112,201,110, 72, 29, 60, 75, 23,243,148,204,136,232,234, 94, 63,120,197,254, 29, 93,223,208,197,114, 92,106, 43, 20,157, 71, +239, 66, 89, 49,117,185, 88,250,150,143,237, 93, 51, 16, 35,117, 44,168,117, 58,122,225,171,149,176,185, 4, 82,210,160,167, 69, +208, 78,180,110, 88,127,190,254,206,170,117, 88,248,207, 65, 95,216,237,251,180,131, 77, 49, 78,180, 80,251,219, 91,234,151, 45, +115, 87,179,115, 83,140,115,195,228, 43, 88, 37,218,243, 27,108,253, 89, 14, 14,115,103, 7,244,103,215, 5,141,116,176,127,238, +112, 65,157,108,214, 69,167,171,218, 3,105, 60, 3, 54,236,113, 8, 61,117,175, 88,232,137,178, 20,236,124, 12,212,158,149, 70, + 7, 92, 60, 83,203,201,217,146,154,216,132,122,102, 37, 36,187,232, 43,128,100, 69,135,239,229,197, 46,172, 20,163, 21, 35,220, +221, 3,114,232,251, 63, 12,179, 89,218, 53,165,133, 74,177, 0,165, 0,243,172,142,159, 82,209, 46,241, 16, 2,178,235, 89,120, +209, 60,120, 88,202, 48, 32,100, 65,158,125,170, 65, 13,212,148,198,161,129,163,118,151, 59, 80, 32,172, 55,155,182, 46,137,105, +192,110, 63, 97,191,219,163, 10, 99, 52,151, 72, 80,249, 79,155,112, 44,139,119,215,104,248,154, 78,163,217,186,205,219,109,135, +176,201, 95, 76, 17,113,136, 24,176,130, 76,165,179, 27, 66,128, 20, 43,200, 69,233,158,167, 87,111,160,204, 25,243, 52,227,202, +245, 27,120,242,232,115,212, 50, 25, 71, 67,139, 20,182, 0,180, 57, 79,160,144, 80, 75, 69, 26, 70, 28, 31, 29,131, 44,200,102, +183,219, 57,122,195,141, 21,102,193,212,223, 45,249,250,144,128, 4, 33,219,217,114, 67, 82,122,133, 8, 19,161, 36,131,205,176, + 84,164, 56, 42,234, 78,148, 54, 36, 20, 64, 40, 38, 80,114,139, 86, 31,211, 37,123,160,156, 37, 30,162,126,185,159, 94,238, 80, +172,154,139,195,160, 62, 75, 27, 99, 48, 1,167,167,199,138,144, 28,116, 95, 47,129, 80,168, 98, 63,237,193, 49, 26,108,165, 26, + 61, 45,154,234, 55, 88,215,160,251, 16,120,152, 66,101,236, 38,198,122, 3,220,255,218,171,120,253,245,111,180, 7,228,246,221, +187, 24,199, 1, 63,249,241,207,241,235, 95,191,133, 87,191,254,117, 60,247,194,115, 96, 22,236,119,123,196,148,112,237,218, 85, +196, 97,196,249,217, 22, 31,254,229, 3, 60,120,247,207,184,126,253, 6,238,220,189,131,207, 30, 61,198,159,255,252, 0, 83, 41, +200, 18, 80, 75,214,142,154, 8, 20, 42, 2, 1, 69, 88,227, 44, 77,253, 76,149, 81, 98, 64, 96, 66, 52,106,154, 6, 97,116, 75, + 79,206, 5, 41,105,136, 7, 23, 21,203,149, 80, 59,125,137,129, 2,103,244,107, 7,166,187,107, 32,165,149,121,101, 11,162, 36, +136,164, 86,117,162,218,232,215,137, 93,139,139,177, 29, 6, 96, 59,124,251,158, 11,178,240,149,122,236, 42,145, 9,130,106, 19, +149,212,214,129, 47,190,240,214, 45,185,117,107,217, 25,136,117, 88,190,163, 20, 55,136, 91,117,206,198,165,214,233,176,237,174, + 23, 89, 5, 58,198,229, 5,123, 91,143,213,152,186, 21,163, 86,110,135,183,209, 67, 90,214,123, 63,112,251,216, 50, 70, 45,114, + 36, 44, 85,246,110,126,233,211, 7, 95, 72,116, 8, 7,154,120,145, 60,132,195,125,200,139, 80, 24,102,134,148,218,197, 71,134, +149,164, 16, 77, 33,223,169,115,190, 91,119,213,186,239,251, 93,173, 30, 60,243,220,168,122, 98, 65, 24,149, 68,227,137,165, 11, +156, 40, 68,212,156, 59, 69,205, 73, 48,212,167, 53,125,151,140,230,183,109, 5,185, 1,103,132,130,189,158, 62,190,212,213, 80, +236, 49,156, 65,245, 11,108,202,238, 96, 16,150, 10,159, 8, 0, 82, 11, 10, 69, 12, 99, 50,125, 72, 81,139,154,237, 30,253, 23, +105, 66,201,182,102,241,207, 66,250,103, 73, 11,239, 78, 56, 76, 78, 99, 94,166,242, 73, 19,209,185, 95, 63, 4,195,149,134, 96, +207, 51,181,207,129, 2,125,129,156,217,104,110,134,254,121,118, 36, 29,218,197,102, 74,120, 4,163,169,169,214, 39, 14,250,204, +102, 35, 16, 18, 89, 1,111, 97, 74,193,207, 87,179,162, 69, 14,109, 95, 44,162,148, 89,182, 78, 87,120, 57,250, 94, 90, 6, 61, +214, 54, 52,251, 10,133,216,197,113,132,238,130,136,166, 0, 55, 75, 43,219, 68,169, 97, 82,151,218, 8,159,162,185,230, 5,210, + 38, 98,173,168,176,201,138,166,177, 85, 69,195, 86,165,202, 69, 91,165,136,165,153,105,242,167,145, 65,185, 34,141, 9,195, 48, + 96, 42,213, 4,114,104,147,159,113,189,106, 43,140,105, 63, 97,123,185,197,141,219, 55,144,134,136, 90,197,148,241, 1,219,237, + 30,211,222,211,206, 6,179,179,105,234, 94, 67, 87, 47, 96, 82,250,149,149, 22,163, 26, 60,101,207,166, 7,238,169,137, 38,222, +140, 49, 96,189, 94, 1, 5,216,239, 21, 99,221,232,141,204,160,164,123,176,148, 86, 56,189,114, 29,217,146, 53, 67,136,216, 79, +123,148,170,247,101, 33, 54,252, 53, 91,241, 50,216,122,154,112,229,248, 4,171,149, 42,223,119,251,189, 70,103,147,173,121,104, + 33, 96, 15,172,130,203,144,144,134, 1, 25,130, 4,143,218,108,248, 76,179,109, 24, 97,138,134,193, 40,101,179,138, 45,146,126, + 8,108,145,154, 48, 65, 74, 84,207, 13, 22,107, 81, 29,248, 54,142, 52,187, 43, 4, 18, 35, 98, 74,152, 12, 96, 63,164,136,241, +232, 72,233, 95, 80,139,210,122,189,198,118,187,195, 56,110,244,225,138, 10,183,152,107, 69, 37, 65,136, 73,199, 68, 85, 59, 39, + 56, 51,215, 90, 12, 21,146,233, 8,124,119,185,195,106, 88,227,245,215,238,227,205, 55, 94, 71, 26, 35,134,205, 10,183,238,220, + 70,201, 25,255,252,223,255, 23, 62,254,232, 9, 94,125,237, 62, 78,111, 28, 99,127,190, 67, 26, 86, 56, 57, 61,198,241,209, 6, +133, 11,222,249,227,251,120,255,157, 7,216, 79, 59,220,251,210,139, 88,173, 7,188,251,231,191,224,193,131, 79,149,210, 84, 52, +211, 55,152,224, 45,134,128, 65, 10, 50, 11, 50,107,158, 56,196, 14,244, 40, 72,172, 43,143,154, 43, 48,144, 90,203,132, 26,133, + 43,207, 21, 41, 18,114,228,150, 38,150, 76,225,238,170,107, 53, 44, 86,136, 65, 36, 42,107, 58,155,118,233, 5, 92, 3, 10, 85, + 16,169, 88, 72,186, 53, 90,247,198,198,156,103,235, 96, 34,162,169,103,101,209, 1,151,198, 34, 8, 38, 16,243, 56,213,118,177, + 11, 55, 65, 87, 52,193,144,223,114,236, 24,174, 32,135,149,190, 91,182, 60,228,196,158, 65,165,100,121,135,109,138, 1,234,138, +114,237, 36, 85,157,187,228,158, 3,181, 33, 75, 59, 93, 76,108, 15,205,173,135,106,221, 71,232,162, 52,127, 62,201,240,142,190, +110,106,126,237,208, 15, 90, 2,181, 85, 19, 75,191,100,156, 25, 45,182,127,247,215,215,223, 35,233,135, 9, 75, 19,201,249,120, +219,247,231,140,170, 43,151,216, 59,237, 6, 27,169,188, 0,159, 44,108, 69, 22, 73,235, 89,243,132, 67, 14,189, 47, 5,107,205, +141, 31,239,194, 59,239,240,196,130, 86, 84,120, 90,109,181,163, 16,144, 16, 8, 41,234,123,198,205,126, 71, 22,189, 44,118,132, +132,198, 62,111, 62,229, 69,126,188, 88, 56, 80, 36, 21,200,177, 84,148, 6, 60,177,125,165, 17, 13,131,233, 17,148, 39, 46,118, + 17, 44, 50, 42, 32, 45,239,193, 47,123, 11, 98,183,215,223, 35,101,123, 65,178, 12,127, 18, 21, 6,123,126,132,117,139,174,218, + 86,237, 4, 29, 76,128,150,227,231,131,201,142, 77,204,124, 74, 25,156,110,104,221,159,254,124,101, 76,132,230, 24, 18,151, 51, + 24,158,118, 97, 15, 21,103, 4,246,198,168,250, 78, 60, 6, 72,174, 40,149, 91,178,157,143,185,131,229, 10, 52,129,156,117,232, +209, 80,174,238, 22, 16,119,178,112,255,142, 52,165,188, 44,172,172,109,202,193,135, 74,122, 28, 58, 79, 58, 12,200,138, 98,110, + 47, 17, 83,201,152,102, 77,185,116,219,158, 63, 35,125,178, 33,205,246, 44, 16,172, 86,107,172, 40,224, 73,157, 80,185,154,166, +133, 48,174, 87,136,195,168, 80,173, 41,227,236,233, 25, 98,138,216,108,214, 32, 66,219,197, 87, 46,216, 93,110, 45,249,141,154, +238, 64,167,196,116,160,231,240,223,169, 26, 37, 18,232, 43,191,102,197,205,135, 33, 63,193, 38,215,171,213,160,223,167,105, 66, +186,118, 69,147, 75,163,226,204,199,116,140, 90, 5,171,163, 13,142,142, 79,112,118,118,142,113,189, 2, 23, 65,206,154,162,167, +105,147,250,204,212,146,181,235,142, 58,165,202, 16,172,143,142,176, 74, 9, 85,148,166, 90, 61,186,154,148,126,234, 41,163,174, +111, 65, 48,221, 21, 17, 82,225,174,248,236,116, 47,243, 10,198,128,113,225,233,108, 35, 90,178, 47, 42,187, 23,157, 13,215,201, +118, 40,140,128, 36, 16,113, 19, 36, 8, 52,227, 55, 80,192, 17, 69, 12, 81, 48,213, 10,206, 5, 76,192,250,120,141,243,179,217, +186, 20,198,112,180,130,156,111,205,231, 57, 34, 76, 51, 42, 8,251, 60, 35, 32,169,233, 62, 69,208, 20, 80,181,254,199, 16, 21, +115,203, 34, 40, 85, 48,205, 25,251,203, 61,174, 93, 61,198, 27,223,125, 19,247,191,126, 31, 18, 8, 71,167, 39,184,121,253, 22, +158, 94, 94,224,167,255,244, 63,241,232,201, 25,254,234,181,175, 99,179,217,224,226,236, 41,134, 33,226,250,245,171, 88, 31,159, + 96,187,223,227, 87,191,248, 21,126,254,195,159,224,165, 87, 94,193,253,251, 95,195,110,123,137, 63,252,238,109, 60,124,242, 57, + 36,110,192,181,162,102, 6, 56,160, 2, 24,135,128, 49, 6, 76,146,108, 4,110, 44,102,175,240, 45,177,136,106, 85,248, 67,173, +234, 39,117,241,116, 21,100, 48, 48, 19,134,177, 34,177,114,219, 71, 16, 88,130, 22, 0, 92, 17,109, 79,201, 2, 84, 53,178, 35, +174, 3,134, 16, 32, 69, 80, 9, 8, 52,107, 68, 31, 19,136, 45,132, 68,116,231,143, 0,141,240,228,160, 5, 69,128, 10,133,202, + 10, 28,109,172,167, 86,135,131, 64, 3,102, 6,170,242,206,210, 66, 76, 19, 40,104, 56,138, 45, 11, 93, 72,134,158, 0,160,158, +236,229,225, 40, 48,214,124,223,183, 70, 99, 71, 23, 84, 37,219, 29, 0, 77,236, 8,180,144, 17,143, 6,213, 93,104,109,254,215, +134, 82,197, 97,208, 70,231,185,123,226,149,142,202, 91,215,102,126,126,105, 92,252,216, 56,244, 22, 1, 3, 87, 50,105,114,154, + 41,199,155,152, 38,116,225, 25,250,200,209,247,186,234, 6,152, 81, 57, 55, 14,181,158,240,193, 28, 36,162, 14, 5,234,138,102, +221,189, 75,123, 93, 21,130,181, 40, 96,201, 59,119,160,135, 53,144, 31, 20,185,170,200,200,118,199,149, 21, 0, 45,246,122, 96, + 1, 40,108,251, 89, 9,164,218, 6, 19,191, 87,150,110, 1,164,190, 86, 16,174,141,128, 73, 20, 65, 82,155, 80,146, 2,129,197, + 99,120,165,141,247, 97,160, 31, 34, 54,208,137,118,195,209, 87, 21,105, 64,138, 65,129, 29, 53,219, 68,196,116, 57,165, 26, 13, + 80,223,107,182,184,232,232,133,196, 34, 37,175, 46, 2,100, 22,253, 58, 68,194, 65, 81, 25, 3,181, 41, 81,229,218,233,118,246, + 94,232,132, 65,157, 39,238, 14,240, 49,116,187, 11,217,214, 0,162, 81,161, 75,124,172,152,173,143,201,237,149,104,112, 24, 95, + 65,117, 93,137,116, 88,139,173, 88,150, 66, 53, 84,165, 96,198,102,151, 44, 54,213,178,201, 64, 10,139,110,218,172,105,232,150, +242,104,197, 70, 48,170, 96, 8,182,226,176,125, 50,217,106,199,139,100,178,201, 19, 91, 81,220,190, 11, 38, 78,117,219,106,240, +191,110, 69,172,115, 23, 84,233,190,223, 87, 76, 89,176, 47,150,137,224,133,107, 53,165,127, 91,233,233, 9, 30,130, 82,228, 56, +138,194,198,108,156, 60,172, 6,164,163,193, 86, 26, 5,219,139, 45,234, 92,113,245,218, 21,140,227,170,101,209,135, 0, 76,151, +151,152,118,154,122, 73, 81, 57,250, 13,251, 42, 17, 33,169,251, 4,149, 16, 88,133,121, 30, 75,193,188,116,223, 44,113,209, 22, +212,162,251, 15,164,113, 64, 12, 9,133, 8,185,102,140, 99,194, 16,148,248, 57, 23,253,254, 48, 49,142,174, 92, 7,210, 26,103, +151,239,227,185,163, 47,161,138,186, 23,132, 77, 23,179,200,116,119,205,166, 83,115,215,171, 35,164, 20, 17,165, 98,218,111, 33, + 92,144, 82, 68,141, 21, 41,104,243, 45, 76,136, 20, 91,190,132, 67,114, 82, 21, 65,240,177, 14, 4,194, 10, 16, 8, 33,169, 66, +219, 70, 43, 25,138,120,213,207, 52,182,139, 84, 88, 61,135, 49, 4, 20, 82,181,167, 11,140,220,180,175, 95,160, 2,193, 96,163, + 13,125,136, 74,158, 33,181,154,103,117,208, 63, 31, 35,114,173, 88,111,142, 32,128, 38,165,217,120,140, 88, 16,170,160, 74, 70, +245,221,191,141,138,210, 48,104,215, 41,140,146, 11,118,243,140,203,105,194,245,219,215,240,173,239,124, 7, 47,189,248, 2, 82, +140, 56, 62, 57,197,213,107, 87,241,254,123,239,225,119,191,254, 45, 74, 0,238,191,254, 58, 40, 37,156,157, 61,197,181,235, 87, +113,243,246, 45,172,143,142,240,241, 7, 31,225,135, 63,248, 33,126,243,187,183,112,255,235,247,241,181,175,124, 5,159,125,246, + 49,222,251,224, 33,118, 83,134,196, 21,106,158,180, 48, 49,208, 66, 68,194,144,214, 22, 98, 95, 16,163, 94,156,117, 46,139,131, +148, 77, 41,219, 89,209, 62,181,212, 42, 91,127, 30, 19, 99,158, 19,134,196, 22,105, 25, 81,161,149,183,106,223,244, 42, 11, 34, + 58,206, 21, 23,209, 72,123, 72,156, 58,214,152,214, 46, 2, 10,190,218,211,113, 24, 5, 79, 60,137,250, 5, 51,177, 17, 64,136, + 30,199,104,227,159, 24,146,205, 27, 11,138,232, 26,129, 16, 64,137, 26,136, 67,161, 48,161,193, 41,220,216,232,211, 2,223,243, +169, 10,185,218,239,193, 45, 56,129,109,167,217,128, 51,118,211, 68, 90, 10,162,200, 44,103,108, 5,137, 9,112,218,155,137, 47, + 10,123, 22,107, 6,181, 64,113,243, 49,123,100,104,104,249,213,225, 64,113,239,172,123,147,185,171,163, 34, 28, 94, 22,203,160, +141,246,191,153,197,222,115,203, 75,177,112, 10,227, 18, 40,199, 89, 90, 81,147,108, 76, 90, 23,179,112,106, 36, 51, 6, 73, 68, + 21,182,130,202, 14,106,234,173, 41, 91,113,157,153,181,240,243,221,170,225, 67, 75, 45,136,118,248,147, 33, 49,153,245,160,240, + 14, 19,118, 9, 56,153,143,184,175,179,154, 16,202, 58,113, 23, 56,149,162,150,191,224, 98, 44,116,172, 44, 89,192, 80, 41,188, + 88,185, 69, 87,112, 53,176, 17, 47, 20,224, 75,191,175,218,229, 98,123, 63,189, 56, 35, 75, 4, 0,213, 3,111,250,191, 23, 13, + 10, 28,238,222,121, 81, 4, 64,122,215, 8,219,241,186,255, 93,187,221,224, 88,255,150,181, 45,237, 81,176, 20, 57,136, 1,150, +180, 49,146, 69, 96, 72, 76, 97,145, 62,200,237, 59,239,165,199, 82, 28,136,198, 78,176, 34,156, 0,174, 5, 8, 81,233,140,162, +228, 76, 49, 81, 44, 98, 88, 76,198,148, 19,224, 64,151, 37,120,135,168,191,159,178,200, 85,239, 81,193,124, 56,105,225,110,135, + 21,146,150, 74,216,162,117,131, 42,253,109,176,209, 92, 44,181, 86, 92,238, 38,236,231,138, 57,231, 30,135,108, 98,221,217,166, + 69,178,208, 91,105, 36,115,194, 56, 36,204, 83,237,225, 59, 33, 96,189, 57,194, 16, 71, 84, 97,108,183, 91, 92, 92, 92, 32,141, + 9,155,163,141, 38,103,154,157, 11, 85,176,221,238, 91,190,250, 16,186,115,128, 28,109,237,233,147, 54, 61,245,162,182, 37, 13, +250,116, 46, 26, 28,138,122, 33,147,108, 90, 57, 40,142,212, 18,219,146, 89, 76, 3,172,127,179, 2, 30,184,118,122, 13,251,221, + 22,101,206, 24,199, 85,179, 55,171, 62,173, 54,199,136, 62,183,246,121, 8,176, 25, 7, 28,111,214, 24, 98,196, 52, 77,216,110, + 47,144, 72,215, 35, 43, 12, 90,124, 48, 25,127, 68,154,123, 73,106, 65, 20, 65,114, 26,148, 62,156,150,132,181, 24, 53,106,190, +147,205,138, 66, 58,236, 32, 22, 2, 16,166, 5, 75,152,186,245,103, 89, 53,123,160, 20, 33,160,148,140,139,253, 5,214,113,133, + 82,171, 86, 80, 70,215,209,120,199,128, 44, 25,168,212, 50,187, 93,145, 56,205,147,165, 58, 49,194,144, 48, 24,195,155,136,144, + 75,197,110,155, 81,184,226,175, 94,126, 25,247, 95,127, 13, 55,175,221, 64, 28, 19,110,220,186,137, 43,167,167,120,251,247,127, +196, 31,126,255, 71, 92,185,122, 13, 39,215,175, 98,158, 39, 76, 23,103,120,254,133,231,113,243,238, 29, 16, 34,126,254, 47, 63, +199, 15,255,249,135, 64, 5,254,238,123,223,195,245,219,215,241,254,159,255,130, 79, 62,253, 4, 69, 70,148, 10,204,251,130, 58, +207,198, 3,215,195, 32, 14,212,119, 51,193,118, 61, 49,128,130, 42, 57,105,209,193, 73, 96,165,119, 50, 12, 42,163,135, 64, 45, + 78,136, 11,216,239, 11, 86,134, 33,156, 11, 99,101, 15, 65, 38,198, 64,118,161, 55,171,138, 6, 33,136, 35, 85, 23,133,149,123, +113,153,184,211,192, 66,176,207,187,179,197,171, 0, 81, 42,184, 64, 21,213,100, 24, 97,104,234,154, 20,106,169,100,202, 49,176, +177,166,117, 96, 42,252,233,135,166,129,156,219, 8, 43, 52, 95, 53,117,194,149,203,139,204,174,149,107, 81,235, 82, 24,122, 33, +194,118, 41, 89, 71, 67,240,125,117,247, 19,183,157,186,127, 65,133, 23, 83,129,176,136,218,108,175,182, 33,112, 27, 15, 29, 61, + 32, 39, 70, 93, 67, 53,145, 24,168, 79, 30,154,216,198, 17,151, 6,106, 33, 62,216,211,123,103,175,217, 70,166, 12, 46, 89, 15, +105,138,109,164,215, 38, 20,250,129,104, 97,228, 19, 46, 31, 41, 91,103,227,177,140, 42,182, 43, 0,180,152,245,223,223,185,221, +195, 56, 64,184, 44,244, 17,177, 91, 8,237,242,246,157, 34, 68, 64, 92,213, 99,110, 97, 43,205,102,104,158,106, 38,209, 11,164, + 54,112,173,234, 36,220, 90,102, 23, 98,192, 50,194,211,249,230, 98, 83, 11,110,130, 68,207,137,208,149, 25, 43, 14,149,141,185, +109,196, 53,207, 83,111, 20, 48,116,145,224, 18,117,206, 86,116, 44, 71,208, 75, 75, 86,247,118, 47,210,219, 92,147, 32,198, 27, +144, 5, 96,135,173,144,140,139,188,120,234,197, 10, 55,192, 14,181,253,114, 85, 37, 85,115, 17,232,132,168,182, 14,118,201, 76, +199, 51,144,147, 92,139,217,147,108,148, 90,253,103,196,182,186, 33,203, 25,136, 33,130, 57, 55,217, 74, 48,234, 31, 91, 49, 12, + 49,190,164,116,226, 94, 12, 65, 79,241,197,232,123,105,253,244,177, 51,115,247,226,251, 89, 37, 30, 2, 68, 93, 56,185,228, 38, +182, 73, 3,235,115, 57,229,138,139,221,140, 57,171,104, 83, 63, 86,101,248, 87, 43, 60, 96, 43, 31, 89,228, 7,140,163, 34, 95, + 39,119, 70,133,128, 97, 53, 98, 92,143, 16, 0,121,206, 56, 59,187, 0,170, 96, 92, 15, 24,236,239,251,107,220,238,103, 76,211, +108,177,180,122,129,199, 72, 77,228,150, 12,128, 22, 99, 52,255,190, 79, 10,228, 64,151,208,214, 10,182, 82, 32,246,156, 19,178, + 46,122,133,213, 64,216, 85,205, 54, 79,105,176,230,137,129,149,189, 55,105,192,233,213, 43,184,188, 60, 71, 72, 9,227,176,194, +211,243, 71,200,251,157,105,131,170, 70, 79, 87, 65, 72,125,253, 38, 44, 24,134, 1, 39, 71, 27, 8,128,221,188,199,249,229, 57, +104, 72,109,234,229,206, 8,169,100,216,221,170,147,137, 42, 32, 6,146, 35,251,136, 4,158, 62, 7,179, 58, 4, 10, 42,161, 71, +209,240,139, 16,237, 33,235,234, 99,223,197,136,232,165, 84, 28, 89,215,134,174,232,108,218,208, 33, 55,194, 1, 50, 87,212, 81, +171, 57,105,136,197, 70,136, 64,140, 9, 37,207,122,114,143, 9,156,117,159, 94, 76, 16, 22, 98,192,230,104, 3,174, 10, 86,169, +181, 98,119,185,197,190, 8,190,249,205,215,240,230,155,223,212,156,221, 52,224,218,157, 27, 0, 37,252,203,143,127,138,207, 63, +123,132,219,207, 61,135,213,184,194,197,197, 57,136, 4, 47,191,242,101,220,125,225, 30, 46, 47, 46,241,253,239,255, 15,252,224, +251, 63,196,189,187,215,241,237,191,249, 54, 34, 5,252,254,173,183,240,249,227, 51,132,241, 8, 83,174,216,237,182,200,121, 66, + 2, 53,145,136, 48,163,150, 10, 30,187,231, 25, 7, 35,175,106, 8, 74, 15, 52, 8, 40, 85, 87, 30,136, 21, 41, 12,166, 52,214, +195,188, 66,253,234, 83, 46,136, 73,121,231,213,247, 94, 33, 34, 45,118,162, 92, 5,113,229,226, 36, 63, 88,251,214,170, 50, 43, +197,141,150, 34,182,165,162,125, 17, 45,105,214, 20,103,124, 59, 26, 85,161, 32,106,177, 32, 46, 8, 52,152, 8, 76, 26, 74,214, + 3, 69,204,240,173, 59, 82,145, 70, 3,115,123,155, 22, 4,108, 29, 17,218, 67,221,172, 97,206,165, 35,105,145,164,122,185,251, + 10,129, 45, 38,210, 82,218, 24,135, 8, 89, 19,218,181,142,185,154,109,202,133,101, 88, 80,162,250, 98,186, 1, 67, 84,197,219, + 11, 32,135, 52,185, 42,170, 93,220,150, 7,221,224, 27,230,111,247,127,183,120,167,107,241,195,149, 25,181,102,112, 41,144, 8, + 36, 12,112,212, 11, 22,187,120,247,119,251,175,231,151,136, 52, 21,181,226,101, 69, 42,184, 22,144,216, 37, 6, 82,150, 11,161, + 3, 62, 22, 62,109,191, 36,109,227, 96,135,113,143,158, 36,210, 53, 78,173, 5,204,165, 77,210,252,114,114, 93, 76,181, 61, 56, + 63, 11, 38,105,222,116,187,228,160,142,139, 54,218, 37, 82,172, 44,115, 3, 25, 53, 39,135,169,120, 91, 7,107,157, 64, 48, 13, + 14, 5,139, 17,165,222,129,250,127,209, 49,171,180, 11,208, 97, 68,135,177,182,214,164, 88, 65,209,117, 27,253,217,241, 98, 16, +129,192, 69,163, 49,101, 17,177,235, 34, 80, 23, 5,118,209,221, 66,169,103,141, 17,200, 68,142,139,226,169,133,219, 44,138,141, + 24,163, 5,101,233,243, 82,165,239,232,189,187,132,116,171,157, 78, 58,131, 50, 32,236,117,248,132,198, 59,252, 98,140, 2, 23, + 16, 75,179,145,213,131,198,204,199,246, 34,135, 66,201, 38,174,180,233,145,227,238,185,195,105, 21, 40,102,226, 76,145,254,123, +239,167,138,237,110,198, 60, 23,179,177,249,153, 36,246,123,201, 65,190,128,190,166,128,113, 72,144, 8,100,203,138, 79, 67,194, +184, 89, 33,164,136,185, 20,156,159, 95,168, 96,108, 8, 88, 29,173, 21,191,219,162,102, 35,246,251, 9,243, 60,155,158,192,154, + 22,155,184, 84,102, 12, 70,219,115,241,163, 88,176,144,167, 39, 46, 39, 58, 45,133, 16,142,232, 61,100,210,143,137,144,203,140, +152, 84,148,235,186, 51, 71, 5,159,158,158, 96, 53,142,120,252,248,115,196,113,176,187, 44,219,186, 84,223,143, 77, 26,145, 2, + 33,130,145,231,217,246,237,130,213, 48,226,120,115, 12, 1,176,221,109,177,221,109, 65,105, 88,224,107,237, 51,169, 86,156, 27, + 86,152,196,149,240, 97,161,202, 93,140,251,130, 24, 61, 78,248, 25,213,169,125, 24,204,166, 48,199,194,162, 98,150, 8,219,213, +145,235, 89,130, 70, 57,218,134,202, 38,169, 58, 2,201,165,106,172,234, 48,192, 27,252, 90,106, 67,150, 22,168, 66, 80,134,136, +202,164,113,171,182,231, 93,175, 6, 80, 21,236,171,126,144,187,237, 14,227,102,141, 55,255,230,155,248,171,175,188,162,135,230, + 56,226,214,237,219, 56,223, 94,224, 95,126,242, 19,148,153,241,220,115,119, 17, 67,192,147, 39,159,227,198,173,155,120,225,165, +123,184,126,253, 26, 62,252,240, 33,254,175,127,252,191,241,203, 95,188,141,215,223,248, 50,190,254,250,125, 92, 62,189,192, 31, +222,254, 19,206,183, 19, 40,141,216,207, 21,251,253,164,135, 85, 52, 68,168, 93, 80,213,216,190, 34, 74, 27, 67, 69,235,140,135, +148, 48,155,191,208,119, 60,213, 30,110,205,213, 37, 37,189, 26,162,151,171,216,158,135,177,155, 51,198, 33,130,107,192,156, 25, +107, 18,196,216,237, 71, 42,160, 10, 45,228, 68,204,243,192,181,244,124,232,202,144,100,135,172, 37,119,201, 98,220,189,136, 1, +131, 68, 21, 75,218,237, 14,146, 96,248, 79, 69,175,194, 51,184,205,178, 70, 38,176, 12, 20, 90, 32, 8, 16, 52, 48,199, 10, 14, +114,237, 82,116,181,250, 66, 40, 83, 25,157,184,172, 23,184, 90, 79, 8, 76,162,104,211,118,216, 24,138, 86,249, 59,168, 82, 21, +174, 99,118, 43, 39,143,117,209,139, 85, 73, 30, 37,106,251,248,166, 48, 95,136,180,156, 82, 39,237,178, 89,180, 37,193,189,201, +181, 89, 86,220,233,177, 84, 29, 7,219,145, 73,229,131, 78,189,218, 8,155,130, 78, 67,164,148,198, 0,240,253,104, 59, 68,253, +144,182, 3,197,199,170, 98,175,133,109, 36, 88,185, 34,207, 5,145, 9, 49, 9, 36, 38, 48,133,158, 80, 45, 11, 79,190,147,187, +170,118,248,186, 38,209, 10,191,178,210, 2,197, 70,227, 92, 43,164, 84,179,185, 85, 8, 23,152, 39, 73,199,173,174,186,150,165, +246, 96,137,216,181,231,223, 95, 63,107, 76,178,139, 26,219,129, 73,134, 75,102,239,228,168,229,184,235, 36,196,194, 94,200,247, +175,132,158, 0,222, 43, 21,223, 1,203,179, 41,109,207,172, 91,188, 56,194, 66,162,229,133,156, 79, 97, 28,232,212,212,208,204, + 8, 84, 45, 99,188,143,200,189, 88,108,153, 11,203, 20, 51, 90, 76,118,252,226, 95,236,175,151, 34, 49,103,197,187, 88,178,216, +244,138, 22,246, 60, 23, 53,250,149, 90,185,106,192, 16, 37, 35, 74, 82, 35, 76, 58,209, 48, 88,123,237, 19, 20,159, 82, 45,157, + 12, 75,148,140, 44, 10, 88, 79,193, 59,184,240,151,202,122, 43,114,155,136,213,249, 15,162, 34,190,237, 46, 99,154,248, 96,244, + 46, 85,192,193, 80,215,130, 69, 60, 49,218, 84, 41, 13, 17,101,206,168, 69, 87, 0, 33, 69, 12,171, 1, 34,192,126,183,195,110, +187,183,105,104,210,208,147, 5, 57, 79,170, 96,158,250,197,152, 82, 68,138, 73,121, 26,134,137, 78, 67,108,205,150,174,233,220, + 74,105, 69, 56,209, 98,202,183,176,192,186, 77,154, 84, 67,228, 78,157, 60,103,164,245,160,244,187, 32,168,147,186,115, 16, 2, +142,143,149,112,119,126,246, 4,247,238,189, 0, 0, 6,202, 41, 45, 59,133,125, 72, 72,179, 21, 35,250, 76, 29,173, 53,245,141, + 33,216,237,119,176, 52,115,125,206,165,219,195, 25,102,189, 92,148, 90,234, 56, 35, 29,171,146, 85,134,109, 91,105, 57,186, 61, + 17,104,145,241,196,254,176,163,117, 93, 78, 92, 82,126,123,128, 68,243,236,154,232,135, 77,209,233,191, 92, 36,189,228,220, 35, + 75, 73, 85,227, 76,234,217,219,239,247, 8, 41,160,100,139,106,116, 24, 3,107,181, 60,166,216,194, 10,106, 46,184,124,250, 20, + 87,111,221,194, 27,223,251, 46, 94,122,254, 69,236,230, 9,235,163, 53,238,220,189,131, 79, 62,250, 4, 63,249,201, 79,113,237, +244, 26,110,126,249, 30, 46,182, 23,216,109,119,184,247,226, 11,120,254, 75,207, 99,189, 57,194, 47,126,241, 75,252,159,255,251, + 63, 66, 42,227, 31,254,254, 59,120,241,229, 23,240,224,147, 15,240,231,119, 62, 70,221, 11,194, 56, 98,151,103, 76,251, 98, 85, + 53,217,238,138, 17,152,145,107,231, 60, 87,102,165, 73, 45,115,181, 83,194, 16, 34, 38,239,136, 88, 26,107, 57, 48, 33,154,250, +189,218,250,130,109,167,203,149,145,103,193, 60, 86,172,198,128, 90, 3, 50, 11, 98,101,136, 77, 77,170, 84, 12, 97,176, 48,174, +170, 49,178,236, 84, 56,221,193, 58,189, 74,191,172,172,187,243,172,227,248,228, 89,233, 46,206, 53, 37,102, 16, 32, 68, 29,173, + 71, 19, 12,233,216,216,246,219, 22, 11, 73,228, 81,146,118, 41,137,219, 28, 14, 35, 71,123, 55,100,221,153,232,184,213,163, 81, +219,161, 12, 27,167,250,195, 74,221, 19,237,251,204, 64, 62, 62,238,177,165,212,236, 59, 29,213,218,120,206,142,201, 12, 80, 61, + 72,197, 23,188,170,210,194, 86, 93,111,103,190,236,133, 93,200, 99, 31, 5, 93,217,190,172,137,136,122,142, 56,219,190,182,129, + 63, 76,164, 72,172,140,239, 72, 1,165,102,132,170,211,141,228, 49,150,210,213,254, 13,207, 99,209,150, 85,204, 10,199,172, 40, + 82, 95, 69,232,242, 86, 39, 32,139,221, 41,241, 66,180,229,221,126,101,112, 46, 16,174, 42,168,227,130, 82,138,234, 85,114, 70, +181,189,121,181,105, 64, 45, 89,249,236,158,139, 93,139,237,227,181, 56, 0,139,101, 83,251,184, 55,244,194,200, 52, 14,213, 82, +191, 28, 36,180, 64,212, 91,102,187, 77,245,220,146, 26, 18,130,116, 23,130,166, 11,194, 24,234,206, 31,239,151, 19,187,151, 24, +135,236,130,127, 47, 31,224, 39,116,102, 80, 0, 0, 32, 0, 73, 68, 65, 84,192,107,189, 24, 35,187,190,197,189,233,202,224, 46, +168, 32, 36,219,149,138,199,229,114,181,192, 30,179,159,121,209,227,197,161, 79,159,170, 78, 85, 14, 84,228, 11,157,132,255,203, +171, 77, 66, 90, 78,128,239,179,195,226,183, 92,172,153,200,167, 26,213,158, 91, 9, 58, 38,246, 11, 19,246,189, 95,128,113,164, + 37, 7, 30,142,223, 29, 6,211,194,113, 14,254,188, 23,250,193,211,144,244,247, 12, 42,148, 35, 94,118,220,140,121, 46,184,216, +237,176,205, 25,115,182,212,187,218, 39,183,122,169, 57,142,181, 83, 31,199, 65,241,168,197, 88,247, 49, 4,196, 33, 33,144,238, +149, 47, 47,183, 40, 89,243, 4,214,171,149,229,172,119,158,193, 52, 79,200, 57,183,140,249, 96, 25, 23,209,119,234,193, 70,215, + 20, 64, 76, 77,168,232,130, 90,242,208,160,229,116,204, 86, 42,108, 41,111, 33, 0, 99, 12, 6,158, 34,236,166, 9, 39,225, 8, + 41, 37,132,148, 48,109, 11,216,240,174,155,147, 19,236, 46,119, 40, 57, 99,189, 62, 69, 46, 21,149, 51, 74,169,205,109, 17,163, + 22, 19,115,102,204, 69,199,107, 21,181,173, 33,106, 21, 92,238,118,234,134,193,176, 72, 26,180,145,187,240,194,121,208,207,185, +228, 93, 74,128, 41, 95,185,119, 56,185, 58,204, 94,175,228,104,163,186,234, 93,131, 1, 40,252, 0,129,232,238, 43, 88, 92, 43, +139, 10, 24, 98, 74, 13, 94,194,172,130,187, 8, 96,206, 25,171,205,136,202,140,146,243, 1,165,104,174, 25,146, 2,144, 2,242, + 92, 90, 71, 53, 36,205,227,142,164, 93,255,148,103, 92, 60,126,130,151, 94,253, 10,222,252,235,111, 35,132,136,179,139, 11,220, +124,238, 54,238,222,187,139, 63,188,245,123,252,226, 23,191,192, 11, 47,188,128,171,215,111,224,225,167,159, 96,189, 90,227,213, + 87, 95,197,115,183,175, 99, 47,192,255,251, 95,126,128,127,252, 63,254, 27, 94,120,233, 6,190,243,183,223,194,102,181,198,219, +127,252, 35, 62,252,203, 39,136,195, 10, 60, 16,166,121,143,188,159, 52,119,156,180,226, 28, 66, 2,163,162, 86,233,151, 25, 52, + 70,143, 89,199,152,222, 24, 68,102, 12, 41, 32,215, 78,123, 34, 91, 82, 85,147,150,214, 92, 91, 36, 40, 27, 15, 93, 64,200,133, +177,203, 51,214,117, 64, 42,130, 41, 40,143, 93, 71,149, 1, 92, 42, 52,211,163, 67, 39,252, 98,107, 99, 62, 1,136, 43,106, 37, + 68, 75,220, 66,203,252,206,118, 80, 68, 32, 37,144,196, 86, 65,163,197,157, 0, 44,165,139,136,210, 8, 80,178, 3,128, 17,136, + 45, 67, 91,144,194,128,160,225,211,173,115,117,127,235,179,255,223,187,230,238, 57, 7,179,101, 87,203,161,200,135,251,238,171, +177,195, 68, 76, 61,111,240, 23, 33,227,112,115,219,125, 30,248,120,177,236,230,184,141,221,217,192, 64,120,166, 8, 96, 43, 34, +221, 53,224, 41, 95, 84, 77, 82, 39,202,174,247,247,200,127,166, 28,172, 2,168,115,100,108,164, 92,230,140, 48,132,118,200,234, +103, 84,141,197, 79, 45,211, 25,240, 61, 48,181,139, 89,105,125,154, 7,224,171,175, 96,130, 85,125,118,212,243, 78,198, 22, 8, + 14,236,177,127,190,214,170, 81,143, 37,219, 42,160,130,184,162,148,172,234,220, 92, 44, 73, 74,179, 11,230,202, 64,205, 16, 35, + 58,114, 45, 8,168,138, 60, 21,106,171, 53, 24,165,237,240, 66, 85, 49,104, 52,239, 0, 72, 93, 31,212, 24,180, 45,139,197, 4, +148,212,210,213, 42,161, 83, 45, 13, 34, 19,236,127,147,176, 96,118, 47, 58,242,103,215, 0, 95,200, 0,176,241,244,179,255,156, +119,215, 29,106,228,103,156,190,158, 12,181,218, 73,135,113,180,231,241, 32,205,203, 11,135,138, 3, 74,163,239,136,123,172,107, +119,140, 44,127,239, 3, 70, 62,250,120,159, 22,228,194,160,182, 21, 80, 20,155, 32, 72, 75, 65, 67, 35,167, 37, 24,145, 25, 77, + 21,107,207,248,146, 68,183, 20,122,178,105, 87, 84,207,208,105,137, 77,184, 72,238,227,161, 14,187,177,140,119, 54,114,214, 52, + 85,108,119,122,161, 23, 22, 20, 16, 10,215,166, 47, 96, 67, 72,171, 37,207,130,125, 82, 64, 26,186,203,138, 40,128,146,198,189, + 18, 8,151, 23, 91,148, 89,129, 94, 41, 5,108,142,143,148, 42, 87,251,121,151,115,214, 60,251, 90,219,115,212, 80,196,128,138, +217,168, 83,248, 24,130,108,172, 9, 6,192,129, 14,151,234,162, 89, 0, 64, 64,244,200, 85, 83,188,166, 97,208, 21, 23, 51, 86, +235, 17, 33, 37,245,234,148,140,146, 9,171,213, 26,167, 71, 39,248,236,209, 67, 84, 0,155,205, 26,101,222, 89,132,108,231, 8, +164, 16, 33,145, 48,237, 51,230,201,227,105,171, 38,137, 82,196, 52,103,156,159,109,181,249, 74,108,119, 75,135,228,168, 77, 57, + 88, 51, 57,163,120,112, 26, 57,101,170,237,188,170,165, 59,105, 69,191, 8,139,178, 39, 36,128, 81,116, 55,110,218, 83, 23, 46, + 85,158, 17,195,216,199, 56, 4,203,173,213,180, 33,191, 32,124,148,159,133,193, 89, 83,223, 56, 18,198,152, 80,102,139, 23,108, +105, 96,210, 14,125,103,193, 11, 23,203,238, 46,216, 77,123,188,246,221,111,225, 27,223,126, 19, 53, 23,100, 20,220,187,125, 7, + 39,167, 87,240,139, 31,253, 12,239,124,240, 46, 94,249,234, 87,112,229,248, 10, 30,124,252, 17,174,221,184,134,151,191,252, 50, +174, 28, 95,193,227,243,115,252,211,247,255, 9, 63,248,254,143,241,218,235, 47,225,245, 55,190,137,221, 52,227, 87,191,250, 45, +158,156,157, 35,174, 70,212,202,216,207, 51,114,222,105, 20, 51,148, 15, 29, 98, 68, 68,210,104, 64,206, 86,237,233,168,170, 66, +144,170,117,132,141,177, 46,198, 47,134,145,229,244, 50, 83,209,121,176,203,157, 33, 69, 15,192,198, 43,150, 10, 98, 96,222, 87, +236, 87, 25,227,160,184,220, 90, 67, 3,171, 8, 5,132,200,109, 84, 23, 99,178,182,217,134,249,226,153,221, 0, 87, 66, 45,177, +145,164, 66,176, 44,117,187, 20,117, 51, 98, 99, 81,183,232, 20, 6,211,220,114,217,131, 7, 92,112, 65,136, 38,174, 17, 55,130, +176,118,127,110,101,106,244,178, 69, 87, 98,241,139,158,117, 93, 77, 25, 27, 14,242,210, 28,111,234, 27, 60, 2, 69,219, 9, 90, + 84,176, 8,186,241, 30,135,116, 43, 63, 0,251,193, 46,205,173,209, 99, 26,235, 34,168,161, 95,230, 68, 94,132,218,133,106, 35, +207,212, 8,122,150, 98, 98,121,243,100, 27, 70,200, 33, 63,187,143, 43,123,130,149,171,251,170, 20, 72, 29,116,220,175,173,104, + 79, 64,131,125, 95,108,149,192, 22,228, 81,107,134,148,172, 99,115, 98,173,254,115, 70,172, 35, 66, 42,136,148,140,105,208,125, +221, 66,220,167, 66,110,167, 42,217,194, 65, 50,184,100,192,246,242,117, 46,200,101, 15,206, 69,247,127, 38,192,129,173,183,242, +156, 53,152,194,226, 65, 91,182,187,241,211,137,250, 45, 45,203, 61,164,253,253,208,236,173,125, 4, 75, 85,154, 80, 49,165,100, +135,191, 9, 42, 23, 35,104,178, 78,156,160,176, 20, 35,187,162,154,112, 16, 78,217, 19,252,255, 94,236,203, 76,247,150, 46,183, +176, 31,246,209,184,244, 93, 59,197,246,122,120, 65,107, 11,162, 44,254,182,222,240,194,171, 86,240, 34,163,251, 32,169,176, 29, +166,125, 26,176,188, 88, 93, 68, 71,238,187,231, 67,124,177,155, 48, 43,116,141, 66, 69, 39, 65, 69,150,197,133,173, 47,200, 86, + 32,173,240, 21, 19,222,165,230,213,111,207,170,131,212,154,127, 94,243, 42,162,135,214,160, 71,218,182,213,131,105, 91, 92, 68, +107, 95, 18,156, 93,236,177,221,103, 76,185,218, 37,165, 3,164, 16,163,117,199, 61,152,168,218,135, 56,164,161,165, 43,194,146, +212, 52,184,138,112,113,113,129, 60,101, 93,255,144, 32,174, 70, 12, 67, 50,157,143,218, 74,107, 41, 40,185,104,214, 56, 91, 99, + 73,131,190, 31, 81, 15,224,113, 88, 31,146,223,216, 39,206, 38, 89,103, 19,168,182, 72,218, 62,117,108,124, 71,115, 92,109, 78, +142,117,204, 47,192,122,189,105, 34,208,178,103,112, 74, 88, 31, 29, 3,129,113,190, 59,195,106, 28,177, 90,109,112,113,246, 24, +185,204,250,177,178, 96,202,123, 12,195, 0,150,128, 41, 23,108,247, 58, 49,163, 32,216,172, 79, 81, 1, 92, 94,158,227,241,231, +159,169,189,119,214,102,208,137,146,221,237, 64, 40, 96,212, 64,168,166,133, 74,108, 20,130,198,211,142, 98, 7, 67,247,236, 57, +232, 67,200, 17,139,164,214, 42,169,208, 43, 92, 49,175,186,127, 15,125,237, 98, 28,228,176, 36,105, 57,169, 42,104,220,225, 46, + 79, 96, 34,236,171, 89,153,172,171,228, 82,205,190,163,223, 1,120,104, 69, 85, 27,194,249,229, 37,110,222,185,137,191,253,246, +183,112,227,206, 45,156, 95, 92, 98,115,180,198,139, 47,126, 5, 82, 50,254,199,255,243, 3, 60, 58,123,140,215,190,249, 6, 2, + 17,158,158,157,225,149,175,188,130, 59,119,239,128, 64,248,232,193,135,248,111,255,245,191,227, 79,111,255, 30,127,255,159,191, +133,231, 95,124, 1, 31, 63,248, 4,239,188,247, 23, 48, 24,235,205, 49,230,185, 96, 63, 93,162,148,140, 24, 34, 10,103, 48,128, + 68, 17, 49,196, 70,255,137, 8,150,122,102, 25,206, 6,231,113, 32, 73,117,149, 9, 17,214,195,128,204,147, 86,226,230, 65, 85, + 31, 56, 48, 75, 65, 52, 24,137, 51,201,217, 86, 14, 44,140,221, 62,227,104,149, 80, 66, 64, 46,140, 58, 48,184, 18,226, 16,204, + 71,171,170, 89,142, 21, 44, 65,127, 47, 27,165,106,215,239,159, 33,155, 88, 38,116, 84,172,137,189,116, 87,108,163, 41,104,247, +199, 92, 77,196,148, 20,174,195, 26,114,162,158, 88,235, 28, 22, 74,244,234, 74,117, 34, 4,161,206,127, 55,151, 69,136, 29, 81, +202, 22, 90, 65, 70,140, 35,177, 75, 41,120,151,207, 7,227,199, 54,201,247,108,231,190,136,182,103, 36,244, 0, 21,102, 83, 80, +119,209, 88,104,151, 46, 26,145,172, 31,226,157,168,168,121, 42,125, 48, 31,220, 62,103,227, 83, 47, 72, 14,160, 36, 7,202,234, + 78,235,107,218,117, 19, 48,166, 64,144, 90, 80,115, 70,178,176, 33,177,130, 17,166, 95, 0,107,193, 87, 89, 3, 32,184, 22,176, +117,201,234, 49,158,155,195, 34,212, 25, 41,141,168, 33, 32,134, 81, 59,194, 5,194,211,187,116, 95, 85,148,154, 85,183, 82, 51, +196,126,118, 41, 25,156, 51,114,221, 67, 50, 35, 23,237,204,165, 48, 10,171,119,220,247,163, 92,139,193, 51, 12, 82,101,154, 5, + 50,149,187,176,134,121,224, 96,143, 75,205,145,161,193, 53,174,177,208,196,193, 24,163, 89, 82, 5,148, 52,215, 30, 30,116,211, + 18,195, 58, 50, 55,132, 94,212,233,122,207,180, 64, 20,190, 48,106, 95,146,224,218,193, 78, 70,143, 35,117,220,144,137, 65,221, +246, 5,207,253,118,109,134,209, 19,169,237,143,185,165,121,185,175,220,185, 9,169,229, 26,117,159,127, 83,226,179, 40,237,176, + 93,236, 11, 59, 27,245,216,210, 94, 32, 46,212,234, 49,180,110, 78, 22,194, 80,161,142,241,101,211,126,192,215, 71,132, 5, 21, +144, 90, 49,237, 84, 62,135,208, 4, 19, 40, 54, 12, 67,101, 84,191, 0,205,138,218,252,212, 30, 48, 42,210,132,191,204,130,237, + 60,227, 98, 59, 97,158,212,151,238,144, 21,231, 40,176,148,150,197,224,255,238, 20, 35, 98, 10, 11,129,116, 47,128,106,214, 32, +147, 46,116, 20,172,215,107,211, 50, 25,250,153,124,119, 95,144,109,132, 29,141,140, 23, 99,196,144,162,174,125, 83,106,211,142, +234, 9,137, 45,134, 89,139,126,198,225,251, 36,206,152, 8,218,112, 68,211,140,109, 54,107,228, 82,145,167, 9,227, 48,128,146, +133, 11,149,138,184,222,224,232,234, 85,148, 90,112,249,244, 2,183,239,220,209,201,243, 60,105, 35, 42,250,251, 78,211, 14, 39, +199, 87,192,149,177,219, 79,152, 38, 45,174,143,214, 9, 71, 71, 27, 48, 11,206,206,207,112,126,118,142,213,122,141, 42,192,148, +171, 77, 52,105,145,241, 14,157,136, 44, 34,145,147,238,117,177,176, 57,105, 54, 57, 72,227, 83,201, 48,149,193,131, 19, 26,113, + 9,173,187,140,182, 28, 83, 28, 98, 69, 74,209, 46, 14,244,238,196, 49,147,150, 86, 69, 33, 98,102,198,118,158,213, 84, 95, 5, + 89, 96,234, 72, 63, 56, 92,144,103,233, 94, 84, 49,213,138,237,110,143,219,119,239,226, 59,223,251, 14,214,227, 26,143, 30, 63, +193,213,235,215,241,226,203,207,227,193, 95, 62,194, 79,126,252, 83,172,143,143,240,250,155,111,162, 50, 16, 36,224,171,175,126, + 21,155,147, 99, 92,156,159,225,227, 15, 63,196,207,126,250,175,184,120,250, 20,127,255, 15,127,135,163,213, 9,222,250,205, 91, +120,240,241,167, 88, 31, 29, 35, 14, 27,228, 92,176,223,239, 81,242,132, 33,106,218,156, 24,199, 60,217,120,151,217, 56,224,232, + 94, 70, 54,219, 74, 72, 85, 47, 59,152, 45,202,163,248, 98, 68, 10, 1,243,194,159,233,190,198,226,151,109,176,139,207,118, 81, +108, 20,178,105, 82,228,226,152,180, 83, 42, 85, 9,110,163,231,133,179, 64, 11,241, 30,240,224,136, 85, 49,124,169,226, 56, 51, +210,160, 39,170, 22,108,177,117,170,234,231,236,112,144,118,105, 45, 58, 98,211,244,216, 69, 22,205, 50,194, 11,242,181,250,141, +137,185,217,104,136, 14,115,150, 27,131,156, 61,184, 2,205, 11, 30, 22,158,242, 62, 46,151, 3,219, 90,112,181, 62, 63, 67,168, + 91,140, 6, 97, 62,216,176, 16,179,181,145,157,141,209, 27,123,125,153, 31,190, 60,224,101, 49,254, 95,224, 98,141, 39,217,105, + 96,212, 47,238,229,104,211,119,119, 98,234, 95, 61, 84,117,109, 81,114,198, 80, 51,106, 77,182,175, 45,224, 98,107, 19,174, 77, + 8, 83,235,172,107,175,172,157, 50,215, 10, 46,179,237,153, 35, 66,141,168, 49,131, 34, 33,210, 96, 23, 98,112,199,125, 23,192, +178,152,230,163,152, 64,174, 64,138, 42,241,115,153, 81,203,140, 82, 38,189,212,171, 42,223, 81, 24, 69,170, 2, 66, 74,109, 73, +103, 66,253,125,110, 86, 44, 80, 23,102, 45, 48,156, 68, 93, 33,206, 96,187,216,169,173, 91, 82, 74, 22,178, 97,153,211, 49, 54, +160, 74, 31,157, 7,123,126,197,198,200,177,107, 34,252,223,177,120,110,104, 81,172, 45, 25, 5,203,188,117, 89,172, 90,184,101, +102,163, 79,128,252,192,119,148,174, 55, 46,222,185, 22,209,209,171, 77,129, 98,208, 29,124, 11,146, 97, 58,200,168,175,139,125, +237,129,135,223,225, 13,100, 93, 33,117, 39,133, 79, 87, 60, 32,199,115, 20,132,236,179,172, 11,148,173, 56, 91,194,236,153,132, +230, 71,119,228,115, 79, 81,139,157,206,215,244, 39, 90,108,136,137, 33,253,103,247, 88,213,158,203,208,127, 55,216,154, 81,112, +185,157, 85,245,158,171, 62,199,237,187, 29, 26,163,161, 77,207,236,210, 76,163,101,155,147, 11, 33,209, 96, 79,243, 62,107,193, +100, 69,248, 48, 68,172,199,149,193,197, 52,103,130,171,198, 79,151,202,106, 27, 52,183, 68,136,201, 8,142,214, 84,198,208,178, + 36,220,170,233,201,151, 30, 55,236, 98,222, 30, 7,219,223,155,104, 24,229, 52, 12, 24, 82,196, 60, 11,230,221, 78,215, 93, 5, +200, 53, 99,174, 25, 55,143, 79,176, 89,173,177,191,188,196,126,119,137,245,122,173,223, 89, 19,160,238,246,123,181,236, 22,195, + 38, 23,193,126, 55,129,115,134,144, 96,117,124,213,114, 55, 4,151,151,187,214, 8,151,170,147,115,137,132,234,150,212,150, 31, + 34,141,202, 72, 32, 36,207,103, 37,219,201,133, 20, 65, 49, 53,166,125,242,232,187, 16,123,149, 90,179, 94, 88,162,233, 77, 74, + 94, 58,140,102,116,224,134, 84,119,219,246,106,175, 2, 45,128, 98, 95, 25,163,125,241, 74, 72, 90,117, 20,221,243,129, 11,168, + 84, 68, 83,201, 78,147, 2,252,191,249,173,111,225,229, 87,191,134,105,127,137,207,159, 60,193,205, 91,183,112,237,230, 77,252, +242,103,191,198,175,127,245, 43,124,249,197, 87,112,227,185,155,224, 64,184,126,253, 42,238,220,185,141,185, 8, 62,250,224, 1, + 62,249,232, 99,252,250, 87,191, 1, 64,248, 15,127,251, 55,216,110,247,248,205,175,127,139, 71, 15, 31, 97,115,229, 20, 68, 1, +251, 73,243,167, 75, 41, 10,206, 97, 15, 4, 81,130, 15, 91, 92,101,176, 7,189,239,101,245,205, 46,208,248, 89,161,174, 44,119, + 98, 83,133, 96,136,177,241,200, 17,186,197,136,133,192, 81,143,226, 24, 52, 66,149,205,148,196, 85, 69, 40,211,196, 88,143,140, + 42, 64, 46, 9, 20, 24, 97,237,193, 8, 21,196, 10,244,168, 22,185, 26, 61, 89, 77,250, 40,222,194,166,245,159,197, 96, 5, 65, +135,173,196,152,140, 50,214, 57,219, 62, 22,141, 22, 81,233, 17,138,137, 72,145,171,208, 10, 89, 47,205, 78, 55, 67, 3,182, 4, + 43,240,212,155, 31,162,166,140,193, 18, 2,123,160,201, 51, 97, 28,149, 1,100, 11, 52, 89,248,139, 97, 15,168,215,215,236,194, +172,158,174, 85, 93,220,121,224, 85,246,248, 87,149,109,146,237,205,201, 10, 35,183,120,181,244,172,216,165, 84,203,176, 16,113, +219,219, 51, 93, 97, 12,125, 71,234, 65, 34,109,125, 37,198,159, 30, 54,136,171, 35,204, 23, 79, 80,242, 30, 20, 34, 50,235,159, + 9, 49,234,136,174, 86,237,224, 43, 91, 55,157,145,115, 6,138, 50, 24,234, 60,169, 31, 23, 2, 10, 17,113, 88,235,148, 39, 6, +237, 74,104,112,216,174, 77,103,208, 58, 20, 24, 36,165,150,220, 10, 5, 31,239,115, 45,138,245,204,213, 85, 80,173,144,111, 73, +112, 6, 84, 41,190,191, 76,212,223, 19, 67,148,182,189, 52, 45,158, 35, 43,140,171,104, 49, 26,131, 78,147, 66,140,136,163,226, +168, 75, 41, 24,135, 1,227,122,236, 35, 84,187,200,106, 53,193,164,232, 42,142,188,160,230,106, 54,159,120, 16,242, 3,170,118, + 38,135,131, 80,150,150,209, 78,221, 41, 33, 22, 58, 3, 91, 3, 85, 94,152,183, 4, 45,228, 70, 89, 10,116,112, 41,123, 92,175, + 61,149, 13, 76,115, 56,161,232,227,119,197, 1,179, 21,149,210, 16,169, 97,161,190, 6,122,131,227,185,233, 32,139, 81, 94, 88, +227,150,211, 33,181, 38, 42,244,105,145,148,180,200, 94,192, 51, 65, 44,135,110,115, 10,125, 95,219, 24, 5, 65,237,130, 14, 70, +241, 78, 58, 8, 58, 86,182, 22,228,185,224,236, 98,194,118,158, 49, 23,177, 81, 56,183,180,188,106, 93,186,152,136,182,218,244, +143,156,189,111,227,109, 69,198, 2, 57,103, 21,143, 53,171, 43, 99,181, 58,194, 24, 35,118, 69,159,189, 33, 13,106,189, 44,106, + 37,246,177,190,127,174,254,220,141,126, 17, 79,185, 33,116, 61,175, 64,216,195,146,208,168,141, 62, 73,246,191, 69, 16, 5,177, + 37,125, 78, 83, 74,184,188,216,107, 90,155,169,240, 11, 51, 46, 37,227,249,213, 26,235,180,198,231,103, 31, 65,132, 48,174,142, + 80,171,106, 81,106, 45, 38,230, 99, 93,175, 66, 47,235, 50,101, 20,154, 81, 10,227,244,232, 42,198, 24, 80,230,138,179,203, 45, + 36,168, 32,144, 91,113,168,153, 20,238, 44,107, 25, 3, 66,205, 6,156, 60, 64,195,177,160,128,168, 34,215,246,115, 33, 36,253, + 2,166,100, 95,136,210,198,182,122,217, 39, 83,184, 75,171,192,225,157,172, 8, 40,233,114, 63,196,164, 95, 70,219, 33, 83,112, +208,140,250,176,105, 8, 38, 36, 1,138, 3,113,170, 38,211,138,117, 13,119,158,127, 1,183, 94,122, 30,171,205, 10, 79, 31, 62, +196, 56,174,240,210,151, 95, 65, 92, 39,252,235,143,126,134, 15, 63,248, 11,190,246,218,125, 28, 31,159, 98,220,172,113,227,230, +117,220,188,121, 19,143, 31,125,142,143, 63,254, 12,159, 61,122,136,119,223,123, 7,155, 43, 27,124,249,185, 23,241,233, 7,143, +240,254,159,223,198,118, 59,225,248,202, 53, 84, 82, 11, 65,174, 5, 9, 1, 3, 17,102, 6,178, 17,216,162,161, 52, 53,245,204, + 84,190,161, 90, 40, 65,135, 97,212, 82, 80, 13,116, 32,139, 17,156,143,174, 98,138, 8,181, 52, 11,131, 64, 43, 79, 4,173,190, + 99, 12, 6,224, 80,193,152, 24,108,164, 50, 99, 55,205, 88,175, 35,134, 4, 76,161, 32, 14,250,224, 6, 97,131, 99, 84, 13,128, +168, 21, 28, 66,139,196,172,108,136, 68,219,179,115, 37, 21,128,164,103,124,216,206,212, 94,120,119, 21, 25,201, 86, 25,219,151, + 49,116,181,191, 78, 44,156,185,205, 45,108,132, 22, 93, 19, 91,209,208,216,245,162, 2, 75,103, 24,104, 49,208, 71,154,109,191, + 73,138, 9,165, 64, 7,249,231,135, 2,186, 30, 92, 18,162, 9,183,152, 16,216, 72,115, 11,197,240, 33,236,198, 46,220, 72,109, +130,224, 2, 66,255, 98, 7, 75, 32, 19,246, 21,135, 52,133, 57,168,186,242,173,205, 45,157, 43, 47, 54,169,128,116,181,191, 90, +143, 8, 33, 38, 12,235, 21, 30, 63, 58, 67,216,174, 17,106, 4, 86, 5, 41,142, 96,202, 10,123,178, 14,165,214,172,148,176,121, + 70,173, 51,192, 5,211, 60,163,238, 39,245,186,219, 52, 35,198, 29, 98, 36,196,113,196, 48,172,244, 2,118,213,188, 79, 72,170, + 93,198,134,230,204,101, 70,157, 38,148,156,173,131,207,237,243,236, 58, 11,173,206, 61,224,162,100,183,197, 73, 75,235, 19,223, + 69,138,119, 91, 38, 88, 36, 90,128,136, 24,136,100,251, 71,183,166,217,254,115, 84,235,145,242, 23,200, 18, 23, 53, 50, 19, 66, + 77,220,180, 12,114, 9, 44,232,226,109, 27,199, 51, 14, 57,229,194, 29, 85, 99,103,147, 82,235,106,179,105,130,124, 68, 29,192, +149, 90, 56, 18, 14,132,149, 11, 53,180,141,109,131, 61,223,234,191, 14,170,195, 16,110,251,109, 89,140,198, 5,212,210,233,218, +118,128, 23, 99,119, 54, 96,151, 61, 67, 36,157, 76, 24, 40, 44, 4,196,102, 99, 98, 67,201, 46, 44,111,213,247,238, 33, 54,244, +236, 65,164,176, 79,217, 40, 52, 81, 40, 57, 14, 25,174,150, 39, 91,163, 4, 91, 9, 85,112, 85, 64, 85, 11,147, 55,124,108,251, +110,219,244,100,191,207,184,216,238, 49,207,122,225, 22, 86,162, 97, 3,194, 26,128,201,167,182, 44,130, 24,147, 93,194,221,225, + 1, 97,219,145,103,237,236, 61,208, 37, 70,164,205, 26, 57, 0, 50, 91,135, 10, 19,110, 26, 31,164,159, 9,250,217, 68,155, 12, +197, 97, 84,113, 48,102,157, 46, 87, 89,100,207, 75, 11,244, 17,255, 61,154, 77,215,108,126, 54,181, 36, 0,171,205, 6, 20, 19, +230,124,137, 52, 36, 12,163,226,208,107,158, 65, 66,184,114,114, 21,165,206,216,238,118, 24,215, 35, 86, 70,146, 19,209,233,151, + 58, 75, 50,144, 2, 10, 9,234,180, 67,101,193, 64, 35, 66, 96,156,158, 94, 1, 34,176,219,205,120,252,228, 49,210,144, 32,201, + 52, 76,208,169, 6,147, 59, 68, 84,223,229,150,198, 38, 10,108,163, 16,247,178, 22,125, 64,146, 0, 17, 35,106, 48,248, 65, 76, +122,185,126,193, 36,178, 80, 92, 55,111,175,237, 6,171, 65, 55, 22, 98, 23, 87,202, 6,139,196,131,117, 79,181,234, 8,161, 64, +169, 85, 82,245,225, 42,121,198,201,102,133,219, 95,121, 5, 55,111,222,196,147,179,167,120,240,224, 67,220,185,241, 28,238,190, +252, 37, 92, 62,126,130,127,249,254,143, 80,171,224,165,175,125, 13,155,245,136, 43,215,175,224,185,231,239,130,136,240,238,187, +239,226,179,135,143, 49, 77, 91,124,244,224, 1, 78,142,175,224,202,213,171,248,211,187,239,225,179,135,143,148, 14,116, 50,224, +114,159, 49,229, 12, 46,186, 14, 24, 34,161,148, 46,104, 73, 4, 80, 76,168,182, 51,215,185, 44, 31, 84,214,203,202, 92,121,210, +116,240,126,113, 27,141, 41,147,152, 57,183,164,179, 2, 81, 11, 15,227,128, 49,221,113,165,218, 25,238,231,130,237, 92,176, 94, +173, 80, 43,154,205,136, 49, 32, 46, 60,179,176, 75,133,176,164,162, 85,245,147, 47,212,241, 46,107,141, 65, 45,108,126, 82, 30, +168,112, 77, 57,235,118,171,224,169, 78,118,153,213, 90,129,216, 71,213, 8,130,128,212,161, 52,210,179,193, 53,147,154, 90, 32, +141, 4, 45, 68, 92,228,131,166,164,230, 3, 58,156, 77,187, 13, 24,130, 62, 6, 53,193, 19, 25, 64,137,117, 33,216, 14, 80,157, + 48, 80, 15,117, 33, 90,172, 19,208,126,182,180, 32, 34, 19,151,145,251,249, 35, 32, 21, 18,120,225,147,118, 34,116,106, 16, 13, +255,153,181, 17,252, 96,151,123,109,124,108,106, 10,219,136,213,233, 41, 4, 1,187,203,115, 16, 2, 2, 18, 48,112,239,106, 44, + 82,152,185, 90,165, 63,131,231,108, 21,127,197,148,247,168, 69, 5, 68, 42,254,219,183,226, 59,173,214, 88,173,214, 10, 80,109, +171, 3,123, 63, 89,201,109, 82, 43,114,157, 81,231,185,249,214, 75,241, 93,185,135,225, 4, 32, 36, 4, 4,229,117, 27, 91, 65, +172,211, 38, 16,106, 0,170,179, 25,192,166, 57,162, 70, 35, 43,214,153, 17, 41,226, 52, 26, 70, 86,195, 40, 34,194, 16,221,232, +170,182,186, 24, 17,211,168, 81,201, 76, 29, 81,122, 48, 45,137,205,130,212,186,229, 86, 60, 30, 94,170, 90,224, 45, 49,193,104, +249,221, 93,212,216, 49,181,125,205,114,216, 89,131,186, 24, 83, 37, 31,138, 20,173,165,168, 69, 55, 4, 77, 83,124,118,212, 15, + 91, 49,121, 23,233,212, 72,135,134, 52,223, 4,154,179,228,176,112,133,229, 5,112,139,203,149,182, 71,231, 3,114, 94, 79,240, +242,149, 83,104,231,243, 82, 9,142,254,181, 55,129,167,137, 56,237,125, 8,212,169,132,174, 31, 8,182,170, 35,113,119,130, 94, +252, 62,166,191,220,237,177,155, 74,179,103,233,217,196,230,229, 95,190, 31,208, 72, 89, 44,162,155, 93,179, 5,160,212,162,240, + 25, 4,197,111,217, 26, 98, 24, 19,210,152,236,251,192,118, 68,216, 10,162, 20, 43,114, 66, 43,106, 34,117,142,125, 26,146, 58, +178, 16, 26,162,219,159, 41, 57,240, 80, 44, 26, 25, 31,191,163, 54, 60,112,144,128,113, 84, 21, 89,201, 5,227,106,196, 48,174, + 80, 45,174, 58, 33,226,232,228, 20,121,154,177,155,119, 88,175,214, 24, 82, 66,206,123, 0,162,187,255, 82,144,231,220, 28, 45, + 58,154,215,162,114,179, 89,225,228,228, 84,133,116,187, 29,114,174, 10,183,137,161,217,155,153,196,220, 49,189,128,237,137,151, +122,254, 37, 10,207,122, 59,185, 1, 17, 42, 50,104,136, 96,137,134,164, 52,242, 19,168, 39,252,144,134, 37, 52, 17, 6, 45, 70, + 80,118,248, 38, 19, 26,136,197, 76,122,220, 97,130,118,191, 51, 50,180,208,138, 46,176,215,220,234,129,112,231,206, 11,184,117, +231, 22, 88, 24,127,121,240, 17,106,174,120,225,249,151,112,251,206,109,252,229,157,247,240,135,223,255, 14,155,147, 19, 92,187, +121, 11, 49, 69,220,120,238, 54,238,221,123, 14, 79, 31,159,225,157, 63,190,139,203,237,165,237, 39,182,184,126,227, 42,246,151, + 5, 63,251,209, 47, 49,205,151,184,121,227, 22, 16, 34,246,151, 59,108,119, 91, 84,102,140, 16, 11,171, 39, 20, 18,112, 0, 70, +178,189,177,173, 21,230, 58,183,170, 86, 72, 59,247, 32,253,203,230,225, 45, 68,220, 17,138, 11,166, 37,155,216,193, 63,144,106, + 21,173, 3, 9, 14,184,215,172,221,115,176,112,149,156, 11,166,125,198,180, 30, 49, 88,254,114,182,252,117, 10, 85,213,236,177, + 23,105, 1,140, 96,137, 78,168,140, 0, 6, 69,238, 89,230,210, 59,113,229, 27,119,235, 24,232,153, 35,198, 3,100, 64,138, 19, + 37, 23,204,113, 35,207,181, 11, 13,213, 68,114,100,202, 90,106,129, 53, 96, 77, 51,163,102,127, 82,213,106, 76, 22,168,210, 80, +174,157, 83, 29,150,201,105,188,240,112, 83, 19,204, 31,192, 44,220,190,226,158,104, 22,229, 54,135,228,163, 83, 58,200,163,238, + 11,181,208,197, 86,206, 54, 15, 48, 42,213,194, 91,188,252,111,212, 53, 41,178, 16, 57, 53,178,157, 31, 20, 6,224, 0, 10,210, +234, 8, 39, 87,174,227,241, 39, 31,106,193,147, 19,234, 48, 33,166,164,233, 81,165, 66, 68, 43,251,106, 81,173,243, 52,169, 64, + 39, 23,228,170, 22, 30,170, 21,194, 74,100,244, 4,170, 52, 77,200,163, 38, 19, 82, 74,240, 64,186,101,225,206, 98, 22,156,105, + 6,115,213, 85, 79,173, 38,130,178,231,145, 18,168, 22,204,101, 97, 8, 20,219, 19, 88,193,199,140, 22,236, 33,164, 59, 89,130, +142, 11,117,186,164,107,132, 33, 18, 34, 6,200, 72, 8,182, 51, 76, 33, 42, 88,202, 98,157, 5,140, 33,173,144,210,208,246,170, +126,236, 7,231,228,187,181,138,208, 87, 60, 8,234, 34, 49,117,178, 35, 86,251,132,153, 26,107,163, 9,230, 14, 98,119,121, 81, +152,123, 49,135,198, 34, 0, 69,117, 43,176,244, 53,130,116,152, 12,140, 72,230, 5, 69,117,103,135,197,144, 74,224, 3,125,128, +123,210,149, 6,167, 59,105, 95,225, 45,247,185,173,121,111,191, 99,104,221,246,129,128,206,212,220,213,231,197,238, 46, 88,136, +226, 14, 83,234,168,217,145,237, 79,193, 99,227, 72,146, 21,130, 54, 97, 50, 29,148,123,189,157, 95, 87,196,160, 80,196,200,165, +224,236, 98,135,221, 92, 49, 89,212,106,101,143, 84,213,187,160,143,188,245,251,156,146,242,211, 37,244,130,172,150, 10,201,230, +227,134, 58, 12,128,170, 2,185,205, 90,155,188, 89, 97, 43,129,130, 62,199, 85,192,153, 15,186,116, 44,116, 48, 49, 70, 12,131, +198,133,235,179, 95,251,180,205,109,189,180, 8, 85, 33,210,130,245, 32, 63,190,139, 9,211, 16, 21, 25, 92, 11, 54, 71, 27,144, +169,239,115,158,177, 26,181,152,190,184,124,138, 58, 79,184,114,235, 10,134, 97,192,110,183,211,134, 85, 4,147,129,120, 98, 28, + 0, 9,200, 60,183,215,179, 62,222, 96,179, 94, 65,152,240,228,252, 41,170,148, 78,171, 51,187, 56,215,126,238, 53,168,146, 61, + 71,108,103,105,114,177, 10,185, 26,219, 95,128, 89, 56, 10,164, 85, 57,176,208, 7,207,136, 38, 35,242, 68,234, 66,161, 96, 35, +174, 96,149,220,210, 27, 28,130,238, 65, 83, 12,154, 46, 3, 66,102,133, 93,192, 15, 76,102, 4, 41, 56,190,118,138,187,215,174, +227,228,248, 20,143,159, 60,198,167,159,127,142,211,147, 99,220,123,254, 69,164, 20,240,251,223,252, 14, 15, 31,126,130, 91,207, +221,193,234,232, 8,235,163, 99, 60,255,226, 93,156,158, 94,197,123,127,122, 31,127,248,183,183, 48,172,142, 48,174, 3,118,251, + 61, 82,140,120,248,241, 67,252,225, 15,239,160,214,138,211, 43,167,168, 34,216,239,247,216,237,182, 10,195,167, 69,202, 17,235, + 3,146,162,134,109, 80, 8,150,102,103,227,107,144, 81,155, 22, 34,148,202, 13, 58, 81,165, 26,193, 44, 44, 6,121,178,168, 6, + 73,163, 99,161,176, 29,177, 48,129,118,180, 84,105,158,102,230,210, 34, 77,107,101, 76, 83,193, 52,101,172, 99, 64,169, 81,171, +101,174, 96,142, 42, 12, 99,181,133,176,180, 65,153,190, 6,239,118, 32,202, 4,151,128, 72, 5,137,135,142,137,173,104, 7, 16, +183,160,138, 37,137,171,127,225, 15,249,255,232,164, 53,223,247, 45, 67, 33,108,124,174, 13,118,213,236, 99, 44, 98, 45,163,114, +228,149, 23,223,128,242, 7,150, 32,219,238,182, 17,189,152, 40, 75, 69,148,220, 35,127, 67,119, 34,183, 0, 16,135,126,176,167, +146,117, 69, 50,123, 50, 19,185, 13,208, 20,190,190,171,149,104,133, 43, 31, 76, 14,104, 81, 21,245,110, 49, 52,203,214,146,220, +229,151, 64, 52, 18, 84,140, 1,215,175,223,197,167, 15,222,197,229,197, 99,172,214,107,240,156, 53,207, 58,160, 1, 42,106,173, +200,165,162,228, 25, 37,235, 62,125,218,103,221,103,107,130,134,253, 30,154, 71,174,211,173,162,227,250, 33, 35,173, 87, 72, 49, + 88,122,156, 52,116,109,169,186, 79, 47,165, 52,170, 28, 22,155, 9,102, 65,174,185,233, 72,180,248,172, 29,235,215,232,146, 42, +124,117, 18, 91, 35,113,241, 34,243,187,193, 86, 2, 40,169,115, 36,165,164,133,126,213,213, 22,151,172, 16,155, 52, 24,178,211, +124,204,212, 51, 12, 90,126, 58, 5,171,193,156,186,104,130, 82,207, 68, 55,171,148,174, 15, 67,235,106, 61,120, 37,132, 8,225, + 98, 26,160,208,255,153, 5, 37,184, 33,108,201, 82,197, 26, 20, 72, 47,101,152,236,145, 66,128,112,105,118,180,229,168,219,243, +184, 9,157, 46, 87,159, 1,191,148,131,212, 66, 28,236,203,253, 61, 13, 33,124, 33,253,239, 89,160, 14,183,128, 24,215,140, 72, + 3,200,248,250, 98,105,233, 11, 33,180,241,118, 27,139,247, 32, 84,125,159, 90,234,147,235, 97, 44, 21,175,150,182,170, 98, 17, + 92,236, 39,108,183,123,236,247, 51,114, 86, 54,135,107, 18,200, 38,114,174, 47,105,153,243, 49, 26,100,203, 10, 15,155,212, 72, + 99,120, 88, 19,200,192, 56, 36, 12,227, 96,142, 13,105,175, 77,117, 33,181,143,222, 45, 35,192, 87,124,148,200, 68,152, 73,247, +207,182, 90, 98,111,158,128, 5,129,179, 51,238,151,107, 72,167,173, 42, 18,153,145,134, 81,163,128,165,224,120,125,212, 86, 37, +243,156,241,220,221,231, 17, 82,194,118,187, 5, 40, 96,189, 62, 2, 48,160,148,138,148, 6, 92,238,247,170,137, 32, 49,223,188, +106,118,226, 64,255, 31, 95,111, 30,117,107, 86,149,247, 62,171,121,155,189,247,215,157,166,234,208, 22, 32,189,160,130, 10, 10, +210, 27, 41,108,144,144,136,193, 6, 52,168,177,185, 70, 99, 98, 12,247,218, 16, 53, 68,140, 13,234,189,106,140, 87, 4,177,215, + 32, 10,230,194,141, 32,222, 82, 1, 27, 16,132, 18, 4, 10,170, 63,253,249,250,189,223,247, 93,107,205,252, 49,231, 92,107,237, +239, 28, 46, 99,156,193,168, 26,167,206,217,223,222,239, 94,107, 54,207,243,123,128, 22,216,217, 57, 13,223,118, 88,133,136,253, +195,125,105,202, 92, 73,240, 83,251, 40,104, 13, 55, 12,249,252,147, 8, 35,189,149,145,142,149,131,198, 26,142,241, 84, 15,101, +146,246, 51,171,239,212,146, 36, 36, 57, 35, 42,119, 67, 6,222,153,146,230,101, 84, 41,169,226, 39, 39,193, 38, 38, 83,183,162, + 1,166, 20, 49,197, 4,159, 8,173, 55,232, 23, 27,216, 56,179,131,157,237, 45,132,113,137,139, 23, 47, 98,181, 26,112,106,231, + 20, 54,119,182,113,245,218, 21,156,191,231, 94, 32, 2,103, 31,240, 0,116,243, 30,139,173, 77,156,189,249, 38, 56,235,240,145, + 15,221,142, 79,126,226,110,108,237,108,161,109, 27, 44,143, 15, 1, 2,238,190,243, 30,220,121,215,221,112,206,163,237, 58, 16, + 1, 71,199, 43, 76, 97,132, 1,161,245,124, 33, 70,121, 16,157,229,216,217, 33, 6, 86,215, 58,158, 34, 40,233, 41,149,121,173, +248,102,133,101,110,144,179,197,179,170, 59,167,145, 81,181,127,230, 42,114,138, 1, 33, 73,206,180,181, 34,234,145, 56, 80, 81, +162,103, 91,140,116,151, 83, 8, 88,173, 70,204, 91,135, 16, 12,198,113, 66,223,122, 89,212, 9,214,147,228, 11,108,213,218,229, +100,124,158, 68,253,193,165,137, 85,188,164,252,107, 50, 18, 36,146,187,213,106, 61, 99,178,142,182, 10,129, 64, 30,237, 25,185, + 56,144, 43,116, 62,212,141,228,113,155, 92, 16,136, 37, 6, 42,130, 41, 33, 66,234,147,101,207,166, 47,153,233, 90,144, 16,178, + 82, 86,225,246,234,178, 32, 83, 81,198,170, 98, 64,167, 35,107,187,248, 90, 25,157, 59, 56,202, 98,161,164,129, 68, 86,131, 29, +196, 25, 98,213,150, 73,107,170,121, 5,138,104, 7,196,239, 77, 92,223,227, 59,145, 97,201,133,209,111,157,194,246,153,155,113, +233,222, 79, 2,105, 19,209, 77,156,209,233,121,138,146, 2,176, 90,141, 24, 70, 22,176,197, 24, 16, 40, 98, 28,163, 4,101, 72, + 34,158, 48, 16, 90,137, 30,142, 54,229, 12,246, 38, 77,104,125, 35, 35, 60,165,151,137,187, 36,196,236, 50, 33,177,165, 17,241, +120, 52, 74,231,103, 44,119, 38, 38, 99, 52,149, 51,206,147, 11, 30,181,166,252,188,231,169, 56, 81, 21, 14,149, 50, 78,217, 69, +209,224,168, 87, 88,176,207,227,241, 18,221,124, 14,231, 91,161,195, 69, 88,227,101,116, 95, 7,213,168, 95,172,250, 12,180,232, + 94, 11,154, 98,252,167,174, 8, 83,170,186,250,138,184,167,177,172, 44,238,148,228,172,234,192, 76, 18,177,171, 86,199,156,243, +110,229,178, 76, 41, 7,160,232,119,194,171,230,200, 25, 20, 38,170,194, 93, 72,162, 62, 85,207,225,116, 47, 39,168, 90, 97, 88, +164,148,149,230, 86,194,131, 40,208, 90,225, 90, 95,232, 60, 4,181, 21, 88,233, 6,138,255,138,245,174,186, 17,157, 70,164,138, + 73, 34,221, 85,182,157,234,121,136, 53, 17, 32,107,124, 66, 76, 56, 60, 90, 97, 57, 6,102,189, 11, 96,134,253,212,174, 76, 26, + 80, 94,143, 66,101,116,117,194,218,170,136, 56,133,210, 29, 39,130,186, 91,189,111,114,200, 77,134, 74, 69,101, 7,164,181, 28, + 1, 35, 9,135, 86, 46,120,223, 48, 85, 14, 33,101,139, 33,172,201, 5, 5,161,110,118, 76,245, 74,139,170, 34, 91,126,157,131, +107, 60,140,115, 88, 29, 14,216, 56,181,193,175,125,136, 72, 4,116,253, 12, 99, 28,177, 26, 71, 24,235,209,117,115, 76,227,128, + 36,142,142, 52, 44,225,173, 65,242,220,241, 91,111, 97,131,131,107, 44,186,206, 99,123,107, 19,214, 25, 28, 29,143,216,219,189, +186, 70,217,140, 40,159,115, 38, 31,202,106,148, 36,165, 77,207,102, 95, 60,229,149, 95, 81,190, 52,124,129,187,124,120, 70, 81, +194,195, 54,114,193, 37,206,126, 38,192,154,148,201, 94, 80, 97,136, 84,248,148,225, 11,134, 89,228, 6,152,136, 47,203,144, 18, + 2, 89,108,205, 90,220,180,181,129,185,109, 16,195,132,189,171,187,216, 61,175, 37, 53, 32, 0, 0, 32, 0, 73, 68, 65, 84,216, +135,137, 6, 27,243, 13,116,243, 30, 87, 47, 95,194,213,251, 47,160, 53, 6,179, 7,220,140,197,214, 6, 78,239,236, 96,235,212, + 41, 28, 44,143,240,143,183,127, 20,231,239,191, 15,231,206,221,140,190,235,176, 92, 45,113,229,242, 21,124,242,227,159,196,106, + 25,176,177,152,139,106, 60, 97, 90,141, 32, 50,232, 59, 15,227, 12,134,113,204, 48, 11,111,192, 17,166,134, 74,138,147, 8,176, + 52,216, 66,109,102,202, 1, 54, 34,102,168, 41, 83, 12,130,145,206, 77, 62, 12,189,160,157, 49, 44, 24,204,240, 19,181, 85,240, +175,148,191,172,188, 91, 42,150, 20,126,136,135, 33,226,120, 53,161,239, 57,189,109, 12, 1,109,240,240, 38,130,156,250,211,197, +139,235,164,107, 23, 64,140, 38,122,233, 72, 95,169,105, 92,161, 42,253,202,179,125, 70,125,180, 25, 32,152, 74,114,152, 41,135, + 8,219,132,144,201,116,122,216,240,112,207,179,162,150, 2,200,164,130,159, 84,110,184,181,197,246, 86,139, 10,171,144, 5,202, + 7, 55,139, 53,229,200, 17,207,166,140,211,100, 50,148,164,107,242, 78, 84, 6, 26,117,169, 86, 42,212, 30,103,147, 47,100, 77, +117, 35,201,235,182,206,230,149,137,174, 36, 77, 29,122, 44,221,139,130,132,180,104,201,171, 22,249,103, 37,211,169, 23, 80,211, +230, 76,215,226,204, 77, 15,199,222,181,203, 8,171, 37, 2, 13,128,111, 96,251, 30,198, 26, 4, 9,198,152, 38,238,204, 67,140, + 56, 88,174,176, 60, 94, 97, 26,121,156,207, 22,224,114,169,247, 77,135,190,111,224, 61, 23,145, 33, 37,206, 96,110, 44,219,114, + 36,114,210, 70, 98, 21,189,114,224, 5,170, 19,229,210,231,156,105, 3, 39,153,233,250, 62, 71, 0,211, 16,176, 26, 3, 86, 67, +192,106,226,131, 93,167, 72, 49,134,188,115,159,181, 30,243,190, 67,219,200, 8, 56, 70,132,196, 7,191, 21, 87,140, 5, 33,140, + 3,239, 77,187, 25,188,239,242, 84,204, 86,186, 7, 77,188, 77, 36,209,241,196, 42,244,100,168, 32,139, 76, 57,158,145,131,142, +226, 90,146, 24,151,115, 83, 78,104, 75, 18,102,147, 20,194,101, 66,246,105,131, 36,121,114, 77, 23, 35, 19,137, 20,185,216, 73, + 5,125, 28, 99, 16,122,153,231,117,130, 60, 79, 9,149,101,204,196,252, 29,178,206, 73,148,176,196,239, 86,157,163, 65, 29,150, + 85,186,123, 21,234,213,222,123,170,196,130,133,143,160,133,232,122,244,108, 9, 84, 42, 20,208,204, 33,169,237,136, 38,231, 15, +162, 17,188,178,174, 30,146, 49,160, 16,216,115, 29, 35, 14,143, 6, 28,173, 34,166,137,173,101, 49, 22,112, 83, 82, 74, 16, 27, + 93,101, 69,196,152,213, 68,101, 42, 24,166, 32,103, 84,177, 20, 90, 36,120,103,185, 75, 79, 5,233, 10, 33,251,165, 72, 8, 33, +173,133, 56,105,241,226,189,250,212, 27, 88,199, 99,251, 16, 70,192,248, 44,212,203,121, 10,217,243, 45, 54, 87,107, 5,159, 44, +211, 27, 73,203,115, 77,207,192,152, 41, 97,117, 60, 98,243,108,195,231, 37, 17,156,111,209,247,115, 12,203,145,239, 62,103, 49, + 91,244, 24,167, 37, 12, 69, 41,192,217,201,101,188,129,245, 77, 21, 30, 99, 49,155,245,152,207,103,176, 0,142, 15,143,113,176, + 60,100, 85, 65,226, 53, 88,204,250,166, 19,212, 68, 20,171,184, 14, 68, 61,193,192, 70, 25,169,185, 74, 60, 36,209,135,222,187, +138, 60,196, 48,112,170,220,143, 60, 50,230,212,176,236,175, 76,197, 77, 65,164,162, 5, 42,217,212, 85,196,223,188,109,113,118, +163,195, 86,219,161, 5,176,187,183,135,227,163, 35, 12,199, 43, 88, 56, 52,109,139, 64, 1,123,247,159,199,242,224, 16,109,223, +163,217,152,225,236,153, 51, 56,115,243, 89,120,111,112,254,252,121,220,121,199,157, 56, 58, 62,198,131, 31,248, 64,116,179, 22, + 87,174, 92,197,189,119,222,135,187, 62,117, 15,194, 56, 97,177,177, 1, 50, 14, 49, 5, 6,107,196,132, 89,207,127,239,209, 56, +201, 72,134, 47,219, 70, 38, 22, 9,128,245, 46,219, 77,172, 1, 38,245,228, 70,161,226, 16, 9, 93,138,149,167, 41, 78,249, 0, + 34,226,223,150,170, 47,161,213,170, 74,104, 76, 36,171,230, 36,113,148,190,117,153,168, 71,153,252, 84,196,115, 60,254, 34, 70, +199,142,132,213,152,208,119,196, 95,168, 38,160,245, 77,225, 71, 19,114,174,178, 90, 99, 18, 24,243,107, 33,105, 88,114,249, 91, + 83, 0, 48,201,122,120, 33, 80, 65, 99, 23,115, 80, 10, 95, 96,140,145, 52, 21,102,178,164,103, 49, 35,158, 11, 4,163, 22, 99, +147,178, 85, 11, 68, 48,142, 83,255, 40,135, 78,164, 12,222, 33,201, 9, 48,180, 30,192, 97, 43, 50, 93, 81, 5, 23, 1,147, 19, + 43, 93,146,231, 53,214,216,208,170, 66,143,160, 98, 95,203, 93,153, 65,241,138, 88,144, 51, 72, 16,229,175, 41,241,164,124,177, +215,208, 89,254, 25, 12,153, 53,193,214,186, 96, 42,229,137, 0,135,224, 80,134,149,206, 79,159,194,205, 15,122, 4,206,223,241, + 17,132, 97, 5,163, 41, 90,190,101,116,164,140, 12,167, 41,224,202,181, 3,220,127,109, 31,118, 42, 74, 93,111,141,192, 76, 56, +108,194,153, 17,253,172,197,230,172,193,172,111,225, 28,201,251,200,207,181, 33,158,208,164, 24,185, 35, 39, 73,206,130,201,222, +120, 29,199,102,210,153, 88, 24, 57,147, 97,196,193,209,128,227, 49, 96, 53,240,148, 45,196,136, 16, 18, 98,160,108, 37,243,214, +161,105, 45,182, 22, 1,155,179, 22,125,239, 65, 6,104, 99,194,184, 90,129, 34,179, 17, 28, 37,132,229, 18,221,230, 38,124,223, + 51,120, 70,248,166,117,160, 73,129,253, 0, 78,222,235,104, 10, 70, 85, 69,153,154, 16,104,132,229,158, 32,137, 93, 21, 47, 62, +196, 36,151, 29,171,250, 99, 82, 11, 20,229, 24, 91,146, 11,198, 18,114, 74, 29, 36, 86, 56, 85,196, 64, 83, 71,253, 74, 97,170, +133, 77,190,156,101,157, 22, 41, 22,154,158,136,105,213,223,158, 39,122,178, 95, 55, 21,110,151,170, 73,132, 66,119, 82,162, 19, +252, 4, 83,237,206, 83, 85, 84,150, 70, 75, 69,203,214, 49, 23,163,124,111, 81,196,205, 80, 66,159,203,157, 52,119,171,190, 96, +106, 29, 64, 83, 66, 8,132,229,225,132,131, 35,158, 38, 77, 49,137, 51,168,186,172, 67, 42,129, 35,196,161, 42,206,185,204, 47, +247,222, 75,179, 83, 5,149, 68,222,181,123,112,198,186,241, 60,101,212, 2,140,136, 65, 48, 12,160, 73,140,120,149, 16, 32, 67, +236,255,230, 93,122, 35, 99,110, 69,222, 58,149,118,115, 49, 22, 75, 17,147, 68,132,171,107,184, 80,225,121, 89,224,200,132,189, +166,235, 16, 98, 64,180, 9,173, 16, 71, 99,140,104,219, 25,250,217, 28, 71, 71,135,136,211,136,126, 99, 3,179,174,195,225,193, + 17, 23,120,214,194,131, 56,181, 88,167,178, 25, 46, 76,216,156,111, 96,163,157,129, 12,112,124,188, 47,250, 27,229, 97, 80, 78, +217,203, 43, 3, 1,107,173, 9,180,229,249,243,236,157,229, 50, 44, 74,133,170, 52, 42,107, 40,175,134, 10, 64,163, 48, 53, 21, + 21,235,172,227,177,101,133,217,139,105, 2,169, 61,194, 36, 57, 96, 29,172,229, 11,161,237,122,244,141,195,188,117, 24,143, 6, + 28,238,237, 99, 76, 1,113,156, 16,134,128, 4,131,174,105,144, 92,196,241,222, 1, 86,171, 21,250,197, 28,243,205, 77,236,156, + 59,135,179,103, 78,227,224,240, 16,187, 87,175,224,226,249, 11, 32, 10,120,240,131,110,134,107, 29,238,188,227, 62,124,228,246, +143,224, 96,111, 15,141,107,176, 88,116, 72,198, 96,156, 70, 68, 57, 96, 91,239, 49,107, 26, 89, 1, 4,238, 94, 44,131, 92,172, + 66, 39, 68,200, 23, 21,121,155,119,137, 50,110,211, 0, 14,121,232,189,141,136,162,252,189,110,245, 85, 91, 93,170,157, 22, 37, + 22, 18, 6,233,244,242,232, 23,154,236, 68,185,138,172,199,130, 33, 38,172,134, 1,199, 75,131, 69,231, 17, 91, 18,129, 74,226, +241, 75, 34, 68,177,193, 89,147, 16,172, 65, 71, 6, 54, 8,253,200, 17,195,133, 20, 9, 12,159,133, 54,214, 70, 97, 10, 83,166, +198,233,136, 91,175,213, 36,249,239, 42,126,169,107,199, 28,121,105,121,173,224,136, 56,245,139, 40,239, 59,121,121, 41,145,146, + 38,192,105, 55,168, 86, 31, 16, 18, 2, 11, 68, 36,131,253,186, 80,149,220,193,184, 92,244, 16,153,235,220, 8,218,229, 40,156, + 35, 73,226, 18,100,164,156,147, 12,172, 90,122,138,243,128, 52, 85,195, 22,182, 63,145,203, 83, 10, 85,213, 83,214, 12,208,154, +247, 87, 63,107,205,232, 78, 38,229,228, 57, 3, 11,219,181,216,190,249, 22,140,203,125,236,222,123, 55, 59, 48,220, 4,138, 22, + 49,112,198, 64,138,132,213,114,196,249, 11, 7, 56, 88, 13,128, 66,137, 34, 59, 22, 92, 99,248, 18,237,121, 93,113,176, 12, 56, +234, 18,118,182,182,208,247, 14,169,245,232, 26,199,212,112, 81, 13,135,192,170, 97, 50, 22, 49,129,129, 52,114,176, 58,219,200, +197,170, 1, 75, 1, 49, 38, 28, 47, 71, 92,219, 63,194,193, 48, 97,156,128, 24, 13,199,240,138,165, 51, 38, 13,226,113, 24, 40, +160,133, 3,204, 74, 50, 1, 26,244,125,131,193, 19, 64, 19,226,232,248,251, 77, 19,108,219,160,155,245,176,178, 79, 79,149, 54, +131,133,190,162,190,231, 23, 7,152, 36, 94,248,146,101, 94,123,181, 53,142, 52, 74,120, 82, 74,148, 63, 75, 99, 10, 78,153, 85, +226,190,178,253,149,194,153,177,150,204, 27, 79, 96, 4,167,250,200,189,216,251, 56,197, 46,173, 3,111,228, 25, 99,151,135,149, + 92,115, 41,164,212,155,173, 10,118, 93,215,153, 40,234,230, 26, 43,140,235, 68,151,181,211,198, 90, 46, 78,140,115,112, 39, 44, +158, 26, 59,171, 23,119, 86,222, 87,180,189,162, 4, 45, 96, 41, 50,200, 66, 56, 99, 20,247,231,214,138, 84, 53,254, 68,153, 86, + 28, 28, 28, 99,185, 28, 49,140,145,159, 35,177,127,250,166, 40,254, 83, 18,157,149,118,233, 34, 14,230,143,179,138,176,173,244, + 4,214, 18, 26, 88, 73, 90, 51,160, 32,159,119, 36, 24, 47,220,133, 41,149, 60,116, 57, 35,180, 0,178,170,219,112, 14, 38, 19, +251, 52, 23, 29,136, 6,156, 70,169,104,158, 58, 65,215,112,115, 83,118,234, 86,222,215, 6, 93,215, 96, 28,150, 8,227,132,198, + 55, 48, 6, 8, 33, 96, 54,219, 16,133,251, 10,209, 69,244,109,143,148, 60,134, 21,255,190,195,105,133, 49, 69, 25,255,107,145, +162, 41,137, 9,253,124, 14,215,121,196, 97,196,242,248, 8,118, 54,227, 48,165, 24,197, 5,104, 10, 88, 75, 9,145,196,254,121, +202, 96, 47, 89,111, 36, 98,113,141, 83,255,162, 45,121,185, 20,181, 67,143,121, 84, 97, 72,121,207, 90,141,169, 66,213,100,248, + 68, 25,151, 49,173,142,227, 22, 61, 26,103,209, 53, 14,190,235,208,180, 30, 49, 14,216,223,221,199,209,238, 62, 26,195, 8, 82, + 29,195, 52, 93,131, 48,142, 88, 30, 28,131,136,176,216,222,194,246,206, 14, 78,223,124, 22, 77, 55,199,197,251, 47,226,218,213, + 75,128, 1, 22, 27,115,204,186, 25,104,140,248,192,251, 62,132,143,252,227, 71, 65, 83,194,172,155,243, 97,110, 13,134,200, 86, + 2,239, 29, 90,231,208,200,107, 95, 6, 30,109,122,107, 89,145, 41, 16, 6,229,235, 6, 57,248, 53,222,145, 49,166, 30,132,144, +125, 80, 81, 56,197,140,115, 11, 44, 94, 2, 95,170,206, 74,213,175,149, 86, 82, 21, 41, 7, 48,104,197,157,145,170,150, 81,130, + 70, 14,162,100, 52,155, 89,162, 56,101,234, 17, 83,192, 56, 18,150,171, 9,203,213,132,190, 3,186,104,217, 34,225, 27, 36,203, +100,171,224, 4,107, 75, 12,167,209,174,203, 70, 7,216, 38, 11, 94, 20,237,202, 26,155,130,180, 76,242,217, 59, 88,217, 17,154, +220,129, 20,126,118,161,196, 89,203,209,185, 16,157, 5,178,151, 87,118,229, 32,161, 98,149, 24, 88, 67,142,255, 94, 56,238,232, + 53,111, 93, 45, 76, 57,243,221,149,170, 53,241, 72,200, 10,158, 84,217,212, 41, 71,106, 38,102,161, 91,137, 81, 52, 5, 75, 91, +135,132,104,229,171,161,114, 57, 39,155,202,132, 4, 57, 77, 54, 75,158,120,175, 47,163, 42,170, 82,203, 77, 77,150, 35, 84,123, +255,162, 28,182, 38,229,239,153,131, 71,191,216,192,206,185, 91,144, 34,176,119,249, 2,166, 20, 17,194,138,117, 26,146,102,119, +188, 26,225,189,129,179, 1, 33, 26,244,179,185,188,143, 38,235, 37, 66, 8, 18,191, 10, 28,197,132,213,181, 37,230,189,197,206, +188,197, 98,238, 49,107, 27,206,172, 38, 32,194, 98, 32,136,216, 53,201,202,130,173,171, 70,232,110,218, 17,134,105,194,209,114, +194,229,253, 99, 28,175, 38, 41, 2,116,109, 36, 9,142,214,202,119,138,187,166,113, 69, 56, 58, 26, 97,168, 67,211, 36, 12, 41, +192, 39,139, 16,128,198, 0,209, 4,172,210, 4,223, 26,108, 46,182, 97,155, 62,123,129,141,168,221,145, 63,155,178,202, 49,245, +200, 84,197, 81,178, 30,137,146, 9, 96, 43,103,131, 2,143,136,176,118,249,234, 51,171, 98,200,140,101,133, 6,142, 36,142, 77, +150, 34,159,100, 92,171,174,149, 24, 13,140,147,212, 11, 21, 16,162,222,163, 35,163,146, 85, 68,167, 29,154, 78,230,108,165,120, + 87, 32,158, 18, 24,181, 24,177, 25,115, 87,209,146,117,133, 39,159, 59,213,129, 50, 66,128,227,201, 81,201,112, 47, 25, 30,194, +191, 52,117,212,106, 9,186, 73, 2, 17,226, 61,186, 43,170,252, 74,201,199,170,126,182,243,237, 31, 45,113,180,154, 48,133,136, +148, 12, 38, 73,113, 52,112,133,121, 33,227, 97, 47,159,147,177,224,172,122,163,239, 33,101,138, 35, 79,181, 60, 44, 17, 92,235, +225,218, 6,218, 84, 71,217,169,123,114, 8, 9, 24, 83, 18, 68,112,132,215, 62,155,248,188,244,157,103,250,155, 76, 32, 41, 17, + 98,144,207, 71, 44,186,170,227, 1, 1, 86,244, 79, 78, 66,132,234,148, 89, 43,164, 61, 99, 35, 79,112,201, 32, 36,192,119, 13, + 12, 18,166,105,196,246,169, 30, 97,100,103, 10, 70,160,109, 91, 16, 18, 14,151, 71,120,192,153, 83,216,223, 93,130,198, 81, 38, + 38, 13,175, 14, 76,192, 56, 78,192,148, 48,107,123, 88, 99,112, 60, 12, 24,227, 18,189,183,152,178,155, 65,116, 58, 85,236,177, +218, 5,131, 36, 84, 18, 82, 78, 5,245,106,255, 81,244,166, 81, 30,182,236,131, 53,231,151, 18, 85,128,123, 86,199, 91,181,182, +201, 14,216, 42,165, 71, 61,152,196, 98, 9,223,116,232,218, 22,125,235,209, 72,133,185,191,187,143,176, 58,134, 9, 1,222, 57, +241,194,178,125,161,237, 90,132, 48, 98, 26, 7, 56, 0,179,173, 45,108,223,116, 22, 59,103,207, 96, 58, 94,225,227, 31,251, 24, +142,175,238, 97,177, 53,199,124, 49, 71,219,182,184,114,254, 18,110,255,224, 71,112,199,221,159,132, 49, 9,109,223,243, 23, 78, +128, 25,108, 99,225,117,156, 38,246,112, 24, 11, 95,224,222, 54,153, 12,196,106,106,155,119,177, 69, 16, 37, 30,205,138,198, 68, +114, 89, 38, 39,162, 46,107, 65, 33,101, 63,106,210,253,123, 5,163,208, 81, 32,199,166, 86, 95,238,236,139,229, 47, 72,177, 74, + 21,142,180,119, 18,254,146,216,198, 54,142, 30,199,195,132,249,216, 96, 24, 35,250, 38,162, 77, 65,190,162,145,131, 10, 92, 98, +223,120,138, 72, 82,113,166, 24, 17,228,226,231,145,165,238,124, 69,136,129, 40,227,115,147,237, 61, 32,151, 59, 35, 61,140, 20, +150,163,226, 49,245,147, 23, 40,135,128,103, 68,225,106,179, 15, 94,133, 91, 9,200,239, 21,239,100,141,138, 48,141,140, 15,245, +168,165, 40,194, 45, 61,200, 76,201,164, 54, 69, 97, 78, 18,194, 64,182, 16,172, 76, 69,127, 43,164,188, 18, 20, 82,179,219,243, + 1, 76, 54,195, 71,140,232, 8,106, 61,128,177, 21,239, 19,235, 29, 21, 42,218, 87,189,123, 49, 42, 28, 37,205,170,119,112, 13, + 48,223, 62, 35,195, 11,135,195,131,171,152, 86, 3, 86, 3,143,234,147, 97, 52,240,102,231, 48,235, 55,208,180,155,104,187, 5, + 91, 35,157,131,115, 45, 0, 96, 53, 14, 8, 81,196,145,196, 97, 47,199,203, 37,166,229, 10,171,209, 97,123, 17, 48,159,245,240, +158,177,180,214, 53,210,233,104,193,198,162, 36,235,171,192,136, 16,176, 26, 39,236, 31,174,176, 26,162,136,202,128,198,201,103, +100, 93,142,167, 53, 70, 70,253,134,208,185, 14,109,171, 95,163,132, 32,221, 90,140, 0, 57,135,136, 8,235, 91, 44, 54,182,209, +118, 51,222, 89, 58,151, 11, 88, 45, 26,217,194, 83,171,237, 21,110, 84, 33,132,173, 92,238,201, 22, 52, 48,225, 4,135,128,170, +168,209, 19,108,120, 67,249, 59,165,255,236, 68,245, 29, 41,101,208,141,129,226, 76,139, 56, 51, 67, 12,163,252, 55, 50,247,161, + 74,220, 90,111,229,109, 70,200,198, 74,232,166, 69, 76,149,232,166, 58, 21, 20,239, 58, 23,217,148, 81,182, 6,128, 55, 76,169, + 36,136, 29, 84,166,168, 58,102,215,227, 43,145,160, 78,243,235,144,221,120, 6,225,200,101,166,187,249, 74,116,135, 74,168,104, + 12,177,237, 76, 86, 49,199,203, 17,171,145, 47,249, 36, 23,164,243,182,206,207, 19,117, 54, 11,177,189,103,126, 61, 37,230,145, +152,106, 85, 89, 91, 69,141,177,240, 93, 3,231, 29,194, 20, 69,164,168, 48, 24,177,182, 81,201, 39,201,233,116, 0,140,179,240, +173,103, 49, 90,133,135,166,192,193,228,121, 90, 42,232,222,210,132,150,115, 65,133,178,200,124, 13,230,115,120,223, 32,132, 9, +134,128,166,233, 56, 88, 7, 60,189, 25,194, 74, 68,113, 22,125,219, 97, 26, 71,118, 89, 24,139,105, 28, 1,138, 48,214,243,212, +201, 16, 8,188, 10,110, 26,139, 89,219, 1, 22, 88,142,199, 24, 35, 79, 46, 35,231, 45, 50,109, 20,197,133, 81, 59,142, 88,171, + 21, 69,156,206, 25, 8,222,194,150, 17,170,225, 15, 94, 31,108,239, 88, 80,159, 18,143,249,214, 35, 48,217, 54,101,136,173, 46, + 73,204,249,220,245, 49, 74, 50, 2,232, 26,143,190,235, 96,189, 19, 59,206,136,105,201,138,192, 6,252,119, 36,112,146,143,107, +152, 32, 53,173, 6, 76, 99,128,183, 14, 27,103,206,224,204,185,179,240,237, 12, 87, 46, 92,194,149, 11, 23,177,187,183,139, 83, + 59,167,177,181,181,141,166,111,113,255,253,247,225,175,255,226, 61,216,189,182,135,182,105, 56, 14, 16,124,176, 33, 26, 9, 89, +144, 17,170,192, 44,162,124,217,188,133,140,154, 37, 75,222, 11,250,150,104, 13, 1,106,114,164, 33,242,104, 94, 5,112, 44, 34, + 72, 26, 80,143, 73,137, 78, 74, 16,203,116, 43,100, 72, 79, 74,108,111, 49,182,152,221, 72,186, 91, 85,207, 27, 61,184,156, 43, + 32, 26, 42,158,219, 24, 18,134, 49, 96,185, 10, 24, 70,194, 48, 0,171,102, 66,219,138,186,146, 28, 76, 76, 8,102,226,208, 10, +195, 32, 21, 36, 22,144,133, 20,120,167,149,211,127, 44, 43,134,181, 98,182, 14,107,161,146, 73,166, 24, 70, 61,174,133, 80,197, + 35, 70, 5, 95,184,181, 92,115,126,248,180,229,181, 82,108,241, 62,149, 17,141, 38,131, 70,138, 93,195, 22, 50,152, 30, 56, 10, +149, 17,209,161,149,192, 11, 85, 11,243,223,195, 2, 43, 99, 29,103, 24,136,144, 40,143, 59,173, 34,111, 3, 11,192, 76, 65,156, +154, 26,106, 79, 74,217,163, 92, 20,160, 14, 73,209, 93,170,106,233,112, 34,110,213, 92,255,207, 74, 32, 75, 84,129, 76,164, 59, +109,186, 25, 22, 91,167,121,250,208, 56, 76,199, 71,232,142, 7,172,198, 37, 26,111,224, 45,176,189, 88, 0,222,193,251, 5, 34, + 57, 46, 8, 27,207, 46, 1,199, 93,219, 48, 38, 76, 49, 98, 12, 35,251,217, 23,115, 92,187,188,139,203,215, 14, 17, 67, 68, 72, + 6,179, 89, 66,107,124,230, 46,112,168,138,131, 51, 9,222, 21, 95,114,140,220,193, 31, 45,249,207,242,214,160,109, 92,246,241, + 26,227,115,250,159,242,181,249,124,136, 72,113,196, 6, 89, 78,220,114, 22,243,206,163,119,178,218, 34,222, 71,110,109,159,194, +108,182,128,171,213,249,121,148,232, 10, 84, 40,179,198,203,232,252, 36, 43, 0, 84,118,162,202, 21,135,169, 48,194,168,124,189, + 39, 86, 51, 44,138, 43,221,189, 50,174, 37,170, 72, 36, 94, 82,140, 39, 70,253, 82, 21,196, 98,192,246, 41,100,149,121,186, 46, + 14, 86,199,226,121,194,107, 93,214, 75, 32,155,138,113,131,181,145, 43, 5,171, 60,103,150, 89,181,249,123,226,173, 69,168,214, + 14, 36,159, 41, 25, 35, 43,145, 2,106, 98,119, 7,119,210, 86, 68, 94,168,138, 92,214,191,200, 52, 49, 35,191,107, 78, 1,159, + 21,136, 9,187, 7, 75, 28, 30, 13,152, 34, 33, 38,195,221, 35,108,201,140, 16, 69, 65,164,144,119,211,186,158,211,233,157, 19, +101,191,194,186,116,106,226,156,201, 1, 63,117,100,112,227, 25, 69, 29,194, 40, 35,104,158,214, 41, 75,130, 18, 91, 25,217,202, +102,243,234, 50,198,200, 5,154, 41,161,186,217,106,105,145,137,126, 28, 25,142,220,196,218, 12, 75,115,240,146,115, 62,197, 1, + 83, 92,161,107,123, 76, 41,194,187, 78, 16,199, 35,200, 24,116,190,197,172,159,227,224, 96, 95,187, 10, 4, 17,247,150,188, 20, +153, 44, 38,194,188,155,161,235,122,164, 16,113,188, 60,226,115, 86,197,105, 82,189, 81, 92, 95,113, 22,109, 69, 42, 96, 47, 41, + 46,125,137,155,212,203,197,230, 31,198, 75, 38,179,165,117, 49, 74, 78, 20, 74,124, 33,235,240,145, 85,225,146,172, 4, 7,103, +120,215, 57, 12, 3,134, 21,241, 65, 58, 69, 56, 34,180,134, 32, 32, 75,102,206,183, 13,136, 2,166, 97,194, 52, 69,204,186, 57, +182,206,236, 96,123,103, 27,211, 52,226,158,187, 62,137,227,107,251,176,214, 97,123,103, 11, 59,167, 78, 1,148,112,247, 93,119, +226,142,143,126, 12,203,213, 49,186, 89,143, 73,230,130, 36,113,160, 86,138, 19,239, 27, 80, 12, 88, 77, 35, 98, 0,154,182,225, +116, 51, 65, 6, 70, 34, 6,127,104,151,169,165,112,133,202, 84, 75,151, 85,196, 98, 14, 67, 48, 37, 39,217,122,192,132, 28,166, +146, 91, 87, 61,170, 44,191, 63, 33,166, 28, 38,161, 23,122,231,188,168,104, 99,181, 3, 42,135, 81,118,192, 26, 17,117, 17,177, +189,109,156,112,176, 28,208, 53, 64,211, 38,116,193,161,137, 13,156, 75,162,184,228, 47,141,181, 46,175, 79,172,193,137, 75, 7, +217,186,167,171,134,242, 8,153, 76, 87,210,104, 67, 77, 8,178,213,196,194,164,147,135,174,228,255,146, 68,100,122,207, 54, 37, +105, 15,162, 8,160,152, 15,111,171, 17,163,149,131, 94,173, 43, 65,214,102,182,216,146, 44, 95, 30,121,207,132, 36,162, 32, 21, +115,202,170,160, 26, 93, 26, 83,108, 69,197,250,131, 53, 81, 86, 9, 2,225,159,201,137, 80,178,238,142,214,112,153,180,246, 86, + 93,151,223, 93, 3,105,178, 45, 80,167, 48,138,184,149,137, 68,219,207,144,232, 12, 96, 45,166,238, 0,227,108,137,217,176, 98, +143,250, 56, 65,222, 74, 4,242, 8,147,252, 64,142,139, 80,235, 45, 18, 12, 66,116, 24, 67,192, 52,178,120,105, 12, 1,243,102, +142,187,238,254, 20, 46, 31, 68, 88,187, 2,165, 9,169, 93,192,136,177,133,125,208,134, 59,126,135, 60,110, 54, 0,142, 87, 17, +203, 8,204,103,179, 12,249,113,226,255, 86,151, 67, 12,200,147, 26,166,121,121, 56, 52, 48,148,208,120, 66,215, 26, 52,222, 51, +216,200, 17, 90,223, 96, 62,159,163,155, 47, 96,125,203,123, 79,203, 33, 52,137, 18, 11, 30, 85, 27, 81, 32,215,213,103, 38, 83, + 35, 21, 38,194,201, 51, 36,164, 58,157,168,201, 7,150, 81,181, 41,173,227,133,233, 68,202,222,154, 40, 47,137,248,146,139, 28, +165, 42,106,119, 84,231, 9, 32,243, 57,202, 69,160, 29,247,141,254, 87,139,154,204, 73,133,191,177,107, 65, 66, 56, 97,197,100, +218,102, 2,156, 69,161,228,178, 11,135, 4,218,226,164, 3,134, 78, 52,136, 50, 32, 42,239,244,137, 49,163,208, 21,159,130,237, +173, 94,100, 54,251,252,181, 33, 65, 34, 70, 4, 38,224, 40, 4, 92, 61, 88,226, 96,152, 16, 67, 66, 10, 69, 32,151, 50, 19, 67, + 38,165,137,224, 69, 95,165,235,184, 72, 58,234, 70, 94, 75, 82,118,139, 56, 52, 45,107,108,198, 20, 81, 69,239, 0,134, 67,142, +248, 92,136,185, 16, 81, 34,157,181, 6,109,219,160,109,219, 28, 52,164, 1, 48,201, 10, 90, 85,246,238, 36, 69, 21, 23,169,242, +126, 57,157,216, 84,118, 93,203,228,203,166,109,185, 57, 29, 3,218,174, 65,223,181, 88, 13, 75,158,124, 38, 72,192,146, 5, 57, +139,166,235,112,124,229, 18, 23,219,198, 96,152, 6,192,122, 68, 50,121, 58, 75,196,154,148,217, 98, 11,214, 54,152,166,137, 61, +238,153,199,161,128, 47,130,177, 9, 38,150,172, 21,202,250,164,178,190,229, 68, 79, 25,191, 43, 33,208,106,149, 38,245,160, 46, +224,131, 88, 53,140,117,108,113, 54,124,128, 68, 50,194,128,150,184, 59,171, 32,124, 22,133, 36, 99, 49,142, 17,222, 17,171,122, + 41,193, 18, 11,180,180,219,241,198,195,120,126,200,195, 56,192, 24,131,157, 51,167,177,181,179, 13,215, 55,184,122,109, 23,187, + 23, 46, 97, 53, 44, 49,235,123,244,109, 7, 55,159,225,252,249,251,113,225,194, 37,158, 22, 88, 15,231, 91, 12, 33,178,182, 88, +244, 75, 22,156,170,227,196, 63, 63, 38,131, 64,128,153, 18,102,189, 69,219, 88,196,105, 66, 26,121, 47, 97, 29,171,218,163, 22, + 58, 21,180,209,100,207,166,201, 7,121,253,229,214, 75, 93,169, 94,217,106, 66, 92,189, 38,177,140, 88, 17, 31,165, 58,200, 27, +235, 22, 46,237,230,108,100,228,166,203,195, 19,190, 16, 72,186,229, 0,245,249, 79, 88, 46, 71, 44,123,143,126,178,152, 36,138, + 48, 37,246,104, 90,237, 70, 60,214,162, 41, 33,236,118, 62,200, 53,200, 33, 32, 4, 14,246, 17, 20,247, 9,134,180, 92,118,198, +101, 1, 71,238, 4,170,116, 44,165, 40,235,232,158, 84,113,234,184,251,138,201,100,118,174,194, 39, 72,245, 11,142,187,236, 84, +185,203, 57,212,194,115,202, 95,228,145,150, 45,203, 80, 22,175, 81, 61,226, 44,220,128, 60,146,180, 42,128, 51, 18, 22, 66, 37, +112, 4,235,246, 27, 77,253,226, 11, 89,187, 72,101,185, 99,173, 82, 32,221,153, 86, 66,171,181, 3, 61,199,188, 98, 13,204, 3, + 13, 38, 33,137,122,133,129,235, 90,204,204, 14, 26,223,192,119, 75, 52,227,132, 56, 13, 8,211,200,160, 13, 74, 8,196, 5,117, + 54, 74, 89,207,130, 55,147, 48, 69,135, 54, 38, 16, 45, 48,173, 38,172,134, 99, 28, 25,139,115,231,110,194,133,123,239,197,209, +146, 47, 6,227, 38,180,240,108,197,212, 46,219,121, 24,203,233, 87, 20, 34,198, 41, 97, 8, 3, 54,102, 51,244,222,228,137,146, +118,213, 10,194, 96, 58, 23,229,168, 91,190,192,185,248,109, 27, 66,227, 93,214, 79,120,239,209,182, 61,218,174,131,245, 94,194, + 90, 56, 42,147, 47,198, 98, 73,203,137, 94,116,242, 25,100,237, 73,141,117,213,202,152,108, 66, 82,224,138, 73, 21,105,176, 22, +153,149, 46, 39, 95,200, 81, 28, 24,206,100,212, 42, 40, 34,148, 16,175,220,201,145, 5, 40,136, 22, 65, 20,236,170, 50, 47, 23, +218,141,226, 95,233,211, 22, 23,186, 18, 42,187,255, 84,136,138,245,207, 47, 97, 48,174,202, 86, 72,137,178,159, 63, 83,213,100, +156,223, 52,130, 24, 21,100, 52, 18,115, 53,140, 68, 42,107, 2,162, 86,191,188, 11,183,217, 30,198, 23,127,153, 96, 81,226,221, +238,193,193, 18,123,135, 43,196, 41, 22,248,141,124, 79, 67,140,197,215, 94,253,172,108, 91,167, 42, 55, 93,147,202,162, 52,134, +252,253,116,150,155,174, 36, 36, 74, 21,252, 25, 99, 97,200,179, 8,155,204, 26, 75,215,129, 69,183,198, 26, 52, 77, 3,231, 61, +156,177,204,127,143, 92,200, 7, 16,154,234, 51,209,230, 41,115, 38, 84, 4, 44,158,125, 99, 11, 4,201, 24,160,109,249,204, 72, + 49,113,232, 80,235, 49, 12,128,107, 90,196, 24, 96,173,135,183, 22,125,215,195, 16, 97,247,218, 53,156, 62,179,131, 72, 9,203, +105, 64,180,158,181,151,188, 5,144,181,100,139,110,214,131, 76,194,209, 48, 96, 57, 12,114, 96, 72, 49, 17,153,183, 96, 73,242, + 38,168, 48,235, 11, 81, 78, 4,206,196, 83, 79,159, 52, 40,195,240, 94, 91, 31, 20,114,146,111,173, 21,136, 53,153,200,164,113, +155, 38, 59,133,116,124,239,132, 46, 21, 37,237,200, 32,197, 9, 99, 96,175, 99,103,128, 86, 44, 90, 78,148,143, 73,246,118, 67, + 76,216,104, 91, 44, 54, 55, 49,219,152, 99, 53, 5, 92,189,247, 60,174, 93,190,134, 89,239,177,177,177,129,166,109,209,247, 61, + 62,121,231, 39,241,183,127,253,126,236,156, 58,141,135, 60,244,129, 56, 60, 56, 70, 8,138, 7, 20,112,137,228,127,119,109, 3, + 66,196, 16, 98, 69,111,146, 92,107,239,100,180, 19,121, 4, 41,187,187,140,189, 36, 90,243, 2,194,154, 18,156,160,202, 53,193, + 16,169,221,130,139, 12,147,221, 81,249,122, 51, 60,118,169,191,185,245,157,110,170,253,187, 66, 91, 34,129,125,253,201,200, 23, + 81,146,152, 52,103, 90,124,119,211,100, 48,120,197,199, 58,172, 70,194,108, 74,104,124,204,234, 82,181,208, 24,107, 96,146, 5, +231,197,112, 87,227,178,101, 49,101,114, 86,182, 85,203,101,100,144, 78,248, 93,105,237, 64,170,199,141, 5, 24,163, 78, 10, 86, +155, 91,107,249, 98,183,137,151, 29,198,102,238, 55,170, 49, 63, 81,226,240, 18,161,112,105,234, 95,170, 48,176,170,204,206,163, +242,106,108,175,234,224,148,105,112,213,193,162,201, 75,106, 15,210,138, 54,179,222,245, 18, 79,185, 99,183, 80, 60,173, 17,177, +156, 88, 28,235,213, 76,213, 83,209,137, 80,143,252,158,213,225,214, 84,240,147, 36,187,104,227, 28,188, 92, 10,206, 90,192,123, + 88, 63, 33,134, 14, 29, 69,132, 48,241,229, 30, 57, 25, 79,114, 3, 25, 99, 26, 35, 34, 18, 26,242, 34,224, 35,196,174,197,209, +202,176,126,147,182,128, 48,224,202,149, 11,104,162,195, 20, 1,235,213, 78,229, 50,104, 68,121,225,220, 53, 79,152,183,156,226, +231, 27, 7,195, 71, 98,182,182,234,104, 88, 26, 72, 22, 68, 81,121,166,172, 77, 60,174,183, 34, 99,114, 14, 77,227,225,189, 99, + 30,183,231, 32, 23, 99,125,209, 88, 24,189, 20,227,154,162, 28, 39,187,107,176, 13,147, 55, 61, 38, 51,248, 73,246,162,100, 34, + 39, 68,154, 42, 87, 92,166, 11,154, 52, 89,127, 78,138, 64,205, 94,238,148,178, 56, 18,186,207, 53, 53, 0,169, 96,106,107,103, + 6,213, 80,170,234,251,162, 23, 89,173,209, 89, 91,237,213, 10,126,249,119,206,217, 60,118,206, 23, 54,164, 0, 47,213, 37, 63, +239,154,167,141, 66,218,131,172,255, 26,231, 17, 17, 51,156,165,252,253, 78,124,207,137,241,197,134,249, 0, 10,155, 97,215,149, +133, 51,156, 27, 49, 77, 1, 49, 78,152, 82,192,181,253, 99, 28, 31,143,153, 2, 25,136, 35,133,141, 49,226, 4, 33,129, 72,197, + 12,155,202, 44,132,200,130, 70, 21,122,102,103,157, 62, 75,206,112, 70,185,172,237, 82, 10,249, 92,129, 20,115, 44,168,229,206, +216, 90,159,133,185,214, 57,180, 93, 43,207,159,172, 41, 53,116, 10, 6,201, 48,122, 22, 18, 27,107,215,178, 46, 82, 30,233, 67, + 52,102, 10,235, 73,150,209,182, 6, 22, 97, 74,249, 62,224,152,227,136,105, 26,209, 52, 30,100, 13,186,174,199, 56, 14, 88, 13, + 43,248,166,193, 52,141,152,166, 99,105,244,202,106,146, 98, 68,211,122,180,109,135,144, 70, 28, 28,236, 97, 26, 3,136, 36,195, + 62,106,242, 26, 23,206, 49,165,146,121,143, 98,151, 84,176,145, 98,242,108, 34, 3,130,102,244,150,195, 89,169,103, 9,194, 92, + 54, 82, 81,231,252,112, 66,160, 88,168,113,181,143, 78,224,255,136, 17,105,154, 96,210, 4,155, 18,156, 84, 19,236, 51,245,136, +137, 48,133, 9, 48,192,246,230, 6, 54,111,186, 9,179,197, 22, 14,119, 15,112,255,157,119,225,112,119, 23,155,155,115,116,125, + 15,231, 57,240,254,206,143,223,129,219,223,255, 33,140,203, 17, 77, 43, 7,141,177,128,231, 55,217, 89,203, 42,251,206, 51,126, + 15,108,255,202, 49,145, 82,133, 38,217, 25,187,166, 65, 52, 22, 65,152,186, 78, 56,200, 26,221, 1,241, 59,159,180,109,161,242, + 52,234,142, 56,201,147,169,187,179, 84, 9,183, 76, 85, 73, 67, 82,215,184, 35, 55, 25, 80, 65, 6, 57,182, 50, 95, 92, 68, 12, +216, 32, 69,114, 42, 83,191, 80,255,194, 20, 49, 77, 9,135,171, 9,203, 49, 97, 24, 8,227,196, 43,128,164, 92,237, 68,153, 30, +150,244,192,212, 3, 44,234,195, 28,203,193, 67, 60,186, 39,129,104,212,246, 49, 40,254, 53,209,154, 7, 85, 71,142, 84,169,133, +197, 21,186,102,233,211, 28, 1,222,119,167, 58, 20,139,199,172, 73, 15,132,148, 87, 19, 84, 89,253,116,103,175,240, 12,181,201, +192,186,178,215,173,112,174, 73,103, 5, 70,199,123,146, 18, 39, 9, 76,154,190,166,239, 49,201,248,145, 89,230, 78,240,139, 69, +177,206,172,104, 91,166, 2,186,185, 61, 49,118,215, 3,195,185,154,245, 80,188,175,200, 5,143,122,105, 89,188,198,228, 58,143, +182,155,161,155,205,209,207, 55,209,204,230,232,230,155,152,109,238, 96,182,177, 35,255,126,142,118,214,161,233, 58,244,179, 5, +230,243, 5, 54, 55,230,216,152,205,176,152,117,152, 47,122,108,110,109,227,212,230, 54,182, 54, 22, 56,189,179,192,198,172,131, + 77,252,156,141, 19, 11,209, 52,235,193, 16, 79,146,172, 20,113,206, 89, 52, 77,131, 89,239,208,119, 45,218,206,162,109, 29,218, +174,129,111, 89,244,212,245,236,135,159,245, 45, 7, 82,204,103,232,250, 22,125,223, 97, 62,155,161,239,123, 52,109, 3,223,113, + 71,210,205, 59,248,174,129,245,250,115,154, 12, 12,209,105,148,138,109,179, 69,201,156,188, 0,141, 8,223, 28, 79, 44,114,215, + 38, 32, 25,138,194,157,136,153, 47, 64,213,138,178,128,145,202, 40,188,190,224,163,176, 20,212, 27,109,170,144, 24, 67,144, 76, + 3,246,184,123,239,139, 0,143, 40, 7,217,156,164,190,157,180,146,233,101,189,174,198, 79, 21,207, 30,235,223,165,148, 68,187, + 82,172,229,250,140,221,242,196, 47,194,203,127,242,157,152,109,158, 41,113,162,146, 97, 96,173,229,132, 51,153,132,212,192, 40, +181,152, 89,231, 36,182,215,225,150,199,127, 1, 94,241,154,183, 96,243,212, 57,185,208, 82, 25, 5, 35, 50,231,253, 96,133,203, +151,143, 48,142, 73, 84,233, 42, 68, 20, 33,163,236,254,163,118,146, 50,202, 79, 84, 86, 18,207,126,254,151,225,221,159,220,195, + 3, 31,242, 48,201,157,144, 0, 38, 99,209,116, 13,172,113,120,202, 51,254, 9,222,249,193,139,184,249,129,183,100,107,107,142, +144, 37,147,215,102,214,123, 56,225, 69,184, 70,217, 42,210, 68,200,123, 23, 19,227, 89, 73, 70,212,202, 34,120,198,243,110,197, +159,221,126, 1, 55, 61,224, 65,229,211, 73,218,200, 80,158,124, 88,235,114,247, 63,172, 86,240,190, 99,253,128, 32,134,185, 49, +228,239,185,111,231, 88, 30, 45,177, 60, 58, 70,215,244, 24,199, 9,227, 24,165,160, 68,198,161, 19, 17,230,237, 28,141,179, 24, +166,132,227,163, 35,196, 48,102,194,103,142, 6, 78,200,171, 6, 93,147, 27, 13, 43, 82,205,109, 34, 68,240, 26,217, 43,255,216, + 73, 6,175, 38,252,100,197,165, 42,157,115,164,157, 17,168, 74,204, 17,117, 89, 3,101, 20,187, 72,160, 24, 24, 27,203,121,133, + 28,234, 66,146, 56,156,149,231, 19, 22,253, 2,155, 27, 11,204, 23, 61,142, 87, 9, 23,174, 94,196,114,119, 23, 77,227,208,205, + 56,171, 54,141,156, 37,125,255, 93,119,227,158, 59,239,133,247, 45,156, 29, 48, 13, 44,244,130,177, 8,145,233, 67, 86, 84,176, +198,178, 16,108,138, 9,147,236, 70, 57, 86,134, 65, 51,164,149,176,236, 87,198,113, 64, 67,173,168,188, 53,126,209,172, 95,228, +218, 69, 57,131, 36,241,166, 5, 73, 41,153,211, 94,118, 71,182, 8, 10,185,186, 55,165, 83,205,105,106, 37,124,100,237,128, 65, + 13, 92, 83, 87, 1,149, 73, 65,162, 12, 91, 32, 97, 25,135, 24,177, 26,217,122, 52,235, 60, 86, 67,192,172, 99, 11, 31,144, 4, + 59,235,228,162, 54,249, 64,113,100, 17,193,233, 88, 41,138,111, 84, 80,152,144, 11,156,191, 72,140, 4,182,220, 18,240,115,226, +100,210,161, 90, 11,208, 90,199, 97,189,201,144, 26, 72, 6, 55, 89, 53,118, 85,113,147,130,234,204,156,118,102, 56,202,138, 67, +187, 40,147, 45, 56, 38, 91,129,170, 4, 59, 61, 21,180, 40, 81,235,160, 85,123, 15, 43,188, 73,187, 30, 41, 70, 75,103,197, 99, + 70,163, 97, 33,169,202,156, 54, 39, 26, 35, 83,237, 25, 11, 4, 62,147, 19,113,131,241,106,150,117,101,233,116, 1,173,103,170, +160,140,252,146,115, 25,191,236, 97, 17,237,196, 81,178, 94,118,190, 45,193, 43, 11, 64,167, 98,220,142,103, 31, 43,224, 49, 77, + 9,206, 71,120, 34, 80, 24, 96,199, 3, 12, 59,115, 44,151,252,221, 69,138, 8,193,192,194, 33, 26, 6,122, 88, 50,112,158,215, + 1,206, 26,116,141,231,164, 40, 57, 40, 21,104, 74,146,132,101, 29, 95, 26, 54,235, 77,100,234, 1, 11,239,197, 1, 32,128, 21, +239, 93,190, 72,116,191, 75,138, 26,210, 78,212,161, 8, 8, 85,185, 46,228,198,114, 57, 82,158,236,212, 59,220,108, 15,173,152, +255, 36,152,226,242,190,208,154,196,142,104, 93, 81,140, 12,120, 74,186,181,169,128, 49,213,127,147, 57,220,169,100,153,107,103, +242,137,148, 0, 0, 32, 0, 73, 68, 65, 84, 99, 95,237,100,215,119,247, 39, 47,250,148,237,152, 57, 21, 46,119,237,230,198,207, +144,116,136, 37, 91,160,232, 95, 50,133, 50,255,249,118, 77,117,159,214, 80,198,242, 90,173,201,194, 57,103, 44,238,251,248,251, +240, 91,255,233,235, 16,195, 42, 11,131,147,225, 66, 39, 77, 1, 33, 36, 92,217, 59,198,209,113,177, 54,166,170,200,200, 58, 23, +136, 5,208,251, 28,116, 3, 50, 55,212, 24,196, 84,132, 41,206, 59, 52,157,207,227,101,189,180,244,158, 90, 91,169,213, 19,143, +196, 97, 77, 77,227,242, 36,200, 91,143, 68, 3,130,120,193, 65, 37, 71,160, 96,113, 79,234, 95, 74, 62,134, 78, 28,173,179, 48, +212, 84, 77, 2,208,207,102,146, 5,194,119,153,177, 14, 9,132,206, 55,152, 45, 22,184,112,239, 93, 24,134, 21,218,174,195,209, +238, 46,199, 13, 19,147, 86,181, 16, 32, 34,244, 93, 7, 24, 96, 88, 45, 49,172,134,172,195,178,165, 83,200,175,136, 27, 50, 89, + 7,104, 94, 65, 69, 52, 52,242,140,121,103,202,248,216,217,226, 51,207,249,213,169, 84, 90, 70,114,190, 83,148, 56, 58, 91,141, + 71,101,252,166, 29,161, 21,161, 74, 99, 45, 83,214, 98,128,113, 13,227,238, 66,132,115, 30, 91,243, 29,108, 44,182,209,181, 6, +123, 7, 7,184,186,127, 8, 23, 34,102,139, 57,188,183,160, 52, 97,117,116,132,227,107,251, 56, 56, 56,196,225,225,129, 16,155, + 8, 9, 78,160, 40, 44,126,176, 0,230,242, 6,165,105, 66, 80,228,160,120,143,141,177,188,159,168,148,168, 36, 49,152,222, 53, + 88,197, 37,131, 52,116,132,168,245,144, 49, 57,159, 88,173, 72,166, 58,225,169,108, 21,229, 18,215,177, 76,117, 57, 74, 10, 15, +235, 20,132, 9, 47, 99, 61,189, 80, 26, 33, 12, 69, 29,253, 37,131,228, 36, 52, 65,170, 54, 15, 39, 66, 41,222,211, 59,235,100, +135,200,171,133, 41, 90, 28, 47, 7, 44,123,135, 85,103,177, 90,141,232,186, 6, 68,142, 59,238, 20, 69,208,193,200, 86,107,155, +172, 67,202,135, 85,172,198,236,137,117, 20,234, 9, 87, 76,174, 30,184, 89,185, 75, 41, 95,120,214,213,151, 56, 33, 80, 16,120, + 76, 9,180,112,198,113, 39,172, 23, 99,246, 31, 37, 17, 95,149,110, 54, 73,213,138,220,101,112,156, 41,163, 75,221, 26,199,218, +136,234, 61, 79, 26,170, 60,106,131,226,233,181,162,194,215,253,186,218,204, 52,177,208, 25,147, 11, 14, 61,188,109, 22,168, 32, + 39, 90,229, 36, 45,171, 95, 40,147,149,169, 25, 57,155, 61,203, 22,165,161, 43, 54, 57,205,211, 54, 40,118, 37,231, 12,144, 68, + 12,104, 36, 37, 46,185,108,131, 12, 20,129,136,181,112, 32, 22, 52,197, 44,190, 33,141,249, 69,130,153,181,112,216, 68, 75, 3, + 82, 88,225, 98,188,130,182,233,249, 2, 37, 73, 52,163, 0,136,184,149,201,131, 17,222,179,230,133,140,147,105,131, 23,102, 3, +114,118,129, 17, 13,137, 5,149, 36, 50, 21,211,169,219,193, 16,188,147,247,201,248,204,231,230, 28,120, 87, 15, 56,114,119,174, +221, 41,165, 50, 70, 45,157,186,196, 54, 27,170, 38, 78, 84,229,174,155,181,240, 33, 46, 0,101,247, 77,246,134,194,181,181,128, + 12, 32, 79,124, 52,227, 29, 89, 11, 47, 19, 40,133,135,104,150,131,190,102, 21,110, 10,204,106, 93, 47, 83,139,228,176,182,114, + 66, 85,168,102,240,207, 9,173, 10,107,117,101,175,175,225, 40,214,172,233, 78,242,238,191,210,206,144,196, 0,155, 28, 48, 99, +215,247,252,214,194,217,134, 45, 87, 32,196,241, 88,206, 76,205, 25,103, 85, 57, 69, 96, 90, 77,184,186,127,132, 41,138,195, 73, + 10, 37,103, 93,181,118,224, 75,147,159, 15, 3, 4,102, 79,164,152, 4,224, 99, 50,252,169,176, 8, 88,228,234, 27, 39, 29,109, + 40, 32,167, 53, 44,110,204, 52, 82,230, 2,248,188,194,180,214,228,201,137,245, 70,124,221,156, 61, 31,213,110,103, 25,178,198, + 77, 13,174, 67,174,150,243,132,139,119, 43, 46, 8,230,213, 91,129,232, 24,116,125, 7,219, 56, 68,112, 2,168,247, 27,236, 98, +113, 13,188,181,216,219,219,195,108, 54,131,241, 14,227,180,132,179, 30,132, 9,145,162,132,102,241,228,216,251, 6, 19, 37,172, +198, 21,166,176,130,247, 13,219,122,173, 4,169, 41,201, 21, 66,101,173,133,113, 40,208, 36,168,243,129,209,203, 81,186,130,148, +149,162,206,241,174,139, 12, 43,247,140, 99,225, 84,222,171,231,209,141, 65,253,217,164,108,185,176, 57, 7, 24,113,130,137,204, + 59, 78, 18, 75,216,245, 51,108,109,109, 99,107,107, 19, 41, 13,184,122,245, 26,174, 93, 57, 68, 99, 12, 22,139,158, 43,181, 56, +225,112,111, 15, 87, 46, 92,192,229,203,151,113,120,124,140,213, 24,177, 90, 13, 8, 97,130,243, 6,171, 24,145, 92, 66,211, 88, +236, 44, 58, 44,250, 14,222,114, 38,123, 20,240,132,107, 26,182,202, 89,147,195,229, 85,192, 21, 73, 99,240,184,107, 8,211,196, + 34, 63, 25, 57,231,139,142,207,216,124,177, 27, 81,197,174,187, 80,120,244,167, 41, 73,234,185, 53,176, 50,246, 35,120,171, 30, +208,245, 7,213, 84,150, 40,146,145,124, 50,134,213,228,218, 73,200,235, 82,177,202, 26,142, 84,242,232,167, 64, 24,166,132,229, + 42,224,120, 57, 97, 53,196, 18,178, 16, 19, 40,114,142, 54,165, 36,208,145, 88, 70,220,249,245, 72,200, 70,110, 40,249, 75,104, +171, 32, 20,189, 48,117, 60,168,227,200,226, 3, 46, 85, 48, 37, 65,222, 18,239,237,178, 80,144, 21, 81, 25,185,169, 66, 30, 22, +168, 69,190, 64,165,160,178,178, 27,212,247,184, 14,237,208,139,121,173,219,170,114,211, 57,109,207, 92, 71,229,178, 98,103, 43, +187,214,146,120,196, 73, 38,108,125, 52,107,123,123,183,214,229, 64, 92, 8,250,249,153,188,134, 58,113,121,115, 96,194,154,210, + 89,167, 94,250,135,169, 78,130,244, 27, 36, 2, 71, 99, 29,108,211,194,249, 6,222, 58,102, 97,219, 6,222, 55,240, 13,239,168, +219,166,229, 44,117,249,197,118, 30,135,198,115,186, 85,215,122,180,243, 22, 91,167, 78,225,244,153, 51,216,218,233,209, 47, 60, +186,126,134,118,222,161,237, 60,186,174, 69,235, 27, 52, 94, 11,123,135,166,113,104, 91,155,113,155,190,241,104, 27,207, 66,166, +198,160,241, 14,173,183,232, 26,143, 86,124,193,252,171, 69,211,182,112,206,195, 89, 15,239, 26, 56,219,242,106, 65,206, 17,227, +108, 53,250,160, 53,164, 46,219,228, 74, 44, 46,223,113,148, 69,168, 57,134, 87, 84,220, 5,121, 90,121,140, 43,173,132,142,221, +107, 22,196,201,157,183, 94, 96, 72, 84,193, 0, 11,213,206, 26, 43,100, 50,126,125,140,130,165, 18, 43, 90,228,180,153, 43,127, + 35,143,188,238,119,235, 44,116,221, 57,199, 92, 44,214,251,119, 48, 85,205, 90, 94, 11, 1,232,251, 5,158,243,178, 87,225,107, +127,244,143,241,229,223,245, 95,113,246, 33,143,173,152, 11, 22, 15,125,252,211,240,117, 63,246, 54,108,156, 58,151,127,190, 7, + 63,238,169,248,154, 87,255, 15, 44,118,206,194, 24,194,131, 30,247, 84,188,244, 63,189, 5, 15,122,236,231,225, 75,191,227,167, +241, 79,255,221,127, 5,172,195, 67, 31,255, 84,124,253,143,252, 1, 54,119,110, 6, 96,240,164, 91,191, 17, 47,250,215,191,128, +151,255,200, 31,226,165, 63,244,155,120,216,231, 61, 15,123, 71, 43,132, 41, 0, 49,225, 11,159,119, 43,254,242,206, 3,124,230, +231,124, 30,254,227,207,253, 10,222,241, 15, 23,240,214,191,254, 56,158,243,165, 95, 9, 39, 93,122,253,125,141, 66, 82, 84,235, +244,195, 30,245, 88,188,238, 45,183,225, 93, 31,185,132,215,190,225,205, 56,115,211, 57, 94,203, 74,128, 88,190,110,101, 2,248, +194,151,124, 35,222,250,238,143,224,175,238,216,195, 47,252,198, 91,112,250,236,205,121, 50,250,204, 47,126, 1,222,254,190,187, +240,216, 39, 62, 9,175,248,174, 31,194,171,223,240, 22,252,200,235,222,140,207,121,250,115,120, 53,106, 13, 54,182,182,240, 3, + 63,241,139,120,215,135,239,199,111,189,253,221,120,252,103, 63,249, 58, 61,196,151,125,213,203,240,155,239,248, 0,222,250,183, +119,225, 63,254,236,175, 99,231,212, 89, 22,114, 58,143,135, 61,250,115,240,147,175,127, 39,158,248,185, 95,132,231,124,197,183, +226,171,191,233, 85, 8,227, 50,127,167, 27,207,240,166,189,221, 93,108,110,109,227, 65, 15,127, 50,190,248, 69,255, 26,223,242, +189, 63,143,111,248,142,215,224,179, 62,247,185, 72,137,215,163,198,117,120,200, 35,159,128,127,246,178, 31,196,217,115,143,192, +215,125,243, 15,227,155,190,235, 39, 0, 16,218,217, 28, 47,121,217,247,224, 7, 95,243, 27,248,174,255,240, 51,248,146, 47,253, + 23,120,205,255,249, 7,216, 57,125,147, 60, 91, 88,155,222,144,145, 0, 28,103,181, 71, 98, 35,155,151,100, 27,181,172, 72,205, + 10,111,189, 4,141,228,233, 35,172, 43,135,101,160, 8,164,200, 64, 26, 75, 28, 2, 49, 1,113,224,204,103, 39,202,231,214,123, +108,204, 23,216, 90,108,160,177, 13,246, 15, 15,112,254,242, 69, 28,172,150,152, 45,122,204,103, 29, 44, 25,132, 97,194,222,181, + 3, 92,185,120, 21,123,187, 7, 24,134, 17,203,229,132,131,227, 37,150, 49, 50,105, 7, 6,102, 10,112,176,232,231,115,248, 89, + 15, 88, 32,192, 10,184,197,192, 55, 44,148,243,214,150,131,216, 22,193, 82, 74, 9, 83, 90,129,108,132,117, 30,211, 68,204,189, + 38, 81, 67, 86,227, 91,155,249,224, 34, 30,179,148, 61,157, 41,139,117,229, 66, 52,128,149,112, 27,187,230, 55, 44,130,170, 60, +218, 19, 11, 87,134,252, 24, 32,153, 4,146,132, 47,163,187,122, 50,153,208,102, 9,112, 17, 57,157, 10,194,147, 79, 41, 33,134, +128,113, 21, 48, 14,132,229,138, 19,189,210,196, 23,121, 20,155, 95, 74, 17, 49,141,140, 33,164,128, 16, 71,233,228,147,236,225, + 41, 79,183, 36, 91, 46,255,249, 76, 30,163,181,131, 88,211,231,202,238, 47, 85, 73, 66, 50,186, 36, 22,197, 25,101,120,231, 29, +165,142,189,101, 28,158, 44, 64,130,143,133,166,165,150,131, 46,143,196, 52,168,194, 36, 24, 19,175, 27,117,150, 7,149,100, 95, + 45,251, 80,195,204,121,115, 98, 71,171,126,214,148, 43, 99, 35, 83, 3,147, 69,121, 84,117,227,220,192, 57, 17, 5,105,241,198, +101, 43, 39,224,233, 56,207,100, 91,138,240,100,203, 47,216,162,172,207, 96,167, 2, 15, 33,209,127, 88,245, 77,123, 11,239, 91, +120, 47, 98, 51,215,192,249,134,211,158,156,208,224,172,205,174, 13,107, 9,174,225,203,182,111, 26, 52,125,135,173,237,109,220, +124,250, 38,222,125,123,143,153,239,209,250, 25,124,211,193, 54, 30,100,121,191,218,182, 13,186,174, 69,227,123,116, 93,195, 23, +187,227, 11,150,197,110,158, 67, 98,188,133,117, 4,231,141, 20, 26,173,136,227,216,102,103, 28,241,255,123,123,157,119,191, 20, +129,182, 26,155, 99,237,146,206, 86, 49, 99,214,186,248,188,131,150,239,202,218,231,158,116,183,171,254,236,152, 69,110,186,115, + 95,139, 59,149, 29,116,166,255, 81,210, 23, 81, 1, 98,152,247, 29, 73,242,237, 85, 87, 65, 38,119,172,172, 41,138,112,206,156, +232,210,175, 31,245,171,182, 67,159, 99, 75, 96,103, 75,146, 73,164,172,170,140, 88, 96, 73,126, 15, 96,241,148, 23,127, 15, 22, + 59,231,240,214,215,126, 11,222,253,166,215,226, 33,159,249,180, 74,199, 97,214, 38, 31,107, 5, 45,192,223, 45,148,104,226, 39, +223,250, 10,124,240, 29,191,137,183,255,242,127,200, 72,212,218,230,186, 58,218,197,109,191,243,227,248,245, 31,253, 23,248,216, +251,111,195, 11, 95,241,253, 72,193,178,243,134, 98,254, 25,127,228,231, 95,135, 15,253,237, 95,225, 37,207,126, 18,222,253,167, +111,199, 15,254,212, 47,193, 53,162, 96, 55,124,209, 36,163, 1, 60, 41,127,246, 47,253,230,239,198, 79,191,234,123,241,242, 47, +123, 58, 30,248,144,135,225, 59, 94,249,106,254,249, 37,108, 40,219,187,140,193,243, 94,240, 66,124,219,247,254, 0, 94,249,237, + 47,195, 11,159,241, 68,204, 23, 27,248,254, 87,255, 44,107,184, 28,143,238, 1,224, 59, 94,249, 99,248,212, 71,111,199,127,249, +174,111,196,237,127,243, 30,252,171, 87,254, 40,156,136,187,191,237,223,255, 48,110,122,192,131,241, 53, 47,120, 26, 94,253,202, +239,196, 51,158,119,107,166,233,129, 44,158,249, 37, 95,129,111,250,238,255, 3, 63,250,111,191, 25,223,250,226,103, 99, 54, 95, +224, 91, 95,249,163,188,126,170,234,208, 47,126,209, 55,226, 31,222,247, 46,252,238,175,188, 26, 20, 24, 80,228,141, 65,211,182, + 88, 45,143,112,184, 60,196, 23, 62,239,159,227,204, 3, 30,137,191,122,215,239,225,215,126,254,251,240,103,255,243,119,113,235, + 11, 95,142, 39, 61,245,185, 88,197,132,166,105, 68, 40, 12,124,193, 23,125, 37,254,226, 29,255, 29,111,252,229, 87, 33, 2,120, +254,139,190, 9,231, 30,120, 11, 94,255,139, 63,128, 63,250,253,255, 11,143,123,194,231,203,126,130,157, 84, 73,166,137, 36,145, +217,136, 9, 38,114, 64,146, 21,133, 87, 78, 8, 50, 57,164, 32, 2, 20, 96,197, 40,111, 41,194, 82, 18,137,191,128, 49, 13, 4, + 47, 74,104,172,129, 55, 4, 19, 2,194,184,196, 52,173, 0, 74,240,206,195,183, 29,102,243, 13, 44, 22, 11,204,230, 29,142,167, + 1,151,118,175,226,194,165, 61, 76,176,216,154, 45,208,123, 7, 36,194,106, 28,176,183,191,135, 43, 87, 47, 99,255,248, 8, 67, + 76,216, 95, 14, 56, 88, 46, 49, 6, 25, 31, 19, 23, 29, 91,125,143,214,122,244,243, 57,239,125, 4,169, 9, 27,225,188, 69,219, + 52,217, 90, 81, 87,197, 53,251,153, 69, 49,252,123,217,182, 25,242, 46, 42,211,198, 84,176, 80, 67,103, 78,166,136,165,162,214, + 52,150,113,132,154,229,140,202, 99,158,106,107,156, 78,224,177, 30,209,138,156,236, 36, 64, 13,185, 32, 99, 30,241, 17, 2,196, +218, 34,202,114, 67,156,186, 21, 82,194,114,156,176, 28, 39,172,166,128,229,106,192, 56, 78,108, 27, 73, 17, 41,133,236,183, 77, + 41, 48, 40, 40,175, 1, 40,139,185,214,194, 72,146, 78, 16,162,252, 60,220, 77, 83, 22,179,209,117,246, 21,134,155,199,204, 64, +224, 46, 59, 21, 10,152, 90,201, 44,203, 49, 65, 28,178,193, 24, 88,237,152, 83,126,239,248,103, 55, 25, 50,147,178,232,137,137, + 75,252,254, 83,238,138,214, 71,177,186, 82,178, 57,119, 59, 17,157, 16,182, 89,150,112,187,114,184,159, 12,103, 89,239,190,139, +216,200,161, 58,124,171, 29, 23, 17,239,171, 13, 85,209,175,166, 2,147,200,165,180,246,231, 75, 71,161, 99,109,141, 46,230, 3, +215,131,100, 5,198, 43, 1, 87,232,135,142, 95, 71,233, 22, 37,151,193, 88, 52,206,193,121, 22,133, 54,179, 57, 22,155, 59,152, +245, 51,204,102, 30,109, 99,209,117, 77,142,148, 52,214,163,241, 29,218,166, 71,211,205,209,246, 61,218,182, 65,211, 54,124,209, +183, 30, 93,215,161,109, 91, 22,138, 57, 7,111,125,198,180,168, 56, 75, 87, 92,122,152,114, 32,134, 91,139, 52,189,110,186,178, + 54,106,182, 57,196, 69,119,209, 39, 93, 5,181, 79, 60,157,216,119,235,251,155,233, 97, 84, 34, 43, 13,106,183, 70, 69,166, 51, + 37,110, 58,233,168,186, 2,191,212,123,114, 45,182, 84,228,119,210, 54,183,158,173, 14,209, 62, 32,235, 0,178, 5,120,237, 6, +174, 98,154,215,126,198,130,178,109,103,155,184,229,179,158,133,191,127,231,111, 98,255,234,125,184,114,247, 71,240,129,255,249, +134, 53,143,187, 49,184, 1,200,198,222,112,159,253,254,183,253, 42,206,127,226,239, 48, 28,239,175, 77, 93,245,189,253,240,159, +191, 9, 23,239,249, 71,236, 95,187,140,127,120,223,109,104,187, 30,179,141,109, 89, 45, 22,187,231,235,126,230,199,241,251,111, +248, 37, 92, 58,127, 63,110,123,199,255,192,198,214, 54,118, 78,159,225,103, 81,113,183,154,149, 97, 13,167, 96, 2,248,233, 87, +253, 59,252,253,251,222,139,187,239,248, 71,188,229,183,127, 21, 79,127,238, 11, 96,136, 49,168,177, 2, 65, 25,107,240,210, 87, +124, 39,254,232,119,127, 29, 31,124,223,123,113,254,222,187,241,251,191,254, 43,120,206,243,191, 28,173,111,224, 93, 17,166,190, +245,119,127, 21,127,254,182, 55, 99,255,202, 69,124,224, 61,255, 31,230, 27,155,216, 62,117, 26, 59,167,206,224,233,207,185, 21, +191,246, 75,175,197, 93,119,124, 28, 31,254,187,191,193,255,253,179,175, 89, 27,192,127,245, 55,124, 59,254,159, 55,253, 22, 62, +250,161,247,225,210,249,123,240,246, 55,255, 6,158,250,172, 47, 65,215,117, 37, 54, 28,192,123,223,249,251,184,116,255, 39,176, +119,245, 50, 66,148,213,153,181,104,187, 14,203,227, 35,180,179, 5, 30,241,216,207,199,167,254,225, 47,113,241,190, 79,224,240, +112, 15, 31,254,224, 95,226,189,127,254, 54, 60,227,185,255, 20,136, 81, 80,178,252, 51,254,233,219,127, 11,159,248,232, 7,112, +112,237, 26,250,110, 3,143,251,204,167,224, 47,222,245,135,184,122,249,126, 92,190,112, 15,110,251,211, 55,101,205,129,169,112, +236,245, 4, 50, 73, 86,129,215, 74,200,144, 19, 69, 30,128, 70,148,201, 58, 18, 21, 75, 21,241,204, 58,115,128, 19, 18,188, 33, + 52,158, 43,191, 24, 2,166, 97, 64, 10, 19, 90,239,208,185, 6,125,239, 49,235,231,232,186, 30, 33, 68, 28,236, 31,225,232,248, + 24,148, 8,253,172,197,188,239, 88, 53, 25, 9,227, 56,225,224,240, 16,123, 7,251, 88,174,142,177, 90,141, 56, 58, 92, 98,146, +120,189,144, 0, 34,139, 89, 99,177,209,118,152,119, 30,190, 33,184,100, 89,172,165,135,172,179,104, 26, 95,165, 24,137,197, 66, +224,247,124, 29,242,124, 34, 70,198,236, 89,103,224,155, 34,180, 98,117, 55,202,184, 59, 70,144,227,206,204, 56, 39, 38,127,135, + 41,198,220,125,235, 88,185,241, 13, 32, 36,173, 41,152, 74, 16,162, 98, 26, 35,251,115,201,171,215,104, 86,245, 31,202, 63,219, + 58, 82, 50,105, 17, 37, 20,164,148,224,100, 34, 97,133,202,150, 34,131, 30,134, 41, 97, 57, 76,152,173, 60,142, 26,131,190,225, + 81,172,111,188,116, 0,164, 1, 69,112,137,178, 77, 36,139, 45, 68,161,174,127, 54,137,176, 16, 73, 86, 24,196,187, 73,117, 59, + 80,162,234,208, 53,121,244,201,202,212,130,192,229,157, 61,241,206,248,132,242,152,189,221, 96,112,140,129, 84,156, 82,214,184, + 42, 41, 75, 56,200,206, 53,121, 39,121,163,195,168,190,116, 79,238,205,242,174, 93, 73, 94,122,105,194,150,221,170,118,108, 39, +128, 50,117, 12,102,254, 92,179,168,210,228, 76,114,163, 59,204, 42,104,134,242,142, 94,137,103,180, 38,148, 42,153,236, 0,208, + 2, 38,176,176, 17, 60, 21, 80,155,153,138,165,160,182,122, 83,136,119, 70, 62, 3,103,141, 96, 38, 45, 7,216, 56, 70, 61, 81, + 59,193,247, 29,220,106, 41, 98, 71, 43,113,147, 34, 69, 52,172,121, 96, 17,144,169,128, 59, 22,206, 23, 43, 20,191, 65, 73, 94, +151,172,230,115, 48,136, 20,208, 64, 94,233,161,250, 60,234,113,116,170, 86, 73,245,251,107, 78,220, 76,117,193, 86, 23,143,181, + 8,113, 29, 36, 83, 10, 71, 50, 10,102,209,116, 63,170, 2,128,132, 31,158,170,142,223, 40,197,204,174,237, 93,121,151, 43,103, +132,112,200,117, 92, 94,232, 99,246, 68, 84,107, 58, 65,136, 51,146,221,174, 19,136,170, 56, 41,106, 73,246, 49, 87,190,100,136, + 30,100,243,220,195, 96,172,197,238,197, 59,215,220, 52,165,160,193, 90,156,168,182,228,230,186,206,157,255,205,193,213,251,114, + 1, 72,245, 70, 81, 58,234,217,230, 25,124,254,179,190, 10,231, 30,254, 89,152,111,238,228,115,152, 55,170,133,227,241,190,247, +220, 86, 98, 64, 99, 42, 65, 75,177, 48,248, 41,239,181,203,170,238,232, 96,159, 53, 33,206,224,242,133,123,209,245, 51,108,110, +157,194,193,253,247, 22,254,186, 24,164, 31,249,184, 39,224,145,143,125, 2, 94,252,181,255, 50, 71,220,250,166,193,153,179,103, +177,119,237,162, 60,227,192,199, 63,252, 1, 1, 16, 37,118, 87,201,107,121,196,163, 31, 11,107, 45, 62,254,145, 15, 23, 29, 78, +109,105, 67,194,103, 60,230,241,248,140,199, 60, 30, 47,252,234,151,139, 54,196,195,251, 6, 59,167,207, 34,211,159, 0, 44,143, +119,209, 56, 73,228,195,148, 51, 24,250,182,195,181,221,171, 56,115,243, 67, 96,172,197,222,229,243, 89,245,159, 18,112,223,221, +159,192,179,190,248,197,216, 58,125,134,137,121,146,234,121,225,190,187, 16, 2, 55, 65,103,111,122, 16,140,181,184,112,255,167, +178,206, 71,159, 31,111,109, 33,231, 9,247,190,118, 68,192, 26,134,207, 24,225, 50,115,136,144, 41,227,205,202, 35,204,162, 20, +147,173, 64, 68, 9,206, 91, 52,162,192,158, 34,239,109,145, 18, 90,231, 49,111, 91,116, 93,139,249,108,134,166,109,112,112,120, +140,131,195, 35,132,196, 74,244,126,214,160,243, 30, 38, 37,241,222, 2,195, 56, 98, 24, 6, 28, 29, 47,113,116,180,194,241,193, + 18,203,113,132, 51,158,137, 64, 48,216,154,247, 56,189,104,132, 71, 63,129,162,146,210,108,134, 91,128, 98, 37,218, 41, 81,158, +206, 9,227, 58,153,108, 75, 34, 2, 66,152,208,182, 30, 77,227, 17,101, 76,157,177,144, 84, 56,229,245,120,150,201,234, 5,238, +200, 14, 68,179,158,133,236, 61,236,196, 1, 47,182,206, 5, 71, 1,158,104,154,136, 17,186, 88,198, 2,138, 70,193, 42,224, 70, +197, 56, 74,177,147,139,215,121, 95,128, 47,201, 32, 6,182, 32, 14, 99,196, 48, 69,172, 70,139,229, 42, 96,214, 79,104,186, 14, +214,202, 94, 26, 22,137,156, 72,239, 84,125,158,100, 60, 87,108, 55,168,114,157,141,245, 98, 53, 83,127, 61, 85,161, 30, 53, 44, + 35,201,218,166, 22,212,217,108, 73, 75,138,191,180, 69,177,172,248, 73,170,210,146, 50, 64,147, 10, 98,213, 24, 92, 71,126, 99, + 23,128,174, 13, 10,172,228, 70,190,250,172,112,181,197,215,171,135,159, 65,221,173,165, 28,149,123, 35, 59, 85,125, 9, 89, 73, +197,130, 81, 69, 9,178,160, 76, 47,117, 67, 5, 29,172, 41,127,200,108,127, 83, 52, 2,149,143, 93,233,140,150,212, 71,110,225, +200,139, 88, 11, 72, 54,149,231, 40, 50,120,201,100,145,134,136,145,146, 76, 36,172,229, 17,161,239,208,205,230, 8,195,132,129, +192,223, 31,103,179, 48,140,215,106, 92, 88,165,148, 64,177,232, 16,248, 92,224,221, 34,127, 86, 38, 91,107, 52, 77,208,216,234, + 34,177,117,226,221, 58,195,160, 78,207,251,116,162,181,122,157, 18, 69, 53, 28, 43,208, 15,110,192, 84, 87, 59,238,201, 32, 19, +213,211, 32, 11,217,214, 85,244,250,153,155, 74, 60,166,128, 26,182,193, 34, 7,220,168,237,137, 40, 86, 26,141, 18, 24,164,211, +128, 90,232, 86,175, 26,234,207, 60, 7, 6, 25, 35,254,107,147, 51, 2,234,160, 25, 53,113,187,134, 57,255, 81, 46,171, 34, 6, + 68, 78, 51,212,139, 32,159, 21, 55, 16,157,151,119,198,149, 60,133,234,250, 39, 2,108,211,226, 5,223,242, 26,236, 93, 62,143, + 63,252,229, 87,131,218,109,252,203,127,255, 99, 85, 51, 98,214, 24,239, 84, 21, 46,186,179,138,161, 42,106,242, 52,195,173,125, +127,140, 1, 26,239,208,116,252,179, 45, 87, 75,132, 41,172,125,127,173, 40,223,223,248,223,126, 14,127,240,155,191,202,223,113, +239,225,157,195,213, 75, 23,209,180, 46,119,255, 70,158,253,132,136, 40, 5,134,115, 22,253,108, 6, 0, 24, 86,171,181,207,162, +118, 35,164,148,240,123,175,255, 69,252,201, 91,126,155,169,116,214,192,187, 6, 49,174, 48,187,249,116,129, 74,165,130, 17,247, +190,133,177, 22,190,241,128,179, 88, 46,143, 49,235, 55,164,224, 15, 37,236,167,210, 29, 53, 77, 35,104, 89,126,158,167, 20,101, +101, 68,240, 82,156,196,105, 82,202,108,126, 47,212,178, 13, 74,136,210,171,170,149, 90,211, 92,173,194, 22,194, 20,132, 68, 22, + 17, 66,192, 36, 49,129, 4,176, 37, 32,176,216, 45,239,155,164, 40, 77, 49,113,150,183, 88, 71, 90,231,177,232,103,216,220,216, +194,230,230, 38, 98, 50,184,116,101, 31, 87,175,237,225,242,149, 75,104,188, 71,223,247,240,206, 33, 73,252, 99,136, 1,171, 48, +226,104,181,194,254,222, 33, 14,174, 29,226,232, 96,196, 56, 10,173, 8, 9,109,215,224,244,230, 28,219,155, 45,124,195, 7,215, +144,192,233, 85, 77,131,214,119,112,174,145,221,135,149, 17, 87, 25,141,193, 20,236, 97,166,183,155,170, 91, 72, 36,227,194,166, +232,162, 52, 12, 28,182,150,126,173,217, 83,168,174,132, 53, 22,143,202,104,217, 9,130,211, 40,103, 88, 56,227, 84,190,167, 44, + 26, 66,225, 58,103, 50,102,158, 26, 84,240,126, 37,103,129,100,116, 46, 73, 82,122,201, 5,238,214,199, 41, 97, 24, 2,139, 11, +199,136, 49, 4, 17,201,201, 24, 94,246, 97, 41,133, 44,124,171, 71,151, 53,135, 93,215, 0, 20,167,204,133,215,221,100,125,120, +214,194, 32, 99, 72, 2, 90,226,218,104,146, 15, 71,170, 14,162,210, 41, 27,129,205, 20,163, 83,201,116, 47,214, 58, 84, 52, 48, +166, 9,164,100,242,184, 20,134,214, 40, 98, 55, 18,208, 89, 43, 99,246,106, 37, 83,235, 1,138,104,111, 29,227,185,254,115,210, +117,209,174,230, 6, 59,204,147, 69, 64,253, 58, 56, 68,201,158, 96,131,235,100, 67, 56,245, 50,110,231,139,183,176, 9, 52,241, + 75, 9,142, 58,122,181,206, 8,223, 94,167, 20, 73,180, 33,178,159, 55, 14,125,187,192,214,198, 14,182,182,118,208, 47, 22,104, +186, 14,109,215,161,235,122,180, 77,199, 64, 13, 42, 43, 43, 43,163, 98, 43,222,108,107, 4,134,148,105,235, 38,191, 62,214,228, +184, 44,214,243,206, 85,235,166,234,189, 50,230,186, 95, 58,114, 87,206,195, 58, 62,245,211,188,143, 39,132,145,250,138,234,207, +178, 36,182, 81, 53, 74, 63,145,216,166, 54, 83,131,181,168,223, 12, 62, 18,131,177, 53, 36, 19, 28,202, 80, 41,151,199,232,148, +207,146,154,235,190,174, 5, 48, 5, 15, 45,207, 92, 16, 31,181, 66,173,244,245, 51,104, 74, 93, 3,252,243, 45, 15,174, 0, 0, + 54, 78,157,203,255,174,149, 11,196, 41, 44, 37, 43,248,125,126, 78,111,249,236,103,222,240,109, 35, 9,166,161,235,222, 87,194, +217,135, 60, 26,139,237,179,120,219,111,252, 20,110,255,155,191,196,249,251,239,203,154, 5,105,237,242, 52,179, 46,182, 79,174, + 56,107, 55,130, 94,176, 25,234, 34,105,105,222, 91, 60,244, 17,143,198,133,251,239,193,238,181,171,197,221,145,201,110,192,223, +191,255,175,241,132,207,249, 60,220,119,207,157,184,239,222,187,112,254,222,187,113,254,222,187,153,119,238, 74, 92,176, 21,109, + 64,202,150, 79,182, 26, 95,187,124, 9, 0,240,192, 7,223,146,207,158,141,205,173,210,196, 16,225,246, 15,254, 45, 30,247, 89, + 79,198,165,251,239,197,165, 11,247,226,226,253,119,227,234,229,243, 32, 10, 48,213, 28,196, 57,151, 3,128, 72,138, 93,215, 52, +136, 32, 28, 28, 30, 98,121,116, 13, 68, 9, 27, 59, 55,173,145,253, 31,124,203,163,176,123,237, 18, 72,138,178, 32,255,159,100, +181, 8, 3,236, 93,227,215,185,181,125, 10, 20, 9,105, 2,250,217, 2,154, 93,217, 58,139,206, 89, 52, 50,109,140,148, 16, 12, +255, 45, 4,130, 77, 73, 68, 80, 39, 14, 63, 71, 78, 84,197,172,172, 78,210,222, 84,225, 53, 8, 49, 97, 12,124,145, 53,198, 98, +209,180, 56,189,185,137,157,205, 13, 24,107,176,119,120,132, 75,187,123, 56, 88, 46, 97,189,199,230,214, 54, 12, 2, 82,140,152, +194,128, 41, 6,132,100, 48, 36,194,114, 90,225,242,165, 75,184,122,225, 10, 86,203, 21,166, 56, 33, 17,224, 93,143,249,108,134, +179,167,102,216,218,240,130, 73,180,240,221, 12,214,119,136,201, 48,219,189,181, 48,222,177, 66, 84,146,199,172,116,112,252,243, + 72,118,110, 66,142, 1, 53,164, 4, 68,139, 40,105, 80,206,250, 50,202,179, 26,185,170,222, 80,130, 73, 16,105, 67, 42, 32, 19, + 83, 82,173, 84,248,165,182, 24,235,106,206,119,144, 42,158,197,132,206, 26,120, 39, 97, 51,166, 40,237, 99, 1,213,101,139,148, +173, 18,191, 20, 7, 81, 4, 58, 44,218, 75,210, 41,132, 24, 17, 66,196,114, 8,152, 38,226,208,151,129,163,103, 65,236,107, 71, + 20,245,187,142,254,242, 1, 24,170,113, 32, 63, 19, 33,132,114, 48,166, 4, 10, 49,163, 81,213, 6,199,157,114, 44, 60,230,235, +198,125,180,230, 51, 78, 20, 51,193, 46,211,185,196,147, 94, 11,169,100, 99,125,226, 2,112,121, 62, 34,209, 61,114,233,248, 53, +184, 70,254,189,102,125, 87,107,170, 36, 43,133,128,212,135,191,145,131,218,194,220,144,156,119,221,193, 88,117,150,230,132, 32, +170, 22, 12,214,147,130, 84,167, 95,173, 29,130, 39,138, 5, 17,246,169,183, 53,166,176, 62, 90, 37,192, 36, 18,182,191,149,212, + 54, 15, 3,207, 34, 28,217,191,243, 69,235, 88,220,230, 12,218,174,195,124, 99, 7, 27, 91, 59,232,103,115,120, 81,216,155, 42, +170, 82,119,153, 92, 92, 52,112,190,205, 35, 78, 11, 57,200,124, 43,216, 89, 43,112, 14,119, 66,161,142,235,138,161, 53,116,232, +137,223, 91, 51,211,235,145,251,201,127, 62, 9,118,201,122, 20,181, 65,158,252,108,100,252, 85,255,119,133,214,118,242,243,172, +166,149,181,198, 44,131,152, 82,142,158,206,214,175,172, 19,184,126,159,205, 83, 41, 83, 68, 77,149,110, 37, 11, 76, 81,248, 5, + 68, 84,196,183, 39, 10,155,253,139,119, 97,247,194,157,120,226,115, 94,138,217,214, 77,120,240, 99,191, 0, 79,124,222,215, 86, +206, 47,131,195,107,231, 1, 0,143,121,218,139,240,192,199,124, 62,190,232,107,190, 31,219,231, 30, 94, 77, 45,234, 24,215,210, + 60,156,212,118, 28, 31,236, 1, 0, 30,242,232, 39,163,219,190, 25,255,228,197, 95, 15, 0,120,244, 19,159,148,237,134,154, 7, + 98,114,202,230, 58, 69,143,200,224,243,159,254, 44,252,222,159,253, 29,206, 62,224, 65, 25, 15,171,191,239,123,126,228, 39,241, +240, 71, 62, 26,143,123,226,231,226,203, 95,242, 13,120,203,239,188,158,133,189,149, 85,207, 72, 81,244,223, 94,251,159,241,212, +103, 60, 23,255,219,247,253, 48, 30,240,160,135,226,161,183, 60, 2, 47,120,209, 87, 97,231,244, 14,179, 20,164, 24,244,210,228, + 76, 33, 33,200,249,223,182, 13,238,186,243, 31,241,169, 79,124, 12, 47,251,214,127,131, 7, 60,248,161,120,198, 23,223,138,111, +252,246,239, 41, 42, 85, 0,111,248,249,159,192,231,126,225,179,240, 13,223,249, 74,220,116,238,193, 56,247,160,135,226,153, 47, +120, 17,102,243, 13, 52,222,231,103,179,109,123,118, 75,137,167,252,129,183, 60, 22,207,126,225,183,193,219, 22,135,135,135,176, + 22, 56,127,231,135,241,168, 39, 60, 19,103,207, 61, 28,179,249, 22,158,240,217, 79,195, 83,158,254,124,252,197, 59,223,140,198, +121,152, 16, 49, 76, 99,245,108,243, 10,245,210,133,123,112,225,190, 79,225,169,207,248, 10,108,204,119,240,168,199, 60, 25, 79, +127,230, 87,234,226, 11,173,116,235,206,154,204,252, 79, 49, 33,136,203,201,102,242, 9,140,236, 15,188, 84,227,252,137,135, 24, + 89,177, 40,153,198, 73, 2, 14, 10,204, 33,161,177, 22, 91,179, 30,219,139, 57,250,190,197, 42, 6, 92, 59, 60,192,149,253,125, +132, 56,162,237, 60,124,215, 72,180,220,192, 59, 43, 99,145, 44, 97,140, 35,246, 15,142,112,233,252, 21,236,239, 29, 34, 16,123, +249,136,120, 68,177,179,213,227,230,237, 14,157,183, 88, 69,130,157,245,240,139, 5,140,107, 96, 26,102,237, 54,206,160, 23,218, +143, 54,224, 94, 58,139,220, 61,137,207, 57,139,207,168,148,170, 4,137,230,147, 47,179,119,236, 71, 36,201,155, 54, 85, 55, 78, +178,251, 50,181,104,198,148,172, 97,165, 19, 24, 25,107,229,112,133, 84, 69,230,229,156, 55,148, 92,250, 42,211,216,105,167,110, +128,104, 74,204, 94,249,115,144, 37,247,234,217, 84,248, 71, 4,178, 96,110,156, 34, 86, 67,196, 48, 68,172, 86, 9,171,113,196, + 24,184,168,226,139, 56,112, 88, 74, 72, 72, 33,229, 75,182,190,216, 83, 12,252,251,180, 51, 38,246,125,166, 72, 72,129, 88,232, +101, 41, 91,225, 0,115,194,186,101, 50,201,170,102,228,175, 29,222, 58,118, 55,165,107, 39, 21, 55, 85,148, 59, 99, 52, 52,132, +170,221,179,126,241, 69,160,120,194,105,152,180, 19,177, 66,227,179,204, 52,213, 61,151,185, 1, 5, 78, 85,239, 53,233,236,198, +100,176,170, 1, 73, 73,214, 35,245,107, 2,200,178,134, 1,134, 64,214,102,242,156,130, 70,226,137,105, 2, 1,107, 5,246,154, +128, 43, 17,239,186, 69,134,203,155, 87, 43, 32, 37,183,134,141, 85, 10,152, 53,224, 46, 70,108,114,198,121, 88,223, 0,141,135, +109,153,147,221,246, 29,124, 35,116, 55,199,147,163,182,109,208,120,151,187,110,223,216, 76, 19,132,240,249,157,227,179,194,193, +100,129,156, 61,161,114, 47,197,212,186,198, 33,157,160, 52,166,235,168,141,159,198,118,118,226,179, 40, 76,133,180,158,178,118, +163,143, 73,159, 1,117,187,101, 8, 72,148, 34, 93,139,207, 80,249,222,169,144,223, 80, 91, 55, 77, 21, 78, 18,243, 20,192,152, +235, 19,250, 52, 98, 57,201,106, 47,174,189,214,106,162,115, 34, 65,236,228,251,161,207,194,159,255,214,171,209,111,156,194,139, +190,247,117,120,204,211, 94,136,219,111,251,189, 50, 82, 79,132,195, 75,247,226,131,239,120, 35, 30,241, 57,207,195, 23,252,243, +127,139,221, 11,159,196,135,254,228,141,213,151,162, 26, 59,215,227,120, 99, 74,136, 20,128,139,247,220,129,247,252,241, 27,241, +156,127,246, 45,248,230,239,127, 45, 94,255,179,175,193,123,255,236, 79,240,253, 63,249,139, 56,123,211,131,115, 35,147,225, 40, +149,135,154,119,239, 28, 22,211,111,108,224,225,143,122, 12,171,211, 13, 79,115, 85, 75,240,206,183,190, 9, 63,245,134, 55,227, +199, 95,247, 7,184,237,255,253, 35,252,218, 47,252,151,204,134,208, 51,214, 58,142, 20,125,223, 95,253, 5,190,243,235, 95,132, + 47,124,230,115,241,150, 63,255,123,252,218, 91,222,133, 23,126,213,215,179,133,178,241,249,247, 59,203, 44,139,152,166,156, 77, +223,181, 29, 98, 72,248,161,127,243, 10,156, 62,123, 19,222,244,167,127,135,151,188,252, 95,225,119,222,240,139,107, 43,156, 15, +189,255,175,240,191,127,219, 75,241,164, 47,120, 38,126,225,119,223,137,159,248,213,183,226,217,183,190,152,221, 97, 93,151,239, +130,144, 56, 19,133,153, 14, 9,109, 63,195, 98,243, 52, 55,171,227,136,214,123,124,236,131,127,138,243,119,253, 3,158,254, 37, + 47,195, 43,190,251,167,241,236, 47,249, 42,188,237,205,175,199,135,222,127, 27,156,117,152,166, 9,227, 48,230, 70,109, 34,194, + 20, 18,166, 49,225,191,191,241,103,208,207, 55,240,109,223,247,211,120,202,211,111,197,123,110,251, 99, 30,211,143,203,156, 52, +185,182,186,170,168,131,230,229, 95,243,124,229,145,194, 91,135,182,101, 47,169,118, 1,148,168, 92,144, 82,149,234,232,196, 59, +160,119, 22,243, 89,139,153,227, 61,247,106, 28, 48,140, 99,230,172, 55, 82, 61,241,136, 41,128,210,132,205,141, 51, 0, 5, 76, +199, 3,246,246,246,177, 18,154,206,209,225, 33,166,213, 10,105,154,224,136,176,181, 53,195,108,209,138,248,199, 1,182,145,136, +215,136,214, 54, 32, 3,236,156,218,193,230,246, 6,238,184,227,110,172,134, 9,135,171, 35, 76,203, 99,204,219, 22, 4, 96, 53, + 76, 24, 83, 68, 50, 14,141,115, 56,220, 63,148,148,157, 22,221,188,195,209,209, 17,198,101,128, 33,194,108,222,192,219, 6, 49, + 5, 44,135, 9,109,223, 35,233,135,231,121,236,184, 92,174,132,116,102, 16, 34, 48,197,136, 85,136,121, 55,231,173, 67,235,123, +248, 94,250,249, 16,176, 58, 90, 33, 37, 32,164,145,183,241,214, 2, 34, 32, 9, 32,116, 93, 7, 74,137, 71,228, 68,252,101, 64, + 9,120, 99, 26,159,218,123, 36,131,189, 42, 40,154,134, 81,167, 83, 80,110, 56, 71,100,246, 77,131,205,121,139, 83,155, 29,182, + 55,122,156, 61, 61,195,206,118,143,190,235,224, 61, 43,154,157,107,208,184,150,199,166,173,135,119,158, 65, 16, 78, 2, 91,244, +176,182, 46, 7, 54,104, 74, 26, 63, 11,158,249, 68,154,203,110,202,104,237,228, 1, 88,246, 66, 18, 3, 43, 95, 94,210,144, 28, +181, 82,230,253,171,203, 15,112, 6,246,240,147, 39, 98,187,188,112, 98,138,153,105,144, 40, 8,113,137, 95,191,117,110, 93, 64, +101,148, 83, 64,165,203,176,133,228,231, 20,234, 97,220,218,206,175, 0, 76,112, 93, 40,135,126,127,172,186, 28, 4, 88,146, 5, +124,153,166, 87, 93,114, 39,114,182, 41, 21,165,127, 14,213, 50,172, 39, 80, 17, 37,139,235, 18, 82, 50,234,219, 98, 20, 39, 81, + 94,171,104,100,105, 14,201, 38, 5,250, 68, 68, 68, 46,232,166, 9,211, 56,240,254, 55, 70,196,113,100, 39, 68,136, 72, 20, 4, +184, 34, 46, 15, 69,128,146,236,219,178,174, 35,193, 89,134,111,128, 72, 18,244, 10, 74, 85,117, 34,159,142,133,159, 82, 20,194, + 99,201,177,175, 39, 34, 39, 59,253,235,236,224,198,186,199, 0, 0, 20,185, 73, 68, 65, 84,138,159, 38, 52, 37,235, 75, 8,107, + 22, 82, 64,167, 38,234,123, 86, 49,108,172,130, 99,140,236, 96, 99, 22, 22,106,129, 91,130, 85,108, 38,102,106, 1, 33,200,153, +172, 95,176,102,189,104, 53,146,251,160,171, 51,214, 42,153, 60,153,163, 19,108,123,101,189,159, 60,184,235, 85,209,201, 81,119, + 45,152,131,193,117, 83, 32, 93, 95,105, 68,178, 70,203,162,226,206, 59,153,102, 4, 68, 76, 41, 98,127,127,137, 43,151,247,112, +254,210, 46,238,187,112, 21, 71,199, 1, 33,112,164,117, 18,215, 84,144, 44,113, 11,194, 48, 77,104,219, 22,190,113, 24,199, 9, +171,213,200,176, 41,231, 96, 45, 71,249, 26, 99,176,179,181,192,162,107,177,154, 6,132, 41,162,107, 25, 24, 19, 82,196,209,241, +128, 24,152,116,167,132,197,126,198,168,213,105,156,184,136, 74, 4,235, 60, 26,223,192, 25,131,249,162,197,230,230, 6, 92,211, + 99, 99, 62,199,185,237, 45, 32, 6, 92,219, 63,196,238,254, 1,108,107,177,181,189,133,123,239, 59,143,221,221, 61,132,192,212, +212,166,105,208,247,204,120,152,198, 17,137, 56, 77,206, 26,160,159,117, 2,178, 49,216,220,222,129, 73, 19, 30,245,152,207,192, +230,246, 38,124,235,177,177,117, 26,137, 34,174, 93,190,140,107, 87, 47,227,225,143,120, 20, 30,255,132,207,194,189,247,221,133, + 79,124,226,227,120,228,103,124, 6, 78,109,159, 66, 8, 19, 46, 94,188, 31,187,123,135,184,118, 60, 32,198,136,249,124,134,197, + 98, 3,227, 48,225,218,254, 53, 78, 22,133,224,177, 83,161,100, 58,111,185,193, 36,224, 41, 79,191, 21,207,125,254, 75,240,115, +255,249, 91, 65, 96,130,234, 56, 77,156,196, 56, 8, 37, 85,114, 88, 60,153,146, 29, 11, 65,226,145,169, 82,199,114,130,141, 97, +191, 39, 88, 44,213, 55, 14,243,190, 67,235, 29, 44, 37,172,134, 21, 66, 8, 8,148,144,172, 65,211,244, 60, 22, 8, 35, 99,244, + 92,139,190,221,192, 56, 92, 1, 82,196,234,120,194,229,139,151,113,116,120,192,248,200,196, 23, 85,227, 24,114,209,119, 22,222, + 38, 17, 56,108,194,192, 99,255,248, 16, 41, 4,204,186, 30,125,219,130, 18, 19,121, 8,149,208,167,218,173,241,104,132, 4,238, + 47, 4,172,170,186, 52,149,216,195, 66,132, 90, 38,230,212, 57, 13,117,168,129,132, 57, 97,200,249,108,183, 49, 2,142, 96, 21, +173,250, 42,157, 68,119,122, 81,236, 78,165,125,211,131, 44, 82,225, 19,203,104, 91,247,103, 86,212,238,218,185, 89,225,173,231, + 56, 74, 77,179, 50, 66,105,147, 11,137,133,103,124, 96, 69,129, 28,140, 83,131, 97,136, 56, 60, 26, 49,239, 61, 90,231, 88,201, + 31, 69, 0,105,185,136,112,106,159,113, 70, 68, 80, 38,119,199, 57,110,151, 20,147,203,196, 40,172, 41,183,145, 5, 69, 76, 75, +141,215,229,255,214,164,212, 68, 37, 13,205,230,224,244, 82, 16,100, 85,167, 8,131, 85,104,229, 52,130,149,120,252, 84, 46,195, + 28, 78, 91,172,129,149,186,222,202, 94, 57, 37,130, 35,147, 73, 97, 28, 87, 32, 64,162, 28, 94,148, 50,169,173,188,102,179,166, +174,207,227, 96, 37,232,153,178,179, 39,107,214, 73,103,154, 87,226,202, 62,213, 84,203, 72,170,214, 20, 70, 44,114, 68, 34,240, + 50,168, 8, 97, 74,230,195,122, 16,136,114,249,141,129, 33,254, 25,147,181, 5, 55,202,169, 6, 2, 97,226, 48, 23,155, 88, 31, + 79,158,199, 66,198,122, 16, 26,249, 30,200,107,119,200,252, 2,189, 24, 51,206,212,241, 84, 41, 81,125,121, 20,190,182,174,173, +244,114,173,223, 51, 47, 98, 59,157,108,213, 44,252,162,234, 94, 31, 83,223,232, 34, 95,223,225, 82, 65,174,214, 59,124, 82,215, +136,116, 52,100,242, 51,157, 47, 69,161, 34,241,115,106, 42,203,157,108,143, 21,253,106, 84, 83,162, 79, 90, 90,203,230, 6,241, + 41, 89, 10,146, 36,153,231, 76, 0, 75, 66,139, 84,129, 97, 18,206, 62, 23, 19,238, 58,241, 32,157, 96,212,103,189,129,190,183, + 21,126,216,160,232, 51, 18,174, 95, 23,145,174, 22, 44, 99,159,115, 36,180,234, 39, 82,225, 82, 12,227,132,163,227, 1,135, 71, +252,107,152,146,208,143,249,210,137, 72,176,137,119,145,214, 90,196,137,179,196,249, 71,144, 9, 95,109,134,209,116, 61,213,142, + 88, 84,194, 73,228,239, 94, 44, 81, 74, 98, 88,178, 25,219,139, 68,215,173, 36,172, 51, 25, 97,172,121,235,214, 0,129, 74, 26, +156, 58,161,120,141, 72, 37,204,230,196,218,231,164,215,159, 3,186, 90,198,184,198,129, 27, 31,239,114, 68, 47,135, 64,241,127, +211,118, 45,172, 37, 12,203, 37,156, 76,138, 33,211,181, 24, 18, 23,204, 18,183,173,175,117, 53,140, 44,148, 51, 54, 11, 92, 73, +190, 35,143,121,220,147, 48,141, 3,118,175, 93,194,153,155,206,225,233,207,254, 10,124,248,131,239, 6, 39,139, 19, 66, 96,157, + 91,140,194,218, 39,117,188, 27,120, 34, 35, 25,198, 60, 58,203, 2,174,202,239,106, 53,211, 21,132,198, 25,204,186, 22, 27,109, +131,148, 18,134,213, 50, 91,225,140,227,212, 26,238,172,132,137,155,136,115,180,157,135, 51, 30,136, 22,215, 46, 95,198,225,225, + 18,251,123,135,240, 14,204,108, 7, 97,214, 55,232, 54, 55,176,232, 45, 86,227, 17,194, 56, 96,115,243, 12,200, 54, 56, 60, 58, + 64,140,137,129, 25,179, 25,156,115,152,166,192,192, 12,199,193, 27, 44, 76, 43, 23,183, 19,188, 39, 18,119, 21, 78,172, 82,245, +151,208, 74,165,173, 29, 7, 3,208, 89,224,147,193, 33, 98,251,161, 68, 21,179,189,240,148,245, 27, 78, 68,217,237,163,157,165, + 21,174,126, 8, 50, 83, 23,209,158,142, 0,157,160, 77, 83, 8,114,121,151,117,105, 60, 33,104, 65,165,150, 45,155,175,130,157, +180, 48, 57,157, 73,211,147,166, 72, 88,141,129, 45,134,131,197,209,241,132,190,107,224,147,240,144, 67, 0, 44,224,200, 35, 4, + 11,239, 1, 99,116, 55,230,178, 90,216,218,117,242, 90,233, 52, 40, 11,180,114, 90, 31,149, 68,191,122,188,170,157,187, 38, 39, +113, 1,224,214, 53,180,242,254, 40,163, 58, 67,122,114, 40,142, 45, 24, 76, 83,162,157,172,177,217,189,129,156,252, 68,149, 26, +151,114, 80, 2, 36,252, 33,115,221,179, 42, 61,137, 91,130, 10,244, 5,213,235,160,117,146, 83, 29,167,169,128, 16, 50,149,189, + 74, 73, 88,226,112, 32, 9,171,201, 26,139,250,114,175, 60,214,150,170, 8, 78, 20,144,142,177, 0, 37, 11, 66,168,248,222,102, +205,183, 90, 11,165, 40,134, 28,165,188, 22,106, 98, 12, 91, 2,213,202, 4, 3, 68, 39,135,102,161, 75,230,203, 43, 70, 97, 65, +166, 2, 14,145,238, 95, 3, 51,235, 14, 82, 3, 98,200, 89, 32,176,181,179,230, 58,168,166,161, 8, 60,249,217, 77, 39, 45,108, +149,160,236,255,111, 20,159, 1, 71, 39, 70,215,121,212, 31, 83,245,109, 17,171,162,136, 57,141, 20,116, 42,234,226,103,197,103, + 10,162, 85, 54,121, 53,230,212, 65,128,174,138, 64, 69, 48,198, 10,250,147,221, 52, 36, 85,142,215, 64,106, 17, 45, 76, 8,197, + 28,115, 97,166, 26, 15,102,222,175, 11, 7,215,198,250,250,108,102,201,115, 37, 6, 61,177, 2, 40,200,252,130,152, 45, 59,189, +194,129, 84,126,252, 56,140, 88, 46, 7, 28,202,197, 30, 66,137, 87,205,131,123, 73,114,179, 6, 24, 19, 67,134,172, 53,124,225, + 80,170,158,221, 98, 52,208,162, 60,101,140,115, 41,202,115,108,109,206, 27,225,166,173,208,144, 69, 52, 92, 33,113,157,115, 48, +206, 51, 28, 21, 6,157,111, 74,124,181,156,139,109,211,136, 54, 40, 85, 22, 65, 20,242,159,173,146, 0,109,213, 24,138,104,147, + 82,130, 35, 96, 54,155, 9, 59, 33,102, 56,149, 34,139,187,182,197, 24, 88,183,212,183,179, 66, 16, 12,129, 5,225, 81,196,144, +114, 38,114, 86,199, 8, 77,194,208,166, 34,201,207,120,211,185,135,226,139,158,253,229,216,220, 58,133, 97,117,140,219, 63,244, + 94,188,227,109,191,205,174,151,152, 16, 66,194, 40,127, 46, 73, 50,162,206,254, 60, 4,121,234, 37,160,129, 59, 35, 81,138, 27, + 43, 66, 36,190,120,251,166,193,162,237, 96,157,193,106, 10, 24, 86, 3,156, 21,213,120,227,178, 45, 41, 6,254,192,156,179,112, +205, 12, 10, 14, 30,198, 3, 28, 29, 15,184,120,239,121,184,255,213,214,217, 37, 71,142,228, 72,216,129, 8,146,169,146,186,186, +123,108,214,108,239,127,136, 62,193,216, 92,103,119,186,164,204, 36, 25, 0,230, 1, 64, 68, 80,210, 67,155,149,117, 85,169, 36, + 50,201,192,143,187,127,235,138, 82, 92, 9,185,108, 11,214,178,224,183,245,119,188,189,110, 56, 30,255,143,199,255,157,168,219, + 11, 26, 45, 56,142, 7, 68, 61, 44,255,199,182,162, 44, 27, 0, 69, 43, 13, 84, 61, 71, 28,197,233, 90,203, 82,177,119,138, 13, + 65,169, 36, 89, 54,168, 59, 83,119,212,197,140, 20, 1, 95, 20,228,176,138,194,174, 31, 56,101,212,227, 60, 91,154, 2, 14,192, +129, 41,180,102,157, 36, 38,166, 40,170, 30,202, 65,110,117,216, 15,238,103, 16,226,192,118, 9,128,245,224, 18, 85,160,176,162, +192,208, 48, 24,234,224, 43, 11,129, 3, 42,192,209,229, 88, 28, 24,202, 4,154,188,148, 98,138,166,132,199,161,216,150,134,199, +206,120,127,156,120,125, 61,177,174, 5,197, 92, 40,215, 90,140,169, 99,180,155,251, 89, 87,243,158, 62, 3,152, 56, 0, 73, 83, +178, 65,146,112,143,111,184,203,191, 69,145,118, 15,181, 13, 44,107,242,212,193, 17,195,139,158,192,151, 15,109, 23,149,245,195, + 99, 16,240, 40,112,172,158,248,135, 0,142, 76, 12,246,232, 10,188,203,105, 51, 91,207,241,175,148,163,228,180, 35,165,128,174, +116, 53,123,186, 15, 6,100,195, 62,217,177, 34,177,157,166,221,214,148, 38,151, 41,102,185,106,228, 79,123, 76, 75,129, 37, 97, +242, 35,195,177,146,136, 20,177,238,141,227, 97,111,233, 80,152,200,181, 15,132,171,230,148,131,252,185, 68,140,114, 45,137,147, +144, 8, 5, 10, 23, 6, 23, 47, 44,137, 61,115, 90, 29,123,233,147,150,132, 72, 48,106,228, 59,120, 62, 56,245, 74,211,195,140, + 34, 65, 48, 81,181, 60,220, 28,157,146, 77, 95,199,228, 92,188, 99,225, 60,100, 52,138,197, 30,207, 28,135,254,116,248, 1,159, + 68,139,147, 91,226,115, 39, 63, 4,119,122,177,105,102,238, 3, 81,247, 54,246,162,220,177,165,220, 15,198, 62, 69,163, 49,190, +206, 91, 65, 25, 34, 25, 93, 22,115,236,150, 15,189, 6, 83,197,215, 24,242, 37, 47, 0, 53,254,178,239,143,175,110, 13,149,110, +129,185,104, 17,102,212,111,230, 65,104,215,234,122,183,158, 86,182,107,146, 28,245,194, 42, 71,219,179,169, 15, 0,132,125,245, +119, 30, 13,247,143, 29,191,126, 61,240,235,253,137,199,126, 66, 36, 19,252, 92, 85, 14, 85, 40,249,212, 79,180, 65,201, 39,162, + 91, 41,184, 31, 97,145, 69,243, 51, 36, 63,211,225, 71, 47,209,244,228,202, 13, 29, 42,227, 4, 60,233, 41,131,134,117, 93,124, +138, 97,145,226, 25,204,244, 14, 62,169,110,101,107, 32,172, 84,240,163,174, 29, 52, 35,166,254,251, 75,197,227,249,128, 54,141, +103, 93,193, 37, 24, 11, 25, 65, 77,212,215, 4,204,212,169,137,181,214,200,245,247, 36, 69, 98,160,197, 20,130, 99,146, 87,168, + 98,221,110, 56,143,134,199,227, 3,219,122,235, 46, 32,105,238, 56,106, 33,102,171,236, 12,135,125,119,140,173,193,115, 33,178, +153, 41, 4, 24, 27,254,253,175,191,240,239,127,253,117,117,133, 68, 32,132,136,225,104, 13,123,107, 80,177,142,171,229, 48, 40, + 87,168,245, 8, 77,205, 32,149,105, 31, 72,204,184,213,138,151,205,119, 15,135, 26,246,247, 59, 90, 19,135,209, 47,236,223, 40, + 1,123, 59, 32, 49, 82,113,193, 76,180,173, 77,208,142, 29,143,251, 3,239,255,249, 27,199,121,199,219,203, 11, 42, 23,220,182, + 5,191,253,252,137,219,219, 43,222, 94,111, 56,218, 59,158, 7,135, 16,103,129,178,251,104,215,117,117, 49,210, 82, 34,114,178, +160,218, 75,128,233,151,174, 88, 6,151, 56, 40, 25, 92, 43,112,138,123,216,227,129,236, 2,140, 28, 39, 70,140, 33,193,253,250, + 14,175, 58,221,243,190, 84,239, 79,204,147,219, 52,186, 61, 85,235, 25, 19, 20, 25,221, 48,237,188,104, 7, 26,132, 21,133, 9, +117, 89, 1,122,130, 72, 47,188,229, 92, 9,171,186,170, 62,223,211,133, 10,242,163, 13,178, 47,138,218, 94,201,134,152, 44,135, + 12,212, 83,210,226,251, 60, 13, 18, 68,188,231,193,168, 85,176,237, 39,238,143, 3, 47,183, 13,181, 12,190,188, 74, 67, 33,130, + 50,112,180, 36,112, 69,238,123, 86,189,113,208,149, 62,178,140,151, 19,208,247,186,156, 97, 42, 81,121,246,241, 30,212, 89, 2, +106,160, 34, 93,101,220,105,109,134,111, 83,220,124,127,102, 83, 82,150,117, 96, 70,102,165,251,191,207, 32,246, 61,114, 58, 22, +230,241, 90, 73,188, 48, 39, 73,202,199,196, 74,209, 65,105,198,216, 74, 92,195,236, 82, 39, 12,225, 52, 59,201,172,231,180,215, + 93,173, 87,248,116,152,240,244,189,135,159, 87,245,130,240, 21, 75,138, 84,116,252, 61, 76,162,244,189,190,153,116,160,195, 64, + 80, 78, 28,249, 72,171, 99, 34,104,104, 25, 56,126,207, 71,157,181,239,134, 53,198,168,158,102,154,157,188,139, 96, 11, 5, 36, + 67,100, 80,203, 84, 61,202,212,232, 83,199,168, 35,214,117, 66, 27,119,209, 88, 69,239, 10,231,188,243,121,207,126, 25,169,218, + 24,215,102, 72, 83,148,203,177,157, 41,221, 65, 66,145,205,224, 93,157,125,217,203,127, 22, 31,114, 47, 58, 8,198, 22,200,233, +188, 79,165, 63,159, 10, 23,127, 26, 8,210, 50, 72, 72, 64, 38, 61, 32, 40,237,165,196,163, 49,232,148,186, 79,182, 77,255,238, + 5,106,252, 69,205,158,215,212,136,252, 93, 51,173, 25,232,147,229,242,243,117,227, 24, 60,245,125, 58,141,113,255,117,146,193, + 93,156, 75, 23,108,201,117,234,161,145,185,127,127,238,120,127,236,248,117,127,226,227,254,196, 33, 2,179,214, 11,131,211, 12, +224,130,133, 13,133,128, 93, 21, 86,128, 82, 9, 77, 13,162,103,136, 61,227,186,112,233,158,254,101,241,116,195,243,244, 53,103, +141,244, 71,233,163,245,156,196,121,116, 55,151,130,227, 56, 70,208, 21,114,224, 73, 40,181,118, 0, 12, 68,240,178,222, 80,202, + 2,177,195, 87, 84, 34,222, 48,222, 86,188,127,124,196,132, 36, 68,204, 83,202,165, 70, 97,220, 53, 12, 57, 42,101,111, 98, 90, + 19,215, 12, 69,184,144, 30, 54,166,122,230, 16,154,109, 91,177,239,187, 55,186,111, 53,186,254,130,163, 9,246, 38,104,162, 17, + 45,189,248, 20,251, 56, 34,141,149,251, 36,131, 45,182, 23, 65,129,156, 29, 50, 94,145, 83, 76,113, 60,163, 68,196,153,235,126, + 13, 66,171,101, 64, 85, 17, 23, 49, 4, 39, 88, 99,175,107,102,193, 37, 95,240,163,250,254,235, 99,127,226,104, 2,131, 96,169, +174, 58,135,133,218,186,197, 94,182,174,254, 65, 20, 5,164,161,105,131,180, 19,231,115,199,254, 60, 60,244,254,182,130, 8,120, +253,249,134,223,254,248,137,223,255,248, 29,219, 90, 61, 87,249,136, 49, 80,169, 88,215, 23,240, 82, 81,150, 10, 57, 20,231,121, + 56,150, 50,197, 90,203, 10,170,165,211,121,206,122, 66,141,125,239, 64, 64,217, 10,240,244, 23,213,226, 74,141, 20,239,118,207, +121,153, 49,140, 0, 26, 8,135,156, 88,203,138, 98, 4, 38,141,125, 35,161,105,252,253, 56,192,136, 25, 5, 65, 35,106,205, 71, + 61,219,234,251,161, 22,195, 74, 83,212, 90,194, 51,207,240,136,144,156, 28,211, 24,141, 98,130,135,208, 36,248, 25, 89, 34,163, +187,163,129,188,205,221,147, 23, 5, 12,152,204,113,226, 16, 49, 8, 43,142,230,246,195,125, 55,220, 31,130,215,219,129,165, 16, + 42,209, 8, 31, 82,198, 34,236,157,156, 54,175, 57, 74,241,105,141,249,215, 70,210,254,120,236, 73,189,107,207,129,160,142, 32, + 29,162, 80,171,115,223, 79, 91, 80,232, 48, 65, 57,136,180, 67, 79,134,160, 39,253,215,158,248, 7,154, 20,244, 52, 70,121, 41, + 78, 67,190,152, 75,137,235,115,245,139, 11,220, 95,204,198, 83, 65,145, 88,214,208, 41,164, 62,160,112,228, 13,132,205, 14,152, + 84,253, 58,133,151,232,183,190,245, 76, 42,251,156, 62,151,147, 5, 88, 68,190,134,149, 73, 48,244, 43,131, 37, 94,195,178,199, + 96,182,216,185,122,135, 82,234,128,153,152,153, 31, 80,102, 48,153,119,203,126,208,149,220,179, 79,135,157, 98,236,255,109,142, +204,229,226,206,144,233,222, 58,140,201,119,224, 34, 45,246,235, 17,148, 17, 80, 28,228, 14, 55,178,191, 44,166, 38, 84, 70, 72, +145, 23,133,137,207,180,152,104,216, 37, 19,130,248,170,154,239,120,210,153,128, 24,208,164,204,143,176,192, 61,115,184, 0, 12, +246, 45, 7, 32,211,206, 75,117,172,109,174,104,116,138, 45, 51,137,128,167,146, 84, 50, 29,164,190,148,113, 76,209,165,152,133, +144, 74,144, 8,143, 49, 30, 63, 23,193, 65, 48,158,125,174,151,224,149,156,166,113,175, 14,198,215,247, 61,241, 87,223,119, 18, + 5,115, 90,133, 75, 84,245,119,126,126,158, 16,199, 35, 87,195,166, 92,218,196,203,170, 2,103, 83,220, 31, 39,222,223, 15,188, +127,236,120, 28,103,136, 37,253, 90,139, 26,208, 0, 98, 69, 45, 43,154,181, 32, 87, 18,106,241,213,129, 68,136, 21, 37, 27, 62, +154, 37,103, 47,240, 52, 34, 24,185, 2, 46, 36,164, 17,147, 28,222,117,170,190,107, 79, 42, 89,215,219,128,130,129, 16, 94,124, + 37,172,235, 2,131,196, 57, 6, 40, 9,182,178,130,137,112,180, 51, 72,109,220, 93, 50,184,132,128,161,187,136,208,181, 49, 20, +194, 84,233, 83,101, 3, 3,146,182, 89,191,138,219,143, 87, 80, 41,120,124,236,174, 85,130,130, 23,194,113, 42,142,125, 71,107, +242,137,101, 32,176,214, 2,124, 54,246,139,158,232, 25,110,168,224, 83,228, 57, 69, 42,145,177,233,197, 74, 90,176,105,178,132, + 18,121, 67, 91, 29, 76,224, 0,249, 6, 65, 5, 99,227,130,151,101, 65, 93, 60,138,243, 63,207,167,239,152,226,126, 44,133,177, + 70, 66,149,168, 64, 11, 67, 74,167, 19,192, 90, 67, 59, 5,164, 2,134,132,104,203, 1, 21,117, 91,177,217, 13,101, 49,252,241, +207, 63,241,251, 31,127,226,118,187,193,180,225,216, 21,173, 1,135, 24,164, 84, 44, 47, 47, 88,214, 13, 12,194, 67,119,127,105, +149, 5, 90,185, 35, 20, 77,189, 19,174,213, 71,221, 62,238,241,135,114,140,174,232,107,220,103, 79, 35, 27,244, 53,181,200, 81, + 39,194,169,138, 26,251,112, 85,129,178, 57,171, 3,132, 66,215, 66,192,163, 39,253, 97,221,234, 6,102,198, 71,123, 7,169, 0, + 92, 71,209,113,182, 62, 34, 73,241,147, 37,206, 53, 20,224,233, 57,231, 68,179, 98,234,196,227, 5,201,125,175, 76, 17,222, 16, +145,161,230, 34,183,124, 97, 22,206,113,141,224,104, 26,185, 2, 13,207,157,241,124,158,216,182, 10, 46, 26, 48, 30,134,168,248, + 8, 74,201, 17,172, 16,103,184, 43,129,217, 15,118, 19,241,240,136, 4,208, 36, 3,157, 57,152, 1,234,190,101,226, 73, 40, 54, +119, 25, 9, 18,196, 36, 20,163, 41,217, 41, 4, 57, 60,186,218,188,182, 61,217, 79, 37, 40,107, 60,249,126,237, 58,198,142,132, +174, 81, 56,240,183,182,180,194, 52,189, 99,226, 80,233,251,254,241, 2,207, 4, 45, 31,205, 79,162, 48,179, 47, 59, 76, 34,124, +107,237,235, 72,199,220,185, 50,141, 20,194,238, 81,214,169,136, 40, 35,221, 43,175, 95, 23, 90, 22,207,228,215, 12,220, 81,180, +176,153,114, 97,180,136,159, 52,230,206,119,207, 3, 63,177,147, 68, 10, 81,153,198,225, 37,240,192,177,111,132,196, 65,208,226, +179, 24, 33, 63, 29, 60, 19, 83,131, 82,188, 48,148,214, 99,112, 17,130,196, 11,122, 52,160, 80, 58, 81,187,122,198,251,236, 95, + 79,106, 97,138, 62,109,232, 25,250,100, 41,138,187,196,137,150,201,183,223,221, 6, 29,206, 19,135,201, 52, 98, 71,199, 32,167, +248,208, 15,149,252, 60,137, 72,188, 63, 98,223,101,185,174, 9, 44,175, 14, 59,105,135,252, 4,212,135,212,109, 88,221,230, 54, +225,119,241,197,199,237,107, 62, 14, 77,140,198, 97,209,133,145,243,218,194, 38, 58,224, 28, 5, 11, 30, 98,214,139,134, 37,139, + 85,238, 16,171, 57,205, 78, 97, 83,220,129, 64,245,196,243,249,196,199,251, 19,191,222, 31,184, 63, 14,156, 77,167, 66, 43,214, + 83,166,190,178, 49, 7, 72, 33,181, 60, 68,145,248,103,157,243,192, 97, 15,205, 61,120, 45,124, 33, 84,114,113,250,156, 73, 67, +154, 62,114, 76,181, 44, 11, 32,128, 74,235,255, 47,181, 67,149, 24,235, 82,163, 72,244,132,181,117, 41, 99,169,101,134, 82, 23, + 44,107,245, 3,189,233,104, 58,250,179, 53, 66,134,250,173, 73, 91, 45, 83, 56,126, 98,183, 31,244, 82, 37,128, 23,246,159, 63, +174,243,207,183, 55,112, 41,120, 62,239, 17,200,229, 41,144, 34, 59,246, 99,199,105,209,240, 22, 95, 93,138, 10,154, 74,127,235, +177, 13, 6, 72,166, 72, 22,248,159, 85, 9,177, 54, 57,228, 74,213,247,233,102,131,107,225, 34,241,177,208,227, 18,122, 35,152, +143, 85,127,108, 55,220,110, 43,192,140,231,113,224,253,126,199,126,182, 62,120,244,221,187,119, 98, 77, 37,170,126,247,100,171, + 24,246,251, 19,207,231, 30, 49,178, 14,123, 16,113,235, 13, 10, 97,251,241, 3,255,248,159,255,197,126, 54,252,252,243, 13,219, +143, 23, 87,129,198,192, 89, 34, 16,101, 89,111,216,222, 94,177,221,110,142, 30, 12,123,210,178, 84, 87,148,151,130, 90,151, 14, +138,168,225,173,231, 57, 49, 34,110,208,136, 78, 28, 35, 61, 36, 20, 36, 97, 28, 19, 13,200,149,146,254, 33,168,181,160, 44,117, + 84,181,166, 99, 23, 62,179,108, 99, 52, 93, 11, 97, 91, 23, 48, 49, 68,206,254,128, 46,203,218,177,171,246,169,226, 79, 69,102, + 2, 71, 44, 42,218,220, 53,118, 53,104, 22,145,121,216,147, 97, 90,243,197,152,209, 15, 97,183, 61,161, 87,118,173, 53, 28,231, +137,179,163, 89, 15,156,167,223,195,158, 57,175,158,149,172,131,150,226, 99, 32,139,226,109, 82, 4,107,216,165,242, 32,154, 41, + 43,157,190,214,175,179,126, 17, 55,125,206,252, 22,209, 47, 10,231,209,225,206, 73,119,218, 29, 59,170,218, 59, 45,149,152, 0, + 36,159, 96, 38,121, 1, 23,190,244, 72,221,116,143,177,246,196,167,145,229,157, 99,106,179, 1,239,193, 20, 51,154,157,178, 31, + 64,246,109, 82,218,176, 74, 77, 73,102, 70,211, 62, 29, 87, 1,217, 5,240, 97, 19, 94, 52, 69, 61, 17,233,153,105, 89,185,254, + 97,223,255,113,164,228,169,105,143, 74,189,238,149,109,250,249,228, 42, 64,163, 97,133, 34, 46,253,185,154,199,233, 57,153,224, + 72, 74,164, 46, 76,211, 81,152,230,227, 23, 19, 25,127, 41,101, 71, 54,127, 22,174, 89,252,179, 91, 33,133,118, 72, 27,159, 98, +160, 76,117, 36,103,229,139,190,135, 48,229,127, 19,200, 37, 67, 9, 47, 84,193, 16, 7, 39,103,193,139, 21,239, 62,115,202,210, +199,230,169,154, 87,111, 32,114,208,238,100, 66,185, 36, 49,186,224,138,134,150, 32,138, 44, 73,188,238, 20, 73,106,225,246,233, +125,162,141, 84,193, 47,246,203,217, 18,154, 34,102, 78,199, 15,127, 10,118,250,164,233,179,152,158,128,191, 9,198,153, 62,135, +106,190, 75,127,223,241,247,175, 59,254,254,245,192,243,233, 59,219,110,221,211, 76,104, 51,212,194,177,235,166,176,209,186,208, +210, 15,117, 30, 42,135, 32, 41, 90,144, 46,107, 41,113, 45, 16,191,230, 75,112,143,230,174,156, 8,203,178,198, 61, 26,176,155, + 20,197,114,224,192, 65, 6, 17,195,194,140,109, 89,134, 16, 25, 30, 87,206,196, 16,179,128,129,201, 39,161, 37,245, 48, 37, 34, + 23, 77,115,164, 4,142,181,147,223,251,101, 45,158,143, 1, 96,169, 91, 20,109,190,203,190,189,188, 64,196,109,162,173,157, 61, +232,232,148, 19, 71,172,164, 13, 22,186,165,224, 88, 92,110, 64, 52, 35,240,208,161, 49, 9,141,224,177, 30,119,142, 30, 23,157, +223,223, 82, 11,146,187,231,130,111,197,127, 1, 99,173, 92,242, 48,148, 43, 5, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, }; - diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index 5c83d685362..59efa01cc35 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -311,7 +311,7 @@ typedef enum eAnimChannels_SetFlag { ACHANNEL_SETFLAG_TOGGLE } eAnimChannels_SetFlag; -/* types of settings for AnimChanels */ +/* types of settings for AnimChannels */ typedef enum eAnimChannel_Settings { ACHANNEL_SETTING_SELECT = 0, ACHANNEL_SETTING_PROTECT, // warning: for drawing UI's, need to check if this is off (maybe inverse this later) @@ -418,7 +418,7 @@ short ANIM_headerUI_standard_buttons(const struct bContext *C, struct bDopeSheet /* F-MODIFIER TOOLS */ /* draw a given F-Modifier for some layout/UI-Block */ -void ANIM_uiTemplate_fmodifier_draw(struct uiLayout *layout, struct ID *id, ListBase *modifiers, struct FModifier *fcm); +void ANIM_uiTemplate_fmodifier_draw(const struct bContext *C, struct uiLayout *layout, struct ID *id, ListBase *modifiers, struct FModifier *fcm); /* ************************************************* */ /* ASSORTED TOOLS */ @@ -481,11 +481,6 @@ void ED_nla_postop_refresh(bAnimContext *ac); /* --------- anim_deps.c, animation updates -------- */ - /* generic update flush, does tagged objects only, reads from Context screen (layers) and scene */ -void ED_anim_dag_flush_update(const struct bContext *C); - /* only flush object */ -void ED_anim_object_flush_update(const struct bContext *C, struct Object *ob); - /* pose <-> action syncing */ void ANIM_action_to_pose_sync(struct Object *ob); void ANIM_pose_to_action_sync(struct Object *ob, struct ScrArea *sa); diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index 1836729e419..74f1f7e3b83 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -65,17 +65,16 @@ typedef struct EditBone their parents. Therefore any rotations specified during the animation are automatically relative to the bones' rest positions*/ int flag; - - int parNr; /* Used for retrieving values from the menu system */ + int layer; float dist, weight; float xwidth, length, zwidth; /* put them in order! transform uses this as scale */ float ease1, ease2; float rad_head, rad_tail; - short layer, segments; float oldlength; /* for envelope scaling */ - + + short segments; } EditBone; #define BONESEL_ROOT 0x10000000 @@ -107,7 +106,7 @@ void ED_armature_deselectall(struct Object *obedit, int toggle, int doundo); int ED_do_pose_selectbuffer(struct Scene *scene, struct Base *base, unsigned int *buffer, short hits, short extend); -void mouse_armature(struct bContext *C, short mval[2], int extend); +int mouse_armature(struct bContext *C, short mval[2], int extend); int join_armature_exec(struct bContext *C, struct wmOperator *op); struct Bone *get_indexed_bone (struct Object *ob, int index); float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3]); @@ -116,7 +115,8 @@ void ED_armature_sync_selection(struct ListBase *edbo); void ED_armature_validate_active(struct bArmature *arm); void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d); -EditBone *addEditBone(struct bArmature *arm, char *name); /* used by COLLADA importer */ +struct EditBone *ED_armature_edit_bone_add(struct bArmature *arm, char *name); +void ED_armature_edit_bone_remove(struct bArmature *arm, EditBone *exBone); void transform_armature_mirror_update(struct Object *obedit); void clear_armature(struct Scene *scene, struct Object *ob, char mode); @@ -165,7 +165,8 @@ void BDR_drawSketch(const struct bContext *vc); int BDR_drawSketchNames(struct ViewContext *vc); /* meshlaplacian.c */ -void harmonic_coordinates_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, +void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm, + struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); #endif /* ED_ARMATURE_H */ diff --git a/source/blender/editors/include/ED_curve.h b/source/blender/editors/include/ED_curve.h index fea684971b2..66a481ca5ac 100644 --- a/source/blender/editors/include/ED_curve.h +++ b/source/blender/editors/include/ED_curve.h @@ -50,7 +50,7 @@ void load_editNurb (struct Object *obedit); void make_editNurb (struct Object *obedit); void free_editNurb (struct Object *obedit); -void mouse_nurb (struct bContext *C, short mval[2], int extend); +int mouse_nurb (struct bContext *C, short mval[2], int extend); struct Nurb *add_nurbs_primitive(struct bContext *C, int type, int newname); diff --git a/source/blender/editors/include/ED_mball.h b/source/blender/editors/include/ED_mball.h index 6708a73e088..b21bcb0cc09 100644 --- a/source/blender/editors/include/ED_mball.h +++ b/source/blender/editors/include/ED_mball.h @@ -35,7 +35,7 @@ void ED_keymap_metaball(struct wmKeyConfig *keyconf); struct MetaElem *add_metaball_primitive(struct bContext *C, int type, int newname); -void mouse_mball(struct bContext *C, short mval[2], int extend); +int mouse_mball(struct bContext *C, short mval[2], int extend); void free_editMball(struct Object *obedit); void make_editMball(struct Object *obedit); diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index fa47426c70a..ba26104a555 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -83,6 +83,7 @@ int mesh_get_x_mirror_vert(struct Object *ob, int index); int *mesh_get_x_mirror_faces(struct Object *ob, struct EditMesh *em); int join_mesh_exec(struct bContext *C, struct wmOperator *op); +int join_mesh_shapes_exec(struct bContext *C, struct wmOperator *op); /* mesh_ops.c */ void ED_operatortypes_mesh(void); @@ -149,7 +150,7 @@ void EM_free_data_layer(struct EditMesh *em, struct CustomData *data, int type) extern unsigned int em_vertoffs, em_solidoffs, em_wireoffs; void EM_cache_x_mirror_vert(struct Object *ob, struct EditMesh *em); -void mouse_mesh(struct bContext *C, short mval[2], short extend); +int mouse_mesh(struct bContext *C, short mval[2], short extend); int EM_check_backbuf(unsigned int index); int EM_mask_init_backbuf_border(struct ViewContext *vc, short mcords[][2], short tot, short xmin, short ymin, short xmax, short ymax); void EM_free_backbuf(void); diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index f9cf6edc6ac..69b478c6dfa 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -36,6 +36,7 @@ struct bContext; struct Base; struct View3D; struct bConstraint; +struct bPoseChannel; struct KeyBlock; struct Lattice; struct Mesh; @@ -92,6 +93,7 @@ int object_data_is_libdata(struct Object *ob); /* constraints */ struct ListBase *get_active_constraints(struct Object *ob); +struct ListBase *get_constraint_lb(struct Object *ob, struct bConstraint *con, struct bPoseChannel **pchan_r); struct bConstraint *get_active_constraint(struct Object *ob); void object_test_constraints(struct Object *ob); @@ -102,7 +104,7 @@ void ED_object_constraint_update(struct Object *ob); void ED_object_constraint_dependency_update(struct Scene *scene, struct Object *ob); /* object_lattice.c */ -void mouse_lattice(struct bContext *C, short mval[2], int extend); +int mouse_lattice(struct bContext *C, short mval[2], int extend); void undo_push_lattice(struct bContext *C, char *name); /* object_shapekey.c */ @@ -114,12 +116,17 @@ void key_to_curve(struct KeyBlock *kb, struct Curve *cu, struct ListBase *nurb) void curve_to_key(struct Curve *cu, struct KeyBlock *kb, struct ListBase *nurb); /* object_modifier.c */ -int ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, int type); +enum { + MODIFIER_APPLY_DATA=1, + MODIFIER_APPLY_SHAPE, +} eModifier_Apply_Mode; + +struct ModifierData *ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, char *name, int type); int ED_object_modifier_remove(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md); int ED_object_modifier_move_down(struct ReportList *reports, struct Object *ob, struct ModifierData *md); int ED_object_modifier_move_up(struct ReportList *reports, struct Object *ob, struct ModifierData *md); int ED_object_modifier_convert(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md); -int ED_object_modifier_apply(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md); +int ED_object_modifier_apply(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md, int mode); int ED_object_modifier_copy(struct ReportList *reports, struct Object *ob, struct ModifierData *md); #endif /* ED_OBJECT_H */ diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 18c86306e44..fb708e4d1c7 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -152,6 +152,7 @@ int ED_operator_posemode(struct bContext *C); #define ED_KEYMAP_ANIMATION 8 #define ED_KEYMAP_FRAMES 16 #define ED_KEYMAP_GPENCIL 32 +#define ED_KEYMAP_HEADER 64 #endif /* ED_SCREEN_H */ diff --git a/source/blender/editors/include/ED_screen_types.h b/source/blender/editors/include/ED_screen_types.h index dcdc9e417e4..0deda5a2a84 100644 --- a/source/blender/editors/include/ED_screen_types.h +++ b/source/blender/editors/include/ED_screen_types.h @@ -32,8 +32,9 @@ /* for animplayer */ typedef struct ScreenAnimData { ARegion *ar; /* do not read from this, only for comparing if region exists */ - int redraws; - int flag; /* flags for playback */ + short redraws; + short flag; /* flags for playback */ + int sfra; /* frame that playback was started from */ } ScreenAnimData; /* for animplayer */ @@ -49,7 +50,7 @@ enum { }; - +/* for editing areas/regions */ typedef struct AZone { struct AZone *next, *prev; ARegion *ar; diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h index 0f17599daae..065867a3bb3 100644 --- a/source/blender/editors/include/ED_transform.h +++ b/source/blender/editors/include/ED_transform.h @@ -135,7 +135,7 @@ void BIF_selectOrientation(void); /* to be able to add operator properties to other operators */ void Properties_Proportional(struct wmOperatorType *ot); -void Properties_Snapping(struct wmOperatorType *ot, short align); +void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align); void Properties_Constraints(struct wmOperatorType *ot); /* view3d manipulators */ diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h index a3dd6426f99..b9d5e98b88e 100644 --- a/source/blender/editors/include/UI_icons.h +++ b/source/blender/editors/include/UI_icons.h @@ -394,18 +394,18 @@ DEF_ICON(ICON_BLANK654) DEF_ICON(ICON_BLANK655) /* EMPTY */ -DEF_ICON(ICON_BLANK660) -DEF_ICON(ICON_BLANK661) -DEF_ICON(ICON_BLANK662) -DEF_ICON(ICON_BLANK663) -DEF_ICON(ICON_BLANK664) -DEF_ICON(ICON_BLANK665) -DEF_ICON(ICON_BLANK666) -DEF_ICON(ICON_BLANK667) -DEF_ICON(ICON_BLANK668) -DEF_ICON(ICON_BLANK669) -DEF_ICON(ICON_BLANK670) -DEF_ICON(ICON_BLANK671) +DEF_ICON(ICON_FORCE_FORCE) +DEF_ICON(ICON_FORCE_WIND) +DEF_ICON(ICON_FORCE_VORTEX) +DEF_ICON(ICON_FORCE_MAGNETIC) +DEF_ICON(ICON_FORCE_HARMONIC) +DEF_ICON(ICON_FORCE_CHARGE) +DEF_ICON(ICON_FORCE_LENNARDJONES) +DEF_ICON(ICON_FORCE_TEXTURE) +DEF_ICON(ICON_FORCE_CURVE) +DEF_ICON(ICON_FORCE_BOID) +DEF_ICON(ICON_FORCE_TURBULENCE) +DEF_ICON(ICON_FORCE_DRAG) DEF_ICON(ICON_BLANK672) DEF_ICON(ICON_BLANK673) DEF_ICON(ICON_BLANK674) @@ -641,19 +641,19 @@ DEF_ICON(ICON_PROP_OFF) DEF_ICON(ICON_PROP_ON) DEF_ICON(ICON_PROP_CON) DEF_ICON(ICON_BLANK212) -DEF_ICON(ICON_BLANK213) -DEF_ICON(ICON_BLANK214) -DEF_ICON(ICON_BLANK214b) +DEF_ICON(ICON_PARTICLE_POINT) +DEF_ICON(ICON_PARTICLE_TIP) +DEF_ICON(ICON_PARTICLE_PATH) /* EDITING */ DEF_ICON(ICON_MAN_TRANS) DEF_ICON(ICON_MAN_ROT) DEF_ICON(ICON_MAN_SCALE) DEF_ICON(ICON_MANIPUL) -DEF_ICON(ICON_BLANK215) -DEF_ICON(ICON_SNAP_GEAR) -DEF_ICON(ICON_SNAP_GEO) +DEF_ICON(ICON_SNAP_OFF) +DEF_ICON(ICON_SNAP_ON) DEF_ICON(ICON_SNAP_NORMAL) +DEF_ICON(ICON_SNAP_INCREMENT) DEF_ICON(ICON_SNAP_VERTEX) DEF_ICON(ICON_SNAP_EDGE) DEF_ICON(ICON_SNAP_FACE) @@ -709,7 +709,7 @@ DEF_ICON(ICON_SMOOTH) DEF_ICON(ICON_POTATO) DEF_ICON(ICON_BLANK248) DEF_ICON(ICON_ORTHO) -DEF_ICON(ICON_BLANK249) +DEF_ICON(ICON_ORTHO_OFF) DEF_ICON(ICON_CAMERA) DEF_ICON(ICON_LOCKVIEW_OFF) DEF_ICON(ICON_LOCKVIEW_ON) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 82ff756f601..608954eeed8 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -214,6 +214,7 @@ typedef struct uiLayout uiLayout; #define LISTBOX (43<<9) #define LISTROW (44<<9) #define HOTKEYEVT (45<<9) +#define BUT_IMAGE (46<<9) #define BUTTYPE (63<<9) @@ -271,6 +272,8 @@ void uiPupBlock(struct bContext *C, uiBlockCreateFunc func, void *arg); void uiPupBlockO(struct bContext *C, uiBlockCreateFunc func, void *arg, char *opname, int opcontext); void uiPupBlockOperator(struct bContext *C, uiBlockCreateFunc func, struct wmOperator *op, int opcontext); +void uiPupBlockClose(struct bContext *C, uiBlock *block); + /* Blocks * * Functions for creating, drawing and freeing blocks. A Block is a @@ -303,10 +306,20 @@ void uiBlockClearButLock(uiBlock *block); void uiBlockBeginAlign(uiBlock *block); void uiBlockEndAlign(uiBlock *block); +/* block bounds/position calculation */ +enum { + UI_BLOCK_BOUNDS=1, + UI_BLOCK_BOUNDS_TEXT, + UI_BLOCK_BOUNDS_POPUP_MOUSE, + UI_BLOCK_BOUNDS_POPUP_MENU, + UI_BLOCK_BOUNDS_POPUP_CENTER, +} eBlockBoundsCalc; + void uiBoundsBlock(struct uiBlock *block, int addval); void uiTextBoundsBlock(uiBlock *block, int addval); void uiPopupBoundsBlock(uiBlock *block, int addval, int mx, int my); void uiMenuPopupBoundsBlock(uiBlock *block, int addvall, int mx, int my); +void uiCenteredBoundsBlock(uiBlock *block, int addval); int uiBlocksGetYMin (struct ListBase *lb); @@ -532,7 +545,8 @@ void uiEndPanel(uiBlock *block, int width, int height); void UI_add_region_handlers(struct ListBase *handlers); void UI_add_area_handlers(struct ListBase *handlers); -void UI_add_popup_handlers(struct bContext *C, struct ListBase *handlers, uiPopupBlockHandle *menu); +void UI_add_popup_handlers(struct bContext *C, struct ListBase *handlers, uiPopupBlockHandle *popup); +void UI_remove_popup_handlers(struct ListBase *handlers, uiPopupBlockHandle *popup); /* Module * @@ -560,6 +574,7 @@ void UI_exit(void); #define UI_LAYOUT_PANEL 0 #define UI_LAYOUT_HEADER 1 #define UI_LAYOUT_MENU 2 +#define UI_LAYOUT_TOOLBAR 3 #define UI_UNIT_X 20 #define UI_UNIT_Y 20 @@ -585,6 +600,7 @@ uiBlock *uiLayoutGetBlock(uiLayout *layout); void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv); void uiLayoutSetContextPointer(uiLayout *layout, char *name, struct PointerRNA *ptr); +char *uiLayoutIntrospect(uiLayout *layout); // XXX - testing void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext); void uiLayoutSetActive(uiLayout *layout, int active); @@ -632,7 +648,8 @@ void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struc void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels); void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname); -void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname); +void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname, + PointerRNA *used_ptr, char *used_propname, int active_layer); void uiTemplateImage(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *userptr, int compact); void uiTemplateImageLayers(uiLayout *layout, struct bContext *C, struct Image *ima, struct ImageUser *iuser); void uiTemplateRunningJobs(uiLayout *layout, struct bContext *C); diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index b9f80946345..23ad50d448b 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -313,7 +313,30 @@ void ui_bounds_block(uiBlock *block) block->safety.ymax= block->maxy+xof; } -static void ui_popup_bounds_block(const bContext *C, uiBlock *block, int menu) +static void ui_centered_bounds_block(const bContext *C, uiBlock *block) +{ + wmWindow *window= CTX_wm_window(C); + int xmax, ymax; + int startx, starty; + int width, height; + + wm_window_get_size(window, &xmax, &ymax); + + ui_bounds_block(block); + + width= block->maxx - block->minx; + height= block->maxy - block->miny; + + startx = (xmax * 0.5f) - (width * 0.5f); + starty = (ymax * 0.5f) - (height * 0.5f); + + ui_block_translate(block, startx - block->minx, starty - block->miny); + + /* now recompute bounds and safety */ + ui_bounds_block(block); + +} +static void ui_popup_bounds_block(const bContext *C, uiBlock *block, int bounds_calc) { wmWindow *window= CTX_wm_window(C); int startx, starty, endx, endy, width, height; @@ -323,13 +346,14 @@ static void ui_popup_bounds_block(const bContext *C, uiBlock *block, int menu) /* compute mouse position with user defined offset */ ui_bounds_block(block); - mx= window->eventstate->x + block->minx + block->mx; - my= window->eventstate->y + block->miny + block->my; - + wm_window_get_size(window, &xmax, &ymax); + mx= window->eventstate->x + block->minx + block->mx; + my= window->eventstate->y + block->miny + block->my; + /* first we ensure wide enough text bounds */ - if(menu) { + if(bounds_calc==UI_BLOCK_BOUNDS_POPUP_MENU) { if(block->flag & UI_BLOCK_LOOP) { block->bounds= 50; ui_text_bounds_block(block, block->minx); @@ -377,21 +401,21 @@ void uiBoundsBlock(uiBlock *block, int addval) return; block->bounds= addval; - block->dobounds= 1; + block->dobounds= UI_BLOCK_BOUNDS; } /* used for pulldowns */ void uiTextBoundsBlock(uiBlock *block, int addval) { block->bounds= addval; - block->dobounds= 2; + block->dobounds= UI_BLOCK_BOUNDS_TEXT; } /* used for block popups */ void uiPopupBoundsBlock(uiBlock *block, int addval, int mx, int my) { block->bounds= addval; - block->dobounds= 3; + block->dobounds= UI_BLOCK_BOUNDS_POPUP_MOUSE; block->mx= mx; block->my= my; } @@ -400,11 +424,18 @@ void uiPopupBoundsBlock(uiBlock *block, int addval, int mx, int my) void uiMenuPopupBoundsBlock(uiBlock *block, int addval, int mx, int my) { block->bounds= addval; - block->dobounds= 4; + block->dobounds= UI_BLOCK_BOUNDS_POPUP_MENU; block->mx= mx; block->my= my; } +/* used for centered popups, i.e. splash */ +void uiCenteredBoundsBlock(uiBlock *block, int addval) +{ + block->bounds= addval; + block->dobounds= UI_BLOCK_BOUNDS_POPUP_CENTER; +} + /* ************** LINK LINE DRAWING ************* */ /* link line drawing is not part of buttons or theme.. so we stick with it here */ @@ -627,9 +658,10 @@ void uiEndBlock(const bContext *C, uiBlock *block) if(block->flag & UI_BLOCK_LOOP) ui_menu_block_set_keymaps(C, block); /* after keymaps! */ - if(block->dobounds == 1) ui_bounds_block(block); - else if(block->dobounds == 2) ui_text_bounds_block(block, 0.0f); - else if(block->dobounds) ui_popup_bounds_block(C, block, (block->dobounds == 4)); + if(block->dobounds == UI_BLOCK_BOUNDS) ui_bounds_block(block); + else if(block->dobounds == UI_BLOCK_BOUNDS_TEXT) ui_text_bounds_block(block, 0.0f); + else if(block->dobounds == UI_BLOCK_BOUNDS_POPUP_CENTER) ui_centered_bounds_block(C, block); + else if(block->dobounds) ui_popup_bounds_block(C, block, block->dobounds); if(block->minx==0.0 && block->maxx==0.0) uiBoundsBlock(block, 0); if(block->flag & UI_BUT_ALIGN) uiBlockEndAlign(block); @@ -1928,7 +1960,7 @@ void ui_check_but(uiBut *but) sprintf(but->drawstr, "%s%.2f", but->str, value); } } - else strcpy(but->drawstr, but->str); + else strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); break; @@ -1946,7 +1978,7 @@ void ui_check_but(uiBut *but) break; case KEYEVT: - strcpy(but->drawstr, but->str); + strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); if (but->flag & UI_SELECT) { strcat(but->drawstr, "Press a key"); } else { @@ -1959,9 +1991,9 @@ void ui_check_but(uiBut *but) short *sp= (short *)but->func_arg3; if(but->flag & UI_BUT_IMMEDIATE) - strcpy(but->drawstr, but->str); + strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); else - strcpy(but->drawstr, ""); + strncpy(but->drawstr, "", UI_MAX_DRAW_STR); if(*sp) { char *str= but->drawstr; @@ -1979,25 +2011,25 @@ void ui_check_but(uiBut *but) strcat(but->drawstr, "Press a key "); } else - strcpy(but->drawstr, but->str); + strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); break; case BUT_TOGDUAL: /* trying to get the dual-icon to left of text... not very nice */ if(but->str[0]) { - strcpy(but->drawstr, " "); - strcpy(but->drawstr+2, but->str); + strncpy(but->drawstr, " ", UI_MAX_DRAW_STR); + strncpy(but->drawstr+2, but->str, UI_MAX_DRAW_STR-2); } break; default: - strcpy(but->drawstr, but->str); + strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); } /* if we are doing text editing, this will override the drawstr */ if(but->editstr) - strcpy(but->drawstr, but->editstr); + strncpy(but->drawstr, but->editstr, UI_MAX_DRAW_STR); /* text clipping moved to widget drawing code itself */ } @@ -2203,6 +2235,7 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short but->bit= type & BIT; but->bitnr= type & 31; but->icon = 0; + but->iconadd=0; but->retval= retval; if( strlen(str)>=UI_MAX_NAME_STR-1 ) { @@ -2931,7 +2964,7 @@ PointerRNA *uiButGetOperatorPtrRNA(uiBut *but) { if(but->optype && !but->opptr) { but->opptr= MEM_callocN(sizeof(PointerRNA), "uiButOpPtr"); - WM_operator_properties_create(but->opptr, but->optype->idname); + WM_operator_properties_create_ptr(but->opptr, but->optype); } return but->opptr; diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index d2948852346..0925598cc99 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -189,25 +189,25 @@ void uiAnimContextProperty(const bContext *C, struct PointerRNA *ptr, struct Pro void ui_but_anim_insert_keyframe(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_insert_keyframe_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_keyframe_insert_button", WM_OP_INVOKE_DEFAULT, NULL); } void ui_but_anim_delete_keyframe(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_delete_keyframe_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_keyframe_delete_button", WM_OP_INVOKE_DEFAULT, NULL); } void ui_but_anim_add_driver(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_add_driver_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_driver_button_add", WM_OP_INVOKE_DEFAULT, NULL); } void ui_but_anim_remove_driver(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_remove_driver_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_driver_button_remove", WM_OP_INVOKE_DEFAULT, NULL); } void ui_but_anim_copy_driver(bContext *C) @@ -225,11 +225,11 @@ void ui_but_anim_paste_driver(bContext *C) void ui_but_anim_add_keyingset(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_add_keyingset_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_keyingset_button_add", WM_OP_INVOKE_DEFAULT, NULL); } void ui_but_anim_remove_keyingset(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_remove_keyingset_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_keyingset_button_remove", WM_OP_INVOKE_DEFAULT, NULL); } diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index a233a84e6c8..762ec541bff 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -43,6 +43,9 @@ #include "BKE_texture.h" #include "BKE_utildefines.h" +#include "IMB_imbuf.h" +#include "IMB_imbuf_types.h" + #include "BIF_gl.h" #include "BIF_glutil.h" @@ -458,8 +461,47 @@ void uiEmboss(float x1, float y1, float x2, float y2, int sel) } -/* ************** TEXT AND ICON DRAWING FUNCTIONS ************* */ +/* ************** SPECIAL BUTTON DRAWING FUNCTIONS ************* */ +void ui_draw_but_IMAGE(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *rect) +{ + extern char datatoc_splash_png[]; + extern int datatoc_splash_png_size; + ImBuf *ibuf; + //GLint scissor[4]; + //int w, h; + + /* hardcoded to splash, loading and freeing every draw, eek! */ + ibuf= IMB_ibImageFromMemory((int *)datatoc_splash_png, datatoc_splash_png_size, IB_rect); + + if (!ibuf) return; + + /* scissor doesn't seem to be doing the right thing...? + //glColor4f(1.0, 0.f, 0.f, 1.f); + //fdrawbox(rect->xmin, rect->ymin, rect->xmax, rect->ymax) + + w = (rect->xmax - rect->xmin); + h = (rect->ymax - rect->ymin); + // prevent drawing outside widget area + glGetIntegerv(GL_SCISSOR_BOX, scissor); + glScissor(ar->winrct.xmin + rect->xmin, ar->winrct.ymin + rect->ymin, w, h); + */ + + glEnable(GL_BLEND); + glColor4f(0.0, 0.0, 0.0, 0.0); + + glaDrawPixelsSafe((float)rect->xmin, (float)rect->ymin, ibuf->x, ibuf->y, ibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, ibuf->rect); + //glaDrawPixelsTex((float)rect->xmin, (float)rect->ymin, ibuf->x, ibuf->y, GL_UNSIGNED_BYTE, ibuf->rect); + + glDisable(GL_BLEND); + + /* + // restore scissortest + glScissor(scissor[0], scissor[1], scissor[2], scissor[3]); + */ + + IMB_freeImBuf(ibuf); +} #if 0 #ifdef INTERNATIONAL diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index fb4438455bd..6d65a2a57a1 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -183,8 +183,6 @@ typedef struct uiAfterFunc { static int ui_mouse_inside_button(ARegion *ar, uiBut *but, int x, int y); static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState state); static int ui_handler_region_menu(bContext *C, wmEvent *event, void *userdata); -static int ui_handler_popup(bContext *C, wmEvent *event, void *userdata); -static void ui_handler_remove_popup(bContext *C, void *userdata); static void ui_handle_button_activate(bContext *C, ARegion *ar, uiBut *but, uiButtonActivateType type); static void button_timers_tooltip_remove(bContext *C, uiBut *but); @@ -754,6 +752,13 @@ static void ui_apply_but_LINK(bContext *C, uiBut *but, uiHandleButtonData *data) data->applied= 1; } +static void ui_apply_but_IMAGE(bContext *C, uiBut *but, uiHandleButtonData *data) +{ + ui_apply_but_func(C, but); + + data->retval= but->retval; + data->applied= 1; +} static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, int interactive) { @@ -874,6 +879,9 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut case INLINK: ui_apply_but_LINK(C, but, data); break; + case BUT_IMAGE: + ui_apply_but_IMAGE(C, but, data); + break; default: break; } @@ -1051,24 +1059,16 @@ static short test_special_char(char ch) static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data) { - char *str; - int x, changed; - - str= data->str; - changed= (but->selsta != but->selend); - - for(x=0; x< strlen(str); x++) { - if (but->selend + x <= strlen(str) ) { - str[but->selsta + x]= str[but->selend + x]; - } else { - str[but->selsta + x]= '\0'; - break; - } + char *str= data->str; + int len= strlen(str); + int change= 0; + if(but->selsta != but->selend && len) { + memmove( str+but->selsta, str+but->selend, len+1 ); + change= 1; } - + but->pos = but->selend = but->selsta; - - return changed; + return change; } static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, short x) @@ -1357,8 +1357,10 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste buf[i]= 0; /* paste over the current selection */ - if ((but->selend - but->selsta) > 0) + if ((but->selend - but->selsta) > 0) { ui_textedit_delete_selection(but, data); + len= strlen(str); + } for (y=0; y<strlen(buf); y++) { @@ -3356,7 +3358,7 @@ static uiBlock *menu_change_hotkey(bContext *C, ARegion *ar, void *arg_but) dummy[1]= 0; block= uiBeginBlock(C, ar, "_popup", UI_EMBOSSP); - uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_MOVEMOUSE_QUIT|UI_BLOCK_RET_1); + uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_MOVEMOUSE_QUIT|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT); BLI_strncpy(buf, ot->name, OP_MAX_TYPENAME); strcat(buf, " |"); @@ -3401,24 +3403,24 @@ static int ui_but_menu(bContext *C, uiBut *but) /* Keyframes */ if(but->flag & UI_BUT_ANIMATED_KEY) { if(length) { - uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1); - uiItemBooleanO(layout, "Replace Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); - uiItemBooleanO(layout, "Delete Keyframes", 0, "ANIM_OT_delete_keyframe_button", "all", 1); - uiItemBooleanO(layout, "Delete Single Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0); + uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_keyframe_insert_button", "all", 1); + uiItemBooleanO(layout, "Replace Single Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0); + uiItemBooleanO(layout, "Delete Keyframes", 0, "ANIM_OT_keyframe_delete_button", "all", 1); + uiItemBooleanO(layout, "Delete Single Keyframe", 0, "ANIM_OT_keyframe_delete_button", "all", 0); } else { - uiItemBooleanO(layout, "Replace Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); - uiItemBooleanO(layout, "Delete Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0); + uiItemBooleanO(layout, "Replace Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0); + uiItemBooleanO(layout, "Delete Keyframe", 0, "ANIM_OT_keyframe_delete_button", "all", 0); } } else if(but->flag & UI_BUT_DRIVEN); else if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) { if(length) { - uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1); - uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); + uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_keyframe_insert_button", "all", 1); + uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0); } else - uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); + uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0); } /* Drivers */ @@ -3426,11 +3428,11 @@ static int ui_but_menu(bContext *C, uiBut *but) uiItemS(layout); if(length) { - uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_remove_driver_button", "all", 1); - uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_remove_driver_button", "all", 0); + uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_driver_button_remove", "all", 1); + uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_driver_button_remove", "all", 0); } else - uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_remove_driver_button", "all", 0); + uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_driver_button_remove", "all", 0); uiItemO(layout, "Copy Driver", 0, "ANIM_OT_copy_driver_button"); if (ANIM_driver_can_paste()) @@ -3441,11 +3443,11 @@ static int ui_but_menu(bContext *C, uiBut *but) uiItemS(layout); if(length) { - uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_add_driver_button", "all", 1); - uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_add_driver_button", "all", 0); + uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_driver_button_add", "all", 1); + uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_driver_button_add", "all", 0); } else - uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_add_driver_button", "all", 0); + uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_driver_button_add", "all", 0); if (ANIM_driver_can_paste()) uiItemO(layout, "Paste Driver", 0, "ANIM_OT_paste_driver_button"); @@ -3456,13 +3458,13 @@ static int ui_but_menu(bContext *C, uiBut *but) uiItemS(layout); if(length) { - uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 1); - uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0); - uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button"); + uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 1); + uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 0); + uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_keyingset_button_remove"); } else { - uiItemBooleanO(layout, "Add to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0); - uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button"); + uiItemBooleanO(layout, "Add to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 0); + uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_keyingset_button_remove"); } } @@ -3497,7 +3499,7 @@ static int ui_but_menu(bContext *C, uiBut *but) RNA_string_set(&ptr_props, "doc_id", buf); RNA_string_set(&ptr_props, "doc_new", RNA_property_description(but->rnaprop)); - uiItemFullO(layout, "Edit Docs (TODO)", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0); + uiItemFullO(layout, "Submit Description", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0); } else if (but->optype) { WM_operator_py_idname(buf, but->optype->idname); @@ -3511,7 +3513,7 @@ static int ui_but_menu(bContext *C, uiBut *but) RNA_string_set(&ptr_props, "doc_id", buf); RNA_string_set(&ptr_props, "doc_new", but->optype->description); - uiItemFullO(layout, "Edit Docs (TODO)", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0); + uiItemFullO(layout, "Submit Description", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0); } } @@ -3647,6 +3649,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) case TOG3: case ROW: case LISTROW: + case BUT_IMAGE: retval= ui_do_but_EXIT(C, but, data, event); break; case TEX: @@ -4982,7 +4985,7 @@ static int ui_handler_popup(bContext *C, wmEvent *event, void *userdata) uiPopupBlockHandle temp= *menu; ui_popup_block_free(C, menu); - WM_event_remove_ui_handler(&CTX_wm_window(C)->modalhandlers, ui_handler_popup, ui_handler_remove_popup, menu); + UI_remove_popup_handlers(&CTX_wm_window(C)->modalhandlers, menu); if(temp.menuretval == UI_RETURN_OK) { if(temp.popup_func) @@ -5023,8 +5026,14 @@ void UI_add_region_handlers(ListBase *handlers) WM_event_add_ui_handler(NULL, handlers, ui_handler_region, ui_handler_remove_region, NULL); } -void UI_add_popup_handlers(bContext *C, ListBase *handlers, uiPopupBlockHandle *menu) +void UI_add_popup_handlers(bContext *C, ListBase *handlers, uiPopupBlockHandle *popup) +{ + WM_event_add_ui_handler(C, handlers, ui_handler_popup, ui_handler_remove_popup, popup); +} + +void UI_remove_popup_handlers(ListBase *handlers, uiPopupBlockHandle *popup) { - WM_event_add_ui_handler(C, handlers, ui_handler_popup, ui_handler_remove_popup, menu); + WM_event_remove_ui_handler(handlers, ui_handler_popup, ui_handler_remove_popup, popup); } + diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 3c3b289a945..21425bbb261 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -427,6 +427,7 @@ extern void gl_round_box_vertical_shade(int mode, float minx, float miny, float void ui_draw_but_COLORBAND(uiBut *but, struct uiWidgetColors *wcol, rcti *rect); void ui_draw_but_NORMAL(uiBut *but, struct uiWidgetColors *wcol, rcti *rect); void ui_draw_but_CURVE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect); +void ui_draw_but_IMAGE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect); /* interface_handlers.c */ diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 53ccc253b99..d46cb4df1c0 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -629,7 +629,11 @@ PointerRNA uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, IDP but= uiDefIconButO(block, BUT, ot->idname, context, icon, 0, 0, w, UI_UNIT_Y, NULL); else but= uiDefButO(block, BUT, ot->idname, context, (char*)name, 0, 0, w, UI_UNIT_Y, NULL); - + + /* text alignment for toolbar buttons */ + if((layout->root->type == UI_LAYOUT_TOOLBAR) && !icon) + but->flag |= UI_TEXT_LEFT; + /* assign properties */ if(properties || (flag & UI_ITEM_O_RETURN_PROPS)) { PointerRNA *opptr= uiButGetOperatorPtrRNA(but); @@ -2450,3 +2454,89 @@ void uiLayoutSetContextPointer(uiLayout *layout, char *name, PointerRNA *ptr) layout->context= CTX_store_add(&block->contexts, name, ptr); } + +/* introspect funcs */ +#include "BLI_dynstr.h" + +static void ui_intro_button(DynStr *ds, uiButtonItem *bitem) +{ + uiBut *but = bitem->but; + BLI_dynstr_appendf(ds, "'type':%d, ", but->type); /* see ~ UI_interface.h:200 */ + BLI_dynstr_appendf(ds, "'draw_string':'''%s''', ", but->drawstr); + BLI_dynstr_appendf(ds, "'tip':'''%s''', ", but->tip ? but->tip : ""); // not exactly needed, rna has this + + if(but->optype) { + char *opstr = WM_operator_pystring(but->block->evil_C, but->optype, but->opptr, 0); + BLI_dynstr_appendf(ds, "'operator':'''%s''', ", opstr ? opstr : ""); + MEM_freeN(opstr); + } + + if(but->rnaprop) { + BLI_dynstr_appendf(ds, "'rna':'%s.%s[%d]', ", RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop), but->rnaindex); + } + +} + +static void ui_intro_items(DynStr *ds, ListBase *lb) +{ + uiItem *item; + + BLI_dynstr_append(ds, "["); + + for(item=lb->first; item; item=item->next) { + + BLI_dynstr_append(ds, "{"); + + /* could also use the INT but this is nicer*/ + switch(item->type) { + case ITEM_BUTTON: BLI_dynstr_append(ds, "'type':'BUTTON', ");break; + case ITEM_LAYOUT_ROW: BLI_dynstr_append(ds, "'type':'ROW', "); break; + case ITEM_LAYOUT_COLUMN: BLI_dynstr_append(ds, "'type':'COLUMN', "); break; + case ITEM_LAYOUT_COLUMN_FLOW:BLI_dynstr_append(ds, "'type':'COLUMN_FLOW', "); break; + case ITEM_LAYOUT_ROW_FLOW: BLI_dynstr_append(ds, "'type':'ROW_FLOW', "); break; + case ITEM_LAYOUT_BOX: BLI_dynstr_append(ds, "'type':'BOX', "); break; + case ITEM_LAYOUT_ABSOLUTE: BLI_dynstr_append(ds, "'type':'ABSOLUTE', "); break; + case ITEM_LAYOUT_SPLIT: BLI_dynstr_append(ds, "'type':'SPLIT', "); break; + case ITEM_LAYOUT_OVERLAP: BLI_dynstr_append(ds, "'type':'OVERLAP', "); break; + case ITEM_LAYOUT_ROOT: BLI_dynstr_append(ds, "'type':'ROOT', "); break; + default: BLI_dynstr_append(ds, "'type':'UNKNOWN', "); break; + } + + switch(item->type) { + case ITEM_BUTTON: + ui_intro_button(ds, (uiButtonItem *)item); + break; + default: + BLI_dynstr_append(ds, "'items':"); + ui_intro_items(ds, &((uiLayout*)item)->items); + break; + } + + BLI_dynstr_append(ds, "}"); + + if(item != lb->last) + BLI_dynstr_append(ds, ", "); + } + BLI_dynstr_append(ds, "], "); +} + +static void ui_intro_uiLayout(DynStr *ds, uiLayout *layout) +{ + ui_intro_items(ds, &layout->items); +} + +static char *str = NULL; // XXX, constant re-freeing, far from ideal. +char *uiLayoutIntrospect(uiLayout *layout) +{ + DynStr *ds= BLI_dynstr_new(); + + if(str) + MEM_freeN(str); + + ui_intro_uiLayout(ds, layout); + + str = BLI_dynstr_get_cstring(ds); + BLI_dynstr_free(ds); + + return str; +} diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 388b83cff11..c3eac3f3893 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1303,7 +1303,7 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut bt->y2 -= ar->winrct.ymin; } - block->flag |= UI_BLOCK_LOOP|UI_BLOCK_MOVEMOUSE_QUIT; + block->flag |= UI_BLOCK_LOOP; /* adds subwindow */ ED_region_init(C, ar); @@ -1321,9 +1321,7 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut void ui_popup_block_free(bContext *C, uiPopupBlockHandle *handle) { - /* XXX ton added, chrash on load file with popup open... need investigate */ - if(CTX_wm_screen(C)) - ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region); + ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region); MEM_freeN(handle); } @@ -1340,6 +1338,8 @@ static void ui_block_func_MENUSTR(bContext *C, uiLayout *layout, void *arg_str) char *instr= arg_str; int columns, rows, a, b; + uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT); + /* compute menu data */ md= decompose_menu_string(instr); @@ -1416,6 +1416,8 @@ void ui_block_func_ICONROW(bContext *C, uiLayout *layout, void *arg_but) uiBut *but= arg_but; int a; + uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT); + for(a=(int)but->hardmin; a<=(int)but->hardmax; a++) uiDefIconButF(block, BUTM|FLO, B_NOP, but->icon+(a-but->hardmin), 0, 0, UI_UNIT_X*5, UI_UNIT_Y, &handle->retvalue, (float)a, 0.0, 0, 0, ""); @@ -1429,6 +1431,8 @@ void ui_block_func_ICONTEXTROW(bContext *C, uiLayout *layout, void *arg_but) MenuData *md; MenuEntry *entry; int a; + + uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT); md= decompose_menu_string(but->str); @@ -1996,6 +2000,8 @@ uiBlock *ui_block_func_COL(bContext *C, uiPopupBlockHandle *handle, void *arg_bu block= uiBeginBlock(C, handle->region, "colorpicker", UI_EMBOSS); + uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT); + VECCOPY(handle->retvec, but->editvec); if(win->eventstate->shift) { uiBlockPickerButtons(block, handle->retvec, hsvcol, oldcol, hexcol, 'p', 0); @@ -2197,6 +2203,8 @@ static uiBlock *ui_block_func_POPUP(bContext *C, uiPopupBlockHandle *handle, voi uiBlockLayoutResolve(block, NULL, NULL); + uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT); + if(pup->popup) { uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_REDRAW|UI_BLOCK_NUMSELECT|UI_BLOCK_RET_1); uiBlockSetDirection(block, direction); @@ -2550,3 +2558,11 @@ void uiPupBlockOperator(bContext *C, uiBlockCreateFunc func, wmOperator *op, int WM_event_add_mousemove(C); } +void uiPupBlockClose(bContext *C, uiBlock *block) +{ + if(block->handle) { + UI_remove_popup_handlers(&CTX_wm_window(C)->modalhandlers, block->handle); + ui_popup_block_free(C, block->handle); + } +} + diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index dbf5eb1d0ea..9402da2f2c6 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -656,7 +656,7 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i uiLayout *box; box= uiLayoutBox(column); - row= uiLayoutRow(box, 1); + row= uiLayoutRow(box, 0); if(!isVirtual && (md->type!=eModifierType_Collision) && (md->type!=eModifierType_Surface)) { /* only here obdata, the rest of modifiers is ob level */ @@ -669,8 +669,12 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i 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 - uiItemO(row, "Apply", 0, "OBJECT_OT_modifier_apply"); + else + uiItemEnumO(row, "Apply", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_DATA); + + if (modifier_sameTopology(md)) + uiItemEnumO(row, "Apply as Shape", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_SHAPE); + uiBlockClearButLock(block); uiBlockSetButLock(block, ob && ob->id.lib, ERROR_LIBDATA_MESSAGE); @@ -1874,51 +1878,94 @@ void uiTemplateTriColorSet(uiLayout *layout, PointerRNA *ptr, char *propname) /********************* Layer Buttons Template ************************/ +static void handle_layer_buttons(bContext *C, void *arg1, void *arg2) +{ + uiBut *but = arg1; + int cur = GET_INT_FROM_POINTER(arg2); + wmWindow *win= CTX_wm_window(C); + int i, tot, shift= win->eventstate->shift; + + if(!shift) { + tot= RNA_property_array_length(&but->rnapoin, but->rnaprop); + + /* Normally clicking only selects one layer */ + RNA_property_boolean_set_index(&but->rnapoin, but->rnaprop, cur, 1); + for(i = 0; i < tot; ++i) { + if(i != cur) + RNA_property_boolean_set_index(&but->rnapoin, but->rnaprop, i, 0); + } + } +} + // TODO: -// - option for showing extra info like whether layer has contents? // - for now, grouping of layers is determined by dividing up the length of // the array of layer bitflags -void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname) +void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname, + PointerRNA *used_ptr, char *used_propname, int active_layer) { - uiLayout *uRow, *uSplit, *uCol; - PropertyRNA *prop; + uiLayout *uRow, *uCol; + PropertyRNA *prop, *used_prop; int groups, cols, layers; int group, col, layer, row; + int cols_per_group = 5; + const char *desc; prop= RNA_struct_find_property(ptr, propname); if (!prop) { printf("uiTemplateLayer: layers property not found: %s\n", propname); return; } + + desc= RNA_property_description(prop); /* the number of layers determines the way we group them * - we want 2 rows only (for now) * - the number of columns (cols) is the total number of buttons per row * the 'remainder' is added to this, as it will be ok to have first row slightly wider if need be - * - for now, only split into groups if if group will have at least 5 items + * - for now, only split into groups if group will have at least 5 items */ layers= RNA_property_array_length(ptr, prop); cols= (layers / 2) + (layers % 2); - groups= ((cols / 2) < 5) ? (1) : (cols / 2); + groups= ((cols / 2) < cols_per_group) ? (1) : (cols / cols_per_group); + + if(used_ptr && used_propname) { + used_prop= RNA_struct_find_property(used_ptr, used_propname); + if (!used_prop) { + printf("uiTemplateLayer: used layers property not found: %s\n", used_propname); + return; + } + + if(RNA_property_array_length(used_ptr, used_prop) < layers) + used_prop = NULL; + } /* layers are laid out going across rows, with the columns being divided into groups */ - if (groups > 1) - uSplit= uiLayoutSplit(layout, (1.0f/(float)groups)); - else - uSplit= layout; for (group= 0; group < groups; group++) { - uCol= uiLayoutColumn(uSplit, 1); + uCol= uiLayoutColumn(layout, 1); for (row= 0; row < 2; row++) { + uiBlock *block; + uiBut *but; + uRow= uiLayoutRow(uCol, 1); - layer= groups*cols*row + cols*group; + block= uiLayoutGetBlock(uRow); + layer= groups*cols_per_group*row + cols_per_group*group; /* add layers as toggle buts */ - for (col= 0; (col < cols) && (layer < layers); col++, layer++) { - int icon=0; // XXX - add some way of setting this... - uiItemFullR(uRow, "", icon, ptr, prop, layer, 0, UI_ITEM_R_TOGGLE); + for (col= 0; (col < cols_per_group) && (layer < layers); col++, layer++) { + int icon = 0; + int butlay = 1 << layer; + + if(active_layer & butlay) + icon = ICON_LAYER_ACTIVE; + else if(used_prop && RNA_property_boolean_get_index(used_ptr, used_prop, layer)) + icon = ICON_LAYER_USED; + + but= uiDefAutoButR(block, ptr, prop, layer, "", icon, 0, 0, 10, 10); + uiButSetFunc(but, handle_layer_buttons, but, SET_INT_IN_POINTER(layer)); + but->type= TOG; } } } diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index cb6cc5dcacf..ecd8c9720c8 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -69,11 +69,10 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind else value= RNA_property_boolean_get(ptr, prop); - // XXX: when to do TOG, and when to do ICONTOG? for now, let's just do TOG, since ICONTOG causes too much trouble everywhere else if(icon && name && strcmp(name, "") == 0) - but= uiDefIconButR(block, TOG, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); + but= uiDefIconButR(block, ICONTOG, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); else if(icon) - but= uiDefIconTextButR(block, TOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); + but= uiDefIconTextButR(block, ICONTOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); else but= uiDefButR(block, OPTION, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); break; diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 649b19e2089..e148fd9217f 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -2451,9 +2451,6 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct case BUT: wt= widget_type(UI_WTYPE_EXEC); - if (!(but->flag & UI_HAS_ICON)) { - but->flag |= UI_TEXT_LEFT; - } break; case NUM: @@ -2556,6 +2553,10 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct ui_draw_but_NORMAL(but, &tui->wcol_regular, rect); break; + case BUT_IMAGE: + ui_draw_but_IMAGE(ar, but, &tui->wcol_regular, rect); + break; + case BUT_CURVE: ui_draw_but_CURVE(ar, but, &tui->wcol_regular, rect); break; diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c index bdb1df3b5c1..a286c0ad8e8 100644 --- a/source/blender/editors/mesh/editmesh.c +++ b/source/blender/editors/mesh/editmesh.c @@ -1771,6 +1771,11 @@ static void undoMesh_to_editMesh(void *umv, void *emv) EM_free_index_arrays(); } + /* restore total selections */ + EM_nvertices_selected(em); + EM_nedges_selected(em); + EM_nfaces_selected(em); + // XXX retopo_free_paint(); // em->retopo_paint_data= retopo_paint_data_copy(um->retopo_paint_data); // scene->toolsettings->retopo_mode= um->retopo_mode; diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index e14dedf6002..8501b7fba92 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -82,6 +82,7 @@ editmesh_mods.c, UI level access, no geometry changes #include "RNA_access.h" #include "RNA_define.h" +#include "RNA_enum_types.h" #include "ED_mesh.h" #include "ED_screen.h" @@ -2222,7 +2223,7 @@ void MESH_OT_select_shortest_path(wmOperatorType *ot) /* here actual select happens */ /* gets called via generic mouse select operator */ -void mouse_mesh(bContext *C, short mval[2], short extend) +int mouse_mesh(bContext *C, short mval[2], short extend) { ViewContext vc; EditVert *eve; @@ -2281,10 +2282,13 @@ void mouse_mesh(bContext *C, short mval[2], short extend) vc.em->mat_nr= efa->mat_nr; // BIF_preview_changed(ID_MA); } - } - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data); + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data); + + return 1; + } + return 0; } /* *********** select linked ************* */ @@ -3660,21 +3664,11 @@ void EM_deselect_by_material(EditMesh *em, int index) static void mesh_selection_type(ToolSettings *ts, EditMesh *em, int val) { if(val>0) { - if(val==1) { - em->selectmode= SCE_SELECT_VERTEX; - EM_selectmode_set(em); - } - else if(val==2) { - //if(ctrl) EM_convertsel(em, em->selectmode, SCE_SELECT_EDGE); - em->selectmode= SCE_SELECT_EDGE; - EM_selectmode_set(em); - } - - else{ - //if((ctrl)) EM_convertsel(em, em->selectmode, SCE_SELECT_FACE); - em->selectmode= SCE_SELECT_FACE; - EM_selectmode_set(em); - } + //if(ctrl) EM_convertsel(em, em->selectmode, SCE_SELECT_EDGE); + //if((ctrl)) EM_convertsel(em, em->selectmode, SCE_SELECT_FACE); + + em->selectmode= val; + EM_selectmode_set(em); /* note, em stores selectmode to be able to pass it on everywhere without scene, this is only until all select modes and toolsettings are settled more */ @@ -3683,13 +3677,6 @@ static void mesh_selection_type(ToolSettings *ts, EditMesh *em, int val) } } -static EnumPropertyItem prop_mesh_edit_types[] = { - {1, "VERT", ICON_VERTEXSEL, "Vertices", ""}, - {2, "EDGE", ICON_EDGESEL, "Edges", ""}, - {3, "FACE", ICON_FACESEL, "Faces", ""}, - {0, NULL, 0, NULL, NULL} -}; - static int mesh_selection_type_exec(bContext *C, wmOperator *op) { ToolSettings *ts= CTX_data_tool_settings(C); @@ -3699,6 +3686,7 @@ static int mesh_selection_type_exec(bContext *C, wmOperator *op) mesh_selection_type(ts, em, RNA_enum_get(op->ptr,"type")); WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); + WM_event_add_notifier(C, NC_SCENE|ND_MODE, NULL); /* header redraw */ BKE_mesh_end_editmesh(obedit->data, em); return OPERATOR_FINISHED; @@ -3718,10 +3706,10 @@ void MESH_OT_selection_type(wmOperatorType *ot) ot->poll= ED_operator_editmesh; /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= OPTYPE_UNDO; /* props */ - RNA_def_enum(ot->srna, "type", prop_mesh_edit_types, 0, "Type", "Set the mesh selection type"); + RNA_def_enum(ot->srna, "type", mesh_select_mode_items, 0, "Type", "Set the mesh selection type"); } /* ************************* SEAMS AND EDGES **************** */ diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index dfc4ba8c6b8..1363d8b2102 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -284,10 +284,9 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_split", YKEY, KM_PRESS, 0, 0); - /* use KM_RELEASE because same key is used for tweaks - * TEMPORARY REMAP TO ALT+CTRL TO AVOID CONFLICT - * */ - WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_RELEASE, KM_CTRL|KM_ALT, 0); + + /* use KM_CLICK because same key is used for tweaks */ + WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_CLICK, KM_CTRL, 0); WM_keymap_add_item(keymap, "MESH_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_delete", DELKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 5313b68be9b..02833bdf3f7 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -31,6 +31,7 @@ meshtools.c: no editmode (violated already :), tools operating on meshes */ +#include <stddef.h> #include <stdlib.h> #include <string.h> #include <math.h> @@ -62,6 +63,7 @@ #include "BKE_blender.h" #include "BKE_context.h" #include "BKE_depsgraph.h" +#include "BKE_DerivedMesh.h" #include "BKE_customdata.h" #include "BKE_global.h" #include "BKE_image.h" @@ -543,6 +545,82 @@ int join_mesh_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +/*********************** JOIN AS SHAPES ***************************/ + +/* Append selected meshes vertex locations as shapes of the active mesh, + return 0 if no join is made (error) and 1 of the join is done */ + +int join_mesh_shapes_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Object *ob= CTX_data_active_object(C); + Mesh *me= (Mesh *)ob->data; + Mesh *selme=NULL; + DerivedMesh *dm=NULL; + Key *key=me->key; + KeyBlock *kb; + int ok=0, nonequal_verts=0; + + CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + if (base->object == ob) continue; + + if (base->object->type==OB_MESH) { + selme = (Mesh *)base->object->data; + + if (selme->totvert==me->totvert) + ok++; + else + nonequal_verts=1; + } + } + CTX_DATA_END; + + if (!ok) { + if (nonequal_verts) + BKE_report(op->reports, RPT_ERROR, "Selected meshes must have equal numbers of vertices."); + else + BKE_report(op->reports, RPT_ERROR, "No additional selected meshes with equal vertex count to join."); + return OPERATOR_CANCELLED; + } + + if(key == NULL) { + key= me->key= add_key((ID *)me); + key->type= KEY_RELATIVE; + + /* first key added, so it was the basis. initialise it with the existing mesh */ + kb= add_keyblock(scene, key); + mesh_to_key(me, kb); + } + + /* now ready to add new keys from selected meshes */ + CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + if (base->object == ob) continue; + + if(base->object->type==OB_MESH) { + selme = (Mesh *)base->object->data; + + if (selme->totvert==me->totvert) { + dm = mesh_get_derived_deform(scene, base->object, CD_MASK_BAREMESH); + + if (!dm) continue; + + kb= add_keyblock(scene, key); + strcpy(kb->name, base->object->id.name+2); + BLI_uniquename(&key->block, kb, "Key", '.', offsetof(KeyBlock, name), 32); + + DM_to_meshkey(dm, me, kb); + + dm->release(dm); + } + } + } + CTX_DATA_END; + + WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene); + + return OPERATOR_FINISHED; +} + /* ********************** SORT FACES ******************* */ static void permutate(void *list, int num, int size, int *index) diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 3751f8875f6..09200514c0f 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -517,7 +517,7 @@ void MBALL_OT_reveal_metaelems(wmOperatorType *ot) /* Select MetaElement with mouse click (user can select radius circle or * stiffness circle) */ -void mouse_mball(bContext *C, short mval[2], int extend) +int mouse_mball(bContext *C, short mval[2], int extend) { static MetaElem *startelem=NULL; Object *obedit= CTX_data_edit_object(C); @@ -588,8 +588,12 @@ void mouse_mball(bContext *C, short mval[2], int extend) mb->lastelem= act; WM_event_add_notifier(C, NC_GEOM|ND_SELECT, mb); + + return 1; } } + + return 0; } diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index e58170ebab6..1cda61fe90f 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -235,19 +235,18 @@ void OBJECT_OT_add(wmOperatorType *ot) /********************* Add Effector Operator ********************/ /* copy from rna_object_force.c*/ static EnumPropertyItem field_type_items[] = { - {0, "NONE", 0, "None", ""}, - {PFIELD_FORCE, "FORCE", 0, "Force", ""}, - {PFIELD_WIND, "WIND", 0, "Wind", ""}, - {PFIELD_VORTEX, "VORTEX", 0, "Vortex", ""}, - {PFIELD_MAGNET, "MAGNET", 0, "Magnetic", ""}, - {PFIELD_HARMONIC, "HARMONIC", 0, "Harmonic", ""}, - {PFIELD_CHARGE, "CHARGE", 0, "Charge", ""}, - {PFIELD_LENNARDJ, "LENNARDJ", 0, "Lennard-Jones", ""}, - {PFIELD_TEXTURE, "TEXTURE", 0, "Texture", ""}, - {PFIELD_GUIDE, "GUIDE", 0, "Curve Guide", ""}, - {PFIELD_BOID, "BOID", 0, "Boid", ""}, - {PFIELD_TURBULENCE, "TURBULENCE", 0, "Turbulence", ""}, - {PFIELD_DRAG, "DRAG", 0, "Drag", ""}, + {PFIELD_FORCE, "FORCE", ICON_FORCE_FORCE, "Force", ""}, + {PFIELD_WIND, "WIND", ICON_FORCE_WIND, "Wind", ""}, + {PFIELD_VORTEX, "VORTEX", ICON_FORCE_VORTEX, "Vortex", ""}, + {PFIELD_MAGNET, "MAGNET", ICON_FORCE_MAGNETIC, "Magnetic", ""}, + {PFIELD_HARMONIC, "HARMONIC", ICON_FORCE_HARMONIC, "Harmonic", ""}, + {PFIELD_CHARGE, "CHARGE", ICON_FORCE_CHARGE, "Charge", ""}, + {PFIELD_LENNARDJ, "LENNARDJ", ICON_FORCE_LENNARDJONES, "Lennard-Jones", ""}, + {PFIELD_TEXTURE, "TEXTURE", ICON_FORCE_TEXTURE, "Texture", ""}, + {PFIELD_GUIDE, "GUIDE", ICON_FORCE_CURVE, "Curve Guide", ""}, + {PFIELD_BOID, "BOID", ICON_FORCE_BOID, "Boid", ""}, + {PFIELD_TURBULENCE, "TURBULENCE", ICON_FORCE_TURBULENCE, "Turbulence", ""}, + {PFIELD_DRAG, "DRAG", ICON_FORCE_DRAG, "Drag", ""}, {0, NULL, 0, NULL, NULL}}; void add_effector_draw(Scene *scene, View3D *v3d, int type) /* for toolbox or menus, only non-editmode stuff */ @@ -755,7 +754,7 @@ static int object_delete_exec(bContext *C, wmOperator *op) if(islamp) reshadeall_displist(scene); /* only frees displist */ DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, CTX_data_scene(C)); @@ -951,7 +950,7 @@ static int object_duplicates_make_real_exec(bContext *C, wmOperator *op) CTX_DATA_END; DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE, scene); return OPERATOR_FINISHED; @@ -1480,7 +1479,7 @@ static int duplicate_exec(bContext *C, wmOperator *op) copy_object_set_idnew(C, dupflag); DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); @@ -1507,6 +1506,18 @@ void OBJECT_OT_duplicate(wmOperatorType *ot) } /**************************** Join *************************/ +static int join_poll(bContext *C) +{ + Object *ob= CTX_data_active_object(C); + + if (!ob) return 0; + + if (ELEM4(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_ARMATURE)) + return ED_operator_screenactive(C); + else + return 0; +} + static int join_exec(bContext *C, wmOperator *op) { @@ -1517,10 +1528,6 @@ static int join_exec(bContext *C, wmOperator *op) BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode."); return OPERATOR_CANCELLED; } - else if(!ob) { - BKE_report(op->reports, RPT_ERROR, "Can't join unless there is an active object."); - return OPERATOR_CANCELLED; - } else if(object_data_is_libdata(ob)) { BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata."); return OPERATOR_CANCELLED; @@ -1532,9 +1539,7 @@ static int join_exec(bContext *C, wmOperator *op) return join_curve_exec(C, op); else if(ob->type == OB_ARMATURE) return join_armature_exec(C, op); - - BKE_report(op->reports, RPT_ERROR, "This object type doesn't support joining."); - + return OPERATOR_CANCELLED; } @@ -1547,9 +1552,57 @@ void OBJECT_OT_join(wmOperatorType *ot) /* api callbacks */ ot->exec= join_exec; - ot->poll= ED_operator_scene_editable; + ot->poll= join_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +/**************************** Join as Shape Key*************************/ +static int join_shapes_poll(bContext *C) +{ + Object *ob= CTX_data_active_object(C); + + if (!ob) return 0; + + /* only meshes supported at the moment */ + if (ob->type == OB_MESH) + return ED_operator_screenactive(C); + else + return 0; +} + +static int join_shapes_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Object *ob= CTX_data_active_object(C); + + if(scene->obedit) { + BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode."); + return OPERATOR_CANCELLED; + } + else if(object_data_is_libdata(ob)) { + BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata."); + return OPERATOR_CANCELLED; + } + + if(ob->type == OB_MESH) + return join_mesh_shapes_exec(C, op); + + return OPERATOR_CANCELLED; +} + +void OBJECT_OT_join_shapes(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Join as Shapes"; + ot->description = "Merge selected objects to shapes of active object."; + ot->idname= "OBJECT_OT_join_shapes"; + + /* api callbacks */ + ot->exec= join_shapes_exec; + ot->poll= join_shapes_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index 4a4184c7035..eababfe8080 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -98,6 +98,33 @@ ListBase *get_active_constraints (Object *ob) return NULL; } +ListBase *get_constraint_lb (Object *ob, bConstraint *con, bPoseChannel **pchan_r) +{ + if(pchan_r) + *pchan_r= NULL; + + if (ELEM(NULL, ob, con)) + return NULL; + + if((BLI_findindex(&ob->constraints, con) != -1)) { + return &ob->constraints; + } + else if(ob->pose) { + bPoseChannel *pchan; + for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { + if((BLI_findindex(&pchan->constraints, con) != -1)) { + + if(pchan_r) + *pchan_r= pchan; + + return &pchan->constraints; + } + } + } + + return NULL; +} + /* single constraint */ bConstraint *get_active_constraint (Object *ob) { @@ -800,7 +827,7 @@ static int pose_constraints_clear_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); /* free constraints for all selected bones */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { free_constraints(&pchan->constraints); pchan->constflag &= ~(PCHAN_HAS_IK|PCHAN_HAS_SPLINEIK|PCHAN_HAS_CONST); @@ -917,7 +944,7 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o /* if the active Object is Armature, and we can search for bones, do so... */ if ((obact->type == OB_ARMATURE) && (only_ob == 0)) { /* search in list of selected Pose-Channels for target */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { /* just use the first one that we encounter, as long as it is not the active one */ if (pchan != pchanact) { @@ -1345,7 +1372,7 @@ static int pose_ik_clear_exec(bContext *C, wmOperator *op) Object *ob= CTX_data_active_object(C); /* only remove IK Constraints */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { bConstraint *con, *next; diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 3f731696ef8..4678ee35fcd 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -1062,7 +1062,7 @@ void flip_subdivison(Scene *scene, View3D *v3d, int level) } } - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); } static void copymenu_properties(Scene *scene, View3D *v3d, Object *ob) @@ -1549,8 +1549,7 @@ void copy_attr(Scene *scene, View3D *v3d, short event) if(do_scene_sort) DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); - + DAG_ids_flush_update(0); } void copy_attr_menu(Scene *scene, View3D *v3d) @@ -1734,85 +1733,6 @@ void image_aspect(Scene *scene, View3D *v3d) } -void set_ob_ipoflags(Scene *scene, View3D *v3d) -{ -#if 0 // XXX old animation system - Base *base; - int set= 1; - - if (!v3d) { - error("Can't do this! Open a 3D window"); - return; - } - - for(base= FIRSTBASE; base; base= base->next) { - if(TESTBASELIB(v3d, base)) { - if(base->object->ipoflag & OB_DRAWKEY) { - set= 0; - break; - } - } - } - - for(base= FIRSTBASE; base; base= base->next) { - if(TESTBASELIB(v3d, base)) { - if(set) { - base->object->ipoflag |= OB_DRAWKEY; - if(base->object->ipo) base->object->ipo->showkey= 1; - } - else { - base->object->ipoflag &= ~OB_DRAWKEY; - if(base->object->ipo) base->object->ipo->showkey= 0; - } - } - } -#endif // XXX old animation system -} - - -void select_select_keys(Scene *scene, View3D *v3d) -{ -#if 0 // XXX old animation system - Base *base; - IpoCurve *icu; - BezTriple *bezt; - int a; - - if (!v3d) { - error("Can't do this! Open a 3D window"); - return; - } - - if(scene->id.lib) return; - - if(okee("Show and select all keys")==0) return; - - for(base= FIRSTBASE; base; base= base->next) { - if(TESTBASELIB(v3d, base)) { - if(base->object->ipo) { - base->object->ipoflag |= OB_DRAWKEY; - base->object->ipo->showkey= 1; - icu= base->object->ipo->curve.first; - while(icu) { - a= icu->totvert; - bezt= icu->bezt; - while(a--) { - bezt->f1 |= SELECT; - bezt->f2 |= SELECT; - bezt->f3 |= SELECT; - bezt++; - } - icu= icu->next; - } - } - } - } - - -#endif // XXX old animation system -} - - int vergbaseco(const void *a1, const void *a2) { Base **x1, **x2; diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index e4b62f58902..a2feee54c8c 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -55,6 +55,7 @@ #include "BKE_object.h" #include "BKE_report.h" #include "BKE_scene.h" +#include "BKE_utildefines.h" #include "RNA_define.h" #include "RNA_access.h" @@ -385,6 +386,22 @@ static void object_hook_select(Object *ob, HookModifierData *hmd) else if(ob->type==OB_SURF) select_editcurve_hook(ob, hmd); } +/* special poll operators for hook operators */ +// TODO: check for properties window modifier context too as alternative? +static int hook_op_edit_poll(bContext *C) +{ + Object *obedit= CTX_data_edit_object(C); + + if (obedit) { + if (ED_operator_editmesh(C)) return 1; + if (ED_operator_editsurfcurve(C)) return 1; + if (ED_operator_editlattice(C)) return 1; + //if (ED_operator_editmball(C)) return 1; + } + + return 0; +} + static Object *add_hook_object_new(Scene *scene, Object *obedit) { Base *base, *basedit; @@ -403,7 +420,6 @@ static Object *add_hook_object_new(Scene *scene, Object *obedit) return ob; } - static void add_hook_object(Scene *scene, Object *obedit, Object *ob, int mode) { ModifierData *md=NULL; @@ -431,7 +447,7 @@ static void add_hook_object(Scene *scene, Object *obedit, Object *ob, int mode) hmd = (HookModifierData*) modifier_new(eModifierType_Hook); BLI_insertlinkbefore(&obedit->modifiers, md, hmd); - sprintf(hmd->modifier.name, "Hook-%s", ob->id.name+2); + BLI_snprintf(hmd->modifier.name, sizeof(hmd->modifier.name), "Hook-%s", ob->id.name+2); modifier_unique_name(&obedit->modifiers, (ModifierData*)hmd); hmd->object= ob; @@ -488,7 +504,7 @@ void OBJECT_OT_hook_add_selobj(wmOperatorType *ot) /* api callbacks */ ot->exec= object_add_hook_selob_exec; - ot->poll= ED_operator_editmesh; + ot->poll= hook_op_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -514,7 +530,7 @@ void OBJECT_OT_hook_add_newobj(wmOperatorType *ot) /* api callbacks */ ot->exec= object_add_hook_newob_exec; - ot->poll= ED_operator_editmesh; + ot->poll= hook_op_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -585,9 +601,9 @@ void OBJECT_OT_hook_remove(wmOperatorType *ot) ot->description= "Remove a hook from the active object."; /* api callbacks */ - ot->poll= ED_operator_editmesh; ot->exec= object_hook_remove_exec; ot->invoke= WM_menu_invoke; + ot->poll= hook_op_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -607,7 +623,8 @@ static int object_hook_reset_exec(bContext *C, wmOperator *op) if (ptr.data) { /* if modifier context is available, use that */ ob = ptr.id.data; hmd= ptr.data; - } else { /* use the provided property */ + } + else { /* use the provided property */ ob = CTX_data_edit_object(C); hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num); } @@ -617,7 +634,6 @@ static int object_hook_reset_exec(bContext *C, wmOperator *op) } /* reset functionality */ - if(hmd->object) { bPoseChannel *pchan= get_pose_channel(hmd->object->pose, hmd->subtarget); @@ -646,12 +662,14 @@ void OBJECT_OT_hook_reset(wmOperatorType *ot) { PropertyRNA *prop; + /* identifiers */ ot->name= "Reset Hook"; ot->description= "Recalculate and and clear offset transformation."; ot->idname= "OBJECT_OT_hook_reset"; - ot->poll= ED_operator_editmesh; + /* callbacks */ ot->exec= object_hook_reset_exec; + ot->poll= hook_op_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -673,7 +691,8 @@ static int object_hook_recenter_exec(bContext *C, wmOperator *op) if (ptr.data) { /* if modifier context is available, use that */ ob = ptr.id.data; hmd= ptr.data; - } else { /* use the provided property */ + } + else { /* use the provided property */ ob = CTX_data_edit_object(C); hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num); } @@ -683,7 +702,6 @@ static int object_hook_recenter_exec(bContext *C, wmOperator *op) } /* recenter functionality */ - copy_m3_m4(bmat, ob->obmat); invert_m3_m3(imat, bmat); @@ -700,12 +718,14 @@ void OBJECT_OT_hook_recenter(wmOperatorType *ot) { PropertyRNA *prop; + /* identifiers */ ot->name= "Recenter Hook"; ot->description= "Set hook center to cursor position."; ot->idname= "OBJECT_OT_hook_recenter"; - ot->poll= ED_operator_editmesh; + /* callbacks */ ot->exec= object_hook_recenter_exec; + ot->poll= hook_op_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -728,7 +748,8 @@ static int object_hook_assign_exec(bContext *C, wmOperator *op) if (ptr.data) { /* if modifier context is available, use that */ ob = ptr.id.data; hmd= ptr.data; - } else { /* use the provided property */ + } + else { /* use the provided property */ ob = CTX_data_edit_object(C); hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num); } @@ -760,12 +781,14 @@ void OBJECT_OT_hook_assign(wmOperatorType *ot) { PropertyRNA *prop; + /* identifiers */ ot->name= "Assign to Hook"; ot->description= "Assign the selected vertices to a hook."; ot->idname= "OBJECT_OT_hook_assign"; - ot->poll= ED_operator_editmesh; + /* callbacks */ ot->exec= object_hook_assign_exec; + ot->poll= hook_op_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -785,7 +808,8 @@ static int object_hook_select_exec(bContext *C, wmOperator *op) if (ptr.data) { /* if modifier context is available, use that */ ob = ptr.id.data; hmd= ptr.data; - } else { /* use the provided property */ + } + else { /* use the provided property */ ob = CTX_data_edit_object(C); hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num); } @@ -795,7 +819,6 @@ static int object_hook_select_exec(bContext *C, wmOperator *op) } /* select functionality */ - object_hook_select(ob, hmd); WM_event_add_notifier(C, NC_GEOM|ND_SELECT, ob->data); @@ -807,12 +830,14 @@ void OBJECT_OT_hook_select(wmOperatorType *ot) { PropertyRNA *prop; + /* identifiers */ ot->name= "Select Hook"; ot->description= "Selects effected vertices on mesh."; ot->idname= "OBJECT_OT_hook_select"; - ot->poll= ED_operator_editmesh; + /* callbacks */ ot->exec= object_hook_select_exec; + ot->poll= hook_op_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index 046dd8939ba..9230dca7ba2 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -106,6 +106,7 @@ void OBJECT_OT_duplicates_make_real(struct wmOperatorType *ot); void OBJECT_OT_duplicate(struct wmOperatorType *ot); void OBJECT_OT_delete(struct wmOperatorType *ot); void OBJECT_OT_join(struct wmOperatorType *ot); +void OBJECT_OT_join_shapes(struct wmOperatorType *ot); void OBJECT_OT_convert(struct wmOperatorType *ot); /* object_hook.c */ diff --git a/source/blender/editors/object/object_lattice.c b/source/blender/editors/object/object_lattice.c index b49c1eb5902..3f27ea407a2 100644 --- a/source/blender/editors/object/object_lattice.c +++ b/source/blender/editors/object/object_lattice.c @@ -298,7 +298,7 @@ static BPoint *findnearestLattvert(ViewContext *vc, short mval[2], int sel) return data.bp; } -void mouse_lattice(bContext *C, short mval[2], int extend) +int mouse_lattice(bContext *C, short mval[2], int extend) { ViewContext vc; BPoint *bp= NULL; @@ -315,7 +315,11 @@ void mouse_lattice(bContext *C, short mval[2], int extend) bp->f1 ^= SELECT; /* swap */ WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data); + + return 1; } + + return 0; } /******************************** Undo *************************/ diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index f65153d09ad..88763f63f7b 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -33,6 +33,7 @@ #include "DNA_action_types.h" #include "DNA_curve_types.h" +#include "DNA_key_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -42,6 +43,7 @@ #include "BLI_math.h" #include "BLI_listbase.h" +#include "BLI_string.h" #include "BKE_action.h" #include "BKE_curve.h" @@ -51,6 +53,7 @@ #include "BKE_DerivedMesh.h" #include "BKE_effect.h" #include "BKE_global.h" +#include "BKE_key.h" #include "BKE_lattice.h" #include "BKE_mesh.h" #include "BKE_modifier.h" @@ -66,6 +69,7 @@ #include "RNA_enum_types.h" #include "ED_armature.h" +#include "ED_object.h" #include "ED_screen.h" #include "WM_api.h" @@ -75,7 +79,7 @@ /******************************** API ****************************/ -int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int type) +ModifierData *ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, char *name, int type) { ModifierData *md=NULL, *new_md=NULL; ModifierTypeInfo *mti = modifierType_getInfo(type); @@ -83,7 +87,7 @@ int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int ty if(mti->flags&eModifierTypeFlag_Single) { if(modifiers_findByType(ob, type)) { BKE_report(reports, RPT_WARNING, "Only one modifier of this type allowed."); - return 0; + return NULL; } } @@ -91,7 +95,7 @@ int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int ty /* don't need to worry about the new modifier's name, since that is set to the number * of particle systems which shouldn't have too many duplicates */ - object_add_particle_system(scene, ob); + new_md = object_add_particle_system(scene, ob, name); } else { /* get new modifier data to add */ @@ -107,8 +111,12 @@ int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int ty } else BLI_addtail(&ob->modifiers, new_md); - + + if(name) + BLI_strncpy(new_md->name, name, sizeof(new_md->name)); + /* make sure modifier data has unique name */ + modifier_unique_name(&ob->modifiers, new_md); /* special cases */ @@ -131,7 +139,7 @@ int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int ty DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - return 1; + return new_md; } int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, ModifierData *md) @@ -145,8 +153,10 @@ int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, Mod if(obmd==md) break; - if(!obmd) + if(!obmd) { + BKE_reportf(reports, RPT_ERROR, "Modifier '%s' not in object '%s'.", ob->id.name, md->name); return 0; + } /* special cases */ if(md->type == eModifierType_ParticleSystem) { @@ -328,44 +338,71 @@ int ED_object_modifier_convert(ReportList *reports, Scene *scene, Object *ob, Mo return 1; } -int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, ModifierData *md) +static int modifier_apply_shape(ReportList *reports, Scene *scene, Object *ob, ModifierData *md) { - DerivedMesh *dm; - Mesh *me = ob->data; - int converted = 0; + if (ob->type==OB_MESH) { + DerivedMesh *dm; + Mesh *me= ob->data; + Key *key=me->key; + KeyBlock *kb; + + if(!modifier_sameTopology(md)) { + BKE_report(reports, RPT_ERROR, "Only deforming modifiers can be applied to Shapes"); + return 0; + } + mesh_pmv_off(ob, me); + + dm = mesh_create_derived_for_modifier(scene, ob, md); + if (!dm) { + BKE_report(reports, RPT_ERROR, "Modifier is disabled or returned error, skipping apply"); + return 0; + } + + if(key == NULL) { + key= me->key= add_key((ID *)me); + key->type= KEY_RELATIVE; + /* if that was the first key block added, then it was the basis. + * Initialise it with the mesh, and add another for the modifier */ + kb= add_keyblock(scene, key); + mesh_to_key(me, kb); + } - if (scene->obedit) { - BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied in editmode"); - return 0; - } else if (((ID*) ob->data)->us>1) { - BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied to multi-user data"); + kb= add_keyblock(scene, key); + DM_to_meshkey(dm, me, kb); + + dm->release(dm); + } + else { + BKE_report(reports, RPT_ERROR, "Cannot apply modifier for this object type"); return 0; } + return 1; +} - if (md!=ob->modifiers.first) - BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected."); - +static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, ModifierData *md) +{ if (ob->type==OB_MESH) { - if(me->key) { + DerivedMesh *dm; + Mesh *me = ob->data; + if( me->key) { BKE_report(reports, RPT_ERROR, "Modifier cannot be applied to Mesh with Shape Keys"); return 0; } - + mesh_pmv_off(ob, me); - - /* Multires: ensure that recent sculpting is applied */ - if(md->type == eModifierType_Multires) - multires_force_update(ob); - + + /* 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) { BKE_report(reports, RPT_ERROR, "Modifier is disabled or returned error, skipping apply"); return 0; } - + DM_to_mesh(dm, me); - converted = 1; - + dm->release(dm); } else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { @@ -373,37 +410,55 @@ int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, Modi Curve *cu = ob->data; int numVerts; float (*vertexCos)[3]; - + + BKE_report(reports, RPT_INFO, "Applied modifier only changed CV points, not tesselated/bevel vertices"); - + if (!(md->mode&eModifierMode_Realtime) || (mti->isDisabled && mti->isDisabled(md))) { BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply"); return 0; } - + vertexCos = curve_getVertexCos(cu, &cu->nurb, &numVerts); mti->deformVerts(md, ob, NULL, vertexCos, numVerts, 0, 0); curve_applyVertexCos(cu, &cu->nurb, vertexCos); - converted = 1; - MEM_freeN(vertexCos); - + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } else { BKE_report(reports, RPT_ERROR, "Cannot apply modifier for this object type"); return 0; } + return 1; +} + +int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, ModifierData *md, int mode) +{ + if (scene->obedit) { + BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied in editmode"); + return 0; + } else if (((ID*) ob->data)->us>1) { + BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied to multi-user data"); + return 0; + } - if (converted) { - BLI_remlink(&ob->modifiers, md); - modifier_free(md); + if (md!=ob->modifiers.first) + BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected."); - return 1; + if (mode == MODIFIER_APPLY_SHAPE) { + if (!modifier_apply_shape(reports, scene, ob, md)) + return 0; + } else { + if (!modifier_apply_obdata(reports, scene, ob, md)) + return 0; } - return 0; + BLI_remlink(&ob->modifiers, md); + modifier_free(md); + + return 1; } int ED_object_modifier_copy(ReportList *reports, Object *ob, ModifierData *md) @@ -434,7 +489,7 @@ static int modifier_add_exec(bContext *C, wmOperator *op) Object *ob = CTX_data_active_object(C); int type= RNA_enum_get(op->ptr, "type"); - if(!ED_object_modifier_add(op->reports, scene, ob, type)) + if(!ED_object_modifier_add(op->reports, scene, ob, NULL, type)) return OPERATOR_CANCELLED; WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); @@ -598,8 +653,9 @@ static int modifier_apply_exec(bContext *C, wmOperator *op) PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); Object *ob= ptr.id.data; ModifierData *md= ptr.data; + int apply_as= RNA_enum_get(op->ptr, "apply_as"); - if(!ob || !md || !ED_object_modifier_apply(op->reports, scene, ob, md)) + if(!ob || !md || !ED_object_modifier_apply(op->reports, scene, ob, md, apply_as)) return OPERATOR_CANCELLED; DAG_id_flush_update(&ob->id, OB_RECALC_DATA); @@ -608,6 +664,11 @@ static int modifier_apply_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static EnumPropertyItem modifier_apply_as_items[] = { + {MODIFIER_APPLY_DATA, "DATA", 0, "Object Data", "Apply modifier to the object's data"}, + {MODIFIER_APPLY_SHAPE, "SHAPE", 0, "New Shape", "Apply deform-only modifier to a new shape on this object"}, + {0, NULL, 0, NULL, NULL}}; + void OBJECT_OT_modifier_apply(wmOperatorType *ot) { ot->name= "Apply Modifier"; @@ -615,11 +676,14 @@ void OBJECT_OT_modifier_apply(wmOperatorType *ot) ot->idname= "OBJECT_OT_modifier_apply"; ot->poll= ED_operator_object_active; + //ot->invoke= WM_menu_invoke; ot->exec= modifier_apply_exec; ot->poll= modifier_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_enum(ot->srna, "apply_as", modifier_apply_as_items, MODIFIER_APPLY_DATA, "Apply as", "How to apply the modifier to the geometry"); } /************************ convert modifier operator *********************/ @@ -783,7 +847,7 @@ static int meshdeform_bind_exec(bContext *C, wmOperator *op) int mode= mmd->modifier.mode; /* force modifier to run, it will call binding routine */ - mmd->bindfunc= harmonic_coordinates_bind; + mmd->bindfunc= mesh_deform_bind; mmd->modifier.mode |= eModifierMode_Realtime; if(ob->type == OB_MESH) { diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 44dc5b06ea8..4dcecc92880 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -124,6 +124,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_duplicates_make_real); WM_operatortype_append(OBJECT_OT_duplicate); WM_operatortype_append(OBJECT_OT_join); + WM_operatortype_append(OBJECT_OT_join_shapes); WM_operatortype_append(OBJECT_OT_convert); WM_operatortype_append(OBJECT_OT_modifier_add); @@ -227,6 +228,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) wmKeyMap *keymap; wmKeyMapItem *kmi; + /* Objects, Regardless of Mode -------------------------------------------------- */ keymap= WM_keymap_find(keyconf, "Object Non-modal", 0, 0); /* Note: this keymap works disregarding mode */ @@ -251,6 +253,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_center_set", CKEY, KM_PRESS, KM_ALT|KM_SHIFT|KM_CTRL, 0); + /* Object Mode ---------------------------------------------------------------- */ /* Note: this keymap gets disabled in non-objectmode, */ keymap= WM_keymap_find(keyconf, "Object Mode", 0, 0); keymap->poll= object_mode_poll; @@ -303,19 +306,33 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_make_local", LKEY, KM_PRESS, 0, 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); - WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe_v3d", IKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0); WM_keymap_verify_item(keymap, "GROUP_OT_create", GKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove", GKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); 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 */ + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", ONEKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", 1); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", TWOKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", 2); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", THREEKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", 3); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", FOURKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", 4); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", FIVEKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", 5); + + /* Lattice -------------------------------------------------------------------- */ keymap= WM_keymap_find(keyconf, "Lattice", 0, 0); keymap->poll= ED_operator_editlattice; WM_keymap_add_item(keymap, "LATTICE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + + /* menus */ + WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0); ED_object_generic_keymap(keyconf, keymap, TRUE); } @@ -324,10 +341,6 @@ void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keym { wmKeyMapItem *km; - /* snap */ - km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "scene.tool_settings.snap"); - /* used by mesh, curve & lattice only */ if(do_pet) { /* context ops */ diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 7e7b1d99825..749b1e34651 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -458,7 +458,7 @@ static int parent_clear_exec(bContext *C, wmOperator *op) CTX_DATA_END; DAG_scene_sort(CTX_data_scene(C)); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -598,9 +598,46 @@ static int parent_set_exec(bContext *C, wmOperator *op) /* handle types */ if (pchan) - strcpy (ob->parsubstr, pchan->name); + strcpy(ob->parsubstr, pchan->name); else ob->parsubstr[0]= 0; + + if(partype == PAR_PATH_CONST) + ; /* don't do anything here, since this is not technically "parenting" */ + else if( ELEM(partype, PAR_CURVE, PAR_LATTICE) || pararm ) + { + /* partype is now set to PAROBJECT so that invisible 'virtual' modifiers don't need to be created + * NOTE: the old (2.4x) method was to set ob->partype = PARSKEL, creating the virtual modifiers + */ + ob->partype= PAROBJECT; /* note, dna define, not operator property */ + //ob->partype= PARSKEL; /* note, dna define, not operator property */ + + /* BUT, to keep the deforms, we need a modifier, and then we need to set the object that it uses */ + // XXX currently this should only happen for meshes, curves, surfaces, and lattices - this stuff isn't available for metas yet + if (ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_LATTICE)) + { + ModifierData *md; + + switch (partype) { + case PAR_CURVE: /* curve deform */ + md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Curve); + ((CurveModifierData *)md)->object= par; + break; + case PAR_LATTICE: /* lattice deform */ + md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Lattice); + ((LatticeModifierData *)md)->object= par; + break; + default: /* armature deform */ + md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Armature); + ((ArmatureModifierData *)md)->object= par; + break; + } + } + } + else if (partype == PAR_BONE) + ob->partype= PARBONE; /* note, dna define, not operator property */ + else + ob->partype= PAROBJECT; /* note, dna define, not operator property */ /* constraint */ if(partype == PAR_PATH_CONST) { @@ -632,8 +669,6 @@ static int parent_set_exec(bContext *C, wmOperator *op) ob->partype= PAROBJECT; what_does_parent(scene, ob, &workob); - ob->partype= PARSKEL; - invert_m4_m4(ob->parentinv, workob.obmat); } else { @@ -643,22 +678,13 @@ static int parent_set_exec(bContext *C, wmOperator *op) } ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA; - - if(partype == PAR_PATH_CONST) - ; /* don't do anything here, since this is not technically "parenting" */ - if( ELEM(partype, PAR_CURVE, PAR_LATTICE) || pararm ) - ob->partype= PARSKEL; /* note, dna define, not operator property */ - else if (partype == PAR_BONE) - ob->partype= PARBONE; /* note, dna define, not operator property */ - else - ob->partype= PAROBJECT; /* note, dna define, not operator property */ } } } CTX_DATA_END; - DAG_scene_sort(CTX_data_scene(C)); - ED_anim_dag_flush_update(C); + DAG_scene_sort(scene); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -746,7 +772,7 @@ static int parent_noinv_set_exec(bContext *C, wmOperator *op) CTX_DATA_END; DAG_scene_sort(CTX_data_scene(C)); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -786,7 +812,7 @@ static int object_slow_parent_clear_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE, scene); return OPERATOR_FINISHED; @@ -824,7 +850,7 @@ static int object_slow_parent_set_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE, scene); return OPERATOR_FINISHED; @@ -873,8 +899,8 @@ static int object_track_clear_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + DAG_ids_flush_update(0); DAG_scene_sort(CTX_data_scene(C)); - ED_anim_dag_flush_update(C); return OPERATOR_FINISHED; } @@ -966,7 +992,7 @@ static int track_set_exec(bContext *C, wmOperator *op) CTX_DATA_END; } DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); return OPERATOR_FINISHED; } @@ -1146,7 +1172,7 @@ static int make_links_scene_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* one day multiple scenes will be visible, then we should have some update function for them */ return OPERATOR_FINISHED; @@ -1214,7 +1240,7 @@ static int make_links_data_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/object/object_shapekey.c b/source/blender/editors/object/object_shapekey.c index 878c61aac48..f8eff578839 100644 --- a/source/blender/editors/object/object_shapekey.c +++ b/source/blender/editors/object/object_shapekey.c @@ -119,49 +119,6 @@ void key_to_mesh(KeyBlock *kb, Mesh *me) } } -static KeyBlock *add_keyblock(Scene *scene, Key *key) -{ - KeyBlock *kb; - float curpos= -0.1; - int tot; - - kb= key->block.last; - if(kb) curpos= kb->pos; - - kb= MEM_callocN(sizeof(KeyBlock), "Keyblock"); - BLI_addtail(&key->block, kb); - kb->type= KEY_CARDINAL; - - tot= BLI_countlist(&key->block); - if(tot==1) strcpy(kb->name, "Basis"); - else sprintf(kb->name, "Key %d", tot-1); - - // XXX this is old anim system stuff? (i.e. the 'index' of the shapekey) - kb->adrcode= tot-1; - - key->totkey++; - if(key->totkey==1) key->refkey= kb; - - kb->slidermin= 0.0f; - kb->slidermax= 1.0f; - - // XXX kb->pos is the confusing old horizontal-line RVK crap in old IPO Editor... - if(key->type == KEY_RELATIVE) - kb->pos= curpos+0.1; - else { -#if 0 // XXX old animation system - curpos= bsystem_time(scene, 0, (float)CFRA, 0.0); - if(calc_ipo_spec(key->ipo, KEY_SPEED, &curpos)==0) { - curpos /= 100.0; - } - kb->pos= curpos; - - sort_keys(key); -#endif // XXX old animation system - } - return kb; -} - static void insert_meshkey(Scene *scene, Object *ob) { Mesh *me= ob->data; diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 5bed3751059..19157c6aa6a 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -26,7 +26,9 @@ */ #include <stdlib.h> +#include <string.h> +#include "DNA_anim_types.h" #include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_curve_types.h" @@ -61,6 +63,7 @@ #include "ED_anim_api.h" #include "ED_armature.h" #include "ED_curve.h" +#include "ED_keyframing.h" #include "ED_mesh.h" #include "ED_object.h" #include "ED_screen.h" @@ -72,8 +75,16 @@ static int object_location_clear_exec(bContext *C, wmOperator *op) { - int armature_clear= 0; - + Scene *scene= CTX_data_scene(C); + + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location"); + bCommonKeySrc cks; + ListBase dsources = {&cks, &cks}; + + /* init common-key-source for use by KeyingSets */ + memset(&cks, 0, sizeof(bCommonKeySrc)); + + /* clear location of selected objects if not in weight-paint mode */ CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) { if((ob->protectflag & OB_LOCK_LOCX)==0) @@ -82,13 +93,17 @@ static int object_location_clear_exec(bContext *C, wmOperator *op) ob->loc[1]= ob->dloc[1]= 0.0f; if((ob->protectflag & OB_LOCK_LOCZ)==0) ob->loc[2]= ob->dloc[2]= 0.0f; + + /* do auto-keyframing as appropriate */ + if (autokeyframe_cfra_can_key(scene, &ob->id)) { + /* init cks for this object, then use the relative KeyingSets to keyframe it */ + cks.id= &ob->id; + modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + } } ob->recalc |= OB_RECALC_OB; } CTX_DATA_END; - - if(armature_clear==0) /* in this case flush was done */ - ED_anim_dag_flush_update(C); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); @@ -112,8 +127,16 @@ void OBJECT_OT_location_clear(wmOperatorType *ot) static int object_rotation_clear_exec(bContext *C, wmOperator *op) { - int armature_clear= 0; - + Scene *scene= CTX_data_scene(C); + + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); + bCommonKeySrc cks; + ListBase dsources = {&cks, &cks}; + + /* init common-key-source for use by KeyingSets */ + memset(&cks, 0, sizeof(bCommonKeySrc)); + + /* clear rotation of selected objects if not in weight-paint mode */ CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) { if (ob->protectflag & (OB_LOCK_ROTX|OB_LOCK_ROTY|OB_LOCK_ROTZ|OB_LOCK_ROTW)) { @@ -206,13 +229,17 @@ static int object_rotation_clear_exec(bContext *C, wmOperator *op) ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0f; } } + + /* do auto-keyframing as appropriate */ + if (autokeyframe_cfra_can_key(scene, &ob->id)) { + /* init cks for this object, then use the relative KeyingSets to keyframe it */ + cks.id= &ob->id; + modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + } } ob->recalc |= OB_RECALC_OB; } CTX_DATA_END; - - if(armature_clear==0) /* in this case flush was done */ - ED_anim_dag_flush_update(C); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); @@ -236,8 +263,16 @@ void OBJECT_OT_rotation_clear(wmOperatorType *ot) static int object_scale_clear_exec(bContext *C, wmOperator *op) { - int armature_clear= 0; - + Scene *scene= CTX_data_scene(C); + + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Scaling"); + bCommonKeySrc cks; + ListBase dsources = {&cks, &cks}; + + /* init common-key-source for use by KeyingSets */ + memset(&cks, 0, sizeof(bCommonKeySrc)); + + /* clear scales of selected objects if not in weight-paint mode */ CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) { if((ob->protectflag & OB_LOCK_SCALEX)==0) { @@ -252,14 +287,18 @@ static int object_scale_clear_exec(bContext *C, wmOperator *op) ob->dsize[2]= 0.0f; ob->size[2]= 1.0f; } + + /* do auto-keyframing as appropriate */ + if (autokeyframe_cfra_can_key(scene, &ob->id)) { + /* init cks for this object, then use the relative KeyingSets to keyframe it */ + cks.id= &ob->id; + modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + } } ob->recalc |= OB_RECALC_OB; } CTX_DATA_END; - if(armature_clear==0) /* in this case flush was done */ - ED_anim_dag_flush_update(C); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -302,7 +341,7 @@ static int object_origin_clear_exec(bContext *C, wmOperator *op) CTX_DATA_END; if(armature_clear==0) /* in this case flush was done */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); @@ -656,9 +695,9 @@ void texspace_edit(Scene *scene, View3D *v3d) /********************* Set Object Center ************************/ static EnumPropertyItem prop_set_center_types[] = { - {0, "CENTER", 0, "ObData to Center", "Move object data around Object center"}, - {1, "CENTERNEW", 0, "Center New", "Move Object center to center of object data"}, - {2, "CENTERCURSOR", 0, "Center Cursor", "Move Object Center to position of the 3d cursor"}, + {0, "CENTER", 0, "ObData to Centroi", "Move object data to Object centroid"}, + {1, "CENTER_NEW", 0, "Centroid to ObData", "Move Object centroid to center of object data"}, + {2, "CENTER_CURSOR", 0, "Centroid to 3D Cursor", "Move Object centroid to position of the 3d cursor"}, {0, NULL, 0, NULL, NULL} }; @@ -971,7 +1010,8 @@ static int object_center_set_exec(bContext *C, wmOperator *op) CTX_DATA_END; if (tot_change) { - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); } /* Warn if any errors occured */ diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index 99bfea38c49..d9c21a9c9a5 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -1786,4 +1786,5 @@ void OBJECT_OT_vertex_group_set_active(wmOperatorType *ot) /* properties */ prop= RNA_def_enum(ot->srna, "group", vgroup_items, 0, "Group", "Vertex group to set as active."); RNA_def_enum_funcs(prop, vgroup_itemf); -}
\ No newline at end of file +} + diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c index 1ef3ffa6c34..ce740a53db8 100644 --- a/source/blender/editors/physics/particle_object.c +++ b/source/blender/editors/physics/particle_object.c @@ -69,7 +69,7 @@ static int particle_system_add_exec(bContext *C, wmOperator *op) if(!scene || !ob) return OPERATOR_CANCELLED; - object_add_particle_system(scene, ob); + object_add_particle_system(scene, ob, NULL); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); return OPERATOR_FINISHED; @@ -266,11 +266,11 @@ static int remove_particle_target_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void PARTICLE_OT_remove_target(wmOperatorType *ot) +void PARTICLE_OT_target_remove(wmOperatorType *ot) { /* identifiers */ ot->name= "Remove Particle Target"; - ot->idname= "PARTICLE_OT_remove_target"; + ot->idname= "PARTICLE_OT_target_remove"; ot->description="Remove the selected particle target."; /* api callbacks */ diff --git a/source/blender/editors/physics/physics_intern.h b/source/blender/editors/physics/physics_intern.h index e8169adc8dc..e7543cbb83e 100644 --- a/source/blender/editors/physics/physics_intern.h +++ b/source/blender/editors/physics/physics_intern.h @@ -68,7 +68,7 @@ void OBJECT_OT_particle_system_remove(struct wmOperatorType *ot); void PARTICLE_OT_new(struct wmOperatorType *ot); void PARTICLE_OT_new_target(struct wmOperatorType *ot); -void PARTICLE_OT_remove_target(struct wmOperatorType *ot); +void PARTICLE_OT_target_remove(struct wmOperatorType *ot); void PARTICLE_OT_target_move_up(struct wmOperatorType *ot); void PARTICLE_OT_target_move_down(struct wmOperatorType *ot); void PARTICLE_OT_connect_hair(struct wmOperatorType *ot); @@ -99,7 +99,7 @@ void PTCACHE_OT_free_bake_all(struct wmOperatorType *ot); void PTCACHE_OT_bake(struct wmOperatorType *ot); void PTCACHE_OT_free_bake(struct wmOperatorType *ot); void PTCACHE_OT_bake_from_cache(struct wmOperatorType *ot); -void PTCACHE_OT_add_new(struct wmOperatorType *ot); +void PTCACHE_OT_add(struct wmOperatorType *ot); void PTCACHE_OT_remove(struct wmOperatorType *ot); #endif /* ED_PHYSICS_INTERN_H */ diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c index af269dc8ed0..b0d804da457 100644 --- a/source/blender/editors/physics/physics_ops.c +++ b/source/blender/editors/physics/physics_ops.c @@ -75,7 +75,7 @@ static void operatortypes_particle(void) WM_operatortype_append(PARTICLE_OT_new); WM_operatortype_append(PARTICLE_OT_new_target); - WM_operatortype_append(PARTICLE_OT_remove_target); + WM_operatortype_append(PARTICLE_OT_target_remove); WM_operatortype_append(PARTICLE_OT_target_move_up); WM_operatortype_append(PARTICLE_OT_target_move_down); WM_operatortype_append(PARTICLE_OT_connect_hair); @@ -149,7 +149,7 @@ static void operatortypes_pointcache(void) WM_operatortype_append(PTCACHE_OT_bake); WM_operatortype_append(PTCACHE_OT_free_bake); WM_operatortype_append(PTCACHE_OT_bake_from_cache); - WM_operatortype_append(PTCACHE_OT_add_new); + WM_operatortype_append(PTCACHE_OT_add); WM_operatortype_append(PTCACHE_OT_remove); } diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c index 26099a18966..78728ae9eb0 100644 --- a/source/blender/editors/physics/physics_pointcache.c +++ b/source/blender/editors/physics/physics_pointcache.c @@ -308,11 +308,11 @@ static int ptcache_remove_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void PTCACHE_OT_add_new(wmOperatorType *ot) +void PTCACHE_OT_add(wmOperatorType *ot) { /* identifiers */ ot->name= "Add new cache"; - ot->idname= "PTCACHE_OT_add_new"; + ot->idname= "PTCACHE_OT_add"; /* api callbacks */ ot->exec= ptcache_add_new_exec; diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 0f22b3041fb..f663e5f0a21 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -828,29 +828,40 @@ static void ed_default_handlers(wmWindowManager *wm, ListBase *handlers, int fla // XXX it would be good to have boundbox checks for some of these... if(flag & ED_KEYMAP_UI) { + /* user interface widgets */ UI_add_region_handlers(handlers); } if(flag & ED_KEYMAP_VIEW2D) { + /* 2d-viewport handling+manipulation */ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "View2D", 0, 0); WM_event_add_keymap_handler(handlers, keymap); } if(flag & ED_KEYMAP_MARKERS) { + /* time-markers */ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Markers", 0, 0); WM_event_add_keymap_handler(handlers, keymap); // XXX need boundbox check urgently!!! } if(flag & ED_KEYMAP_ANIMATION) { + /* frame changing and timeline operators (for time spaces) */ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Animation", 0, 0); WM_event_add_keymap_handler(handlers, keymap); } if(flag & ED_KEYMAP_FRAMES) { + /* frame changing/jumping (for all spaces) */ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Frames", 0, 0); WM_event_add_keymap_handler(handlers, keymap); } if(flag & ED_KEYMAP_GPENCIL) { + /* grease pencil */ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Grease Pencil", 0, 0); WM_event_add_keymap_handler(handlers, keymap); } + if(flag & ED_KEYMAP_HEADER) { + /* standard keymap for headers regions */ + wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Header", 0, 0); + WM_event_add_keymap_handler(handlers, keymap); + } } @@ -1272,7 +1283,15 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex } if(open) { - panel->layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, + short panelContext; + + /* panel context can either be toolbar region or normal panels region */ + if (ar->regiontype == RGN_TYPE_TOOLS) + panelContext= UI_LAYOUT_TOOLBAR; + else + panelContext= UI_LAYOUT_PANEL; + + panel->layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, panelContext, style->panelspace, 0, w-2*style->panelspace, em, style); pt->draw(C, panel); diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c index 742fab07bcc..752c6feb9af 100644 --- a/source/blender/editors/screen/glutil.c +++ b/source/blender/editors/screen/glutil.c @@ -439,10 +439,15 @@ void glaDrawPixelsTexScaled(float x, float y, int img_w, int img_h, int format, glPixelStorei(GL_UNPACK_ROW_LENGTH, img_w); glBindTexture(GL_TEXTURE_2D, texid); - /* don't want nasty border artifacts */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + /* don't want nasty border artifacts */ + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); +#ifdef __APPLE__ + /* workaround for os x 10.5/10.6 driver bug: http://lists.apple.com/archives/Mac-opengl/2008/Jul/msg00117.html */ + glPixelZoom(1.f, 1.f); +#endif + for (subpart_y=0; subpart_y<nsubparts_y; subpart_y++) { for (subpart_x=0; subpart_x<nsubparts_x; subpart_x++) { int subpart_w= (subpart_x==nsubparts_x-1)?(img_w-subpart_x*tex_w):tex_w; @@ -476,6 +481,11 @@ void glaDrawPixelsTexScaled(float x, float y, int img_w, int img_h, int format, glBindTexture(GL_TEXTURE_2D, ltexid); glPixelStorei(GL_UNPACK_ROW_LENGTH, lrowlength); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + +#ifdef __APPLE__ + /* workaround for os x 10.5/10.6 driver bug (above) */ + glPixelZoom(xzoom, yzoom); +#endif } void glaDrawPixelsTex(float x, float y, int img_w, int img_h, int format, void *rect) diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c index 1ddc19a5ec0..1cacf57e42a 100644 --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@ -64,7 +64,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult "scene", "selected_objects", "selected_bases", "selected_editable_objects", "selected_editable_bases", "visible_bones", "editable_bones", "selected_bones", "selected_editable_bones", - "visible_pchans", "selected_pchans", "active_bone", "active_pchan", + "visible_pose_bones", "selected_pose_bones", "active_bone", "active_pose_bone", "active_base", "active_object", "object", "edit_object", "sculpt_object", "vertex_paint_object", "weight_paint_object", "texture_paint_object", "particle_edit_object", NULL}; @@ -192,7 +192,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } } - else if(CTX_data_equals(member, "visible_pchans")) { + else if(CTX_data_equals(member, "visible_pose_bones")) { bArmature *arm= (obact) ? obact->data : NULL; bPoseChannel *pchan; @@ -207,7 +207,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } } - else if(CTX_data_equals(member, "selected_pchans")) { + else if(CTX_data_equals(member, "selected_pose_bones")) { bArmature *arm= (obact) ? obact->data : NULL; bPoseChannel *pchan; @@ -240,7 +240,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult } } } - else if(CTX_data_equals(member, "active_pchan")) { + else if(CTX_data_equals(member, "active_pose_bone")) { bPoseChannel *pchan; pchan= get_active_posechannel(obact); diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index acf5bcd739e..c158901c15d 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1556,10 +1556,11 @@ void ED_screen_animation_timer(bContext *C, int redraws, int sync, int enable) screen->animtimer= NULL; if(enable) { - struct ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData"); + ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData"); screen->animtimer= WM_event_add_timer(wm, win, TIMER0, (1.0/FPS)); sad->ar= CTX_wm_region(C); + sad->sfra = scene->r.cfra; sad->redraws= redraws; sad->flag |= (enable < 0)? ANIMPLAY_FLAG_REVERSE: 0; sad->flag |= (sync == 0)? ANIMPLAY_FLAG_NO_SYNC: (sync == 1)? ANIMPLAY_FLAG_SYNC: 0; diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index d26718febfe..4a002088c3d 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1994,52 +1994,6 @@ static void SCREEN_OT_redo_last(wmOperatorType *ot) ot->poll= ED_operator_screenactive; } -/* ************** region split operator ***************************** */ - -/* insert a region in the area region list */ -static int region_split_exec(bContext *C, wmOperator *op) -{ - ARegion *ar= CTX_wm_region(C); - - if(ar->regiontype==RGN_TYPE_HEADER) - BKE_report(op->reports, RPT_ERROR, "Cannot split header"); - else if(ar->alignment==RGN_ALIGN_QSPLIT) - BKE_report(op->reports, RPT_ERROR, "Cannot split further"); - else { - ScrArea *sa= CTX_wm_area(C); - ARegion *newar= BKE_area_region_copy(sa->type, ar); - int dir= RNA_enum_get(op->ptr, "type"); - - BLI_insertlinkafter(&sa->regionbase, ar, newar); - - newar->alignment= ar->alignment; - - if(dir=='h') - ar->alignment= RGN_ALIGN_HSPLIT; - else - ar->alignment= RGN_ALIGN_VSPLIT; - - WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); - } - - return OPERATOR_FINISHED; -} - -static void SCREEN_OT_region_split(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Split Region"; - ot->description= "Split area by directional position."; - ot->idname= "SCREEN_OT_region_split"; - - /* api callbacks */ - ot->invoke= WM_menu_invoke; - ot->exec= region_split_exec; - ot->poll= ED_operator_areaactive; - - RNA_def_enum(ot->srna, "type", prop_direction_items, 'h', "Direction", ""); -} - /* ************** region four-split operator ***************************** */ /* insert a region in the area region list */ @@ -2165,7 +2119,104 @@ static void SCREEN_OT_region_flip(wmOperatorType *ot) ot->poll= ED_operator_areaactive; ot->flag= 0; +} + +/* ************** header flip operator ***************************** */ + +/* flip a header region alignment */ +static int header_flip_exec(bContext *C, wmOperator *op) +{ + ARegion *ar= CTX_wm_region(C); + + /* find the header region + * - try context first, but upon failing, search all regions in area... + */ + if((ar == NULL) || (ar->regiontype != RGN_TYPE_HEADER)) { + ScrArea *sa= CTX_wm_area(C); + + /* loop over all regions until a matching one is found */ + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if(ar->regiontype == RGN_TYPE_HEADER) + break; + } + + /* don't do anything if no region */ + if(ar == NULL) + return OPERATOR_CANCELLED; + } + + /* copied from SCREEN_OT_region_flip */ + if(ar->alignment==RGN_ALIGN_TOP) + ar->alignment= RGN_ALIGN_BOTTOM; + else if(ar->alignment==RGN_ALIGN_BOTTOM) + ar->alignment= RGN_ALIGN_TOP; + else if(ar->alignment==RGN_ALIGN_LEFT) + ar->alignment= RGN_ALIGN_RIGHT; + else if(ar->alignment==RGN_ALIGN_RIGHT) + ar->alignment= RGN_ALIGN_LEFT; + + WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); + printf("executed header region flip\n"); + + return OPERATOR_FINISHED; +} + + +static void SCREEN_OT_header_flip(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Flip Header Region"; + ot->idname= "SCREEN_OT_header_flip"; + + /* api callbacks */ + ot->exec= header_flip_exec; + + ot->poll= ED_operator_areaactive; + ot->flag= 0; +} + +/* ************** header tools operator ***************************** */ + +static int header_toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + ScrArea *sa= CTX_wm_area(C); + ARegion *ar= CTX_wm_region(C); + uiPopupMenu *pup; + uiLayout *layout; + + pup= uiPupMenuBegin(C, "Header", 0); + layout= uiPupMenuLayout(pup); + + // XXX SCREEN_OT_region_flip doesn't work - gets wrong context for active region, so added custom operator + if (ar->alignment == RGN_ALIGN_TOP) + uiItemO(layout, "Flip to Bottom", 0, "SCREEN_OT_header_flip"); + else + uiItemO(layout, "Flip to Top", 0, "SCREEN_OT_header_flip"); + + uiItemS(layout); + + /* file browser should be fullscreen all the time, but other regions can be maximised/restored... */ + if (sa->spacetype != SPACE_FILE) { + if (sa->full) + uiItemO(layout, "Tile Window", 0, "SCREEN_OT_screen_full_area"); + else + uiItemO(layout, "Maximize Window", 0, "SCREEN_OT_screen_full_area"); + } + + uiPupMenuEnd(C, pup); + return OPERATOR_CANCELLED; +} + +void SCREEN_OT_header_toolbox(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Header Toolbox"; + ot->description="Display header region toolbox"; + ot->idname= "SCREEN_OT_header_toolbox"; + + /* api callbacks */ + ot->invoke= header_toolbox_invoke; } /* ****************** anim player, with timer ***************** */ @@ -2309,8 +2360,6 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) // TODO: this may make evaluation a bit slower if the value doesn't change... any way to avoid this? wt->timestep= (1.0/FPS); - //WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); - return OPERATOR_FINISHED; } return OPERATOR_PASS_THROUGH; @@ -2338,6 +2387,7 @@ static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event) bScreen *screen= CTX_wm_screen(C); if(screen->animtimer) { + /* stop playback now */ ED_screen_animation_timer(C, 0, 0, 0); sound_stop_all(C); } @@ -2400,8 +2450,19 @@ static int screen_animation_cancel(bContext *C, wmOperator *op, wmEvent *event) { bScreen *screen= CTX_wm_screen(C); - if(screen->animtimer) + if(screen->animtimer) { + ScreenAnimData *sad= screen->animtimer->customdata; + Scene *scene= CTX_data_scene(C); + + /* reset current frame before stopping, and just send a notifier to deal with the rest + * (since playback still needs to be stopped) + */ + scene->r.cfra= sad->sfra; + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + + /* call the other "toggling" operator to clean up now */ return screen_animation_play(C, op, event); + } return OPERATOR_PASS_THROUGH; } @@ -2410,7 +2471,7 @@ static void SCREEN_OT_animation_cancel(wmOperatorType *ot) { /* identifiers */ ot->name= "Cancel Animation"; - ot->description= "Cancel animation."; + ot->description= "Cancel animation, returning to the original frame."; ot->idname= "SCREEN_OT_animation_cancel"; /* api callbacks */ @@ -2953,7 +3014,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) multires_force_update(CTX_data_active_object(C)); /* get editmode results */ - ED_object_exit_editmode(C, EM_DO_UNDO); /* 0 = does not exit editmode */ + ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); /* 0 = does not exit editmode */ // store spare // get view3d layer, local layer, make this nice api call to render @@ -3592,10 +3653,11 @@ void ED_operatortypes_screen(void) WM_operatortype_append(SCREEN_OT_area_join); WM_operatortype_append(SCREEN_OT_area_dupli); WM_operatortype_append(SCREEN_OT_area_swap); - WM_operatortype_append(SCREEN_OT_region_split); WM_operatortype_append(SCREEN_OT_region_foursplit); - WM_operatortype_append(SCREEN_OT_region_flip); WM_operatortype_append(SCREEN_OT_region_scale); + WM_operatortype_append(SCREEN_OT_region_flip); + WM_operatortype_append(SCREEN_OT_header_flip); + WM_operatortype_append(SCREEN_OT_header_toolbox); WM_operatortype_append(SCREEN_OT_screen_set); WM_operatortype_append(SCREEN_OT_screen_full_area); WM_operatortype_append(SCREEN_OT_screenshot); @@ -3675,7 +3737,11 @@ void ED_keymap_screen(wmKeyConfig *keyconf) /* area move after action zones */ WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0); - + /* Header Editing ------------------------------------------------ */ + keymap= WM_keymap_find(keyconf, "Header", 0, 0); + + WM_keymap_add_item(keymap, "SCREEN_OT_header_toolbox", RIGHTMOUSE, KM_PRESS, 0, 0); + /* Screen General ------------------------------------------------ */ keymap= WM_keymap_find(keyconf, "Screen", 0, 0); @@ -3692,17 +3758,11 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SCREEN_OT_screencast", F3KEY, KM_PRESS, KM_ALT, 0); /* tests */ - WM_keymap_add_item(keymap, "SCREEN_OT_region_split", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); - WM_keymap_add_item(keymap, "SCREEN_OT_region_foursplit", SKEY, KM_PRESS, KM_CTRL|KM_ALT|KM_SHIFT, 0); - + WM_keymap_add_item(keymap, "SCREEN_OT_region_foursplit", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", F3KEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SCREEN_OT_repeat_last", RKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_redo_last", F6KEY, KM_PRESS, 0, 0); - - RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", F7KEY, KM_PRESS, 0, 0)->ptr, "path", "test.py"); WM_keymap_verify_item(keymap, "WM_OT_reload_scripts", F8KEY, KM_PRESS, 0, 0); /* files */ diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index a7c012fc654..1ba837afba3 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -123,11 +123,11 @@ static int act_new_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_new (wmOperatorType *ot) +void ACTION_OT_new (wmOperatorType *ot) { /* identifiers */ ot->name= "New"; - ot->idname= "ACT_OT_new"; + ot->idname= "ACTION_OT_new"; ot->description= "Create new action."; /* api callbacks */ @@ -224,11 +224,11 @@ static int actkeys_previewrange_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_previewrange_set (wmOperatorType *ot) +void ACTION_OT_previewrange_set (wmOperatorType *ot) { /* identifiers */ ot->name= "Auto-Set Preview Range"; - ot->idname= "ACT_OT_previewrange_set"; + ot->idname= "ACTION_OT_previewrange_set"; ot->description= "Set Preview Range based on extents of selected Keyframes."; /* api callbacks */ @@ -272,11 +272,11 @@ static int actkeys_viewall_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_view_all (wmOperatorType *ot) +void ACTION_OT_view_all (wmOperatorType *ot) { /* identifiers */ ot->name= "View All"; - ot->idname= "ACT_OT_view_all"; + ot->idname= "ACTION_OT_view_all"; ot->description= "Reset viewable area to show full keyframe range."; /* api callbacks */ @@ -357,11 +357,11 @@ static int actkeys_copy_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_copy (wmOperatorType *ot) +void ACTION_OT_copy (wmOperatorType *ot) { /* identifiers */ ot->name= "Copy Keyframes"; - ot->idname= "ACT_OT_copy"; + ot->idname= "ACTION_OT_copy"; ot->description= "Copy selected keyframes to the copy/paste buffer."; /* api callbacks */ @@ -402,11 +402,11 @@ static int actkeys_paste_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_paste (wmOperatorType *ot) +void ACTION_OT_paste (wmOperatorType *ot) { /* identifiers */ ot->name= "Paste Keyframes"; - ot->idname= "ACT_OT_paste"; + ot->idname= "ACTION_OT_paste"; ot->description= "Paste keyframes from copy/paste buffer for the selected channels, starting on the current frame."; /* api callbacks */ @@ -499,11 +499,11 @@ static int actkeys_insertkey_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_insert_keyframe (wmOperatorType *ot) +void ACT_OT_keyframe_insert (wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Keyframes"; - ot->idname= "ACT_OT_insert_keyframe"; + ot->idname= "ACT_OT_keyframe_insert"; ot->description= "Insert keyframes for the specified channels."; /* api callbacks */ @@ -577,11 +577,11 @@ static int actkeys_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_FINISHED; } -void ACT_OT_duplicate (wmOperatorType *ot) +void ACTION_OT_duplicate (wmOperatorType *ot) { /* identifiers */ ot->name= "Duplicate Keyframes"; - ot->idname= "ACT_OT_duplicate"; + ot->idname= "ACTION_OT_duplicate"; ot->description= "Make a copy of all selected keyframes."; /* api callbacks */ @@ -645,11 +645,11 @@ static int actkeys_delete_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_delete (wmOperatorType *ot) +void ACTION_OT_delete (wmOperatorType *ot) { /* identifiers */ ot->name= "Delete Keyframes"; - ot->idname= "ACT_OT_delete"; + ot->idname= "ACTION_OT_delete"; ot->description= "Remove all selected keyframes."; /* api callbacks */ @@ -709,11 +709,11 @@ static int actkeys_clean_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_clean (wmOperatorType *ot) +void ACTION_OT_clean (wmOperatorType *ot) { /* identifiers */ ot->name= "Clean Keyframes"; - ot->idname= "ACT_OT_clean"; + ot->idname= "ACTION_OT_clean"; ot->description= "Simplify F-Curves by removing closely spaced keyframes."; /* api callbacks */ @@ -773,11 +773,11 @@ static int actkeys_sample_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_sample (wmOperatorType *ot) +void ACTION_OT_sample (wmOperatorType *ot) { /* identifiers */ ot->name= "Sample Keyframes"; - ot->idname= "ACT_OT_sample"; + ot->idname= "ACTION_OT_sample"; ot->description= "Add keyframes on every frame between the selected keyframes."; /* api callbacks */ @@ -849,11 +849,11 @@ static int actkeys_expo_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_extrapolation_type (wmOperatorType *ot) +void ACTION_OT_extrapolation_type (wmOperatorType *ot) { /* identifiers */ ot->name= "Set Keyframe Extrapolation"; - ot->idname= "ACT_OT_extrapolation_type"; + ot->idname= "ACTION_OT_extrapolation_type"; ot->description= "Set extrapolation mode for selected F-Curves."; /* api callbacks */ @@ -920,11 +920,11 @@ static int actkeys_ipo_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_interpolation_type (wmOperatorType *ot) +void ACTION_OT_interpolation_type (wmOperatorType *ot) { /* identifiers */ ot->name= "Set Keyframe Interpolation"; - ot->idname= "ACT_OT_interpolation_type"; + ot->idname= "ACTION_OT_interpolation_type"; ot->description= "Set interpolation mode for the F-Curve segments starting from the selected keyframes."; /* api callbacks */ @@ -1009,11 +1009,11 @@ static int actkeys_handletype_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_handle_type (wmOperatorType *ot) +void ACTION_OT_handle_type (wmOperatorType *ot) { /* identifiers */ ot->name= "Set Keyframe Handle Type"; - ot->idname= "ACT_OT_handle_type"; + ot->idname= "ACTION_OT_handle_type"; ot->description= "Set type of handle for selected keyframes."; /* api callbacks */ @@ -1080,11 +1080,11 @@ static int actkeys_keytype_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_keyframe_type (wmOperatorType *ot) +void ACTION_OT_keyframe_type (wmOperatorType *ot) { /* identifiers */ ot->name= "Set Keyframe Type"; - ot->idname= "ACT_OT_keyframe_type"; + ot->idname= "ACTION_OT_keyframe_type"; ot->description= "Set type of keyframe for the seleced keyframes."; /* api callbacks */ @@ -1150,11 +1150,11 @@ static int actkeys_framejump_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_frame_jump (wmOperatorType *ot) +void ACTION_OT_frame_jump (wmOperatorType *ot) { /* identifiers */ ot->name= "Jump to Frame"; - ot->idname= "ACT_OT_frame_jump"; + ot->idname= "ACTION_OT_frame_jump"; ot->description= "Set the current frame to the average frame of the selected keyframes."; /* api callbacks */ @@ -1246,11 +1246,11 @@ static int actkeys_snap_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_snap (wmOperatorType *ot) +void ACTION_OT_snap (wmOperatorType *ot) { /* identifiers */ ot->name= "Snap Keys"; - ot->idname= "ACT_OT_snap"; + ot->idname= "ACTION_OT_snap"; ot->description= "Snap selected keyframes to the times specified."; /* api callbacks */ @@ -1363,11 +1363,11 @@ static int actkeys_mirror_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_mirror (wmOperatorType *ot) +void ACTION_OT_mirror (wmOperatorType *ot) { /* identifiers */ ot->name= "Mirror Keys"; - ot->idname= "ACT_OT_mirror"; + ot->idname= "ACTION_OT_mirror"; ot->description= "Flip selected keyframes over the selected mirror line."; /* api callbacks */ diff --git a/source/blender/editors/space_action/action_header.c b/source/blender/editors/space_action/action_header.c index 6ec106077f7..d2dbb5fe3b0 100644 --- a/source/blender/editors/space_action/action_header.c +++ b/source/blender/editors/space_action/action_header.c @@ -86,7 +86,7 @@ static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) RNA_pointer_create(&sc->id, &RNA_SpaceDopeSheetEditor, sact, &spaceptr); /* create menu */ - //uiItemO(layout, NULL, ICON_MENU_PANEL, "ACT_OT_properties"); + //uiItemO(layout, NULL, ICON_MENU_PANEL, "ACTION_OT_properties"); //uiItemS(layout); @@ -104,13 +104,13 @@ static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_set"); uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_clear"); - uiItemO(layout, NULL, 0, "ACT_OT_previewrange_set"); + uiItemO(layout, NULL, 0, "ACTION_OT_previewrange_set"); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_frame_jump"); + uiItemO(layout, NULL, 0, "ACTION_OT_frame_jump"); - uiItemO(layout, NULL, 0, "ACT_OT_view_all"); + uiItemO(layout, NULL, 0, "ACTION_OT_view_all"); if (sa->full) uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Tile Window", Ctrl UpArrow @@ -120,21 +120,21 @@ static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) static void act_selectmenu(bContext *C, uiLayout *layout, void *arg_unused) { - uiItemO(layout, NULL, 0, "ACT_OT_select_all_toggle"); - uiItemBooleanO(layout, "Invert All", 0, "ACT_OT_select_all_toggle", "invert", 1); + uiItemO(layout, NULL, 0, "ACTION_OT_select_all_toggle"); + uiItemBooleanO(layout, "Invert All", 0, "ACTION_OT_select_all_toggle", "invert", 1); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_select_border"); - uiItemBooleanO(layout, "Border Axis Range", 0, "ACT_OT_select_border", "axis_range", 1); + uiItemO(layout, NULL, 0, "ACTION_OT_select_border"); + uiItemBooleanO(layout, "Border Axis Range", 0, "ACTION_OT_select_border", "axis_range", 1); uiItemS(layout); - uiItemEnumO(layout, "Columns on Selected Keys", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_KEYS); - uiItemEnumO(layout, "Column on Current Frame", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_CFRA); + uiItemEnumO(layout, "Columns on Selected Keys", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_KEYS); + uiItemEnumO(layout, "Column on Current Frame", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_CFRA); - uiItemEnumO(layout, "Columns on Selected Markers", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN); - uiItemEnumO(layout, "Between Selected Markers", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN); + uiItemEnumO(layout, "Columns on Selected Markers", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN); + uiItemEnumO(layout, "Between Selected Markers", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN); } static void act_channelmenu(bContext *C, uiLayout *layout, void *arg_unused) @@ -170,34 +170,34 @@ static void act_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unus static void act_editmenu(bContext *C, uiLayout *layout, void *arg_unused) { uiItemMenuF(layout, "Transform", 0, act_edit_transformmenu, NULL); - uiItemMenuEnumO(layout, "Snap", 0, "ACT_OT_snap", "type"); - uiItemMenuEnumO(layout, "Mirror", 0, "ACT_OT_mirror", "type"); + uiItemMenuEnumO(layout, "Snap", 0, "ACTION_OT_snap", "type"); + uiItemMenuEnumO(layout, "Mirror", 0, "ACTION_OT_mirror", "type"); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_insert_keyframe"); + uiItemO(layout, NULL, 0, "ACT_OT_keyframe_insert"); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_duplicate"); - uiItemO(layout, NULL, 0, "ACT_OT_delete"); + uiItemO(layout, NULL, 0, "ACTION_OT_duplicate"); + uiItemO(layout, NULL, 0, "ACTION_OT_delete"); uiItemS(layout); - uiItemMenuEnumO(layout, "Keyframe Type", 0, "ACT_OT_keyframe_type", "type"); - uiItemMenuEnumO(layout, "Handle Type", 0, "ACT_OT_handle_type", "type"); - uiItemMenuEnumO(layout, "Interpolation Type", 0, "ACT_OT_interpolation_type", "type"); - uiItemMenuEnumO(layout, "Extrapolation Type", 0, "ACT_OT_extrapolation_type", "type"); + uiItemMenuEnumO(layout, "Keyframe Type", 0, "ACTION_OT_keyframe_type", "type"); + uiItemMenuEnumO(layout, "Handle Type", 0, "ACTION_OT_handle_type", "type"); + uiItemMenuEnumO(layout, "Interpolation Type", 0, "ACTION_OT_interpolation_type", "type"); + uiItemMenuEnumO(layout, "Extrapolation Type", 0, "ACTION_OT_extrapolation_type", "type"); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_clean"); - uiItemO(layout, NULL, 0, "ACT_OT_sample"); + uiItemO(layout, NULL, 0, "ACTION_OT_clean"); + uiItemO(layout, NULL, 0, "ACTION_OT_sample"); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_copy"); - uiItemO(layout, NULL, 0, "ACT_OT_paste"); + uiItemO(layout, NULL, 0, "ACTION_OT_copy"); + uiItemO(layout, NULL, 0, "ACTION_OT_paste"); } /* ************************ header area region *********************** */ @@ -305,7 +305,7 @@ void action_header_buttons(const bContext *C, ARegion *ar) RNA_pointer_create(&sc->id, &RNA_SpaceDopeSheetEditor, saction, &ptr); layout= uiBlockLayout(block, UI_LAYOUT_HORIZONTAL, UI_LAYOUT_HEADER, xco, 20+3, 20, 1, U.uistyles.first); - uiTemplateID(layout, (bContext*)C, &ptr, "action", "ACT_OT_new", NULL, NULL); + uiTemplateID(layout, (bContext*)C, &ptr, "action", "ACTION_OT_new", NULL, NULL); uiBlockLayoutResolve(block, &xco, NULL); xco += 8; @@ -331,9 +331,9 @@ void action_header_buttons(const bContext *C, ARegion *ar) /* COPY PASTE */ uiBlockBeginAlign(block); - uiDefIconButO(block, BUT, "ACT_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, "Copies the selected keyframes to the buffer."); + uiDefIconButO(block, BUT, "ACTION_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, "Copies the selected keyframes to the buffer."); xco += XIC; - uiDefIconButO(block, BUT, "ACT_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, "Pastes the keyframes from the buffer into the selected channels."); + uiDefIconButO(block, BUT, "ACTION_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, "Pastes the keyframes from the buffer into the selected channels."); uiBlockEndAlign(block); xco += (XIC + 8); } diff --git a/source/blender/editors/space_action/action_intern.h b/source/blender/editors/space_action/action_intern.h index c436475b537..e45b2d05fac 100644 --- a/source/blender/editors/space_action/action_intern.h +++ b/source/blender/editors/space_action/action_intern.h @@ -53,10 +53,10 @@ void action_header_buttons(const struct bContext *C, struct ARegion *ar); /* ***************************************** */ /* action_select.c */ -void ACT_OT_select_all_toggle(struct wmOperatorType *ot); -void ACT_OT_select_border(struct wmOperatorType *ot); -void ACT_OT_select_column(struct wmOperatorType *ot); -void ACT_OT_clickselect(struct wmOperatorType *ot); +void ACTION_OT_select_all_toggle(struct wmOperatorType *ot); +void ACTION_OT_select_border(struct wmOperatorType *ot); +void ACTION_OT_select_column(struct wmOperatorType *ot); +void ACTION_OT_clickselect(struct wmOperatorType *ot); /* defines for left-right select tool */ enum { @@ -77,29 +77,29 @@ enum { /* ***************************************** */ /* action_edit.c */ -void ACT_OT_previewrange_set(struct wmOperatorType *ot); -void ACT_OT_view_all(struct wmOperatorType *ot); +void ACTION_OT_previewrange_set(struct wmOperatorType *ot); +void ACTION_OT_view_all(struct wmOperatorType *ot); -void ACT_OT_copy(struct wmOperatorType *ot); -void ACT_OT_paste(struct wmOperatorType *ot); +void ACTION_OT_copy(struct wmOperatorType *ot); +void ACTION_OT_paste(struct wmOperatorType *ot); -void ACT_OT_insert_keyframe(struct wmOperatorType *ot); -void ACT_OT_duplicate(struct wmOperatorType *ot); -void ACT_OT_delete(struct wmOperatorType *ot); -void ACT_OT_clean(struct wmOperatorType *ot); -void ACT_OT_sample(struct wmOperatorType *ot); +void ACT_OT_keyframe_insert(struct wmOperatorType *ot); +void ACTION_OT_duplicate(struct wmOperatorType *ot); +void ACTION_OT_delete(struct wmOperatorType *ot); +void ACTION_OT_clean(struct wmOperatorType *ot); +void ACTION_OT_sample(struct wmOperatorType *ot); -void ACT_OT_keyframe_type(struct wmOperatorType *ot); -void ACT_OT_handle_type(struct wmOperatorType *ot); -void ACT_OT_interpolation_type(struct wmOperatorType *ot); -void ACT_OT_extrapolation_type(struct wmOperatorType *ot); +void ACTION_OT_keyframe_type(struct wmOperatorType *ot); +void ACTION_OT_handle_type(struct wmOperatorType *ot); +void ACTION_OT_interpolation_type(struct wmOperatorType *ot); +void ACTION_OT_extrapolation_type(struct wmOperatorType *ot); -void ACT_OT_frame_jump(struct wmOperatorType *ot); +void ACTION_OT_frame_jump(struct wmOperatorType *ot); -void ACT_OT_snap(struct wmOperatorType *ot); -void ACT_OT_mirror(struct wmOperatorType *ot); +void ACTION_OT_snap(struct wmOperatorType *ot); +void ACTION_OT_mirror(struct wmOperatorType *ot); -void ACT_OT_new(struct wmOperatorType *ot); +void ACTION_OT_new(struct wmOperatorType *ot); /* defines for snap keyframes * NOTE: keep in sync with eEditKeyframes_Snap (in ED_keyframes_edit.h) diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c index ba504fa8a69..b4c9fee8469 100644 --- a/source/blender/editors/space_action/action_ops.c +++ b/source/blender/editors/space_action/action_ops.c @@ -63,30 +63,30 @@ void action_operatortypes(void) { /* keyframes */ /* selection */ - WM_operatortype_append(ACT_OT_clickselect); - WM_operatortype_append(ACT_OT_select_all_toggle); - WM_operatortype_append(ACT_OT_select_border); - WM_operatortype_append(ACT_OT_select_column); + WM_operatortype_append(ACTION_OT_clickselect); + WM_operatortype_append(ACTION_OT_select_all_toggle); + WM_operatortype_append(ACTION_OT_select_border); + WM_operatortype_append(ACTION_OT_select_column); /* editing */ - WM_operatortype_append(ACT_OT_snap); - WM_operatortype_append(ACT_OT_mirror); - WM_operatortype_append(ACT_OT_frame_jump); - WM_operatortype_append(ACT_OT_handle_type); - WM_operatortype_append(ACT_OT_interpolation_type); - WM_operatortype_append(ACT_OT_extrapolation_type); - WM_operatortype_append(ACT_OT_keyframe_type); - WM_operatortype_append(ACT_OT_sample); - WM_operatortype_append(ACT_OT_clean); - WM_operatortype_append(ACT_OT_delete); - WM_operatortype_append(ACT_OT_duplicate); - WM_operatortype_append(ACT_OT_insert_keyframe); - WM_operatortype_append(ACT_OT_copy); - WM_operatortype_append(ACT_OT_paste); - WM_operatortype_append(ACT_OT_new); - - WM_operatortype_append(ACT_OT_previewrange_set); - WM_operatortype_append(ACT_OT_view_all); + WM_operatortype_append(ACTION_OT_snap); + WM_operatortype_append(ACTION_OT_mirror); + WM_operatortype_append(ACTION_OT_frame_jump); + WM_operatortype_append(ACTION_OT_handle_type); + WM_operatortype_append(ACTION_OT_interpolation_type); + WM_operatortype_append(ACTION_OT_extrapolation_type); + WM_operatortype_append(ACTION_OT_keyframe_type); + WM_operatortype_append(ACTION_OT_sample); + WM_operatortype_append(ACTION_OT_clean); + WM_operatortype_append(ACTION_OT_delete); + WM_operatortype_append(ACTION_OT_duplicate); + WM_operatortype_append(ACT_OT_keyframe_insert); + WM_operatortype_append(ACTION_OT_copy); + WM_operatortype_append(ACTION_OT_paste); + WM_operatortype_append(ACTION_OT_new); + + WM_operatortype_append(ACTION_OT_previewrange_set); + WM_operatortype_append(ACTION_OT_view_all); } /* ************************** registration - keymaps **********************************/ @@ -97,69 +97,69 @@ static void action_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) /* action_select.c - selection tools */ /* click-select */ - WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, 0, 0); - kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, 0, 0); + kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT, 0); RNA_boolean_set(kmi->ptr, "column", 1); - kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); + kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "extend", 1); - kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT|KM_SHIFT, 0); + kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT|KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "extend", 1); RNA_boolean_set(kmi->ptr, "column", 1); - kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); + kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); RNA_enum_set(kmi->ptr, "left_right", ACTKEYS_LRSEL_TEST); /* deselect all */ - WM_keymap_add_item(keymap, "ACT_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "ACT_OT_select_all_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "invert", 1); + WM_keymap_add_item(keymap, "ACTION_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "ACTION_OT_select_all_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "invert", 1); /* borderselect */ - WM_keymap_add_item(keymap, "ACT_OT_select_border", BKEY, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "ACT_OT_select_border", BKEY, KM_PRESS, KM_ALT, 0)->ptr, "axis_range", 1); + WM_keymap_add_item(keymap, "ACTION_OT_select_border", BKEY, KM_PRESS, 0, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "ACTION_OT_select_border", BKEY, KM_PRESS, KM_ALT, 0)->ptr, "axis_range", 1); /* column select */ - RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_KEYS); - RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_CFRA); - RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN); - RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN); + RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_KEYS); + RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_CFRA); + RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN); + RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN); /* action_edit.c */ /* snap - current frame to selected keys */ // TODO: maybe since this is called jump, we're better to have it on <something>-J? - WM_keymap_add_item(keymap, "ACT_OT_frame_jump", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_frame_jump", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); /* menu + single-step transform */ - WM_keymap_add_item(keymap, "ACT_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACT_OT_mirror", MKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_mirror", MKEY, KM_PRESS, KM_SHIFT, 0); /* menu + set setting */ - WM_keymap_add_item(keymap, "ACT_OT_handle_type", HKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACT_OT_interpolation_type", TKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACT_OT_extrapolation_type", EKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACT_OT_keyframe_type", RKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_handle_type", HKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_interpolation_type", TKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_extrapolation_type", EKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_keyframe_type", RKEY, KM_PRESS, 0, 0); /* destructive */ - WM_keymap_add_item(keymap, "ACT_OT_clean", OKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACT_OT_sample", OKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_clean", OKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_sample", OKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACT_OT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACT_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_delete", XKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACT_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACT_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACT_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); /* copy/paste */ - WM_keymap_add_item(keymap, "ACT_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ACT_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "ACTION_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "ACTION_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); /* auto-set range */ - WM_keymap_add_item(keymap, "ACT_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); - WM_keymap_add_item(keymap, "ACT_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); /* transform system */ transform_keymap_for_space(keyconf, keymap, SPACE_ACTION); /* test */ - /* WM_keymap_add_item(keymap, "ACT_OT_test", QKEY, KM_PRESS, 0, 0); */ + /* WM_keymap_add_item(keymap, "ACTION_OT_test", QKEY, KM_PRESS, 0, 0); */ } /* --------------- */ diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c index c4f2e40e958..8eeed6da100 100644 --- a/source/blender/editors/space_action/action_select.c +++ b/source/blender/editors/space_action/action_select.c @@ -181,11 +181,11 @@ static int actkeys_deselectall_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_select_all_toggle (wmOperatorType *ot) +void ACTION_OT_select_all_toggle (wmOperatorType *ot) { /* identifiers */ ot->name= "Select All"; - ot->idname= "ACT_OT_select_all_toggle"; + ot->idname= "ACTION_OT_select_all_toggle"; ot->description= "Toggle selection of all keyframes."; /* api callbacks */ @@ -342,11 +342,11 @@ static int actkeys_borderselect_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_select_border(wmOperatorType *ot) +void ACTION_OT_select_border(wmOperatorType *ot) { /* identifiers */ ot->name= "Border Select"; - ot->idname= "ACT_OT_select_border"; + ot->idname= "ACTION_OT_select_border"; ot->description= "Select all keyframes within the specified region."; /* api callbacks */ @@ -556,11 +556,11 @@ static int actkeys_columnselect_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_select_column (wmOperatorType *ot) +void ACTION_OT_select_column (wmOperatorType *ot) { /* identifiers */ ot->name= "Select All"; - ot->idname= "ACT_OT_select_column"; + ot->idname= "ACTION_OT_select_column"; ot->description= "Select all keyframes on the specified frame(s)."; /* api callbacks */ @@ -979,11 +979,11 @@ static int actkeys_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *even return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; } -void ACT_OT_clickselect (wmOperatorType *ot) +void ACTION_OT_clickselect (wmOperatorType *ot) { /* identifiers */ ot->name= "Mouse Select Keys"; - ot->idname= "ACT_OT_clickselect"; + ot->idname= "ACTION_OT_clickselect"; ot->description= "Select keyframes by clicking on them."; /* api callbacks - absolutely no exec() this yet... */ diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 59b690002d2..d4f8fcfb449 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -444,7 +444,7 @@ void ED_spacetype_action(void) art= MEM_callocN(sizeof(ARegionType), "spacetype action region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= action_header_area_init; art->draw= action_header_area_draw; diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 2c918bd9b30..9fc24516d2d 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -308,6 +308,10 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) if(wmn->data == ND_SPACE_PROPERTIES) ED_area_tag_redraw(sa); break; + case NC_ID: + if(wmn->data == ND_ID_RENAME) + ED_area_tag_redraw(sa); + break; } if(wmn->data == ND_KEYS) @@ -345,7 +349,7 @@ void ED_spacetype_buttons(void) art= MEM_callocN(sizeof(ARegionType), "spacetype buttons region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= BUTS_HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= buttons_header_area_init; art->draw= buttons_header_area_draw; diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c index 3dca5a4db4b..4d2f816ba6b 100644 --- a/source/blender/editors/space_console/space_console.c +++ b/source/blender/editors/space_console/space_console.c @@ -356,7 +356,7 @@ void ED_spacetype_console(void) art= MEM_callocN(sizeof(ARegionType), "spacetype console region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= console_header_area_init; art->draw= console_header_area_draw; diff --git a/source/blender/editors/space_file/file_intern.h b/source/blender/editors/space_file/file_intern.h index d07ffd4b964..fa99dc6e1ee 100644 --- a/source/blender/editors/space_file/file_intern.h +++ b/source/blender/editors/space_file/file_intern.h @@ -55,7 +55,7 @@ void FILE_OT_select(struct wmOperatorType *ot); void FILE_OT_select_all_toggle(struct wmOperatorType *ot); void FILE_OT_select_border(struct wmOperatorType *ot); void FILE_OT_select_bookmark(struct wmOperatorType *ot); -void FILE_OT_add_bookmark(struct wmOperatorType *ot); +void FILE_OT_bookmark_add(struct wmOperatorType *ot); void FILE_OT_delete_bookmark(struct wmOperatorType *ot); void FILE_OT_hidedot(struct wmOperatorType *ot); void FILE_OT_loadimages(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 97d4e8019fe..2d4185e871a 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -124,7 +124,7 @@ static void clamp_to_filelist(int numfiles, int *first_file, int *last_file) } } -static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short selecting) +static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short selecting, short toggle_one) { int first_file = -1; int last_file = -1; @@ -146,7 +146,14 @@ static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, s if ( (first_file >= 0) && (first_file < numfiles) && (last_file >= 0) && (last_file < numfiles) ) { for (act_file = first_file; act_file <= last_file; act_file++) { struct direntry* file = filelist_file(sfile->files, act_file); - if (selecting) + + if (toggle_one) { + if (file->flags & ACTIVE) { + file->flags &= ~ACTIVE; + selecting=0; + } else + file->flags |= ACTIVE; + } else if (selecting) file->flags |= ACTIVE; else file->flags &= ~ACTIVE; @@ -208,7 +215,7 @@ static int file_border_select_exec(bContext *C, wmOperator *op) BLI_isect_rcti(&(ar->v2d.mask), &rect, &rect); - if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, selecting)) { + if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, selecting, 0)) { WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); } else { WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL); @@ -239,6 +246,7 @@ static int file_select_invoke(bContext *C, wmOperator *op, wmEvent *event) SpaceFile *sfile= CTX_wm_space_file(C); short val; rcti rect; + int extend = RNA_boolean_get(op->ptr, "extend"); if(ar->regiontype != RGN_TYPE_WINDOW) return OPERATOR_CANCELLED; @@ -251,9 +259,9 @@ static int file_select_invoke(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_CANCELLED; /* single select, deselect all selected first */ - file_deselect_all(sfile); + if (!extend) file_deselect_all(sfile); - if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, val==LEFTMOUSE )) //LEFTMOUSE XXX, fixme + if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, 1, extend )) WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); else WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL); @@ -273,13 +281,13 @@ void FILE_OT_select(wmOperatorType *ot) /* api callbacks */ ot->invoke= file_select_invoke; + ot->poll= ED_operator_file_active; /* rna */ - - ot->poll= ED_operator_file_active; + RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first."); } -static int file_select_all_invoke(bContext *C, wmOperator *op, wmEvent *event) +static int file_select_all_exec(bContext *C, wmOperator *op) { ScrArea *sa= CTX_wm_area(C); SpaceFile *sfile= CTX_wm_space_file(C); @@ -317,7 +325,7 @@ void FILE_OT_select_all_toggle(wmOperatorType *ot) ot->idname= "FILE_OT_select_all_toggle"; /* api callbacks */ - ot->invoke= file_select_all_invoke; + ot->exec= file_select_all_exec; /* rna */ @@ -326,7 +334,7 @@ void FILE_OT_select_all_toggle(wmOperatorType *ot) /* ---------- BOOKMARKS ----------- */ -static int bookmark_select_invoke(bContext *C, wmOperator *op, wmEvent *event) +static int bookmark_select_exec(bContext *C, wmOperator *op) { SpaceFile *sfile= CTX_wm_space_file(C); @@ -353,13 +361,13 @@ void FILE_OT_select_bookmark(wmOperatorType *ot) ot->idname= "FILE_OT_select_bookmark"; /* api callbacks */ - ot->invoke= bookmark_select_invoke; + ot->exec= bookmark_select_exec; ot->poll= ED_operator_file_active; RNA_def_string(ot->srna, "dir", "", 256, "Dir", ""); } -static int bookmark_add_invoke(bContext *C, wmOperator *op, wmEvent *event) +static int bookmark_add_exec(bContext *C, wmOperator *op) { ScrArea *sa= CTX_wm_area(C); SpaceFile *sfile= CTX_wm_space_file(C); @@ -378,19 +386,19 @@ static int bookmark_add_invoke(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_FINISHED; } -void FILE_OT_add_bookmark(wmOperatorType *ot) +void FILE_OT_bookmark_add(wmOperatorType *ot) { /* identifiers */ ot->name= "Add Bookmark"; ot->description= "Add a bookmark for the selected/active directory."; - ot->idname= "FILE_OT_add_bookmark"; + ot->idname= "FILE_OT_bookmark_add"; /* api callbacks */ - ot->invoke= bookmark_add_invoke; + ot->exec= bookmark_add_exec; ot->poll= ED_operator_file_active; } -static int bookmark_delete_invoke(bContext *C, wmOperator *op, wmEvent *event) +static int bookmark_delete_exec(bContext *C, wmOperator *op) { ScrArea *sa= CTX_wm_area(C); struct FSMenu* fsmenu = fsmenu_get(); @@ -419,14 +427,14 @@ void FILE_OT_delete_bookmark(wmOperatorType *ot) ot->idname= "FILE_OT_delete_bookmark"; /* api callbacks */ - ot->invoke= bookmark_delete_invoke; + ot->exec= bookmark_delete_exec; ot->poll= ED_operator_file_active; RNA_def_int(ot->srna, "index", -1, -1, 20000, "Index", "", -1, 20000); } -static int loadimages_invoke(bContext *C, wmOperator *op, wmEvent *event) +static int loadimages_exec(bContext *C, wmOperator *op) { ScrArea *sa= CTX_wm_area(C); SpaceFile *sfile= CTX_wm_space_file(C); @@ -449,7 +457,7 @@ void FILE_OT_loadimages(wmOperatorType *ot) ot->idname= "FILE_OT_loadimages"; /* api callbacks */ - ot->invoke= loadimages_invoke; + ot->exec= loadimages_exec; ot->poll= ED_operator_file_active; } diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c index afdb0d24917..fb52a36cdcf 100644 --- a/source/blender/editors/space_file/file_panels.c +++ b/source/blender/editors/space_file/file_panels.c @@ -138,7 +138,7 @@ static void file_panel_bookmarks(const bContext *C, Panel *pa) if(sfile) { row= uiLayoutRow(pa->layout, 0); - uiItemO(row, "Add", ICON_ZOOMIN, "file.add_bookmark"); + uiItemO(row, "Add", ICON_ZOOMIN, "file.bookmark_add"); uiItemL(row, NULL, 0); file_panel_category(C, pa, FS_CATEGORY_BOOKMARKS, &sfile->bookmarknr, ICON_BOOKMARKS, 1, 0); @@ -175,7 +175,7 @@ static void file_panel_operator(const bContext *C, Panel *pa) int empty= 1, flag; if(op->type->ui) { - op->type->ui((bContext*)C, op->ptr, pa->layout); + op->type->ui((bContext*)C, op, pa->layout); } else { RNA_STRUCT_BEGIN(op->ptr, prop) { diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index cc0c1ca33aa..d681a58b276 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -124,7 +124,7 @@ short ED_fileselect_set_params(SpaceFile *sfile) if (op) { BLI_strncpy(params->title, op->type->name, sizeof(params->title)); - if(RNA_struct_find_property(op->ptr, "filename")) + if(RNA_struct_find_property(op->ptr, "filemode")) params->type = RNA_int_get(op->ptr, "filemode"); else params->type = FILE_SPECIAL; @@ -164,7 +164,12 @@ short ED_fileselect_set_params(SpaceFile *sfile) if (params->filter != 0) params->flag |= FILE_FILTER; - params->flag |= FILE_HIDE_DOT; + if (U.uiflag & USER_HIDE_DOT) { + params->flag |= FILE_HIDE_DOT; + } else { + params->flag &= ~FILE_HIDE_DOT; + } + if (params->type == FILE_LOADLIB) { params->flag |= RNA_boolean_get(op->ptr, "link") ? FILE_LINK : 0; diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 576736f026f..8bbdbbeb4fb 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -156,7 +156,7 @@ static void file_free(SpaceLink *sl) static void file_init(struct wmWindowManager *wm, ScrArea *sa) { SpaceFile *sfile= (SpaceFile*)sa->spacedata.first; - printf("file_init\n"); + //printf("file_init\n"); if(sfile->layout) sfile->layout->dirty= 1; } @@ -354,7 +354,7 @@ void file_operatortypes(void) 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_bookmark_add); WM_operatortype_append(FILE_OT_delete_bookmark); WM_operatortype_append(FILE_OT_hidedot); WM_operatortype_append(FILE_OT_filenum); @@ -371,7 +371,7 @@ void file_keymap(struct wmKeyConfig *keyconf) wmKeyMap *keymap= WM_keymap_find(keyconf, "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_bookmark_add", 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); @@ -382,10 +382,13 @@ void file_keymap(struct wmKeyConfig *keyconf) /* keys for main area */ keymap= WM_keymap_find(keyconf, "FileMain", SPACE_FILE, 0); WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, 0, 0); + kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); + RNA_boolean_set(kmi->ptr, "extend", 1); 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_select_border", EVT_TWEAK_L, KM_ANY, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_rename", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "FILE_OT_highlight", MOUSEMOVE, KM_ANY, 0, 0); + WM_keymap_add_item(keymap, "FILE_OT_highlight", MOUSEMOVE, KM_ANY, KM_ANY, 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); @@ -528,7 +531,7 @@ void ED_spacetype_file(void) art= MEM_callocN(sizeof(ARegionType), "spacetype file region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= file_header_area_init; art->draw= file_header_area_draw; // art->listener= file_header_area_listener; diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index abcc1315313..05987087288 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -235,13 +235,13 @@ static void do_graph_region_driver_buttons(bContext *C, void *arg, int event) DAG_scene_sort(scene); /* force an update of depsgraph */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); } break; } /* default for now */ - WM_event_add_notifier(C, NC_SCENE, scene); // XXX does this always work? + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); // XXX could use better notifier } /* callback to remove the active driver */ @@ -342,7 +342,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) /* show expression box if doing scripted drivers, and/or error messages when invalid drivers exist */ if (driver->type == DRIVER_TYPE_PYTHON) { /* expression */ - uiItemR(col, "Expr:", 0, &driver_ptr, "expression", 0); + uiItemR(col, "Expr", 0, &driver_ptr, "expression", 0); /* errors? */ if (driver->flag & DRIVER_FLAG_INVALID) @@ -377,13 +377,13 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) uiItemR(row, "", 0, &dtar_ptr, "name", 0); /* remove button */ - but= uiDefIconBut(block, BUT, B_REDR, ICON_X, 290, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete target variable."); + but= uiDefIconBut(block, BUT, B_IPO_DEPCHANGE, ICON_X, 290, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete target variable."); uiButSetFunc(but, driver_delete_var_cb, driver, dtar); /* Target ID */ row= uiLayoutRow(box, 0); - uiTemplateAnyID(row, (bContext *)C, &dtar_ptr, "id", "id_type", "Value: "); + uiTemplateAnyID(row, (bContext *)C, &dtar_ptr, "id", "id_type", "Value:"); /* Target Property */ // TODO: make this less technical... @@ -400,7 +400,9 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) /* array index */ // TODO: this needs selector which limits it to ok values - uiItemR(col, "Index", 0, &dtar_ptr, "array_index", 0); + // NOTE: for for now, the array index box still gets shown when non-zero (i.e. for tweaking rigs as necessary) + if (dtar->array_index) + uiItemR(col, "Index", 0, &dtar_ptr, "array_index", 0); } } @@ -450,7 +452,7 @@ static void graph_panel_modifiers(const bContext *C, Panel *pa) for (fcm= fcu->modifiers.first; fcm; fcm= fcm->next) { col= uiLayoutColumn(pa->layout, 1); - ANIM_uiTemplate_fmodifier_draw(col, ale->id, &fcu->modifiers, fcm); + ANIM_uiTemplate_fmodifier_draw(C, col, ale->id, &fcu->modifiers, fcm); } MEM_freeN(ale); diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c index 6e0878972f8..3a7f9024510 100644 --- a/source/blender/editors/space_graph/graph_draw.c +++ b/source/blender/editors/space_graph/graph_draw.c @@ -818,7 +818,7 @@ void graph_draw_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, View2DGri /* protected curves (non editable) are drawn with dotted lines */ setlinestyle(2); } - if (fcu->flag & FCURVE_MUTED) { + if ( ((fcu->grp) && (fcu->grp->flag & AGRP_MUTED)) || (fcu->flag & FCURVE_MUTED) ) { /* muted curves are drawn in a greyish hue */ // XXX should we have some variations? UI_ThemeColorShade(TH_HEADER, 50); diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 2088ee4030c..381d5becb1e 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -481,11 +481,11 @@ static int graphkeys_insertkey_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void GRAPH_OT_insert_keyframe (wmOperatorType *ot) +void GRAPH_OT_keyframe_insert (wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Keyframes"; - ot->idname= "GRAPH_OT_insert_keyframe"; + ot->idname= "GRAPH_OT_keyframe_insert"; ot->description= "Insert keyframes for the specified channels."; /* api callbacks */ diff --git a/source/blender/editors/space_graph/graph_header.c b/source/blender/editors/space_graph/graph_header.c index 63c95b18e2d..e05e41f1b66 100644 --- a/source/blender/editors/space_graph/graph_header.c +++ b/source/blender/editors/space_graph/graph_header.c @@ -154,9 +154,10 @@ static void graph_channelmenu(bContext *C, uiLayout *layout, void *arg_unused) static void graph_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unused) { - uiItemEnumO(layout, "Grab/Move", 0, "TFM_OT_transform", "mode", TFM_TIME_TRANSLATE); + uiItemO(layout, "Grab/Move", 0, "TFM_OT_translate"); uiItemEnumO(layout, "Extend", 0, "TFM_OT_transform", "mode", TFM_TIME_EXTEND); - uiItemEnumO(layout, "Scale", 0, "TFM_OT_transform", "mode", TFM_TIME_SCALE); + uiItemO(layout, "Rotate", 0, "TFM_OT_rotate"); + uiItemO(layout, "Scale", 0, "TFM_OT_resize"); } static void graph_editmenu(bContext *C, uiLayout *layout, void *arg_unused) @@ -167,7 +168,7 @@ static void graph_editmenu(bContext *C, uiLayout *layout, void *arg_unused) uiItemS(layout); - uiItemO(layout, NULL, 0, "GRAPH_OT_insert_keyframe"); + uiItemO(layout, NULL, 0, "GRAPH_OT_keyframe_insert"); uiItemO(layout, NULL, 0, "GRAPH_OT_fmodifier_add"); uiItemS(layout); diff --git a/source/blender/editors/space_graph/graph_intern.h b/source/blender/editors/space_graph/graph_intern.h index 1e0f66751f0..87e03247353 100644 --- a/source/blender/editors/space_graph/graph_intern.h +++ b/source/blender/editors/space_graph/graph_intern.h @@ -90,7 +90,7 @@ void GRAPH_OT_previewrange_set(struct wmOperatorType *ot); void GRAPH_OT_view_all(struct wmOperatorType *ot); void GRAPH_OT_click_insert(struct wmOperatorType *ot); -void GRAPH_OT_insert_keyframe(struct wmOperatorType *ot); +void GRAPH_OT_keyframe_insert(struct wmOperatorType *ot); void GRAPH_OT_copy(struct wmOperatorType *ot); void GRAPH_OT_paste(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c index 1780942a123..cddb1965964 100644 --- a/source/blender/editors/space_graph/graph_ops.c +++ b/source/blender/editors/space_graph/graph_ops.c @@ -255,7 +255,7 @@ void graphedit_operatortypes(void) WM_operatortype_append(GRAPH_OT_copy); WM_operatortype_append(GRAPH_OT_paste); - WM_operatortype_append(GRAPH_OT_insert_keyframe); + WM_operatortype_append(GRAPH_OT_keyframe_insert); WM_operatortype_append(GRAPH_OT_click_insert); /* F-Curve Modifiers */ @@ -337,7 +337,7 @@ static void graphedit_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "GRAPH_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); /* insertkey */ - WM_keymap_add_item(keymap, "GRAPH_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "GRAPH_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "GRAPH_OT_click_insert", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); /* copy/paste */ diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index 157202190bb..24f87906391 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -593,7 +593,7 @@ void ED_spacetype_ipo(void) art= MEM_callocN(sizeof(ARegionType), "spacetype graphedit region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->listener= graph_region_listener; art->init= graph_header_area_init; art->draw= graph_header_area_draw; diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 8478b40092f..3bb697ba1f4 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -569,7 +569,7 @@ void ED_spacetype_image(void) art= MEM_callocN(sizeof(ARegionType), "spacetype image region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= image_header_area_init; art->draw= image_header_area_draw; diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c index c28e86a6fa6..ab10e05b204 100644 --- a/source/blender/editors/space_info/space_info.c +++ b/source/blender/editors/space_info/space_info.c @@ -204,7 +204,7 @@ void ED_spacetype_info(void) art= MEM_callocN(sizeof(ARegionType), "spacetype info region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->listener= info_header_listener; art->init= info_header_area_init; art->draw= info_header_area_draw; diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index dc8b111821d..8ba0577e3c7 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -637,7 +637,7 @@ static char *sensor_name(int type) static char *sensor_pup(void) { - /* the number needs to match defines in game.h */ + /* the number needs to match defines in DNA_sensor_types.h */ return "Sensors %t|Always %x0|Delay %x13|Keyboard %x3|Mouse %x5|" "Touch %x1|Collision %x6|Near %x2|Radar %x7|" "Property %x4|Random %x8|Ray %x9|Message %x10|Joystick %x11|Actuator %x12|Armature %x14"; @@ -3396,9 +3396,9 @@ void logic_buttons(bContext *C, ARegion *ar) //uiButSetFunc(but, sca_move_controller, cont, NULL); uiBlockBeginAlign(block); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(110+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); + but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(110+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); uiButSetFunc(but, sca_move_controller, cont, (void *)TRUE); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(88+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); + but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(88+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); uiButSetFunc(but, sca_move_controller, cont, (void *)FALSE); uiBlockEndAlign(block); @@ -3488,9 +3488,9 @@ void logic_buttons(bContext *C, ARegion *ar) //uiButSetFunc(but, sca_move_sensor, sens, NULL); uiBlockBeginAlign(block); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); + but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); uiButSetFunc(but, sca_move_sensor, sens, (void *)TRUE); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); + but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); uiButSetFunc(but, sca_move_sensor, sens, (void *)FALSE); uiBlockEndAlign(block); } @@ -3568,9 +3568,9 @@ void logic_buttons(bContext *C, ARegion *ar) // uiButSetFunc(but, sca_move_actuator, act, NULL); uiBlockBeginAlign(block); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); + but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); uiButSetFunc(but, sca_move_actuator, act, (void *)TRUE); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); + but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); uiButSetFunc(but, sca_move_actuator, act, (void *)FALSE); uiBlockEndAlign(block); diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c index 62ed6a0a769..f9fdbb92db9 100644 --- a/source/blender/editors/space_logic/space_logic.c +++ b/source/blender/editors/space_logic/space_logic.c @@ -364,7 +364,7 @@ void ED_spacetype_logic(void) art= MEM_callocN(sizeof(ARegionType), "spacetype logic region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= logic_header_area_init; art->draw= logic_header_area_draw; diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c index 6e5da38dd10..e8eca9de281 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -247,7 +247,7 @@ static void nla_panel_animdata (const bContext *C, Panel *pa) /* Active Action Properties ------------------------------------- */ /* action */ row= uiLayoutRow(layout, 1); - uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACT_OT_new", NULL, NULL /*"ACT_OT_unlink"*/); // XXX: need to make these operators + uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACTION_OT_new", NULL, NULL /*"ACTION_OT_unlink"*/); // XXX: need to make these operators /* extrapolation */ row= uiLayoutRow(layout, 1); @@ -434,7 +434,7 @@ static void nla_panel_modifiers(const bContext *C, Panel *pa) for (fcm= strip->modifiers.first; fcm; fcm= fcm->next) { col= uiLayoutColumn(pa->layout, 1); - ANIM_uiTemplate_fmodifier_draw(col, strip_ptr.id.data, &strip->modifiers, fcm); + ANIM_uiTemplate_fmodifier_draw(C, col, strip_ptr.id.data, &strip->modifiers, fcm); } } diff --git a/source/blender/editors/space_nla/nla_channels.c b/source/blender/editors/space_nla/nla_channels.c index ab447dd974a..5f9d6b03efc 100644 --- a/source/blender/editors/space_nla/nla_channels.c +++ b/source/blender/editors/space_nla/nla_channels.c @@ -429,11 +429,11 @@ static int nlaedit_add_tracks_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void NLA_OT_add_tracks (wmOperatorType *ot) +void NLA_OT_tracks_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add Track(s)"; - ot->idname= "NLA_OT_add_tracks"; + ot->idname= "NLA_OT_tracks_add"; ot->description= "Add NLA-Tracks above/after the selected tracks."; /* api callbacks */ diff --git a/source/blender/editors/space_nla/nla_edit.c b/source/blender/editors/space_nla/nla_edit.c index 12e43465a29..0ae3a347872 100644 --- a/source/blender/editors/space_nla/nla_edit.c +++ b/source/blender/editors/space_nla/nla_edit.c @@ -259,7 +259,7 @@ static int nlaedit_add_actionclip_invoke (bContext *C, wmOperator *op, wmEvent * /* loop through Actions in Main database, adding as items in the menu */ for (act= m->action.first; act; act= act->id.next) - uiItemStringO(layout, act->id.name+2, 0, "NLA_OT_add_actionclip", "action", act->id.name); + uiItemStringO(layout, act->id.name+2, 0, "NLA_OT_actionclip_add", "action", act->id.name); uiItemS(layout); uiPupMenuEnd(C, pup); @@ -347,11 +347,11 @@ static int nlaedit_add_actionclip_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void NLA_OT_add_actionclip (wmOperatorType *ot) +void NLA_OT_actionclip_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add Action Strip"; - ot->idname= "NLA_OT_add_actionclip"; + ot->idname= "NLA_OT_actionclip_add"; ot->description= "Add an Action-Clip strip (i.e. an NLA Strip referencing an Action) to the active track."; /* api callbacks */ @@ -467,11 +467,11 @@ static int nlaedit_add_transition_exec (bContext *C, wmOperator *op) } } -void NLA_OT_add_transition (wmOperatorType *ot) +void NLA_OT_transition_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add Transition"; - ot->idname= "NLA_OT_add_transition"; + ot->idname= "NLA_OT_transition_add"; ot->description= "Add a transition strip between two adjacent selected strips."; /* api callbacks */ @@ -529,11 +529,11 @@ static int nlaedit_add_meta_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void NLA_OT_add_meta (wmOperatorType *ot) +void NLA_OT_meta_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add Meta-Strips"; - ot->idname= "NLA_OT_add_meta"; + ot->idname= "NLA_OT_meta_add"; ot->description= "Add new meta-strips incorporating the selected strips."; /* api callbacks */ @@ -581,11 +581,11 @@ static int nlaedit_remove_meta_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void NLA_OT_remove_meta (wmOperatorType *ot) +void NLA_OT_meta_remove (wmOperatorType *ot) { /* identifiers */ ot->name= "Remove Meta-Strips"; - ot->idname= "NLA_OT_remove_meta"; + ot->idname= "NLA_OT_meta_remove"; ot->description= "Separate out the strips held by the selected meta-strips."; /* api callbacks */ diff --git a/source/blender/editors/space_nla/nla_header.c b/source/blender/editors/space_nla/nla_header.c index 0c0deaf75ef..2624e7a9255 100644 --- a/source/blender/editors/space_nla/nla_header.c +++ b/source/blender/editors/space_nla/nla_header.c @@ -177,18 +177,18 @@ static void nla_editmenu(bContext *C, uiLayout *layout, void *arg_unused) static void nla_addmenu(bContext *C, uiLayout *layout, void *arg_unused) { - uiItemO(layout, NULL, 0, "NLA_OT_add_actionclip"); - uiItemO(layout, NULL, 0, "NLA_OT_add_transition"); + uiItemO(layout, NULL, 0, "NLA_OT_actionclip_add"); + uiItemO(layout, NULL, 0, "NLA_OT_transition_add"); uiItemS(layout); - uiItemO(layout, NULL, 0, "NLA_OT_add_meta"); - uiItemO(layout, NULL, 0, "NLA_OT_remove_meta"); + uiItemO(layout, NULL, 0, "NLA_OT_meta_add"); + uiItemO(layout, NULL, 0, "NLA_OT_meta_remove"); uiItemS(layout); - uiItemO(layout, NULL, 0, "NLA_OT_add_tracks"); - uiItemBooleanO(layout, "Add Tracks Above Selected", 0, "NLA_OT_add_tracks", "above_selected", 1); + uiItemO(layout, NULL, 0, "NLA_OT_tracks_add"); + uiItemBooleanO(layout, "Add Tracks Above Selected", 0, "NLA_OT_tracks_add", "above_selected", 1); } /* ------------------ */ diff --git a/source/blender/editors/space_nla/nla_intern.h b/source/blender/editors/space_nla/nla_intern.h index 91c1decc576..ca50452b442 100644 --- a/source/blender/editors/space_nla/nla_intern.h +++ b/source/blender/editors/space_nla/nla_intern.h @@ -88,11 +88,11 @@ void NLA_OT_tweakmode_exit(wmOperatorType *ot); /* --- */ -void NLA_OT_add_actionclip(wmOperatorType *ot); -void NLA_OT_add_transition(wmOperatorType *ot); +void NLA_OT_actionclip_add(wmOperatorType *ot); +void NLA_OT_transition_add(wmOperatorType *ot); -void NLA_OT_add_meta(wmOperatorType *ot); -void NLA_OT_remove_meta(wmOperatorType *ot); +void NLA_OT_meta_add(wmOperatorType *ot); +void NLA_OT_meta_remove(wmOperatorType *ot); void NLA_OT_duplicate(wmOperatorType *ot); void NLA_OT_delete(wmOperatorType *ot); @@ -116,7 +116,7 @@ void NLA_OT_fmodifier_add(wmOperatorType *ot); void NLA_OT_channels_click(wmOperatorType *ot); -void NLA_OT_add_tracks(wmOperatorType *ot); +void NLA_OT_tracks_add(wmOperatorType *ot); void NLA_OT_delete_tracks(wmOperatorType *ot); /* **************************************** */ diff --git a/source/blender/editors/space_nla/nla_ops.c b/source/blender/editors/space_nla/nla_ops.c index d210016d201..8f057c2d751 100644 --- a/source/blender/editors/space_nla/nla_ops.c +++ b/source/blender/editors/space_nla/nla_ops.c @@ -130,7 +130,7 @@ void nla_operatortypes(void) /* channels */ WM_operatortype_append(NLA_OT_channels_click); - WM_operatortype_append(NLA_OT_add_tracks); + WM_operatortype_append(NLA_OT_tracks_add); WM_operatortype_append(NLA_OT_delete_tracks); /* select */ @@ -142,11 +142,11 @@ void nla_operatortypes(void) WM_operatortype_append(NLA_OT_tweakmode_enter); WM_operatortype_append(NLA_OT_tweakmode_exit); - WM_operatortype_append(NLA_OT_add_actionclip); - WM_operatortype_append(NLA_OT_add_transition); + WM_operatortype_append(NLA_OT_actionclip_add); + WM_operatortype_append(NLA_OT_transition_add); - WM_operatortype_append(NLA_OT_add_meta); - WM_operatortype_append(NLA_OT_remove_meta); + WM_operatortype_append(NLA_OT_meta_add); + WM_operatortype_append(NLA_OT_meta_remove); WM_operatortype_append(NLA_OT_duplicate); WM_operatortype_append(NLA_OT_delete); @@ -178,8 +178,8 @@ static void nla_keymap_channels (wmKeyConfig *keyconf, wmKeyMap *keymap) /* channel operations */ /* add tracks */ - WM_keymap_add_item(keymap, "NLA_OT_add_tracks", AKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "NLA_OT_add_tracks", AKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "above_selected", 1); + WM_keymap_add_item(keymap, "NLA_OT_tracks_add", AKEY, KM_PRESS, KM_SHIFT, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "NLA_OT_tracks_add", AKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "above_selected", 1); /* delete tracks */ WM_keymap_add_item(keymap, "NLA_OT_delete_tracks", XKEY, KM_PRESS, 0, 0); @@ -240,12 +240,12 @@ static void nla_keymap_main (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "NLA_OT_tweakmode_exit", TABKEY, KM_PRESS, 0, 0); /* add strips */ - WM_keymap_add_item(keymap, "NLA_OT_add_actionclip", AKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NLA_OT_add_transition", TKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "NLA_OT_actionclip_add", AKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "NLA_OT_transition_add", TKEY, KM_PRESS, KM_SHIFT, 0); /* meta-strips */ - WM_keymap_add_item(keymap, "NLA_OT_add_meta", GKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NLA_OT_remove_meta", GKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "NLA_OT_meta_add", GKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "NLA_OT_meta_remove", GKEY, KM_PRESS, KM_ALT, 0); /* duplicate */ WM_keymap_add_item(keymap, "NLA_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index 1e35e9122e6..a019e684239 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -538,7 +538,7 @@ void ED_spacetype_nla(void) art= MEM_callocN(sizeof(ARegionType), "spacetype nla region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= nla_header_area_init; art->draw= nla_header_area_draw; diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index e5fb0b8dfcf..f5c6efa2fb8 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -370,7 +370,7 @@ void ED_spacetype_node(void) art= MEM_callocN(sizeof(ARegionType), "spacetype node region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->listener= node_region_listener; art->init= node_header_area_init; art->draw= node_header_area_draw; diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index 39eecd7d2de..bfb1724af35 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -4747,7 +4747,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) case ID_SCE: WM_event_add_notifier(C, NC_SCENE, NULL); break; default: - WM_event_add_notifier(C, NC_MATERIAL, NULL); break; + WM_event_add_notifier(C, NC_ID|ND_ID_RENAME, NULL); break; } /* Check the library target exists */ if (te->idcode == ID_LI) { diff --git a/source/blender/editors/space_outliner/outliner_ops.c b/source/blender/editors/space_outliner/outliner_ops.c index 431801d50f2..434c7942714 100644 --- a/source/blender/editors/space_outliner/outliner_ops.c +++ b/source/blender/editors/space_outliner/outliner_ops.c @@ -107,8 +107,8 @@ void outliner_keymap(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "OUTLINER_OT_keyingset_add_selected", KKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "OUTLINER_OT_keyingset_remove_selected", KKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe", IKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete", IKEY, KM_PRESS, KM_ALT, 0); WM_keymap_verify_item(keymap, "OUTLINER_OT_drivers_add_selected", DKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "OUTLINER_OT_drivers_delete_selected", DKEY, KM_PRESS, KM_ALT, 0); diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index 5c6a8701f18..31de6839468 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -147,6 +147,10 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) if(wmn->data == ND_SPACE_OUTLINER) ED_region_tag_redraw(ar); break; + case NC_ID: + if(wmn->data == ND_ID_RENAME) + ED_region_tag_redraw(ar); + break; } } @@ -277,7 +281,7 @@ void ED_spacetype_outliner(void) art= MEM_callocN(sizeof(ARegionType), "spacetype time region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= outliner_header_area_init; art->draw= outliner_header_area_draw; diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c index 355095ea290..153f1236dce 100644 --- a/source/blender/editors/space_script/script_edit.c +++ b/source/blender/editors/space_script/script_edit.c @@ -81,6 +81,7 @@ void SCRIPT_OT_python_file_run(wmOperatorType *ot) ot->name= "Run python file"; ot->description= "Run Python file."; ot->idname= "SCRIPT_OT_python_file_run"; + ot->flag = OPTYPE_UNDO; /* api callbacks */ ot->exec= run_pyfile_exec; diff --git a/source/blender/editors/space_script/space_script.c b/source/blender/editors/space_script/space_script.c index fc2f10670df..e6edb71c1b1 100644 --- a/source/blender/editors/space_script/space_script.c +++ b/source/blender/editors/space_script/space_script.c @@ -219,7 +219,7 @@ void ED_spacetype_script(void) art= MEM_callocN(sizeof(ARegionType), "spacetype script region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= script_header_area_init; art->draw= script_header_area_draw; diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index cc01662edd0..cfce8aeb8ed 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -498,6 +498,8 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) seq = alloc_sequence(ed->seqbasep, start_frame, channel); seq->type= type; + seqUniqueName(ed->seqbasep, seq); + sh = get_sequence_effect(seq); seq->seq1= seq1; diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index c16e328d8dd..a1488d867d7 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -57,6 +57,7 @@ #include "BIF_glutil.h" #include "ED_anim_api.h" +#include "ED_markers.h" #include "ED_space_api.h" #include "ED_sequencer.h" #include "ED_types.h" @@ -610,8 +611,8 @@ void set_special_seq_update(int val) else special_seq_update= 0; } - -static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq) +// XXX todo: remove special offset code for image-buf calculations... +void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq) { extern void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad); struct ImBuf *ibuf; @@ -767,6 +768,7 @@ static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq) } +// XXX part of wacko image-drawing system... void seq_reset_imageofs(SpaceSeq *sseq) { sseq->xof = sseq->yof = sseq->zoom = 0; @@ -862,114 +864,139 @@ void drawprefetchseqspace(Scene *scene, ARegion *ar, SpaceSeq *sseq) } } -void drawseqspace(const bContext *C, ARegion *ar) +/* draw backdrop of the sequencer strips view */ +static void draw_seq_backdrop(View2D *v2d) { - ScrArea *sa= CTX_wm_area(C); - SpaceSeq *sseq= sa->spacedata.first; - Scene *scene= CTX_data_scene(C); - View2D *v2d= &ar->v2d; - View2DScrollers *scrollers; - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq; - float col[3]; - int i, flag=0; - - if(sseq->mainb != SEQ_DRAW_SEQUENCE) { - draw_image_seq(scene, ar, sseq); - return; - } - - UI_GetThemeColor3fv(TH_BACK, col); - if(ed && ed->metastack.first) glClearColor(col[0], col[1], col[2]-0.1, 0.0); - else glClearColor(col[0], col[1], col[2], 0.0); - - glClear(GL_COLOR_BUFFER_BIT); - - UI_view2d_view_ortho(C, v2d); + int i; + /* darker grey overlay over the view backdrop */ UI_ThemeColorShade(TH_BACK, -20); - glRectf(v2d->cur.xmin, 0.0, v2d->cur.xmax, 1.0); + glRectf(v2d->cur.xmin, -1.0, v2d->cur.xmax, 1.0); - boundbox_seq(scene, &v2d->tot); - /* Alternating horizontal stripes */ i= MAX2(1, ((int)v2d->cur.ymin)-1); glBegin(GL_QUADS); - while (i<v2d->cur.ymax) { - if (((int)i) & 1) - UI_ThemeColorShade(TH_BACK, -15); - else - UI_ThemeColorShade(TH_BACK, -25); - - glVertex2f(v2d->cur.xmax, i); - glVertex2f(v2d->cur.xmin, i); - glVertex2f(v2d->cur.xmin, i+1); - glVertex2f(v2d->cur.xmax, i+1); - i+=1.0; - } + while (i<v2d->cur.ymax) { + if (((int)i) & 1) + UI_ThemeColorShade(TH_BACK, -15); + else + UI_ThemeColorShade(TH_BACK, -25); + + glVertex2f(v2d->cur.xmax, i); + glVertex2f(v2d->cur.xmin, i); + glVertex2f(v2d->cur.xmin, i+1); + glVertex2f(v2d->cur.xmax, i+1); + + i+=1.0; + } glEnd(); - /* Force grid lines */ + /* Darker lines separating the horizontal bands */ i= MAX2(1, ((int)v2d->cur.ymin)-1); + UI_ThemeColor(TH_GRID); + glBegin(GL_LINES); - - while (i<v2d->cur.ymax) { - UI_ThemeColor(TH_GRID); - glVertex2f(v2d->cur.xmax, i); - glVertex2f(v2d->cur.xmin, i); - i+=1.0; - } + while (i < v2d->cur.ymax) { + glVertex2f(v2d->cur.xmax, i); + glVertex2f(v2d->cur.xmin, i); + + i+=1.0; + } glEnd(); - - UI_view2d_constant_grid_draw(C, v2d); +} - /* sequences: first deselect */ - if(ed) { - Sequence *last_seq = active_seq_get(scene); - int sel = 0, j; - int outline_tint; - float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin); - /* loop through twice, first unselected, then selected */ - for (j=0; j<2; j++) { - seq= ed->seqbasep->first; - if (j==0) outline_tint = -150; - else outline_tint = -60; +/* draw the contents of the sequencer strips view */ +static void draw_seq_strips(const bContext *C, Editing *ed, ARegion *ar) +{ + Scene *scene= CTX_data_scene(C); + SpaceSeq *sseq= CTX_wm_space_seq(C); + View2D *v2d= &ar->v2d; + Sequence *last_seq = active_seq_get(scene); + int sel = 0, j; + float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin); + + /* loop through twice, first unselected, then selected */ + for (j=0; j<2; j++) { + Sequence *seq; + int outline_tint= (j) ? -60 : -150; /* highlighting around strip edges indicating selection */ + + /* loop through strips, checking for those that are visible */ + for (seq= ed->seqbasep->first; seq; seq= seq->next) { + /* boundbox and selection tests for NOT drawing the strip... */ + if ((seq->flag & SELECT) == sel) continue; + else if (seq == last_seq) continue; + else if (MIN2(seq->startdisp, seq->start) > v2d->cur.xmax) continue; + else if (MAX2(seq->enddisp, seq->start+seq->len) < v2d->cur.xmin) continue; + else if (seq->machine+1.0 < v2d->cur.ymin) continue; + else if (seq->machine > v2d->cur.ymax) continue; - while(seq) { /* bound box test, dont draw outside the view */ - if ( ((seq->flag & SELECT) == sel) || - seq == last_seq || - MIN2(seq->startdisp, seq->start) > v2d->cur.xmax || - MAX2(seq->enddisp, seq->start+seq->len) < v2d->cur.xmin || - seq->machine+1.0 < v2d->cur.ymin || - seq->machine > v2d->cur.ymax) - { - /* dont draw */ - } else { - draw_seq_strip(scene, ar, sseq, seq, outline_tint, pixelx); - } - seq= seq->next; - } - sel= SELECT; /* draw selected next time round */ - } - /* draw the last selected last, removes some overlapping error */ - if (last_seq) { - draw_seq_strip(scene, ar, sseq, last_seq, 120, pixelx); + /* strip passed all tests unscathed... so draw it now */ + draw_seq_strip(scene, ar, sseq, seq, outline_tint, pixelx); } + + /* draw selected next time round */ + sel= SELECT; } + + /* draw the last selected last (i.e. 'active' in other parts of Blender), removes some overlapping error */ + if (last_seq) + draw_seq_strip(scene, ar, sseq, last_seq, 120, pixelx); +} - /* text draw cached, in pixelspace now */ - UI_view2d_text_cache_draw(ar); +/* Draw Timeline/Strip Editor Mode for Sequencer */ +void draw_timeline_seq(const bContext *C, ARegion *ar) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + SpaceSeq *sseq= CTX_wm_space_seq(C); + View2D *v2d= &ar->v2d; + View2DScrollers *scrollers; + float col[3]; + int flag=0; - /* current frame */ + /* clear and setup matrix */ + UI_GetThemeColor3fv(TH_BACK, col); + if (ed && ed->metastack.first) + glClearColor(col[0], col[1], col[2]-0.1, 0.0); + else + glClearColor(col[0], col[1], col[2], 0.0); + glClear(GL_COLOR_BUFFER_BIT); + UI_view2d_view_ortho(C, v2d); + + /* calculate extents of sequencer strips/data + * NOTE: needed for the scrollers later + */ + boundbox_seq(scene, &v2d->tot); + + + /* draw backdrop */ + draw_seq_backdrop(v2d); + + /* regular grid-pattern over the rest of the view (i.e. frame grid lines) */ + UI_view2d_constant_grid_draw(C, v2d); + + + /* sequence strips (if there is data available to be drawn) */ + if (ed) { + /* draw the data */ + draw_seq_strips(C, ed, ar); + + /* text draw cached (for sequence names), in pixelspace now */ + UI_view2d_text_cache_draw(ar); + } + + /* current frame */ + UI_view2d_view_ortho(C, v2d); if ((sseq->flag & SEQ_DRAWFRAMES)==0) flag |= DRAWCFRA_UNIT_SECONDS; if ((sseq->flag & SEQ_NO_DRAW_CFRANUM)==0) flag |= DRAWCFRA_SHOW_NUMBOX; ANIM_draw_cfra(C, v2d, flag); - /* Draw markers */ -// draw_markers_timespace(SCE_MARKERS, DRAW_MARKERS_LINES); + /* markers */ + UI_view2d_view_orthoSpecial(C, v2d, 1); + draw_markers_time(C, DRAW_MARKERS_LINES); /* preview range */ UI_view2d_view_ortho(C, v2d); diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index a87f7f64ee9..a68001e536b 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -45,11 +45,11 @@ struct Scene; /* space_sequencer.c */ struct ARegion *sequencer_has_buttons_region(struct ScrArea *sa); -/* sequencer_header.c */ -// void sequencer_header_buttons(const struct bContext *C, struct ARegion *ar); /* sequencer_draw.c */ -void drawseqspace(const struct bContext *C, struct ARegion *ar); +void draw_timeline_seq(const struct bContext *C, struct ARegion *ar); +void draw_image_seq(struct Scene *scene, struct ARegion *ar, struct SpaceSeq *sseq); + void seq_reset_imageofs(struct SpaceSeq *sseq); /* sequencer_edit.c */ diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 7e1fdc80bb3..b8adaf23f73 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -194,6 +194,23 @@ static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar) WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); } +static void sequencer_main_area_draw(const bContext *C, ARegion *ar) +{ + ScrArea *sa= CTX_wm_area(C); + SpaceSeq *sseq= sa->spacedata.first; + Scene *scene= CTX_data_scene(C); + + + if (sseq->mainb != SEQ_DRAW_SEQUENCE) { + /* image-viewer types */ + draw_image_seq(scene, ar, sseq); + } + else { + /* NLE - strip editing timeline interface */ + draw_timeline_seq(C, ar); + } +} + /* add handlers, stuff you only do once or on area/region changes */ static void sequencer_header_area_init(wmWindowManager *wm, ARegion *ar) @@ -281,7 +298,7 @@ void ED_spacetype_sequencer(void) art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region"); art->regionid = RGN_TYPE_WINDOW; art->init= sequencer_main_area_init; - art->draw= drawseqspace; + art->draw= sequencer_main_area_draw; art->listener= sequencer_main_area_listener; art->keymapflag= ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_ANIMATION; @@ -305,7 +322,7 @@ void ED_spacetype_sequencer(void) art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= sequencer_header_area_init; art->draw= sequencer_header_area_draw; diff --git a/source/blender/editors/space_sound/space_sound.c b/source/blender/editors/space_sound/space_sound.c index 314e711234a..f2c449ffc1f 100644 --- a/source/blender/editors/space_sound/space_sound.c +++ b/source/blender/editors/space_sound/space_sound.c @@ -246,7 +246,7 @@ void ED_spacetype_sound(void) art= MEM_callocN(sizeof(ARegionType), "spacetype sound region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= sound_header_area_init; art->draw= sound_header_area_draw; diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 0b30587c521..a8d146bb7a8 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -438,7 +438,7 @@ void ED_spacetype_text(void) art= MEM_callocN(sizeof(ARegionType), "spacetype text region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= text_header_area_init; art->draw= text_header_area_draw; diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index 09c74666b69..16a7f97afd6 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -555,7 +555,7 @@ void TEXT_OT_run_script(wmOperatorType *ot) /* api callbacks */ ot->exec= run_script_exec; - ot->poll= text_edit_poll; +// ot->poll= text_edit_poll; // dont do this since linked texts cant run } @@ -2412,7 +2412,7 @@ static int find_and_replace(bContext *C, wmOperator *op, short mode) first= 1; } else { - BKE_reportf(op->reports, RPT_INFO, "Text not found: %s", st->findstr); + BKE_reportf(op->reports, RPT_ERROR, "Text not found: %s", st->findstr); break; } } while(mode==TEXT_MARK_ALL); diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 501ac1c0cba..59314fba48e 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -418,7 +418,7 @@ void ED_spacetype_time(void) art= MEM_callocN(sizeof(ARegionType), "spacetype time region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= time_header_area_init; art->draw= time_header_area_draw; diff --git a/source/blender/editors/space_userpref/space_userpref.c b/source/blender/editors/space_userpref/space_userpref.c index 39fc2fd2bd1..da475ff4c5b 100644 --- a/source/blender/editors/space_userpref/space_userpref.c +++ b/source/blender/editors/space_userpref/space_userpref.c @@ -175,7 +175,7 @@ void ED_spacetype_userpref(void) art= MEM_callocN(sizeof(ARegionType), "spacetype userpref region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->listener= userpref_header_listener; art->init= userpref_header_area_init; art->draw= userpref_header_area_draw; diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 496af5ef1b8..2c4f010ce3e 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -4326,63 +4326,168 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj glPointSize(1.0); } -static void draw_sb_motion(Scene *scene, Object *ob) +//static void ob_draw_RE_motion(float com[3],float rotscale[3][3],float tw,float th) +static void ob_draw_RE_motion(float com[3],float rotscale[3][3],float itw,float ith,float drw_size) { - SoftBody *sb = 0; - if (sb= ob->soft){ - if(sb->solverflags & SBSO_MONITOR ||sb->solverflags & SBSO_ESTIMATEIPO){ - /* draw com */ - float rt[3][3],sc[3][3],tr[3][3]; - /* looks like to swap a b in reverse */ - copy_m3_m3(sc,sb->lscale); - copy_m3_m3(rt,sb->lrot); - mul_m3_m3m3(tr,rt,sc); - if(1){ - float root[3],tip[3]; + float tr[3][3]; + float root[3],tip[3]; + float tw,th; + /* take a copy for not spoiling original */ + copy_m3_m3(tr,rotscale); + tw = itw * drw_size; + th = ith * drw_size; + + glColor4ub(0x7F, 0x00, 0x00, 155); + glBegin(GL_LINES); + root[1] = root[2] = 0.0f; + root[0] = -drw_size; + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + tip[1] = tip[2] = 0.0f; + tip[0] = drw_size; + mul_m3_v3(tr,tip); + VECADD(tip,tip,com); + glVertex3fv(tip); + glEnd(); - glBegin(GL_LINES); - root[1] = root[2] = 0.0f; - root[0] = -1.0f; - mul_m3_v3(tr,root); - VECADD(root,root,sb->lcom); - glVertex3fv(root); - tip[1] = tip[2] = 0.0f; - tip[0] = 1.0f; - mul_m3_v3(tr,tip); - VECADD(tip,tip,sb->lcom); - glVertex3fv(tip); - glEnd(); + root[1] =0.0f; root[2] = tw; + root[0] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); - glBegin(GL_LINES); - root[0] = root[2] = 0.0f; - root[1] = -1.0f; - mul_m3_v3(tr,root); - VECADD(root,root,sb->lcom); - glVertex3fv(root); - tip[0] = tip[2] = 0.0f; - tip[1] = 1.0f; - mul_m3_v3(tr,tip); - VECADD(tip,tip,sb->lcom); - glVertex3fv(tip); - glEnd(); + root[1] =0.0f; root[2] = -tw; + root[0] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); - glBegin(GL_LINES); - root[0] = root[1] = 0.0f; - root[2] = -1.0f; - mul_m3_v3(tr,root); - VECADD(root,root,sb->lcom); - glVertex3fv(root); - tip[0] = tip[1] = 0.0f; - tip[2] = 1.0f; - mul_m3_v3(tr,tip); - VECADD(tip,tip,sb->lcom); - glVertex3fv(tip); - glEnd(); - } + root[1] =tw; root[2] = 0.0f; + root[0] =th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); - } - } -}; + root[1] =-tw; root[2] = 0.0f; + root[0] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + glColor4ub(0x00, 0x7F, 0x00, 155); + + glBegin(GL_LINES); + root[0] = root[2] = 0.0f; + root[1] = -drw_size; + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + tip[0] = tip[2] = 0.0f; + tip[1] = drw_size; + mul_m3_v3(tr,tip); + VECADD(tip,tip,com); + glVertex3fv(tip); + glEnd(); + + root[0] =0.0f; root[2] = tw; + root[1] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] =0.0f; root[2] = -tw; + root[1] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] =tw; root[2] = 0.0f; + root[1] =th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] =-tw; root[2] = 0.0f; + root[1] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + glColor4ub(0x00, 0x00, 0x7F, 155); + glBegin(GL_LINES); + root[0] = root[1] = 0.0f; + root[2] = -drw_size; + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + tip[0] = tip[1] = 0.0f; + tip[2] = drw_size; + mul_m3_v3(tr,tip); + VECADD(tip,tip,com); + glVertex3fv(tip); + glEnd(); + + root[0] =0.0f; root[1] = tw; + root[2] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] =0.0f; root[1] = -tw; + root[2] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] = tw; root[1] = 0.0f; + root[2] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] = -tw; root[1] = 0.0f; + root[2] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); +} /*place to add drawers */ unsigned int nurbcol[8]= { @@ -5537,7 +5642,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if((flag & DRAW_CONSTCOLOR) == 0) { project_short(ar, ob->obmat[3], &base->sx); - if((G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) UI_ThemeColor(TH_TRANSFORM); + if( (!scene->obedit) && (G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) UI_ThemeColor(TH_TRANSFORM); else { if(ob->type==OB_LAMP) UI_ThemeColor(TH_LAMP); @@ -5779,7 +5884,22 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) default: drawaxes(1.0, flag, OB_ARROWS); } - if(ob->soft /*&& flag & OB_SBMOTION*/) draw_sb_motion(scene, ob); + if(ob->soft /*&& flag & OB_SBMOTION*/){ + float mrt[3][3],msc[3][3],mtr[3][3]; + SoftBody *sb = 0; + float tipw = 0.5f, tiph = 0.5f,drawsize = 4.0f; + if ((sb= ob->soft)){ + if(sb->solverflags & SBSO_MONITOR ||sb->solverflags & SBSO_ESTIMATEIPO){ + + wmLoadMatrix(rv3d->viewmat); + copy_m3_m3(msc,sb->lscale); + copy_m3_m3(mrt,sb->lrot); + mul_m3_m3m3(mtr,mrt,msc); + ob_draw_RE_motion(sb->lcom,mtr,tipw,tiph,drawsize); + wmMultMatrix(ob->obmat); + } + } + } if(ob->pd && ob->pd->forcefield) draw_forcefield(scene, ob); diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index d11eee466ed..db617473291 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -517,6 +517,10 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) if(wmn->data == ND_SPACE_VIEW3D) ED_region_tag_redraw(ar); break; + case NC_ID: + if(wmn->data == ND_ID_RENAME) + ED_region_tag_redraw(ar); + break; } } @@ -639,6 +643,10 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) if(wmn->data == ND_SPACE_VIEW3D) ED_region_tag_redraw(ar); break; + case NC_ID: + if(wmn->data == ND_ID_RENAME) + ED_region_tag_redraw(ar); + break; } } @@ -831,7 +839,7 @@ void ED_spacetype_view3d(void) art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->listener= view3d_header_area_listener; art->init= view3d_header_area_init; art->draw= view3d_header_area_draw; diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c index 0eddeba6ff9..a988ceb50e7 100644 --- a/source/blender/editors/space_view3d/view3d_buttons.c +++ b/source/blender/editors/space_view3d/view3d_buttons.c @@ -521,40 +521,35 @@ static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr) split = uiLayoutSplit(layout, 0.8); switch(RNA_enum_get(ptr, "rotation_mode")) { - case ROT_MODE_XYZ: - case ROT_MODE_XZY: - case ROT_MODE_YXZ: - case ROT_MODE_YZX: - case ROT_MODE_ZXY: - case ROT_MODE_ZYX: - colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "Rotation", 0, ptr, "rotation_euler", 0); - colsub = uiLayoutColumn(split, 1); - uiItemL(colsub, "", 0); - uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); - break; - case ROT_MODE_QUAT: + case ROT_MODE_QUAT: /* quaternion */ colsub = uiLayoutColumn(split, 1); uiItemR(colsub, "Rotation", 0, ptr, "rotation_quaternion", 0); colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "W", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); + uiItemR(colsub, "4L", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); if (RNA_boolean_get(ptr, "lock_rotations_4d")) uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); else uiItemL(colsub, "", 0); uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); break; - case ROT_MODE_AXISANGLE: + case ROT_MODE_AXISANGLE: /* axis angle */ colsub = uiLayoutColumn(split, 1); uiItemR(colsub, "Rotation", 0, ptr, "rotation_axis_angle", 0); colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "W", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); + uiItemR(colsub, "4L", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); if (RNA_boolean_get(ptr, "lock_rotations_4d")) uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); else uiItemL(colsub, "", 0); uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); break; + default: /* euler rotations */ + colsub = uiLayoutColumn(split, 1); + uiItemR(colsub, "Rotation", 0, ptr, "rotation_euler", 0); + colsub = uiLayoutColumn(split, 1); + uiItemL(colsub, "", 0); + uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + break; } uiItemR(layout, "", 0, ptr, "rotation_mode", 0); diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index ec8fc869d72..acb82283604 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -193,7 +193,7 @@ void view3d_clr_clipping(void) } } -static test_clipping(float *vec, float clip[][4]) +static int test_clipping(float *vec, float clip[][4]) { float view[3]; VECCOPY(view, vec); diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 8597f0be88d..2444c461bd0 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -851,8 +851,19 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y) zfac = vod->dist0 * ((float)len2/len1) / vod->rv3d->dist; } else { /* USER_ZOOM_DOLLY */ - float len1 = (vod->ar->winrct.ymax - y) + 5; - float len2 = (vod->ar->winrct.ymax - vod->origy) + 5; + float len1, len2; + + if (U.uiflag & USER_ZOOM_DOLLY_HORIZ) { + len1 = (vod->ar->winrct.xmax - x) + 5; + len2 = (vod->ar->winrct.xmax - vod->origx) + 5; + } + else { + len1 = (vod->ar->winrct.ymax - y) + 5; + len2 = (vod->ar->winrct.ymax - vod->origy) + 5; + } + if (U.uiflag & USER_ZOOM_INVERT) + SWAP(float, len1, len2); + zfac = vod->dist0 * (2.0*((len2/len1)-1.0) + 1.0) / vod->rv3d->dist; } @@ -1001,7 +1012,7 @@ void VIEW3D_OT_zoom(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER; - RNA_def_int(ot->srna, "delta", 0, 0, INT_MAX, "Delta", "", 0, INT_MAX); + RNA_def_int(ot->srna, "delta", 0, INT_MIN, INT_MAX, "Delta", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "mx", 0, 0, INT_MAX, "Zoom Position X", "", 0, INT_MAX); RNA_def_int(ot->srna, "my", 0, 0, INT_MAX, "Zoom Position Y", "", 0, INT_MAX); } @@ -1232,6 +1243,51 @@ void VIEW3D_OT_view_center(wmOperatorType *ot) ot->flag= 0; } +static int viewcenter_cursor_exec(bContext *C, wmOperator *op) +{ + View3D *v3d = CTX_wm_view3d(C); + RegionView3D *rv3d= CTX_wm_region_view3d(C); + Scene *scene= CTX_data_scene(C); + + if (rv3d) { + if (rv3d->persp==RV3D_CAMOB) { + /* center the camera offset */ + rv3d->camdx= rv3d->camdy= 0.0; + } + else { + /* non camera center */ + float *curs= give_cursor(scene, v3d); + float new_ofs[3]; + + new_ofs[0]= -curs[0]; + new_ofs[1]= -curs[1]; + new_ofs[2]= -curs[2]; + + smooth_view(C, NULL, NULL, new_ofs, NULL, NULL, NULL); + } + + if (rv3d->viewlock & RV3D_BOXVIEW) + view3d_boxview_copy(CTX_wm_area(C), CTX_wm_region(C)); + } + + return OPERATOR_FINISHED; +} + +void VIEW3D_OT_view_center_cursor(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Center View to Cursor"; + ot->description= "Centers the view so that the cursor is in the middle of the view."; + ot->idname= "VIEW3D_OT_view_center_cursor"; + + /* api callbacks */ + ot->exec= viewcenter_cursor_exec; + ot->poll= ED_operator_view3d_active; + + /* flags */ + ot->flag= 0; +} + /* ********************* Set render border operator ****************** */ static int render_border_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 5a4eb419c95..dd5df957a95 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -112,7 +112,6 @@ /* XXX port over */ static void countall(void) {} extern void borderselect(); -static int retopo_mesh_paint_check() {return 0;} /* view3d handler codes */ #define VIEW3D_HANDLER_BACKGROUND 1 @@ -1642,38 +1641,6 @@ static char *view3d_modeselect_pup(Scene *scene) return (string); } - -static char *drawtype_pup(void) -{ - static char string[512]; - char *str = string; - - str += sprintf(str, "%s", "Draw type: %t"); - str += sprintf(str, "%s", "|Bounding Box %x1"); - str += sprintf(str, "%s", "|Wireframe %x2"); - str += sprintf(str, "%s", "|Solid %x3"); - str += sprintf(str, "%s", "|Shaded %x4"); - str += sprintf(str, "%s", "|Textured %x5"); - return string; -} -static char *around_pup(const bContext *C) -{ - Object *obedit = CTX_data_edit_object(C); - static char string[512]; - char *str = string; - - str += sprintf(str, "%s", "Pivot: %t"); - str += sprintf(str, "%s", "|Bounding Box Center %x0"); - str += sprintf(str, "%s", "|Median Point %x3"); - str += sprintf(str, "%s", "|3D Cursor %x1"); - str += sprintf(str, "%s", "|Individual Centers %x2"); - if ((obedit) && (obedit->type == OB_MESH)) - str += sprintf(str, "%s", "|Active Vert/Edge/Face %x4"); - else - str += sprintf(str, "%s", "|Active Object %x4"); - return string; -} - static char *ndof_pup(void) { static char string[512]; @@ -1686,37 +1653,6 @@ static char *ndof_pup(void) return string; } - -static char *snapmode_pup(void) -{ - static char string[512]; - char *str = string; - - str += sprintf(str, "%s", "Snap Element: %t"); - str += sprintf(str, "%s", "|Vertex%x0"); - str += sprintf(str, "%s", "|Edge%x1"); - str += sprintf(str, "%s", "|Face%x2"); - str += sprintf(str, "%s", "|Volume%x3"); - return string; -} - -static char *propfalloff_pup(void) -{ - static char string[512]; - char *str = string; - - str += sprintf(str, "%s", "Falloff: %t"); - str += sprintf(str, "%s", "|Smooth Falloff%x0"); - str += sprintf(str, "%s", "|Sphere Falloff%x1"); - str += sprintf(str, "%s", "|Root Falloff%x2"); - str += sprintf(str, "%s", "|Sharp Falloff%x3"); - str += sprintf(str, "%s", "|Linear Falloff%x4"); - str += sprintf(str, "%s", "|Random Falloff%x6"); - str += sprintf(str, "%s", "|Constant, No Falloff%x5"); - return string; -} - - static void do_view3d_header_buttons(bContext *C, void *arg, int event) { wmWindow *win= CTX_wm_window(C); @@ -1902,11 +1838,11 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) BKE_mesh_end_editmesh(obedit->data, em); } -static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *ob, int *xcoord, int yco) +static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *ob) { Object *obedit = CTX_data_edit_object(C); RegionView3D *rv3d= wm_region_view3d(C); - short xmax, xco= *xcoord; + short xmax, xco= 0, yco = 0; /* compensate for local mode when setting up the viewing menu/iconrow values */ if(rv3d->view==7) rv3d->viewbut= 1; @@ -1949,31 +1885,6 @@ static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *o /* ported to python */ } } - - *xcoord= xco; -} - -static int view3d_layer_icon(int but_lay, int ob_lay, int used_lay) -{ - if (but_lay & ob_lay) - return ICON_LAYER_ACTIVE; - else if (but_lay & used_lay) - return ICON_LAYER_USED; - else - return ICON_BLANK1; -} - -static void header_xco_step(ARegion *ar, int *xco, int *yco, int *maxco, int step) -{ - *xco += step; - if(*maxco < *xco) *maxco = *xco; - - if(ar->winy > *yco + 44) { - if(*xco > ar->winrct.xmax) { - *xco= 8; - *yco+= 22; - } - } } /* Returns the icon associated with an object mode */ @@ -1992,22 +1903,26 @@ static int object_mode_icon(int mode) void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) { - ARegion *ar= CTX_wm_region(C); + bScreen *screen= CTX_wm_screen(C); ScrArea *sa= CTX_wm_area(C); View3D *v3d= sa->spacedata.first; Scene *scene= CTX_data_scene(C); ToolSettings *ts= CTX_data_tool_settings(C); + PointerRNA v3dptr, toolsptr, sceneptr; Object *ob= OBACT; Object *obedit = CTX_data_edit_object(C); uiBlock *block; uiLayout *row; - int a, xco=0, maxco=0, yco= 0; - block= uiLayoutAbsoluteBlock(layout); + RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr); + RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &toolsptr); + RNA_pointer_create(&scene->id, &RNA_Scene, scene, &sceneptr); + + block= uiLayoutGetBlock(layout); uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); if((sa->flag & HEADER_NO_PULLDOWN)==0) - view3d_header_pulldowns(C, block, ob, &xco, yco); + view3d_header_pulldowns(C, block, ob); /* other buttons: */ uiBlockSetEmboss(block, UI_EMBOSS); @@ -2028,247 +1943,77 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) if(ob && (ob->mode & OB_MODE_TEXTURE_PAINT)) v3d->flag |= V3D_TEXTUREPAINT; if(paint_facesel_test(ob)) v3d->flag |= V3D_FACESELECT; + uiBlockBeginAlign(block); uiDefIconTextButS(block, MENU, B_MODESELECT, object_mode_icon(v3d->modeselect), view3d_modeselect_pup(scene) , - xco,yco,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode (Hotkeys: Tab, V, Ctrl Tab)"); - header_xco_step(ar, &xco, &yco, &maxco, 126+8); + 0,0,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode"); + uiBlockEndAlign(block); - /* DRAWTYPE */ - uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_BBOX, drawtype_pup(), xco,yco,XIC+10,YIC, &(v3d->drawtype), 1.0, 5.0, 0, 0, "Viewport Shading (Hotkeys: Z, Shift Z, Alt Z)"); + /* Draw type */ + uiItemR(layout, "", 0, &v3dptr, "viewport_shading", UI_ITEM_R_ICON_ONLY); - header_xco_step(ar, &xco, &yco, &maxco, XIC+18); + if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) { + /* Manipulators aren't used in weight paint mode */ + + PointerRNA meshptr; - uiBlockBeginAlign(block); + RNA_pointer_create(&ob->id, &RNA_Mesh, ob->data, &meshptr); + uiItemR(layout, "", 0, &meshptr, "use_paint_mask", UI_ITEM_R_ICON_ONLY); + } else { + char *str_menu; - if(retopo_mesh_paint_check()) { - void *rpd= NULL; // XXX RetopoPaintData *rpd= get_retopo_paint_data(); - if(rpd) { - ToolSettings *ts= scene->toolsettings; - - uiDefButC(block,ROW,B_REDR,"Pen",xco,yco,40,20,&ts->retopo_paint_tool,6.0,RETOPO_PEN,0,0,""); - xco+= 40; - uiDefButC(block,ROW,B_REDR,"Line",xco,yco,40,20,&ts->retopo_paint_tool,6.0,RETOPO_LINE,0,0,""); - xco+= 40; - uiDefButC(block,ROW,B_REDR,"Ellipse",xco,yco,60,20,&ts->retopo_paint_tool,6.0,RETOPO_ELLIPSE,0,0,""); - xco+= 65; - - uiBlockBeginAlign(block); - if(ts->retopo_paint_tool == RETOPO_PEN) { - uiDefButC(block,TOG,B_NOP,"Hotspot",xco,yco,60,20, &ts->retopo_hotspot, 0,0,0,0,"Show hotspots at line ends to allow line continuation"); - xco+= 80; - } - else if(ts->retopo_paint_tool == RETOPO_LINE) { - uiDefButC(block,NUM,B_NOP,"LineDiv",xco,yco,80,20,&ts->line_div,1,50,0,0,"Subdivisions per retopo line"); - xco+= 80; - } - else if(ts->retopo_paint_tool == RETOPO_ELLIPSE) { - uiDefButC(block,NUM,B_NOP,"EllDiv",xco,yco,80,20,&ts->ellipse_div,3,50,0,0,"Subdivisions per retopo ellipse"); - xco+= 80; - } - header_xco_step(ar, &xco, &yco, &maxco, 5); - - uiBlockEndAlign(block); - } - } else { - if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) { - Mesh *me= ob->data; - uiDefIconButBitS(block, TOG, ME_EDIT_PAINT_MASK, B_VIEW_BUTSEDIT, ICON_FACESEL_HLT,xco,yco,XIC,YIC, &me->editflag, 0, 0, 0, 0, "Painting Mask (FKey)"); - header_xco_step(ar, &xco, &yco, &maxco, XIC+10); - } else { - /* Manipulators aren't used in weight paint mode */ - char *str_menu; - uiDefIconTextButS(block, ICONTEXTROW,B_AROUND, ICON_ROTATE, around_pup(C), xco,yco,XIC+10,YIC, &(v3d->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period, Ctrl Period, Alt Period)"); - xco+= XIC+10; - - uiDefIconButBitS(block, TOG, V3D_ALIGN, B_AROUND, ICON_ALIGN, - xco,yco,XIC,YIC, - &v3d->flag, 0, 0, 0, 0, "Move object centers only"); - uiBlockEndAlign(block); - - header_xco_step(ar, &xco, &yco, &maxco, XIC+8); - - uiBlockBeginAlign(block); + row= uiLayoutRow(layout, 1); + uiItemR(row, "", 0, &v3dptr, "pivot_point", UI_ITEM_R_ICON_ONLY); + uiItemR(row, "", 0, &v3dptr, "pivot_point_align", UI_ITEM_R_ICON_ONLY); - /* NDOF */ - if (G.ndofdevice ==0 ) { - uiDefIconTextButC(block, ICONTEXTROW,B_NDOF, ICON_NDOF_TURN, ndof_pup(), xco,yco,XIC+10,YIC, &(v3d->ndofmode), 0, 3.0, 0, 0, "Ndof mode"); - xco+= XIC+10; - - uiDefIconButC(block, TOG, B_NDOF, ICON_NDOF_DOM, - xco,yco,XIC,YIC, - &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis"); - uiBlockEndAlign(block); + /* NDOF */ + if (G.ndofdevice ==0 ) { + uiDefIconTextButC(block, ICONTEXTROW,B_NDOF, ICON_NDOF_TURN, ndof_pup(), 0,0,XIC+10,YIC, &(v3d->ndofmode), 0, 3.0, 0, 0, "Ndof mode"); - header_xco_step(ar, &xco, &yco, &maxco, XIC+8); - } - uiBlockEndAlign(block); + uiDefIconButC(block, TOG, B_NDOF, ICON_NDOF_DOM, + 0,0,XIC,YIC, + &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis"); + } - /* Transform widget / manipulators */ - uiBlockBeginAlign(block); - uiDefIconButBitS(block, TOG, V3D_USE_MANIPULATOR, B_REDR, ICON_MANIPUL,xco,yco,XIC,YIC, &v3d->twflag, 0, 0, 0, 0, "Use 3d transform manipulator (Ctrl Space)"); - xco+= XIC; + /* Transform widget / manipulators */ + row= uiLayoutRow(layout, 1); + uiItemR(row, "", 0, &v3dptr, "manipulator", UI_ITEM_R_ICON_ONLY); + block= uiLayoutGetBlock(row); - if(v3d->twflag & V3D_USE_MANIPULATOR) { - uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode (Ctrl Alt R)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode (Ctrl Alt S)"); - xco+= XIC; - } - - if (v3d->twmode > (BIF_countTransformOrientation(C) - 1) + V3D_MANIP_CUSTOM) { - v3d->twmode = 0; - } + if(v3d->twflag & V3D_USE_MANIPULATOR) { + uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode"); + uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode"); + uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode"); + } - str_menu = BIF_menustringTransformOrientation(C, "Orientation"); - uiDefButS(block, MENU, B_MAN_MODE, str_menu,xco,yco,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation (ALT+Space)"); - MEM_freeN(str_menu); + if (v3d->twmode > (BIF_countTransformOrientation(C) - 1) + V3D_MANIP_CUSTOM) { + v3d->twmode = 0; + } - header_xco_step(ar, &xco, &yco, &maxco, 78); - uiBlockEndAlign(block); - } + str_menu = BIF_menustringTransformOrientation(C, "Orientation"); + uiDefButS(block, MENU, B_MAN_MODE, str_menu,0,0,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation"); + MEM_freeN(str_menu); + } - /* LAYERS */ - if(obedit==NULL && v3d->localvd==NULL) { - int ob_lay = ob ? ob->lay : 0; - uiBlockBeginAlign(block); - for(a=0; a<5; a++) { - uiDefIconButBitI(block, TOG, 1<<a, B_LAY+a, view3d_layer_icon(1<<a, ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - for(a=0; a<5; a++) { - uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - xco+= 5; - uiBlockBeginAlign(block); - for(a=5; a<10; a++) { - uiDefIconButBitI(block, TOG, 1<<a, B_LAY+a, view3d_layer_icon(1<<a, ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - for(a=5; a<10; a++) { - uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - uiBlockEndAlign(block); - - xco+= (a-2)*(XIC/2)+3; - - /* LOCK */ - uiDefIconButS(block, ICONTOG, B_SCENELOCK, ICON_LOCKVIEW_OFF, xco+=XIC,yco,XIC,YIC, &(v3d->scenelock), 0, 0, 0, 0, "Locks Active Camera and layers to Scene (Ctrl `)"); - header_xco_step(ar, &xco, &yco, &maxco, XIC+10); + if(obedit==NULL && v3d->localvd==NULL) { + int ob_lay = ob ? ob->lay : 0; - } - - /* proportional falloff */ - if((obedit == NULL || (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) { - - uiBlockBeginAlign(block); - uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_PROP_OFF, "Proportional %t|Off %x0|On %x1|Connected %x2", xco,yco,XIC+10,YIC, &(ts->proportional), 0, 1.0, 0, 0, "Proportional Edit Falloff (Hotkeys: O, Alt O) "); - xco+= XIC+10; - - if(ts->proportional) { - uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SMOOTHCURVE, propfalloff_pup(), xco,yco,XIC+10,YIC, &(ts->prop_mode), 0.0, 0.0, 0, 0, "Proportional Edit Falloff (Hotkey: Shift O) "); - xco+= XIC+10; - } - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, 10); - } + /* Layers */ + uiTemplateLayers(layout, &sceneptr, "visible_layers", &v3dptr, "used_layers", ob_lay); - /* Snap */ - if (BIF_snappingSupported(obedit)) { - uiBlockBeginAlign(block); - - if (ts->snap_flag & SCE_SNAP) { - uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap with Ctrl during transform (Shift Tab)"); - xco+= XIC; - if(v3d->modeselect == OB_MODE_OBJECT) { - uiDefIconButBitS(block, TOG, SCE_SNAP_ROTATE, B_REDR, ICON_SNAP_NORMAL,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Align rotation with the snapping target"); - xco+= XIC; - } - if (ts->snap_mode == SCE_SNAP_MODE_VOLUME) { - uiDefIconButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_REDR, ICON_SNAP_PEEL_OBJECT,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Consider objects as whole when finding volume center"); - xco+= XIC; - } - if (ts->snap_mode == SCE_SNAP_MODE_FACE) { - uiDefIconButBitS(block, TOG, SCE_SNAP_PROJECT, B_REDR, ICON_RETOPO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Project elements instead of snapping them"); - xco+= XIC; - } - uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SNAP_VERTEX, snapmode_pup(), xco,yco,XIC+10,YIC, &(ts->snap_mode), 0.0, 0.0, 0, 0, "Snapping mode"); - xco+= XIC + 10; - uiDefButS(block, MENU, B_NOP, "Snap Mode%t|Closest%x0|Center%x1|Median%x2|Active%x3",xco,yco,70,YIC, &ts->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, &ts->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)"); - xco+= XIC; - } - - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, 10); - } + /* Scene lock */ + uiItemR(layout, "", 0, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY); + } - /* selection modus */ - if(obedit && (obedit->type == OB_MESH)) { - EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); - - uiBlockBeginAlign(block); - uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode (Ctrl Tab 1)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode (Ctrl Tab 2)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode (Ctrl Tab 3)"); - xco+= XIC; - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, 10); - if(v3d->drawtype > OB_WIRE) { - uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry"); - } - xco+= XIC; - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, XIC); + /* selection modus */ + if(obedit && (obedit->type == OB_MESH)) { + EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); - BKE_mesh_end_editmesh(obedit->data, em); - } - else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) { - uiBlockBeginAlign(block); - uiDefIconButBitI(block, TOG, SCE_SELECT_PATH, B_SEL_PATH, ICON_EDGESEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Path edit mode"); - xco+= XIC; - uiDefIconButBitI(block, TOG, SCE_SELECT_POINT, B_SEL_POINT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Point select mode"); - xco+= XIC; - uiDefIconButBitI(block, TOG, SCE_SELECT_END, B_SEL_END, ICON_FACESEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Tip select mode"); - xco+= XIC; - uiBlockEndAlign(block); - - if(v3d->drawtype > OB_WIRE) { - uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Limit selection to visible (clipped with depth buffer)"); - xco+= XIC; - } - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, XIC); - } - - /* OpenGL Render */ row= uiLayoutRow(layout, 1); - uiItemO(row, "", ICON_RENDER_STILL, "SCREEN_OT_opengl_render"); - uiItemBooleanO(row, "", ICON_RENDER_ANIMATION, "SCREEN_OT_opengl_render", "animation", 1); + block= uiLayoutGetBlock(row); + uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode"); + uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode"); + uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode"); - - if (ob && (ob->mode & OB_MODE_POSE)) { - PointerRNA *but_ptr; - uiBut *but; - - xco+= XIC*2; - uiBlockBeginAlign(block); - - uiDefIconButO(block, BUT, "POSE_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, NULL); - uiBlockSetButLock(block, object_data_is_libdata(ob), "Can't edit external libdata"); - xco+= XIC; - - uiDefIconButO(block, BUT, "POSE_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, NULL); - xco+= XIC; - but=uiDefIconButO(block, BUT, "POSE_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEFLIPDOWN, xco,yco,XIC,YIC, NULL); - but_ptr= uiButGetOperatorPtrRNA(but); - RNA_boolean_set(but_ptr, "flipped", 1); - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, XIC); - - } + BKE_mesh_end_editmesh(obedit->data, em); } } - diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index 84d1a1275a9..b32a067206e 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -71,6 +71,7 @@ void VIEW3D_OT_rotate(struct wmOperatorType *ot); void VIEW3D_OT_view_all(struct wmOperatorType *ot); void VIEW3D_OT_viewnumpad(struct wmOperatorType *ot); void VIEW3D_OT_view_center(struct wmOperatorType *ot); +void VIEW3D_OT_view_center_cursor(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); diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index b02003721f7..62672dc19bc 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -71,6 +71,7 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_view_pan); WM_operatortype_append(VIEW3D_OT_view_persportho); WM_operatortype_append(VIEW3D_OT_view_center); + WM_operatortype_append(VIEW3D_OT_view_center_cursor); WM_operatortype_append(VIEW3D_OT_select); WM_operatortype_append(VIEW3D_OT_select_border); WM_operatortype_append(VIEW3D_OT_clip_border); @@ -127,6 +128,7 @@ void view3d_keymap(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "VIEW3D_OT_move", 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_view_center", PADPERIOD, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "VIEW3D_OT_view_center_cursor", PADPERIOD, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "VIEW3D_OT_fly", FKEY, KM_PRESS, KM_SHIFT, 0); @@ -221,11 +223,6 @@ void view3d_keymap(wmKeyConfig *keyconf) RNA_string_set(kmi->ptr, "value_1", "TEXTURED"); RNA_string_set(kmi->ptr, "value_2", "SOLID"); - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "space_data.viewport_shading"); - RNA_string_set(kmi->ptr, "value_1", "SHADED"); - RNA_string_set(kmi->ptr, "value_2", "WIREFRAME"); - /* selection*/ WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", TRUE); @@ -273,6 +270,9 @@ void view3d_keymap(wmKeyConfig *keyconf) kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", COMMAKEY, KM_PRESS, KM_ALT, 0); /* new in 2.5 */ RNA_string_set(kmi->ptr, "path", "space_data.pivot_point_align"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SPACEKEY, KM_PRESS, KM_CTRL, 0); /* new in 2.5 */ + RNA_string_set(kmi->ptr, "path", "space_data.manipulator"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "CURSOR"); @@ -285,7 +285,6 @@ void view3d_keymap(wmKeyConfig *keyconf) RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "ACTIVE_ELEMENT"); - transform_keymap_for_space(keyconf, keymap, SPACE_VIEW3D); fly_modal_keymap(keyconf); diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 508bf56cc71..2b45cfef6e1 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -648,7 +648,7 @@ static void do_lasso_select_armature(ViewContext *vc, short mcords[][2], short m else ebone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL); } } - + ED_armature_sync_selection(arm->edbo); ED_armature_validate_active(arm); } @@ -999,7 +999,7 @@ static short mixed_bones_object_selectbuffer(ViewContext *vc, unsigned int *buff /* mval is region coords */ -static void mouse_select(bContext *C, short *mval, short extend, short obcenter, short enumerate) +static int mouse_select(bContext *C, short *mval, short extend, short obcenter, short enumerate) { ViewContext vc; ARegion *ar= CTX_wm_region(C); @@ -1007,6 +1007,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter, Scene *scene= CTX_data_scene(C); Base *base, *startbase=NULL, *basact=NULL, *oldbasact=NULL; int temp, a, dist=100; + int retval = 0; short hits; /* setup view context for argument to callbacks */ @@ -1153,6 +1154,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter, basact->flag|= SELECT; basact->object->flag= basact->flag; + retval = 1; WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, basact->object); WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, basact->object); @@ -1172,6 +1174,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter, /* so, do we have something selected? */ if(basact) { + retval = 1; if(vc.obedit) { /* only do select */ @@ -1205,6 +1208,8 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter, WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); } } + + return retval; } /* ******************** border and circle ************************************** */ @@ -1611,31 +1616,37 @@ static int view3d_select_invoke(bContext *C, wmOperator *op, wmEvent *event) short extend= RNA_boolean_get(op->ptr, "extend"); short center= RNA_boolean_get(op->ptr, "center"); short enumerate= RNA_boolean_get(op->ptr, "enumerate"); + int retval = 0; view3d_operator_needs_opengl(C); if(obedit) { if(obedit->type==OB_MESH) - mouse_mesh(C, event->mval, extend); + retval = mouse_mesh(C, event->mval, extend); else if(obedit->type==OB_ARMATURE) - mouse_armature(C, event->mval, extend); + retval = mouse_armature(C, event->mval, extend); else if(obedit->type==OB_LATTICE) - mouse_lattice(C, event->mval, extend); + retval = mouse_lattice(C, event->mval, extend); else if(ELEM(obedit->type, OB_CURVE, OB_SURF)) - mouse_nurb(C, event->mval, extend); + retval = mouse_nurb(C, event->mval, extend); else if(obedit->type==OB_MBALL) - mouse_mball(C, event->mval, extend); + retval = mouse_mball(C, event->mval, extend); } else if(obact && obact->mode & OB_MODE_PARTICLE_EDIT) - PE_mouse_particles(C, event->mval, extend); + return PE_mouse_particles(C, event->mval, extend); else if(obact && paint_facesel_test(obact)) - face_select(C, obact, event->mval, extend); + retval = face_select(C, obact, event->mval, extend); else - mouse_select(C, event->mval, extend, center, enumerate); + retval = mouse_select(C, event->mval, extend, center, enumerate); - /* allowing tweaks */ - return OPERATOR_PASS_THROUGH|OPERATOR_FINISHED; + /* passthrough allows tweaks + * FINISHED to signal one operator worked + * */ + if (retval) + return OPERATOR_PASS_THROUGH|OPERATOR_FINISHED; + else + return OPERATOR_PASS_THROUGH; /* nothing selected, just passthrough */ } void VIEW3D_OT_select(wmOperatorType *ot) diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index 933b12ae679..a23163f4a5c 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -543,7 +543,8 @@ static int snap_sel_to_grid(bContext *C, wmOperator *op) } CTX_DATA_END; } - ED_anim_dag_flush_update(C); + + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -667,7 +668,8 @@ static int snap_sel_to_curs(bContext *C, wmOperator *op) } CTX_DATA_END; } - ED_anim_dag_flush_update(C); + + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -1058,7 +1060,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op) CTX_DATA_END; } - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c index 3249f26aff6..5dbc6cc232c 100644 --- a/source/blender/editors/space_view3d/view3d_toolbar.c +++ b/source/blender/editors/space_view3d/view3d_toolbar.c @@ -143,7 +143,7 @@ static void view3d_panel_operator_redo_buts(const bContext *C, Panel *pa, wmOper RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr); if(op->type->ui) - op->type->ui((bContext*)C, &ptr, pa->layout); + op->type->ui((bContext*)C, op, pa->layout); else uiDefAutoButsRNA(C, pa->layout, &ptr, 1); } diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 82b5730daa2..62374ca3134 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -190,6 +190,7 @@ static void view_settings_from_ob(Object *ob, float *ofs, float *quat, float *di /* ****************** smooth view operator ****************** */ +/* This operator is one of the 'timer refresh' ones like animation playback */ struct SmoothViewStore { float orig_dist, new_dist; @@ -386,6 +387,8 @@ void VIEW3D_OT_smoothview(wmOperatorType *ot) ot->poll= ED_operator_view3d_active; } +/* ****************** change view operators ****************** */ + static void setcameratoview3d(View3D *v3d, RegionView3D *rv3d, Object *ob) { float dvec[3]; @@ -445,6 +448,7 @@ void VIEW3D_OT_setcameratoview(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } + static int view3d_setobjectascamera_exec(bContext *C, wmOperator *op) { View3D *v3d = CTX_wm_view3d(C); @@ -479,6 +483,7 @@ void VIEW3D_OT_setobjectascamera(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } + /* ********************************** */ /* create intersection coordinates in view Z direction at mouse coordinates */ @@ -1962,7 +1967,7 @@ static int flyEnd(bContext *C, FlyInfo *fly) void flyEvent(FlyInfo *fly, wmEvent *event) { - if (event->type == TIMER) { + if (event->type == TIMER && event->customdata == fly->timer) { fly->redraw = 1; } else if (event->type == MOUSEMOVE) { @@ -2421,7 +2426,7 @@ static int fly_modal(bContext *C, wmOperator *op, wmEvent *event) flyEvent(fly, event); - if(event->type==TIMER) + if(event->type==TIMER && event->customdata == fly->timer) flyApply(fly); if(fly->redraw) {; diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 3f4839a7d72..ce7076c691f 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -507,9 +507,9 @@ static char *transform_to_undostr(TransInfo *t) #define TFM_MODAL_TRANSLATE 3 #define TFM_MODAL_ROTATE 4 #define TFM_MODAL_RESIZE 5 -#define TFM_MODAL_SNAP_GEARS 6 -#define TFM_MODAL_SNAP_GEARS_OFF 7 -#define TFM_MODAL_SNAP_GEARS_TOGGLE 8 +#define TFM_MODAL_SNAP_ON 6 +#define TFM_MODAL_SNAP_OFF 7 +#define TFM_MODAL_SNAP_TOGGLE 8 /* called in transform_ops.c, on each regeneration of keymaps */ void transform_modal_keymap(wmKeyConfig *keyconf) @@ -520,9 +520,9 @@ void transform_modal_keymap(wmKeyConfig *keyconf) {TFM_MODAL_TRANSLATE, "TRANSLATE", 0, "Translate", ""}, {TFM_MODAL_ROTATE, "ROTATE", 0, "Rotate", ""}, {TFM_MODAL_RESIZE, "RESIZE", 0, "Resize", ""}, - {TFM_MODAL_SNAP_GEARS, "SNAP_GEARS", 0, "Snap On", ""}, - {TFM_MODAL_SNAP_GEARS_OFF, "SNAP_GEARS_OFF", 0, "Snap Off", ""}, - {TFM_MODAL_SNAP_GEARS_TOGGLE, "SNAP_GEARS_TOGGLE", 0, "Snap Toggle", ""}, + {TFM_MODAL_SNAP_ON, "SNAP_ON", 0, "Snap On", ""}, + {TFM_MODAL_SNAP_OFF, "SNAP_OFF", 0, "Snap Off", ""}, + {TFM_MODAL_SNAP_TOGGLE, "SNAP_TOGGLE", 0, "Snap Toggle", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map"); @@ -542,7 +542,7 @@ void transform_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, RKEY, KM_PRESS, 0, 0, TFM_MODAL_ROTATE); WM_modalkeymap_add_item(keymap, SKEY, KM_PRESS, 0, 0, TFM_MODAL_RESIZE); - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_SNAP_GEARS_TOGGLE); + WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_CLICK, KM_ANY, 0, TFM_MODAL_SNAP_TOGGLE); /* assign map to operators */ WM_modalkeymap_assign(keymap, "TFM_OT_transform"); @@ -560,10 +560,11 @@ void transform_modal_keymap(wmKeyConfig *keyconf) } -void transformEvent(TransInfo *t, wmEvent *event) +int transformEvent(TransInfo *t, wmEvent *event) { float mati[3][3] = {{1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 1.0f}}; char cmode = constraintModeToChar(t); + int handled = 1; t->redraw |= handleMouseInput(t, &t->mouse, event); @@ -629,18 +630,21 @@ void transformEvent(TransInfo *t, wmEvent *event) } break; - case TFM_MODAL_SNAP_GEARS: - t->modifiers |= MOD_SNAP_GEARS; + case TFM_MODAL_SNAP_ON: + t->modifiers |= MOD_SNAP; t->redraw = 1; break; - case TFM_MODAL_SNAP_GEARS_OFF: - t->modifiers &= ~MOD_SNAP_GEARS; + case TFM_MODAL_SNAP_OFF: + t->modifiers &= ~MOD_SNAP; t->redraw = 1; break; - case TFM_MODAL_SNAP_GEARS_TOGGLE: - t->modifiers ^= MOD_SNAP_GEARS; + case TFM_MODAL_SNAP_TOGGLE: + t->modifiers ^= MOD_SNAP; t->redraw = 1; break; + default: + handled = 0; + break; } } /* else do non-mapped events */ @@ -898,6 +902,9 @@ void transformEvent(TransInfo *t, wmEvent *event) // case NDOFMOTION: // viewmoveNDOF(1); // break; + default: + handled = 0; + break; } // Numerical input events @@ -935,7 +942,9 @@ void transformEvent(TransInfo *t, wmEvent *event) case NDOF_REFRESH: t->redraw = 1; break; - + default: + handled = 0; + break; } // Snapping events @@ -964,6 +973,9 @@ void transformEvent(TransInfo *t, wmEvent *event) //// if (t->options & CTX_TWEAK) // t->state = TRANS_CONFIRM; // break; + default: + handled = 0; + break; } /* confirm transform if launch key is released after mouse move */ @@ -977,6 +989,11 @@ void transformEvent(TransInfo *t, wmEvent *event) // Per transform event, if present if (t->handleEvent) t->redraw |= t->handleEvent(t, event); + + if (handled || t->redraw) + return 0; + else + return OPERATOR_PASS_THROUGH; } int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float *vec) @@ -1280,28 +1297,30 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) } // If modal, save settings back in scene if not set as operator argument - if (t->flag & T_MODAL) - { + if (t->flag & T_MODAL) { + /* save settings if not set in operator */ - if (RNA_struct_find_property(op->ptr, "proportional") && !RNA_property_is_set(op->ptr, "proportional")) - { + if (RNA_struct_find_property(op->ptr, "proportional") && !RNA_property_is_set(op->ptr, "proportional")) { ts->proportional = proportional; } - if (RNA_struct_find_property(op->ptr, "proportional_size") && !RNA_property_is_set(op->ptr, "proportional_size")) - { + if (RNA_struct_find_property(op->ptr, "proportional_size") && !RNA_property_is_set(op->ptr, "proportional_size")) { ts->proportional_size = t->prop_size; } - if (RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && !RNA_property_is_set(op->ptr, "proportional_editing_falloff")) - { + if (RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && !RNA_property_is_set(op->ptr, "proportional_editing_falloff")) { ts->prop_mode = t->prop_mode; } - if(t->spacetype == SPACE_VIEW3D) - { - if (RNA_struct_find_property(op->ptr, "constraint_orientation") && !RNA_property_is_set(op->ptr, "constraint_orientation")) - { + /* do we check for parameter? */ + if (t->modifiers & MOD_SNAP) { + ts->snap_flag |= SCE_SNAP; + } else { + ts->snap_flag &= ~SCE_SNAP; + } + + if(t->spacetype == SPACE_VIEW3D) { + if (RNA_struct_find_property(op->ptr, "constraint_orientation") && !RNA_property_is_set(op->ptr, "constraint_orientation")) { View3D *v3d = t->view; v3d->twmode = t->current_orientation; @@ -5085,7 +5104,7 @@ static void applyTimeTranslate(TransInfo *t, float sval) AnimData *adt= (t->spacetype != SPACE_NLA) ? td->extra : NULL; /* check if any need to apply nla-mapping */ - if (adt) { + if (adt && t->spacetype != SPACE_SEQ) { deltax = t->values[0]; if (autosnap == SACTSNAP_STEP) { diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index b8ef50507d3..bf3562cbe65 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -83,11 +83,13 @@ typedef struct NumInput { */ typedef struct TransSnap { + short mode; short modePoint; short modeTarget; - short mode; + short modeSelect; short align; short project; + short peel; short status; float snapPoint[3]; /* snapping from this point */ float snapTarget[3]; /* to this point */ @@ -371,7 +373,7 @@ typedef struct TransInfo { /* TransInfo->modifiers */ #define MOD_CONSTRAINT_SELECT 0x01 #define MOD_PRECISION 0x02 -#define MOD_SNAP_GEARS 0x04 +#define MOD_SNAP 0x04 #define MOD_CONSTRAINT_PLANE 0x08 @@ -412,14 +414,9 @@ typedef struct TransInfo { #define TD_MIRROR_EDGE (1 << 16) /* For editmode mirror, clamp to x = 0 */ /* transsnap->status */ -#define SNAP_ON 1 -#define SNAP_FORCED 2 -#define TARGET_INIT 4 -#define POINT_INIT 8 - -/* transsnap->modePoint */ -#define SNAP_GRID 0 -#define SNAP_GEO 1 +#define SNAP_FORCED 1 +#define TARGET_INIT 2 +#define POINT_INIT 4 /* transsnap->modeTarget */ #define SNAP_CLOSEST 0 @@ -432,7 +429,7 @@ void TFM_OT_transform(struct wmOperatorType *ot); int initTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op, struct wmEvent *event, int mode); void saveTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op); -void transformEvent(TransInfo *t, struct wmEvent *event); +int transformEvent(TransInfo *t, struct wmEvent *event); void transformApply(struct bContext *C, TransInfo *t); int transformEnd(struct bContext *C, TransInfo *t); diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index da8f0c4d0e9..f59803924d5 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -290,7 +290,7 @@ static void applyAxisConstraintVec(TransInfo *t, TransData *td, float in[3], flo mul_m3_v3(t->con.pmtx, out); // With snap, a projection is alright, no need to correct for view alignment - if ((t->tsnap.status & SNAP_ON) == 0) { + if (!(t->tsnap.mode != SCE_SNAP_MODE_INCREMENT && t->modifiers & MOD_SNAP)) { if (getConstraintSpaceDimension(t) == 2) { if (out[0] != 0.0f || out[1] != 0.0f || out[2] != 0.0f) { planeProjection(t, in, out); @@ -316,7 +316,7 @@ static void applyAxisConstraintVec(TransInfo *t, TransData *td, float in[3], flo } /* - * Generic callback for object based spacial constraints applied to linear motion + * Generic callback for object based spatial constraints applied to linear motion * * At first, the following is applied to the first data in the array * The IN vector in projected into the constrained space and then further diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 5a517e34fcd..403d8449a67 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -545,7 +545,7 @@ static short apply_targetless_ik(Object *ob) static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, TransData *td) { Bone *bone= pchan->bone; - float pmat[3][3], omat[3][3]; + float pmat[3][3], omat[3][3], bmat[3][3]; float cmat[3][3], tmat[3][3]; float vec[3]; @@ -604,6 +604,11 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr /* proper way to get parent transform + own transform + constraints transform */ copy_m3_m4(omat, ob->obmat); + if (t->mode==TFM_TRANSLATION && (pchan->bone->flag & BONE_NO_LOCAL_LOCATION)) + unit_m3(bmat); + else + copy_m3_m3(bmat, pchan->bone->bone_mat); + if (pchan->parent) { if(pchan->bone->flag & BONE_HINGE) copy_m3_m4(pmat, pchan->parent->bone->arm_mat); @@ -613,19 +618,19 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr if (constraints_list_needinv(t, &pchan->constraints)) { copy_m3_m4(tmat, pchan->constinv); invert_m3_m3(cmat, tmat); - mul_serie_m3(td->mtx, pchan->bone->bone_mat, pmat, omat, cmat, 0,0,0,0); // dang mulserie swaps args + mul_serie_m3(td->mtx, bmat, pmat, omat, cmat, 0,0,0,0); // dang mulserie swaps args } else - mul_serie_m3(td->mtx, pchan->bone->bone_mat, pmat, omat, 0,0,0,0,0); // dang mulserie swaps args + mul_serie_m3(td->mtx, bmat, pmat, omat, 0,0,0,0,0); // dang mulserie swaps args } else { if (constraints_list_needinv(t, &pchan->constraints)) { copy_m3_m4(tmat, pchan->constinv); invert_m3_m3(cmat, tmat); - mul_serie_m3(td->mtx, pchan->bone->bone_mat, omat, cmat, 0,0,0,0,0); // dang mulserie swaps args + mul_serie_m3(td->mtx, bmat, omat, cmat, 0,0,0,0,0); // dang mulserie swaps args } else - mul_m3_m3m3(td->mtx, omat, pchan->bone->bone_mat); // Mat3MulMat3 has swapped args! + mul_m3_m3m3(td->mtx, omat, bmat); // Mat3MulMat3 has swapped args! } invert_m3_m3(td->smtx, td->mtx); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index d3c0e91e57c..8b7c4b7503b 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -930,6 +930,11 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) unit_m3(t->mat); + /* if there's an event, we're modal */ + if (event) { + t->flag |= T_MODAL; + } + t->spacetype = sa->spacetype; if(t->spacetype == SPACE_VIEW3D) { @@ -1010,11 +1015,15 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) } else { - if ((t->options & CTX_NO_PET) == 0 && (ts->proportional != PROP_EDIT_OFF)) { - t->flag |= T_PROP_EDIT; - - if(ts->proportional == PROP_EDIT_CONNECTED) - t->flag |= T_PROP_CONNECTED; + /* use settings from scene only if modal */ + if (t->flag & T_MODAL) + { + if ((t->options & CTX_NO_PET) == 0 && (ts->proportional != PROP_EDIT_OFF)) { + t->flag |= T_PROP_EDIT; + + if(ts->proportional == PROP_EDIT_CONNECTED) + t->flag |= T_PROP_CONNECTED; + } } } @@ -1048,7 +1057,6 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) t->options |= CTX_NO_PET; } - setTransformViewMatrices(t); initNumInput(&t->num); initNDofInput(&t->ndof); diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 67b7f60e728..1b8b331af62 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -84,6 +84,38 @@ TransformModeItem transform_modes[] = {NULL, 0} }; +static int snap_type_exec(bContext *C, wmOperator *op) +{ + ToolSettings *ts= CTX_data_tool_settings(C); + + ts->snap_mode = RNA_enum_get(op->ptr,"type"); + + WM_event_add_notifier(C, NC_SCENE|ND_MODE, NULL); /* header redraw */ + + return OPERATOR_FINISHED; +} + +void TFM_OT_snap_type(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Snap Type"; + ot->description= "Set the snap element type."; + ot->idname= "TFM_OT_snap_type"; + + /* api callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= snap_type_exec; + + ot->poll= ED_operator_areaactive; + + /* flags */ + ot->flag= OPTYPE_UNDO; + + /* props */ + RNA_def_enum(ot->srna, "type", snap_element_items, 0, "Type", "Set the snap element type"); + +} + static int select_orientation_exec(bContext *C, wmOperator *op) { int orientation = RNA_enum_get(op->ptr, "orientation"); @@ -261,16 +293,16 @@ static int transform_modal(bContext *C, wmOperator *op, wmEvent *event) TransInfo *t = op->customdata; - transformEvent(t, event); + exit_code = transformEvent(t, event); transformApply(C, t); + exit_code |= transformEnd(C, t); - exit_code = transformEnd(C, t); - - if (exit_code != OPERATOR_RUNNING_MODAL) + if ((exit_code & OPERATOR_RUNNING_MODAL) == 0) { transformops_exit(C, op); + exit_code &= ~OPERATOR_PASS_THROUGH; /* preventively remove passthrough */ } return exit_code; @@ -322,13 +354,9 @@ static int transform_invoke(bContext *C, wmOperator *op, wmEvent *event) return transform_exec(C, op); } else { - TransInfo *t = op->customdata; - /* add temp handler */ WM_event_add_modal_handler(C, op); - t->flag |= T_MODAL; // XXX meh maybe somewhere else - op->flag |= OP_GRAB_POINTER; // XXX maybe we want this with the manipulator only? return OPERATOR_RUNNING_MODAL; } @@ -341,16 +369,18 @@ void Properties_Proportional(struct wmOperatorType *ot) RNA_def_float(ot->srna, "proportional_size", 1, 0, FLT_MAX, "Proportional Size", "", 0, 100); } -void Properties_Snapping(struct wmOperatorType *ot, short align) +void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align) { - RNA_def_boolean(ot->srna, "snap", 0, "Snap to Point", ""); - RNA_def_enum(ot->srna, "snap_mode", snap_mode_items, 0, "Mode", ""); - RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX); + RNA_def_boolean(ot->srna, "snap", 0, "Use Snapping Options", ""); - if (align) - { - RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", ""); - RNA_def_float_vector(ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX); + if (fullsnap) { + RNA_def_enum(ot->srna, "snap_target", snap_target_items, 0, "Target", ""); + 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", ""); + RNA_def_float_vector(ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX); + } } } @@ -387,7 +417,7 @@ void TFM_OT_translate(struct wmOperatorType *ot) Properties_Constraints(ot); - Properties_Snapping(ot, 1); + Properties_Snapping(ot, 1, 1); } void TFM_OT_resize(struct wmOperatorType *ot) @@ -413,7 +443,7 @@ void TFM_OT_resize(struct wmOperatorType *ot) Properties_Constraints(ot); - Properties_Snapping(ot, 0); + Properties_Snapping(ot, 1, 0); } @@ -437,6 +467,8 @@ void TFM_OT_trackball(struct wmOperatorType *ot) Properties_Proportional(ot); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + + Properties_Snapping(ot, 0, 0); } void TFM_OT_rotate(struct wmOperatorType *ot) @@ -462,7 +494,7 @@ void TFM_OT_rotate(struct wmOperatorType *ot) Properties_Constraints(ot); - Properties_Snapping(ot, 0); + Properties_Snapping(ot, 1, 0); } void TFM_OT_tilt(struct wmOperatorType *ot) @@ -490,6 +522,8 @@ void TFM_OT_tilt(struct wmOperatorType *ot) RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); Properties_Constraints(ot); + + Properties_Snapping(ot, 0, 0); } void TFM_OT_warp(struct wmOperatorType *ot) @@ -513,7 +547,9 @@ void TFM_OT_warp(struct wmOperatorType *ot) RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - // XXX Shear axis? + Properties_Snapping(ot, 0, 0); + + // XXX Warp axis? // Properties_Constraints(ot); } @@ -538,6 +574,8 @@ void TFM_OT_shear(struct wmOperatorType *ot) RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + Properties_Snapping(ot, 0, 0); + // XXX Shear axis? // Properties_Constraints(ot); } @@ -562,6 +600,8 @@ void TFM_OT_shrink_fatten(struct wmOperatorType *ot) Properties_Proportional(ot); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + + Properties_Snapping(ot, 0, 0); } void TFM_OT_tosphere(struct wmOperatorType *ot) @@ -585,6 +625,8 @@ void TFM_OT_tosphere(struct wmOperatorType *ot) Properties_Proportional(ot); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + + Properties_Snapping(ot, 0, 0); } void TFM_OT_mirror(struct wmOperatorType *ot) @@ -624,6 +666,8 @@ void TFM_OT_edge_slide(struct wmOperatorType *ot) RNA_def_float_factor(ot->srna, "value", 0, -1.0f, 1.0f, "Factor", "", -1.0f, 1.0f); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + + Properties_Snapping(ot, 0, 0); } void TFM_OT_transform(struct wmOperatorType *ot) @@ -700,6 +744,8 @@ void transform_operatortypes(void) WM_operatortype_append(TFM_OT_select_orientation); WM_operatortype_append(TFM_OT_create_orientation); WM_operatortype_append(TFM_OT_delete_orientation); + + WM_operatortype_append(TFM_OT_snap_type); } void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, int spaceid) @@ -737,6 +783,11 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); + km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LEFTCTRLKEY, KM_CLICK, 0, 0); + RNA_string_set(km->ptr, "path", "scene.tool_settings.snap"); + + km = WM_keymap_add_item(keymap, "TFM_OT_snap_type", LEFTCTRLKEY, KM_CLICK, KM_SHIFT, 0); + break; case SPACE_ACTION: km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0); @@ -808,6 +859,9 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0); km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); + + km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LEFTCTRLKEY, KM_CLICK, 0, 0); + RNA_string_set(km->ptr, "path", "scene.tool_settings.snap"); break; default: break; diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 062452d9e42..d36b7c9b903 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -125,8 +125,8 @@ int BIF_snappingSupported(Object *obedit) void drawSnapping(const struct bContext *C, TransInfo *t) { - if ((t->tsnap.status & (SNAP_ON|POINT_INIT|TARGET_INIT)) == (SNAP_ON|POINT_INIT|TARGET_INIT) && - (t->modifiers & MOD_SNAP_GEARS)) + if ((t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT) && + (t->modifiers & MOD_SNAP)) { char col[4] = {1, 0, 1}; @@ -205,7 +205,8 @@ void drawSnapping(const struct bContext *C, TransInfo *t) int handleSnapping(TransInfo *t, wmEvent *event) { int status = 0; - + +#if 0 // XXX need a proper selector for all snap mode if (BIF_snappingSupported(t->obedit) && event->type == TABKEY && event->shift) { /* toggle snap and reinit */ @@ -213,6 +214,7 @@ int handleSnapping(TransInfo *t, wmEvent *event) initSnapping(t, NULL); status = 1; } +#endif return status; } @@ -220,7 +222,7 @@ int handleSnapping(TransInfo *t, wmEvent *event) void applyProject(TransInfo *t) { /* XXX FLICKER IN OBJECT MODE */ - if ((t->tsnap.project) && (t->tsnap.status & SNAP_ON) && (t->modifiers & MOD_SNAP_GEARS)) + if ((t->tsnap.project) && (t->modifiers & MOD_SNAP) && (t->modifiers & MOD_SNAP)) { TransData *td = t->data; float tvec[3]; @@ -256,7 +258,7 @@ void applyProject(TransInfo *t) project_float(t->ar, iloc, mval); - if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.mode)) + if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.modeTarget)) { // if(t->flag & (T_EDIT|T_POSE)) { // mul_m4_v3(imat, loc); @@ -286,14 +288,14 @@ void applySnapping(TransInfo *t, float *vec) t->tsnap.applySnap(t, vec); } - else if ((t->tsnap.status & SNAP_ON) && - (t->modifiers & MOD_SNAP_GEARS)) + else if ((t->tsnap.mode != SCE_SNAP_MODE_INCREMENT) && + (t->modifiers & MOD_SNAP)) { double current = PIL_check_seconds_timer(); // Time base quirky code to go around findnearest slowness /* !TODO! add exception for object mode, no need to slow it down then */ - if (current - t->tsnap.last >= 0.1) + if (current - t->tsnap.last >= 0.01) { t->tsnap.calcSnap(t, vec); t->tsnap.targetSnap(t); @@ -310,9 +312,9 @@ void applySnapping(TransInfo *t, float *vec) void resetSnapping(TransInfo *t) { t->tsnap.status = 0; - t->tsnap.mode = 0; t->tsnap.align = 0; - t->tsnap.modePoint = 0; + t->tsnap.mode = 0; + t->tsnap.modeSelect = 0; t->tsnap.modeTarget = 0; t->tsnap.last = 0; t->tsnap.applySnap = NULL; @@ -345,20 +347,27 @@ void initSnapping(TransInfo *t, wmOperator *op) ToolSettings *ts = t->settings; Object *obedit = t->obedit; Scene *scene = t->scene; - int snapping = 0; - short snap_mode = t->settings->snap_target; + short snap_target = t->settings->snap_target; resetSnapping(t); + /* if snap property exists */ if (op && RNA_struct_find_property(op->ptr, "snap") && RNA_property_is_set(op->ptr, "snap")) { if (RNA_boolean_get(op->ptr, "snap")) { - snapping = 1; - snap_mode = RNA_enum_get(op->ptr, "snap_mode"); + t->modifiers |= MOD_SNAP; + + if (RNA_property_is_set(op->ptr, "snap_target")) + { + snap_target = RNA_enum_get(op->ptr, "snap_target"); + } - t->tsnap.status |= SNAP_FORCED|POINT_INIT; - RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint); + if (RNA_property_is_set(op->ptr, "snap_point")) + { + RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint); + t->tsnap.status |= SNAP_FORCED|POINT_INIT; + } /* snap align only defined in specific cases */ if (RNA_struct_find_property(op->ptr, "snap_align")) @@ -374,11 +383,16 @@ void initSnapping(TransInfo *t, wmOperator *op) } } } - else + /* use scene defaults only when transform is modal */ + else if (t->flag & T_MODAL) { - snapping = ((ts->snap_flag & SCE_SNAP) == SCE_SNAP); + if (ts->snap_flag & SCE_SNAP) { + t->modifiers |= MOD_SNAP; + } + t->tsnap.align = ((t->settings->snap_flag & SCE_SNAP_ROTATE) == SCE_SNAP_ROTATE); t->tsnap.project = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT); + t->tsnap.peel = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT); } /* force project off when not supported */ @@ -387,55 +401,47 @@ void initSnapping(TransInfo *t, wmOperator *op) t->tsnap.project = 0; } + t->tsnap.mode = ts->snap_mode; + if ((t->spacetype == SPACE_VIEW3D || t->spacetype == SPACE_IMAGE) && // Only 3D view or UV - (t->flag & T_CAMERA) == 0) { // Not with camera selected - setSnappingCallback(t, snap_mode); + (t->flag & T_CAMERA) == 0) { // Not with camera selected in camera view + setSnappingCallback(t, snap_target); /* Edit mode */ if (t->tsnap.applySnap != NULL && // A snapping function actually exist - (snapping) && // Only if the snap flag is on (obedit != NULL && ELEM3(obedit->type, OB_MESH, OB_ARMATURE, OB_CURVE)) ) // Temporary limited to edit mode meshes, armature, curves { - t->tsnap.status |= SNAP_ON; - t->tsnap.modePoint = SNAP_GEO; - if (t->flag & T_PROP_EDIT) { - t->tsnap.mode = SNAP_NOT_OBEDIT; + t->tsnap.modeSelect = SNAP_NOT_OBEDIT; } else { - t->tsnap.mode = SNAP_ALL; + t->tsnap.modeSelect = SNAP_ALL; } } /* Particles edit mode*/ else if (t->tsnap.applySnap != NULL && // A snapping function actually exist - (snapping) && // Only if the snap flag is on (obedit == NULL && BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT )) { - t->tsnap.status |= SNAP_ON; - t->tsnap.modePoint = SNAP_GEO; - t->tsnap.mode = SNAP_ALL; + t->tsnap.modeSelect = SNAP_ALL; } /* Object mode */ else if (t->tsnap.applySnap != NULL && // A snapping function actually exist - (snapping) && // Only if the snap flag is on (obedit == NULL) ) // Object Mode { - t->tsnap.status |= SNAP_ON; - t->tsnap.modePoint = SNAP_GEO; - t->tsnap.mode = SNAP_NOT_SELECTED; + t->tsnap.modeSelect = SNAP_NOT_SELECTED; } else { /* Grid if snap is not possible */ - t->tsnap.modePoint = SNAP_GRID; + t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; } } else { /* Always grid outside of 3D view */ - t->tsnap.modePoint = SNAP_GRID; + t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; } } @@ -627,7 +633,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec) mval[0] = t->mval[0]; mval[1] = t->mval[1]; - if (t->settings->snap_mode == SCE_SNAP_MODE_VOLUME) + if (t->tsnap.mode == SCE_SNAP_MODE_VOLUME) { ListBase depth_peels; DepthPeel *p1, *p2; @@ -720,7 +726,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec) } else { - found = snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.mode); + found = snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.modeSelect); } if (found == 1) @@ -1828,7 +1834,7 @@ void snapGrid(TransInfo *t, float *val) { GearsType action; // Only do something if using Snap to Grid - if (t->tsnap.modePoint != SNAP_GRID) + if (t->tsnap.mode != SCE_SNAP_MODE_INCREMENT) return; if(t->mode==TFM_ROTATION || t->mode==TFM_WARP || t->mode==TFM_TILT || t->mode==TFM_TRACKBALL || t->mode==TFM_BONE_ROLL) @@ -1839,10 +1845,10 @@ void snapGrid(TransInfo *t, float *val) { invert = U.flag & USER_AUTOGRABGRID; if(invert) { - action = (t->modifiers & MOD_SNAP_GEARS) ? NO_GEARS: BIG_GEARS; + action = (t->modifiers & MOD_SNAP) ? NO_GEARS: BIG_GEARS; } else { - action = (t->modifiers & MOD_SNAP_GEARS) ? BIG_GEARS : NO_GEARS; + action = (t->modifiers & MOD_SNAP) ? BIG_GEARS : NO_GEARS; } if (action == BIG_GEARS && (t->modifiers & MOD_PRECISION)) { diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 0e5e283d109..623ddaae188 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -3144,6 +3144,9 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf) /* cursor */ WM_keymap_add_item(keymap, "UV_OT_cursor_set", ACTIONMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "UV_OT_tile_set", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0); + + /* menus */ + WM_keymap_add_menu(keymap, "IMAGE_MT_uvs_snap", SKEY, KM_PRESS, KM_SHIFT, 0); ED_object_generic_keymap(keyconf, keymap, TRUE); diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h index 195d68d63ff..c6330861fd2 100644 --- a/source/blender/makesdna/DNA_anim_types.h +++ b/source/blender/makesdna/DNA_anim_types.h @@ -36,6 +36,7 @@ extern "C" { #include "DNA_listBase.h" #include "DNA_action_types.h" #include "DNA_curve_types.h" +#include "DNA_sound_types.h" /* ************************************************ */ /* F-Curve DataTypes */ @@ -73,6 +74,7 @@ typedef enum eFModifier_Types { FMODIFIER_TYPE_FILTER, /* unimplemented - for applying: fft, high/low pass filters, etc. */ FMODIFIER_TYPE_PYTHON, FMODIFIER_TYPE_LIMITS, + FMODIFIER_TYPE_SOUND, /* NOTE: all new modifiers must be added above this line */ FMODIFIER_NUM_TYPES @@ -230,6 +232,25 @@ typedef enum eFMod_Noise_Modifications { FCM_NOISE_MODIF_MULTIPLY, /* Multiply the curve by noise */ } eFMod_Noise_Modifications; +/* sound modifier data */ +typedef struct FMod_Sound { + float strength; + float delay; + + short modification; + short pad[3]; + + bSound *sound; +} FMod_Sound; + +/* modification modes */ +typedef enum eFMod_Sound_Modifications { + FCM_SOUND_MODIF_REPLACE = 0, /* Modify existing curve, matching it's shape */ + FCM_SOUND_MODIF_ADD, /* Add amplitude to the curve */ + FCM_SOUND_MODIF_SUBTRACT, /* Subtract amplitude from the curve */ + FCM_SOUND_MODIF_MULTIPLY, /* Multiply the curve by amplitude */ +} eFMod_Sound_Modifications; + /* Drivers -------------------------------------- */ /* Driver Target diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h index 7dd90a3cf13..ea549f9aeba 100644 --- a/source/blender/makesdna/DNA_armature_types.h +++ b/source/blender/makesdna/DNA_armature_types.h @@ -66,8 +66,9 @@ typedef struct Bone { float rad_head, rad_tail; /* radius for head/tail sphere, defining deform as well, parent->rad_tip overrides rad_head*/ float size[3]; /* patch for upward compat, UNUSED! */ - short layer; + int layer; /* layers that bone appears on */ short segments; /* for B-bones */ + short pad[3]; } Bone; typedef struct bArmature { @@ -78,8 +79,8 @@ typedef struct bArmature { ListBase chainbase; ListBase *edbo; /* editbone listbase, we use pointer so we can check state */ - Bone *act_bone; - void *act_edbone; + Bone *act_bone; /* active bone (when not in editmode) */ + void *act_edbone; /* active editbone (in editmode) */ void *sketch; /* sketch struct for etch-a-ton */ @@ -87,7 +88,10 @@ typedef struct bArmature { int drawtype; short deformflag; short pathflag; - short layer, layer_protected; /* for buttons to work, both variables in this order together */ + + int pad; + + int layer, layer_protected; /* for buttons to work, both variables in this order together */ short ghostep, ghostsize; /* number of frames to ghosts to show, and step between them */ short ghosttype, pathsize; /* ghost drawing options and number of frames between points of path */ int ghostsf, ghostef; /* start and end frames of ghost-drawing range */ @@ -171,6 +175,7 @@ typedef enum eBone_Flag { BONE_EDITMODE_LOCKED = (1<<19), /* bone transforms are locked in EditMode */ BONE_TRANSFORM_CHILD = (1<<20), /* Indicates that a parent is also being transformed */ BONE_UNSELECTABLE = (1<<21), /* bone cannot be selected */ + BONE_NO_LOCAL_LOCATION = (1<<22), /* bone location is in armature space */ } eBone_Flag; #endif diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h index df2178992a9..0476d69544a 100644 --- a/source/blender/makesdna/DNA_constraint_types.h +++ b/source/blender/makesdna/DNA_constraint_types.h @@ -585,16 +585,18 @@ typedef enum eSplineIK_Flags { CONSTRAINT_SPLINEIK_SCALE_LIMITED = (1<<2), /* evenly distribute the bones along the path regardless of length */ CONSTRAINT_SPLINEIK_EVENSPLITS = (1<<3), + /* don't adjust the x and z scaling of the bones by the curve radius */ + CONSTRAINT_SPLINEIK_NO_CURVERAD = (1<<4), } eSplineIK_Flags; /* bSplineIKConstraint->xzScaleMode */ typedef enum eSplineIK_XZScaleModes { /* no x/z scaling */ CONSTRAINT_SPLINEIK_XZS_NONE = 0, - /* bones in the chain should take their x/z scales from the curve radius */ - CONSTRAINT_SPLINEIK_XZS_RADIUS, /* bones in the chain should take their x/z scales from the original scaling */ CONSTRAINT_SPLINEIK_XZS_ORIGINAL, + /* x/z scales are the inverse of the y-scale */ + CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC, } eSplineIK_XZScaleModes; /* MinMax (floor) flags */ diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index fe6a5b050e3..040dc4dbd78 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -492,6 +492,9 @@ typedef struct BooleanModifierData { #define MOD_MDEF_INVERT_VGROUP (1<<0) #define MOD_MDEF_DYNAMIC_BIND (1<<1) +#define MOD_MDEF_VOLUME 0 +#define MOD_MDEF_SURFACE 1 + typedef struct MDefInfluence { int vertex; float weight; @@ -508,7 +511,7 @@ typedef struct MeshDeformModifierData { struct Object *object; /* mesh object */ char defgrp_name[32]; /* optional vertexgroup name */ - short gridsize, flag, pad[2]; + short gridsize, flag, mode, pad; /* variables filled in when bound */ float *bindweights, *bindcos; /* computed binding weights */ @@ -523,7 +526,8 @@ typedef struct MeshDeformModifierData { float bindmat[4][4]; /* matrix of cage at binding time */ /* runtime */ - void (*bindfunc)(struct Scene *scene, struct MeshDeformModifierData *mmd, + void (*bindfunc)(struct Scene *scene, struct DerivedMesh *dm, + struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); } MeshDeformModifierData; diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h index 0de48c54fe2..81510ef96a3 100644 --- a/source/blender/makesdna/DNA_particle_types.h +++ b/source/blender/makesdna/DNA_particle_types.h @@ -391,6 +391,7 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in #define PART_INT_EULER 0 #define PART_INT_MIDPOINT 1 #define PART_INT_RK4 2 +#define PART_INT_VERLET 3 /* part->rotmode */ #define PART_ROT_NOR 1 diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index e998b943a2e..111a90ed389 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -1007,10 +1007,11 @@ typedef struct Scene { #define SCE_SNAP_TARGET_MEDIAN 2 #define SCE_SNAP_TARGET_ACTIVE 3 /* toolsettings->snap_mode */ -#define SCE_SNAP_MODE_VERTEX 0 -#define SCE_SNAP_MODE_EDGE 1 -#define SCE_SNAP_MODE_FACE 2 -#define SCE_SNAP_MODE_VOLUME 3 +#define SCE_SNAP_MODE_INCREMENT 0 +#define SCE_SNAP_MODE_VERTEX 1 +#define SCE_SNAP_MODE_EDGE 2 +#define SCE_SNAP_MODE_FACE 3 +#define SCE_SNAP_MODE_VOLUME 4 /* toolsettings->selectmode */ #define SCE_SELECT_VERTEX 1 /* for mesh */ diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 69096e5d2cf..9b38ad6b8cf 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -150,7 +150,8 @@ typedef struct Sequence { struct Ipo *ipo; // xxx depreceated... old animation system struct Scene *scene; struct anim *anim; - float facf0, facf1; + float effect_fader; + float speed_fader; PluginSeq *plugin; diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index b70d3786eae..6e610b1c32d 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -414,7 +414,9 @@ extern UserDef U; /* from blenkernel blender.c */ #define USER_SHOW_FPS (1 << 21) #define USER_MMB_PASTE (1 << 22) #define USER_MENUFIXEDORDER (1 << 23) -#define USER_CONTINUOUS_MOUSE (1 << 24) +#define USER_CONTINUOUS_MOUSE (1 << 24) +#define USER_ZOOM_INVERT (1 << 25) +#define USER_ZOOM_DOLLY_HORIZ (1 << 26) /* Auto-Keying mode */ /* AUTOKEY_ON is a bitflag */ diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 5cdd74c8262..1af1dd7a158 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -152,8 +152,10 @@ typedef struct wmWindow { short cursor; /* current mouse cursor type */ short lastcursor; /* for temp waitcursor */ short addmousemove; /* internal: tag this for extra mousemove event, makes cursors/buttons active on UI switching */ - int pad3; + short last_type; /* last event information, used for click */ + short last_val; + struct wmEvent *eventstate; /* storage for event system */ struct wmSubWindow *curswin; /* internal for wm_subwindow.c only */ @@ -215,7 +217,7 @@ typedef struct wmOperatorType { int (*poll)(struct bContext *); /* optional panel for redo and repeat, autogenerated if not set */ - void (*ui)(struct bContext *, struct PointerRNA *, struct uiLayout *); + void (*ui)(struct bContext *, struct wmOperator *, struct uiLayout *); /* rna for properties */ struct StructRNA *srna; diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index d60713aa817..36653f8c06e 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -60,9 +60,9 @@ extern StructRNA RNA_ArmatureSensor; extern StructRNA RNA_ArrayModifier; extern StructRNA RNA_BackgroundImage; extern StructRNA RNA_BevelModifier; -extern StructRNA RNA_BezierCurvePoint; -extern StructRNA RNA_BlendTexture; +extern StructRNA RNA_BezierSplinePoint; extern StructRNA RNA_BlenderRNA; +extern StructRNA RNA_BlendTexture; extern StructRNA RNA_BoidRule; extern StructRNA RNA_BoidRuleAverageSpeed; extern StructRNA RNA_BoidRuleAvoid; @@ -168,8 +168,8 @@ extern StructRNA RNA_CopyRotationConstraint; extern StructRNA RNA_CopyScaleConstraint; extern StructRNA RNA_Curve; extern StructRNA RNA_CurveMap; -extern StructRNA RNA_CurveMapPoint; extern StructRNA RNA_CurveMapping; +extern StructRNA RNA_CurveMapPoint; extern StructRNA RNA_CurveModifier; extern StructRNA RNA_CurvePoint; extern StructRNA RNA_DampedTrackConstraint; @@ -183,8 +183,8 @@ extern StructRNA RNA_DriverTarget; extern StructRNA RNA_DupliObject; extern StructRNA RNA_EdgeSplitModifier; extern StructRNA RNA_EditBone; -extern StructRNA RNA_EffectSequence; extern StructRNA RNA_EffectorWeights; +extern StructRNA RNA_EffectSequence; extern StructRNA RNA_EnumProperty; extern StructRNA RNA_EnumPropertyItem; extern StructRNA RNA_EnvironmentMap; @@ -194,6 +194,13 @@ extern StructRNA RNA_ExplodeModifier; extern StructRNA RNA_ExpressionController; extern StructRNA RNA_FCurve; extern StructRNA RNA_FCurveSample; +extern StructRNA RNA_FieldSettings; +extern StructRNA RNA_FileSelectParams; +extern StructRNA RNA_FloatProperty; +extern StructRNA RNA_FloorConstraint; +extern StructRNA RNA_FluidFluidSettings; +extern StructRNA RNA_FluidSettings; +extern StructRNA RNA_FluidSimulationModifier; extern StructRNA RNA_FModifier; extern StructRNA RNA_FModifierCycles; extern StructRNA RNA_FModifierEnvelope; @@ -203,19 +210,9 @@ extern StructRNA RNA_FModifierGenerator; extern StructRNA RNA_FModifierLimits; extern StructRNA RNA_FModifierNoise; extern StructRNA RNA_FModifierPython; -extern StructRNA RNA_FieldSettings; -extern StructRNA RNA_FileSelectParams; -extern StructRNA RNA_FloatProperty; -extern StructRNA RNA_FloorConstraint; -extern StructRNA RNA_FluidFluidSettings; -extern StructRNA RNA_FluidSettings; -extern StructRNA RNA_FluidSimulationModifier; +extern StructRNA RNA_FModifierSound; extern StructRNA RNA_FollowPathConstraint; extern StructRNA RNA_Function; -extern StructRNA RNA_GPencilFrame; -extern StructRNA RNA_GPencilLayer; -extern StructRNA RNA_GPencilStroke; -extern StructRNA RNA_GPencilStrokePoint; extern StructRNA RNA_GameBooleanProperty; extern StructRNA RNA_GameFloatProperty; extern StructRNA RNA_GameIntProperty; @@ -225,6 +222,10 @@ extern StructRNA RNA_GameSoftBodySettings; extern StructRNA RNA_GameStringProperty; extern StructRNA RNA_GameTimerProperty; extern StructRNA RNA_GlowSequence; +extern StructRNA RNA_GPencilFrame; +extern StructRNA RNA_GPencilLayer; +extern StructRNA RNA_GPencilStroke; +extern StructRNA RNA_GPencilStrokePoint; extern StructRNA RNA_GreasePencil; extern StructRNA RNA_Group; extern StructRNA RNA_Header; @@ -244,12 +245,12 @@ extern StructRNA RNA_IntProperty; extern StructRNA RNA_Itasc; extern StructRNA RNA_JoystickSensor; extern StructRNA RNA_Key; -extern StructRNA RNA_KeyConfig; -extern StructRNA RNA_KeyMap; -extern StructRNA RNA_KeyMapItem; extern StructRNA RNA_KeyboardSensor; +extern StructRNA RNA_KeyConfig; extern StructRNA RNA_KeyingSet; extern StructRNA RNA_KeyingSetPath; +extern StructRNA RNA_KeyMap; +extern StructRNA RNA_KeyMapItem; extern StructRNA RNA_KinematicConstraint; extern StructRNA RNA_Lamp; extern StructRNA RNA_LampSkySettings; @@ -309,8 +310,8 @@ extern StructRNA RNA_NearSensor; extern StructRNA RNA_NlaStrip; extern StructRNA RNA_NlaTrack; extern StructRNA RNA_Node; -extern StructRNA RNA_NodeTree; extern StructRNA RNA_NodeSocket; +extern StructRNA RNA_NodeTree; extern StructRNA RNA_NoiseTexture; extern StructRNA RNA_NorController; extern StructRNA RNA_Nurb; @@ -344,8 +345,8 @@ extern StructRNA RNA_PluginTexture; extern StructRNA RNA_PointCache; extern StructRNA RNA_PointDensity; extern StructRNA RNA_PointDensityTexture; -extern StructRNA RNA_PointLamp; extern StructRNA RNA_PointerProperty; +extern StructRNA RNA_PointLamp; extern StructRNA RNA_Pose; extern StructRNA RNA_PoseBone; extern StructRNA RNA_Property; @@ -416,7 +417,6 @@ extern StructRNA RNA_SoftBodyModifier; extern StructRNA RNA_SoftBodySettings; extern StructRNA RNA_Sound; extern StructRNA RNA_SoundSequence; -extern StructRNA RNA_SplineIKConstraint; extern StructRNA RNA_Space; extern StructRNA RNA_Space3DView; extern StructRNA RNA_SpaceConsole; @@ -433,9 +433,10 @@ extern StructRNA RNA_SpaceProperties; extern StructRNA RNA_SpaceSequenceEditor; extern StructRNA RNA_SpaceTextEditor; extern StructRNA RNA_SpaceTimeline; -extern StructRNA RNA_SpaceUVEditor; extern StructRNA RNA_SpaceUserPreferences; +extern StructRNA RNA_SpaceUVEditor; extern StructRNA RNA_SpeedControlSequence; +extern StructRNA RNA_SplineIKConstraint; extern StructRNA RNA_SpotLamp; extern StructRNA RNA_StretchToConstraint; extern StructRNA RNA_StringProperty; @@ -508,8 +509,6 @@ extern StructRNA RNA_TransformConstraint; extern StructRNA RNA_TransformSequence; extern StructRNA RNA_UILayout; extern StructRNA RNA_UIListItem; -extern StructRNA RNA_UVProjectModifier; -extern StructRNA RNA_UVProjector; extern StructRNA RNA_UnitSettings; extern StructRNA RNA_UnknownType; extern StructRNA RNA_UserPreferences; @@ -518,6 +517,8 @@ extern StructRNA RNA_UserPreferencesFilePaths; extern StructRNA RNA_UserPreferencesSystem; extern StructRNA RNA_UserPreferencesView; extern StructRNA RNA_UserSolidLight; +extern StructRNA RNA_UVProjectModifier; +extern StructRNA RNA_UVProjector; extern StructRNA RNA_ValueNodeSocket; extern StructRNA RNA_VectorFont; extern StructRNA RNA_VectorNodeSocket; @@ -614,6 +615,7 @@ int RNA_property_array_check(PointerRNA *ptr, PropertyRNA *prop); int RNA_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int dimension); int RNA_property_array_dimension(PointerRNA *ptr, PropertyRNA *prop, int length[]); char RNA_property_array_item_char(PropertyRNA *prop, int index); +int RNA_property_array_item_index(PropertyRNA *prop, char name); int RNA_property_string_maxlength(PropertyRNA *prop); @@ -639,6 +641,7 @@ int RNA_property_enum_identifier(struct bContext *C, PointerRNA *ptr, PropertyRN StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop); int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index); int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop); int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop); @@ -716,7 +719,10 @@ char *RNA_path_append(const char *path, PointerRNA *ptr, PropertyRNA *prop, char *RNA_path_back(const char *path); int RNA_path_resolve(PointerRNA *ptr, const char *path, - PointerRNA *r_ptr, PropertyRNA **r_prop); + PointerRNA *r_ptr, PropertyRNA **r_prop); + +int RNA_path_resolve_full(PointerRNA *ptr, const char *path, + PointerRNA *r_ptr, PropertyRNA **r_prop, int *index); char *RNA_path_from_ID_to_struct(PointerRNA *ptr); char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop); diff --git a/source/blender/makesrna/RNA_define.h b/source/blender/makesrna/RNA_define.h index 5ed0fb5194d..37abe44f128 100644 --- a/source/blender/makesrna/RNA_define.h +++ b/source/blender/makesrna/RNA_define.h @@ -155,6 +155,7 @@ void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive); void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *updatefunc); void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable); +void RNA_def_property_editable_array_func(PropertyRNA *prop, const char *editable); void RNA_def_property_dynamic_array_funcs(PropertyRNA *prop, const char *getlength); void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set); diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h index 13e2d5a2dc2..b33dbe6f20d 100644 --- a/source/blender/makesrna/RNA_enum_types.h +++ b/source/blender/makesrna/RNA_enum_types.h @@ -38,7 +38,9 @@ extern EnumPropertyItem object_mode_items[]; extern EnumPropertyItem proportional_falloff_items[]; extern EnumPropertyItem proportional_editing_items[]; -extern EnumPropertyItem snap_mode_items[]; +extern EnumPropertyItem snap_target_items[]; +extern EnumPropertyItem snap_element_items[]; +extern EnumPropertyItem mesh_select_mode_items[]; extern EnumPropertyItem space_type_items[]; extern EnumPropertyItem region_type_items[]; extern EnumPropertyItem modifier_type_items[]; diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index 5e29827270f..ff01f76fe71 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -140,7 +140,7 @@ typedef enum PropertyFlag { PROP_ANIMATEABLE = 1<<1, /* icon */ - PROP_ICONS_CONSECUTIVE = 1<12, + PROP_ICONS_CONSECUTIVE = 1<<12, /* hidden in the user interface */ PROP_HIDDEN = 1<<19, diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 526178d7b26..3d4e128c3ac 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -1763,7 +1763,7 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr rna_print_c_string(f, prop->description); fprintf(f, ",\n\t"); fprintf(f, "%d,\n", prop->icon); fprintf(f, "\t%s, %s|%s, %s, %d, {%d, %d, %d}, %d,\n", rna_property_typename(prop->type), rna_property_subtypename(prop->subtype), rna_property_subtype_unit(prop->subtype), rna_function_string(prop->getlength), prop->arraydimension, prop->arraylength[0], prop->arraylength[1], prop->arraylength[2], prop->totarraylength); - fprintf(f, "\t%s, %d, %s,\n", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable)); + fprintf(f, "\t%s, %d, %s, %s,\n", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable), rna_function_string(prop->itemeditable)); if(prop->flag & PROP_RAW_ACCESS) rna_set_raw_offset(f, srna, prop); else fprintf(f, "\t0, 0"); diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index cb1a1211d24..3bcdf373c43 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -31,6 +31,8 @@ #include "DNA_ID.h" +#include "WM_types.h" + #include "rna_internal.h" /* enum of ID-block types @@ -301,6 +303,7 @@ static void rna_def_ID(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Name", "Unique datablock ID name."); RNA_def_property_string_funcs(prop, "rna_ID_name_get", "rna_ID_name_length", "rna_ID_name_set"); RNA_def_property_string_maxlength(prop, sizeof(((ID*)NULL)->name)-2); + RNA_def_property_update(prop, NC_ID|ND_ID_RENAME, NULL); RNA_def_struct_name_property(srna, prop); prop= RNA_def_property(srna, "users", PROP_INT, PROP_UNSIGNED); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index ce2e256004e..6c0a3c57f65 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -24,6 +24,7 @@ #include <stdlib.h> #include <string.h> +#include <ctype.h> #include "MEM_guardedalloc.h" @@ -694,8 +695,56 @@ char RNA_property_array_item_char(PropertyRNA *prop, int index) return vectoritem[index]; else if ((index < 4) && ELEM(subtype, PROP_COLOR, PROP_RGB)) return coloritem[index]; - else - return '\0'; + + return '\0'; +} + +int RNA_property_array_item_index(PropertyRNA *prop, char name) +{ + PropertySubType subtype= rna_ensure_property(prop)->subtype; + + name= toupper(name); + + /* get index based on string name/alias */ + /* maybe a function to find char index in string would be better than all the switches */ + if (ELEM(subtype, PROP_QUATERNION, PROP_AXISANGLE)) { + switch (name) { + case 'W': + return 0; + case 'X': + return 1; + case 'Y': + return 2; + case 'Z': + return 3; + } + } + else if(ELEM6(subtype, PROP_TRANSLATION, PROP_DIRECTION, PROP_XYZ, PROP_EULER, PROP_VELOCITY, PROP_ACCELERATION)) { + switch (name) { + case 'X': + return 0; + case 'Y': + return 1; + case 'Z': + return 2; + case 'W': + return 3; + } + } + else if (ELEM(subtype, PROP_COLOR, PROP_RGB)) { + switch (name) { + case 'R': + return 0; + case 'G': + return 1; + case 'B': + return 2; + case 'A': + return 3; + } + } + + return -1; } void RNA_property_int_range(PointerRNA *ptr, PropertyRNA *prop, int *hardmin, int *hardmax) @@ -982,6 +1031,26 @@ int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop) return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION)); } +/* same as RNA_property_editable(), except this checks individual items in an array */ +int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index) +{ + ID *id; + int flag; + + prop= rna_ensure_property(prop); + + /* if there is no function to do this for a given index, + * just resort to doing this on the whole array + */ + if (prop->itemeditable == NULL) + return RNA_property_editable(ptr, prop); + + flag= prop->itemeditable(ptr, index); + id= ptr->id.data; + + return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION)); +} + int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop) { int flag; @@ -2426,10 +2495,15 @@ static int rna_token_strip_quotes(char *token) /* Resolve the given RNA path to find the pointer+property indicated at the end of the path */ int RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop) { + return RNA_path_resolve_full(ptr, path, r_ptr, r_prop, NULL); +} + +int RNA_path_resolve_full(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *index) +{ PropertyRNA *prop; PointerRNA curptr, nextptr; char fixedbuf[256], *token; - int len, intkey; + int type, len, intkey; prop= NULL; curptr= *ptr; @@ -2464,43 +2538,78 @@ int RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, Prope if(!prop) return 0; + type= RNA_property_type(prop); + /* now look up the value of this property if it is a pointer or * collection, otherwise return the property rna so that the * caller can read the value of the property itself */ - if(RNA_property_type(prop) == PROP_POINTER) { + switch (type) { + case PROP_POINTER: nextptr= RNA_property_pointer_get(&curptr, prop); if(nextptr.data) curptr= nextptr; else return 0; - } - else if(RNA_property_type(prop) == PROP_COLLECTION && *path) { - /* resolve the lookup with [] brackets */ - token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1); - if(!token) - return 0; + break; + case PROP_COLLECTION: + if(*path) { + /* resolve the lookup with [] brackets */ + token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1); - len= strlen(token); - - /* check for "" to see if it is a string */ - if(rna_token_strip_quotes(token)) { - RNA_property_collection_lookup_string(&curptr, prop, token+1, &nextptr); - } - else { - /* otherwise do int lookup */ - intkey= atoi(token); - RNA_property_collection_lookup_int(&curptr, prop, intkey, &nextptr); + if(!token) + return 0; + + len= strlen(token); + + /* check for "" to see if it is a string */ + if(rna_token_strip_quotes(token)) { + RNA_property_collection_lookup_string(&curptr, prop, token+1, &nextptr); + } + else { + /* otherwise do int lookup */ + intkey= atoi(token); + RNA_property_collection_lookup_int(&curptr, prop, intkey, &nextptr); + } + + if(token != fixedbuf) + MEM_freeN(token); + + if(nextptr.data) + curptr= nextptr; + else + return 0; } - if(token != fixedbuf) - MEM_freeN(token); + break; + default: + if (index==NULL) + break; - if(nextptr.data) - curptr= nextptr; - else - return 0; + *index= -1; + + if (*path) { + if (*path=='[') { + token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1); + + /* check for "" to see if it is a string */ + if(rna_token_strip_quotes(token)) { + *index= RNA_property_array_item_index(prop, *(token+1)); + } + else { + /* otherwise do int lookup */ + *index= atoi(token); + } + } + else { + token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 0); + *index= RNA_property_array_item_index(prop, *token); + } + + if(token != fixedbuf) + MEM_freeN(token); + } } } diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index f1164cda675..4bea061758d 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -93,6 +93,15 @@ static void rna_Armature_act_edit_bone_set(PointerRNA *ptr, PointerRNA value) } } +EditBone *rna_Armature_edit_bone_new(bArmature *arm, char *name) +{ + return ED_armature_edit_bone_add(arm, name); +} + +void rna_Armature_edit_bone_remove(bArmature *arm, EditBone *ebone) +{ + ED_armature_edit_bone_remove(arm, ebone); +} static void rna_Armature_redraw_data(bContext *C, PointerRNA *ptr) { @@ -130,19 +139,19 @@ static IDProperty *rna_EditBone_idproperties(PointerRNA *ptr, int create) return ebone->prop; } -static void rna_bone_layer_set(short *layer, const int *values) +static void rna_bone_layer_set(int *layer, const int *values) { int i, tot= 0; /* ensure we always have some layer selected */ - for(i=0; i<16; i++) + for(i=0; i<32; i++) if(values[i]) tot++; if(tot==0) return; - for(i=0; i<16; i++) { + for(i=0; i<32; i++) { if(values[i]) *layer |= (1<<i); else *layer &= ~(1<<i); } @@ -160,14 +169,14 @@ static void rna_Armature_layer_set(PointerRNA *ptr, const int *values) int i, tot= 0; /* ensure we always have some layer selected */ - for(i=0; i<20; i++) + for(i=0; i<32; i++) if(values[i]) tot++; if(tot==0) return; - for(i=0; i<20; i++) { + for(i=0; i<32; i++) { if(values[i]) arm->layer |= (1<<i); else arm->layer &= ~(1<<i); } @@ -227,28 +236,7 @@ static void rna_Bone_name_set(PointerRNA *ptr, const char *value) ED_armature_bone_rename(arm, oldname, newname); } -static void rna_EditBone_layer_get(PointerRNA *ptr, int values[16]) -{ - EditBone *data= (EditBone*)(ptr->data); - values[0]= ((data->layer & (1<<0)) != 0); - values[1]= ((data->layer & (1<<1)) != 0); - values[2]= ((data->layer & (1<<2)) != 0); - values[3]= ((data->layer & (1<<3)) != 0); - values[4]= ((data->layer & (1<<4)) != 0); - values[5]= ((data->layer & (1<<5)) != 0); - values[6]= ((data->layer & (1<<6)) != 0); - values[7]= ((data->layer & (1<<7)) != 0); - values[8]= ((data->layer & (1<<8)) != 0); - values[9]= ((data->layer & (1<<9)) != 0); - values[10]= ((data->layer & (1<<10)) != 0); - values[11]= ((data->layer & (1<<11)) != 0); - values[12]= ((data->layer & (1<<12)) != 0); - values[13]= ((data->layer & (1<<13)) != 0); - values[14]= ((data->layer & (1<<14)) != 0); - values[15]= ((data->layer & (1<<15)) != 0); -} - -static void rna_EditBone_layer_set(PointerRNA *ptr, const int values[16]) +static void rna_EditBone_layer_set(PointerRNA *ptr, const int values[]) { EditBone *data= (EditBone*)(ptr->data); rna_bone_layer_set(&data->layer, values); @@ -396,8 +384,8 @@ static void rna_def_bone_common(StructRNA *srna, int editbone) /* flags */ prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER_MEMBER); RNA_def_property_boolean_sdna(prop, NULL, "layer", 1); - RNA_def_property_array(prop, 16); - if(editbone) RNA_def_property_boolean_funcs(prop, "rna_EditBone_layer_get", "rna_EditBone_layer_set"); + RNA_def_property_array(prop, 32); + if(editbone) RNA_def_property_boolean_funcs(prop, NULL, "rna_EditBone_layer_set"); else RNA_def_property_boolean_funcs(prop, NULL, "rna_Bone_layer_set"); RNA_def_property_ui_text(prop, "Layers", "Layers bone exists in"); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); @@ -411,7 +399,7 @@ static void rna_def_bone_common(StructRNA *srna, int editbone) prop= RNA_def_property(srna, "hinge", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_HINGE); - RNA_def_property_ui_text(prop, "Inherit Rotation", "Bone doesn't inherit rotation or scale from parent bone."); + RNA_def_property_ui_text(prop, "Inherit Rotation", "Bone inherits rotation or scale from parent bone."); RNA_def_property_update(prop, 0, "rna_Armature_update_data"); prop= RNA_def_property(srna, "multiply_vertexgroup_with_envelope", PROP_BOOLEAN, PROP_NONE); @@ -428,6 +416,11 @@ static void rna_def_bone_common(StructRNA *srna, int editbone) RNA_def_property_ui_text(prop, "Inherit Scale", "Bone inherits scaling from parent bone."); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_SCALE); RNA_def_property_update(prop, 0, "rna_Armature_update_data"); + + prop= RNA_def_property(srna, "local_location", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_ui_text(prop, "Local Location", "Bone location is set in local space."); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_LOCAL_LOCATION); + RNA_def_property_update(prop, 0, "rna_Armature_update_data"); prop= RNA_def_property(srna, "draw_wire", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_DRAWWIRE); @@ -439,8 +432,8 @@ static void rna_def_bone_common(StructRNA *srna, int editbone) RNA_def_property_ui_text(prop, "Cyclic Offset", "When bone doesn't have a parent, it receives cyclic offset effects."); RNA_def_property_update(prop, 0, "rna_Armature_update_data"); - prop= RNA_def_property(srna, "selectable", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_UNSELECTABLE); + prop= RNA_def_property(srna, "restrict_select", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_UNSELECTABLE); RNA_def_property_ui_text(prop, "Selectable", "Bone is able to be selected"); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); @@ -610,6 +603,11 @@ static void rna_def_edit_bone(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Locked", "Bone is not able to be transformed when in Edit Mode."); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); + prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_SELECTED); + RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); + prop= RNA_def_property(srna, "head_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_ROOTSEL); RNA_def_property_ui_text(prop, "Head Selected", ""); @@ -656,15 +654,15 @@ static void rna_def_armature_edit_bones(BlenderRNA *brna, PropertyRNA *cprop) StructRNA *srna; PropertyRNA *prop; -// FunctionRNA *func; -// PropertyRNA *parm; + FunctionRNA *func; + PropertyRNA *parm; RNA_def_property_srna(cprop, "ArmatureEditBones"); srna= RNA_def_struct(brna, "ArmatureEditBones", NULL); RNA_def_struct_sdna(srna, "bArmature"); RNA_def_struct_ui_text(srna, "Armature EditBones", "Collection of armature edit bones."); - prop= RNA_def_property(srna, "edit_bones", PROP_POINTER, PROP_NONE); + prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "EditBone"); RNA_def_property_pointer_sdna(prop, NULL, "act_edbone"); RNA_def_property_flag(prop, PROP_EDITABLE); @@ -674,6 +672,22 @@ static void rna_def_armature_edit_bones(BlenderRNA *brna, PropertyRNA *cprop) /* todo, redraw */ // RNA_def_property_collection_active(prop, prop_act); + + /* add target */ + func= RNA_def_function(srna, "new", "rna_Armature_edit_bone_new"); + RNA_def_function_ui_description(func, "Add a new bone."); + parm= RNA_def_string(func, "name", "Object", 0, "", "New name for the bone."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "bone", "EditBone", "", "Newly created edit bone."); + RNA_def_function_return(func, parm); + + /* remove target */ + func= RNA_def_function(srna, "remove", "rna_Armature_edit_bone_remove"); + RNA_def_function_ui_description(func, "Remove an existing bone from the armature."); + /* target to remove*/ + parm= RNA_def_pointer(func, "bone", "EditBone", "", "EditBone to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); } static void rna_def_armature(BlenderRNA *brna) @@ -728,11 +742,6 @@ static void rna_def_armature(BlenderRNA *brna) rna_def_armature_edit_bones(brna, prop); /* Enum values */ -// prop= RNA_def_property(srna, "rest_position", PROP_BOOLEAN, PROP_NONE); -// RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_RESTPOS); -// RNA_def_property_ui_text(prop, "Rest Position", "Show Armature in Rest Position. No posing possible."); -// RNA_def_property_update(prop, 0, "rna_Armature_update_data"); - prop= RNA_def_property(srna, "pose_position", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); RNA_def_property_enum_items(prop, prop_pose_position_items); @@ -766,7 +775,7 @@ static void rna_def_armature(BlenderRNA *brna) /* layer */ prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER_MEMBER); RNA_def_property_boolean_sdna(prop, NULL, "layer", 1); - RNA_def_property_array(prop, 16); + RNA_def_property_array(prop, 32); RNA_def_property_ui_text(prop, "Visible Layers", "Armature layer visibility."); RNA_def_property_boolean_funcs(prop, NULL, "rna_Armature_layer_set"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Armature_redraw_data"); @@ -775,7 +784,7 @@ static void rna_def_armature(BlenderRNA *brna) /* layer protection */ prop= RNA_def_property(srna, "layer_protection", PROP_BOOLEAN, PROP_LAYER); RNA_def_property_boolean_sdna(prop, NULL, "layer_protected", 1); - RNA_def_property_array(prop, 16); + RNA_def_property_array(prop, 32); RNA_def_property_ui_text(prop, "Layer Proxy Protection", "Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo."); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 4d11614c1e8..de306e21756 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -92,6 +92,8 @@ EnumPropertyItem constraint_ik_axisref_items[] ={ #ifdef RNA_RUNTIME +#include <stdio.h> + #include "BKE_animsys.h" #include "BKE_action.h" #include "BKE_constraint.h" @@ -168,7 +170,7 @@ static void rna_Constraint_name_set(PointerRNA *ptr, const char *value) /* make sure name is unique */ if (ptr->id.data) { Object *ob= ptr->id.data; - ListBase *list= get_active_constraints(ob); + ListBase *list = get_constraint_lb(ob, con, NULL); /* if we have the list, check for unique name, otherwise give up */ if (list) @@ -183,19 +185,17 @@ static char *rna_Constraint_path(PointerRNA *ptr) { Object *ob= ptr->id.data; bConstraint *con= ptr->data; - bPoseChannel *pchan= get_active_posechannel(ob); - ListBase *actlist= get_active_constraints(ob); - short inList = 0; - - /* check if constraint is in the given list */ - if (actlist) - inList= (BLI_findindex(actlist, con) != -1); - - /* if constraint is in the list, the list is for the active bone... */ - if ((inList) && (actlist != &ob->constraints) && (pchan)) + bPoseChannel *pchan; + ListBase *lb = get_constraint_lb(ob, con, &pchan); + + if(lb == NULL) + printf("rna_Constraint_path: internal error, constraint '%s' not found in object '%s'\n", con->name, ob->id.name); + + if(pchan) { return BLI_sprintfN("pose.bones[\"%s\"].constraints[\"%s\"]", pchan->name, con->name); - else - return BLI_sprintfN("constraints[\"%s\"]", con->name); + } + + return BLI_sprintfN("constraints[\"%s\"]", con->name); } static void rna_Constraint_update(bContext *C, PointerRNA *ptr) @@ -286,6 +286,35 @@ static void rna_ActionConstraint_minmax_range(PointerRNA *ptr, float *min, float } } +static int rna_SplineIKConstraint_joint_bindings_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION]) +{ + bConstraint *con= (bConstraint*)ptr->data; + bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data; + + if (ikData) + length[0]= ikData->numpoints; + else + length[0]= 256; /* for raw_access, untested */ + + return length[0]; +} + +static void rna_SplineIKConstraint_joint_bindings_get(PointerRNA *ptr, float *values) +{ + bConstraint *con= (bConstraint*)ptr->data; + bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data; + + memcpy(values, ikData->points, ikData->numpoints * sizeof(float)); +} + +static void rna_SplineIKConstraint_joint_bindings_set(PointerRNA *ptr, const float *values) +{ + bConstraint *con= (bConstraint*)ptr->data; + bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data; + + memcpy(ikData->points, values, ikData->numpoints * sizeof(float)); +} + #else EnumPropertyItem constraint_distance_items[] = { @@ -339,49 +368,49 @@ static void rna_def_constraint_childof(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Sub-Target", ""); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "locationx", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_location_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCX); RNA_def_property_ui_text(prop, "Location X", "Use X Location of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "locationy", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_location_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCY); RNA_def_property_ui_text(prop, "Location Y", "Use Y Location of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "locationz", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_location_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCZ); RNA_def_property_ui_text(prop, "Location Z", "Use Z Location of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "rotationx", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_rotation_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTX); RNA_def_property_ui_text(prop, "Rotation X", "Use X Rotation of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "rotationy", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_rotation_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTY); RNA_def_property_ui_text(prop, "Rotation Y", "Use Y Rotation of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "rotationz", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_rotation_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTZ); RNA_def_property_ui_text(prop, "Rotation Z", "Use Z Rotation of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "sizex", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_scale_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEX); - RNA_def_property_ui_text(prop, "Size X", "Use X Scale of Parent."); + RNA_def_property_ui_text(prop, "Scale X", "Use X Scale of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "sizey", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_scale_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEY); - RNA_def_property_ui_text(prop, "Size Y", "Use Y Scale of Parent."); + RNA_def_property_ui_text(prop, "Scale Y", "Use Y Scale of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "sizez", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_scale_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEZ); - RNA_def_property_ui_text(prop, "Size Z", "Use Z Scale of Parent."); + RNA_def_property_ui_text(prop, "Scale Z", "Use Z Scale of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); } @@ -478,7 +507,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Chain Length", "How many bones are included in the IK effect - 0 uses all bones."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "tail", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_tail", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_TIP); RNA_def_property_ui_text(prop, "Use Tail", "Include bone's tail as last element in chain."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); @@ -489,7 +518,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Axis Reference", "Constraint axis Lock options relative to Bone or Target reference"); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "position", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_position", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_POS); RNA_def_property_ui_text(prop, "Position", "Chain follows position of target."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); @@ -509,7 +538,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Lock Z Pos", "Constraint position along Z axis"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "rotation", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_rotation", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_ROT); RNA_def_property_ui_text(prop, "Rotation", "Chain follows rotation of target."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); @@ -529,12 +558,12 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Lock Z Rot", "Constraint rotation along Z axis"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "targetless", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_AUTO); - RNA_def_property_ui_text(prop, "Targetless", "Use targetless IK."); + prop= RNA_def_property(srna, "use_target", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_AUTO); + RNA_def_property_ui_text(prop, "Target", "Disable for targetless IK."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "stretch", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_stretch", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_STRETCH); RNA_def_property_ui_text(prop, "Stretch", "Enable IK Stretching."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); @@ -581,6 +610,12 @@ static void rna_def_constraint_track_to(BlenderRNA *brna) srna= RNA_def_struct(brna, "TrackToConstraint", "Constraint"); RNA_def_struct_ui_text(srna, "Track To Constraint", "Aims the constrained object toward the target."); + + prop= RNA_def_property(srna, "head_tail", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, "bConstraint", "headtail"); + RNA_def_property_ui_text(prop, "Head/Tail", "Target along length of bone: Head=0, Tail=1."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); + RNA_def_struct_sdna_from(srna, "bTrackToConstraint", "data"); prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); @@ -632,19 +667,19 @@ static void rna_def_constraint_rotate_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Sub-Target", ""); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "rotate_like_x", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_X); - RNA_def_property_ui_text(prop, "Like X", "Copy the target's X rotation."); + RNA_def_property_ui_text(prop, "Copy X", "Copy the target's X rotation."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "rotate_like_y", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_Y); - RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y rotation."); + RNA_def_property_ui_text(prop, "Copy Y", "Copy the target's Y rotation."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "rotate_like_z", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_Z); - RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z rotation."); + RNA_def_property_ui_text(prop, "Copy Z", "Copy the target's Z rotation."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "invert_x", PROP_BOOLEAN, PROP_NONE); @@ -662,7 +697,7 @@ static void rna_def_constraint_rotate_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Invert Z", "Invert the Z rotation."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_OFFSET); RNA_def_property_ui_text(prop, "Offset", "Add original rotation into copied rotation."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); @@ -695,19 +730,19 @@ static void rna_def_constraint_locate_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Sub-Target", ""); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "locate_like_x", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_X); - RNA_def_property_ui_text(prop, "Like X", "Copy the target's X location."); + RNA_def_property_ui_text(prop, "Copy X", "Copy the target's X location."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "locate_like_y", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_Y); - RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y location."); + RNA_def_property_ui_text(prop, "Copy Y", "Copy the target's Y location."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "locate_like_z", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_Z); - RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z location."); + RNA_def_property_ui_text(prop, "Copy Z", "Copy the target's Z location."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "invert_x", PROP_BOOLEAN, PROP_NONE); @@ -725,7 +760,7 @@ static void rna_def_constraint_locate_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Invert Z", "Invert the Z location."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_OFFSET); RNA_def_property_ui_text(prop, "Offset", "Add original location into copied location."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); @@ -803,22 +838,22 @@ static void rna_def_constraint_size_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Sub-Target", ""); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "size_like_x", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_X); - RNA_def_property_ui_text(prop, "Like X", "Copy the target's X scale."); + RNA_def_property_ui_text(prop, "Copy X", "Copy the target's X scale."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "size_like_y", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_Y); - RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y scale."); + RNA_def_property_ui_text(prop, "Copy Y", "Copy the target's Y scale."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "size_like_z", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_Z); - RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z scale."); + RNA_def_property_ui_text(prop, "Copy Z", "Copy the target's Z scale."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_OFFSET); RNA_def_property_ui_text(prop, "Offset", "Add original scale into copied scale."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); @@ -1032,6 +1067,12 @@ static void rna_def_constraint_stretch_to(BlenderRNA *brna) srna= RNA_def_struct(brna, "StretchToConstraint", "Constraint"); RNA_def_struct_ui_text(srna, "Stretch To Constraint", "Stretches to meet the target object."); + + prop= RNA_def_property(srna, "head_tail", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, "bConstraint", "headtail"); + RNA_def_property_ui_text(prop, "Head/Tail", "Target along length of bone: Head=0, Tail=1."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); + RNA_def_struct_sdna_from(srna, "bStretchToConstraint", "data"); prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); @@ -1256,73 +1297,73 @@ static void rna_def_constraint_transform(BlenderRNA *brna) prop= RNA_def_property(srna, "from_min_x", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_min[0]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Minimum X", "Bottom range of X axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "from_min_y", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_min[1]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Minimum Y", "Bottom range of Y axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "from_min_z", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_min[2]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Minimum Z", "Bottom range of Z axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "from_max_x", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_max[0]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Maximum X", "Top range of X axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "from_max_y", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_max[1]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Maximum Y", "Top range of Y axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "from_max_z", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_max[2]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Maximum Z", "Top range of Z axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_min_x", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_min[0]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Minimum X", "Bottom range of X axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_min_y", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_min[1]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Minimum Y", "Bottom range of Y axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_min_z", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_min[2]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Minimum Z", "Bottom range of Z axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_max_x", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_max[0]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Maximum X", "Top range of X axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_max_y", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_max[1]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Maximum Y", "Top range of Y axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_max_z", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_max[2]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Maximum Z", "Top range of Z axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); } @@ -1621,17 +1662,17 @@ static void rna_def_constraint_shrinkwrap(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Distance", "Distance to Target."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "axis_x", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS); RNA_def_property_ui_text(prop, "Axis X", "Projection over X Axis"); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "axis_y", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS); RNA_def_property_ui_text(prop, "Axis Y", "Projection over Y Axis"); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "axis_z", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS); RNA_def_property_ui_text(prop, "Axis Z", "Projection over Z Axis"); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); @@ -1679,9 +1720,9 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna) PropertyRNA *prop; static EnumPropertyItem splineik_xz_scale_mode[] = { - {CONSTRAINT_SPLINEIK_XZS_NONE, "NONE", 0, "Volume Preserve", "Don't scale the x and z axes, giving a volume preservation effect. (Default)"}, - {CONSTRAINT_SPLINEIK_XZS_RADIUS, "CURVE_RADIUS", 0, "Curve Radius", "Use the radius of the curve."}, + {CONSTRAINT_SPLINEIK_XZS_NONE, "NONE", 0, "None", "Don't scale the X and Z axes (Default)"}, {CONSTRAINT_SPLINEIK_XZS_ORIGINAL, "BONE_ORIGINAL", 0, "Bone Original", "Use the original scaling of the bones."}, + {CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC, "VOLUME_PRESERVE", 0, "Volume Preservation", "Scale of the X and Z axes is the inverse of the Y-Scale."}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "SplineIKConstraint", "Constraint"); @@ -1703,9 +1744,13 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna) /* direct access to bindings */ // NOTE: only to be used by experienced users - //prop= RNA_def_property(srna, "joint_bindings", PROP_FLOAT, PROP_FACTOR); - //RNA_def_property_collection_sdna(prop, NULL, "points", "numpoints"); - //RNA_def_property_ui_text(prop, "Joint Bindings", "(EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages."); + prop= RNA_def_property(srna, "joint_bindings", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_array(prop, 32); // XXX this is the maximum value allowed + RNA_def_property_flag(prop, PROP_DYNAMIC); + RNA_def_property_dynamic_array_funcs(prop, "rna_SplineIKConstraint_joint_bindings_get_length"); + RNA_def_property_float_funcs(prop, "rna_SplineIKConstraint_joint_bindings_get", "rna_SplineIKConstraint_joint_bindings_set", NULL); + RNA_def_property_ui_text(prop, "Joint Bindings", "(EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); /* settings */ prop= RNA_def_property(srna, "chain_offset", PROP_BOOLEAN, PROP_NONE); @@ -1718,15 +1763,20 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Even Divisions", "Ignore the relative lengths of the bones when fitting to the curve."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "y_scaling", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "y_stretch", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_SCALE_LIMITED); - RNA_def_property_ui_text(prop, "Y Scaling", "Stretch the Y axis of the bones to fit the curve."); + RNA_def_property_ui_text(prop, "Y Stretch", "Stretch the Y axis of the bones to fit the curve."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); + + prop= RNA_def_property(srna, "use_curve_radius", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_NO_CURVERAD); + RNA_def_property_ui_text(prop, "Use Curve Radius", "Average radius of the endpoints is used to tweak the X and Z Scaling of the bones, on top of XZ Scale mode."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "xz_scaling_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "xzScaleMode"); RNA_def_property_enum_items(prop, splineik_xz_scale_mode); - RNA_def_property_ui_text(prop, "XZ Scale Mode", "Method used for determining the scaling of the X and Z axes of the bone."); + RNA_def_property_ui_text(prop, "XZ Scale Mode", "Method used for determining the scaling of the X and Z axes of the bones."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); } diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 4c7a88d304b..179bc8bcd7d 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -212,7 +212,7 @@ static void rna_Nurb_type_set(PointerRNA *ptr, int value) static void rna_BPoint_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) { Nurb *nu= (Nurb*)ptr->data; - rna_iterator_array_begin(iter, (void*)nu->bp, sizeof(BPoint*), nu->pntsv>0 ? nu->pntsu*nu->pntsv : nu->pntsu, 0, NULL); + rna_iterator_array_begin(iter, (void*)nu->bp, sizeof(BPoint), nu->pntsv>0 ? nu->pntsu*nu->pntsv : nu->pntsu, 0, NULL); } static void rna_Curve_update_data(bContext *C, PointerRNA *ptr) @@ -298,9 +298,9 @@ static void rna_def_bpoint(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; - srna= RNA_def_struct(brna, "CurvePoint", NULL); + srna= RNA_def_struct(brna, "SplinePoint", NULL); RNA_def_struct_sdna(srna, "BPoint"); - RNA_def_struct_ui_text(srna, "CurvePoint", "Curve point without handles."); + RNA_def_struct_ui_text(srna, "SplinePoint", "Spline point without handles."); /* Boolean values */ prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); @@ -314,12 +314,17 @@ static void rna_def_bpoint(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_Curve_update_data"); /* Vector value */ - prop= RNA_def_property(srna, "point", PROP_FLOAT, PROP_TRANSLATION); - RNA_def_property_array(prop, 4); + prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_array(prop, 3); RNA_def_property_float_sdna(prop, NULL, "vec"); RNA_def_property_ui_text(prop, "Point", "Point coordinates"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "vec[3]"); + RNA_def_property_ui_text(prop, "Weight", "Nurbs weight"); + RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + /* Number values */ prop= RNA_def_property(srna, "tilt", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "alfa"); @@ -327,7 +332,8 @@ static void rna_def_bpoint(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Tilt", "Tilt in 3d View"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "weight_softbody", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "weight"); RNA_def_property_range(prop, 0.01f, 100.0f); RNA_def_property_ui_text(prop, "Weight", "Softbody goal weight"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); @@ -345,7 +351,7 @@ static void rna_def_beztriple(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; - srna= RNA_def_struct(brna, "BezierCurvePoint", NULL); + srna= RNA_def_struct(brna, "BezierSplinePoint", NULL); RNA_def_struct_sdna(srna, "BezTriple"); RNA_def_struct_ui_text(srna, "Bezier Curve Point", "Bezier curve point with two handles."); @@ -402,7 +408,7 @@ static void rna_def_beztriple(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Handle 1", "Coordinates of the first handle"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "control_point", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_array(prop, 3); RNA_def_property_float_funcs(prop, "rna_BezTriple_ctrlpoint_get", "rna_BezTriple_ctrlpoint_set", NULL); RNA_def_property_ui_text(prop, "Control Point", "Coordinates of the control point"); @@ -888,12 +894,12 @@ static void rna_def_curve_nurb(BlenderRNA *brna) prop= RNA_def_property(srna, "points", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "bp", NULL); - RNA_def_property_struct_type(prop, "CurvePoint"); + RNA_def_property_struct_type(prop, "SplinePoint"); RNA_def_property_collection_funcs(prop, "rna_BPoint_array_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_Nurb_length", 0, 0); RNA_def_property_ui_text(prop, "Points", "Collection of points that make up this poly or nurbs spline."); prop= RNA_def_property(srna, "bezier_points", PROP_COLLECTION, PROP_NONE); - RNA_def_property_struct_type(prop, "BezierCurvePoint"); + RNA_def_property_struct_type(prop, "BezierSplinePoint"); RNA_def_property_collection_sdna(prop, NULL, "bezt", "pntsu"); RNA_def_property_ui_text(prop, "Bezier Points", "Collection of points for bezier curves only."); diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c index 891911d5765..9bf5afdac48 100644 --- a/source/blender/makesrna/intern/rna_define.c +++ b/source/blender/makesrna/intern/rna_define.c @@ -1732,6 +1732,16 @@ void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable) if(editable) prop->editable= (EditableFunc)editable; } +void RNA_def_property_editable_array_func(PropertyRNA *prop, const char *editable) +{ + if(!DefRNA.preprocess) { + fprintf(stderr, "RNA_def_property_editable_array_func: only during preprocessing.\n"); + return; + } + + if(editable) prop->itemeditable= (ItemEditableFunc)editable; +} + void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func) { if(!DefRNA.preprocess) { diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index c83781a518a..88dfe358f98 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -34,6 +34,7 @@ #include "DNA_anim_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" +#include "DNA_sound_types.h" #include "MEM_guardedalloc.h" @@ -49,6 +50,7 @@ EnumPropertyItem fmodifier_type_items[] = { {FMODIFIER_TYPE_FILTER, "FILTER", 0, "Filter", ""}, {FMODIFIER_TYPE_PYTHON, "PYTHON", 0, "Python", ""}, {FMODIFIER_TYPE_LIMITS, "LIMITS", 0, "Limits", ""}, + {FMODIFIER_TYPE_SOUND, "SOUND", 0, "Sound", ""}, {0, NULL, 0, NULL, NULL}}; #ifdef RNA_RUNTIME @@ -76,6 +78,8 @@ static StructRNA *rna_FModifierType_refine(struct PointerRNA *ptr) return &RNA_FModifierPython; case FMODIFIER_TYPE_LIMITS: return &RNA_FModifierLimits; + case FMODIFIER_TYPE_SOUND: + return &RNA_FModifierSound; default: return &RNA_UnknownType; } @@ -85,16 +89,39 @@ static StructRNA *rna_FModifierType_refine(struct PointerRNA *ptr) #include "BKE_fcurve.h" #include "BKE_depsgraph.h" +#include "BKE_animsys.h" static void rna_ChannelDriver_update_data(bContext *C, PointerRNA *ptr) { ID *id= ptr->id.data; + ChannelDriver *driver= ptr->data; + + driver->flag &= ~DRIVER_FLAG_INVALID; // TODO: this really needs an update guard... DAG_scene_sort(CTX_data_scene(C)); - DAG_id_flush_update(id, OB_RECALC_DATA); + DAG_id_flush_update(id, OB_RECALC_OB|OB_RECALC_DATA); - WM_event_add_notifier(C, NC_SCENE, id); + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C)); +} + +static void rna_DriverTarget_update_data(bContext *C, PointerRNA *ptr) +{ + PointerRNA driverptr; + ChannelDriver *driver; + FCurve *fcu; + AnimData *adt= BKE_animdata_from_id(ptr->id.data); + + /* find the driver this belongs to and update it */ + for(fcu=adt->drivers.first; fcu; fcu=fcu->next) { + driver= fcu->driver; + + if(driver && BLI_findindex(&driver->targets, ptr->data) != -1) { + RNA_pointer_create(ptr->id.data, &RNA_Driver, driver, &driverptr); + rna_ChannelDriver_update_data(C, &driverptr); + return; + } + } } /* ----------- */ @@ -225,6 +252,57 @@ static int rna_FCurve_modifiers_remove(FCurve *fcu, bContext *C, int index) return remove_fmodifier_index(&fcu->modifiers, index); } +static void rna_FModifier_active_set(PointerRNA *ptr, int value) +{ + FModifier *fm= (FModifier*)ptr->data; + + /* don't toggle, always switch on */ + fm->flag |= FMODIFIER_FLAG_ACTIVE; +} + +static void rna_FModifier_active_update(bContext *C, PointerRNA *ptr) +{ + FModifier *fm, *fmo= (FModifier*)ptr->data; + + /* clear active state of other FModifiers in this list */ + for (fm=fmo->prev; fm; fm=fm->prev) + { + fm->flag &= ~FMODIFIER_FLAG_ACTIVE; + } + for (fm=fmo->next; fm; fm=fm->next) + { + fm->flag &= ~FMODIFIER_FLAG_ACTIVE; + } + +} + +static int rna_FModifierGenerator_coefficients_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION]) +{ + FModifier *fcm= (FModifier*)ptr->data; + FMod_Generator *gen= fcm->data; + + if(gen) + length[0]= gen->arraysize; + else + length[0]= 100; /* for raw_access, untested */ + + return length[0]; +} + +static void rna_FModifierGenerator_coefficients_get(PointerRNA *ptr, float *values) +{ + FModifier *fcm= (FModifier*)ptr->data; + FMod_Generator *gen= fcm->data; + memcpy(values, gen->coefficients, gen->arraysize * sizeof(float)); +} + +static void rna_FModifierGenerator_coefficients_set(PointerRNA *ptr, const float *values) +{ + FModifier *fcm= (FModifier*)ptr->data; + FMod_Generator *gen= fcm->data; + memcpy(gen->coefficients, values, gen->arraysize * sizeof(float)); +} + #else static void rna_def_fmodifier_generator(BlenderRNA *brna) @@ -261,10 +339,12 @@ static void rna_def_fmodifier_generator(BlenderRNA *brna) RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); /* coefficients array */ - // FIXME: this is quite difficult to try to wrap - //prop= RNA_def_property(srna, "coefficients", PROP_COLLECTION, PROP_NONE); - //RNA_def_property_collection_funcs(prop, "rna_FModifierGenerator_coefficients_begin", "rna_FModifierGenerator_coefficients_next", "rna_FModifierGenerator_coefficients_end", "rna_iterator_array_get", "rna_FModifierGenerator_coefficients_length", 0, 0, 0, 0); - //RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0)."); + prop= RNA_def_property(srna, "coefficients", PROP_FLOAT, PROP_NONE); + RNA_def_property_array(prop, 32); + RNA_def_property_flag(prop, PROP_DYNAMIC); + RNA_def_property_dynamic_array_funcs(prop, "rna_FModifierGenerator_coefficients_get_length"); + RNA_def_property_float_funcs(prop, "rna_FModifierGenerator_coefficients_get", "rna_FModifierGenerator_coefficients_set", NULL); + RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0)."); } /* --------- */ @@ -535,6 +615,46 @@ static void rna_def_fmodifier_noise(BlenderRNA *brna) /* --------- */ +static void rna_def_fmodifier_sound(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + static EnumPropertyItem prop_modification_items[] = { + {FCM_SOUND_MODIF_REPLACE, "REPLACE", 0, "Replace", ""}, + {FCM_SOUND_MODIF_ADD, "ADD", 0, "Add", ""}, + {FCM_SOUND_MODIF_SUBTRACT, "SUBTRACT", 0, "Subtract", ""}, + {FCM_SOUND_MODIF_MULTIPLY, "MULTIPLY", 0, "Multiply", ""}, + {0, NULL, 0, NULL, NULL}}; + + srna= RNA_def_struct(brna, "FModifierSound", "FModifier"); + RNA_def_struct_ui_text(srna, "Sound F-Modifier", "Modifies an F-Curve based on the amplitudes in a sound."); + RNA_def_struct_sdna_from(srna, "FMod_Sound", "data"); + + prop= RNA_def_property(srna, "modification", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, prop_modification_items); + RNA_def_property_ui_text(prop, "Modification", "Method of modifying the existing F-Curve."); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + + prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "strength"); + RNA_def_property_ui_text(prop, "Strength", "Amplitude of the sound - the amount that it modifies the underlying curve"); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + + prop= RNA_def_property(srna, "delay", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "delay"); + RNA_def_property_ui_text(prop, "delay", "The delay before the sound curve modification should start"); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + + prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "Sound"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this modifier."); + +} + +/* --------- */ + static void rna_def_fmodifier(BlenderRNA *brna) { StructRNA *srna; @@ -562,12 +682,13 @@ static void rna_def_fmodifier(BlenderRNA *brna) prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_EXPANDED); RNA_def_property_ui_text(prop, "Expanded", "F-Curve Modifier's panel is expanded in UI."); + RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_MUTED); RNA_def_property_ui_text(prop, "Muted", "F-Curve Modifier will not be evaluated."); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL); + RNA_def_property_ui_icon(prop, ICON_MUTE_IPO_OFF, 1); // XXX this is really an internal flag, but it may be useful for some tools to be able to access this... prop= RNA_def_property(srna, "disabled", PROP_BOOLEAN, PROP_NONE); @@ -580,7 +701,9 @@ static void rna_def_fmodifier(BlenderRNA *brna) prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_ACTIVE); RNA_def_property_ui_text(prop, "Active", "F-Curve Modifier is the one being edited "); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL); + RNA_def_property_boolean_funcs(prop, NULL, "rna_FModifier_active_set"); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, "rna_FModifier_active_update"); + RNA_def_property_ui_icon(prop, ICON_RADIOBUT_OFF, 1); } /* *********************** */ @@ -597,7 +720,7 @@ static void rna_def_drivertarget(BlenderRNA *brna) prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_struct_name_property(srna, prop); RNA_def_property_ui_text(prop, "Name", "Name to use in scripted expressions/functions. (No spaces or dots are allowed. Also, must not start with a symbol or digit)"); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); /* Target Properties - ID-block to Drive */ prop= RNA_def_property(srna, "id", PROP_POINTER, PROP_NONE); @@ -605,8 +728,8 @@ static void rna_def_drivertarget(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_editable_func(prop, "rna_DriverTarget_id_editable"); RNA_def_property_pointer_funcs(prop, NULL, NULL, "rna_DriverTarget_id_typef"); - RNA_def_property_ui_text(prop, "ID", "ID-block that the specific property used can be found from"); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_ui_text(prop, "ID", "ID-block that the specific property used can be found from (id_type property must be set first)"); + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); prop= RNA_def_property(srna, "id_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "idtype"); @@ -614,17 +737,17 @@ static void rna_def_drivertarget(BlenderRNA *brna) RNA_def_property_enum_default(prop, ID_OB); RNA_def_property_enum_funcs(prop, NULL, "rna_DriverTarget_id_type_set", NULL); RNA_def_property_ui_text(prop, "ID Type", "Type of ID-block that can be used."); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); /* Target Properties - Property to Drive */ prop= RNA_def_property(srna, "rna_path", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, "rna_DriverTarget_RnaPath_get", "rna_DriverTarget_RnaPath_length", "rna_DriverTarget_RnaPath_set"); RNA_def_property_ui_text(prop, "RNA Path", "RNA Path (from Object) to property used"); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); prop= RNA_def_property(srna, "array_index", PROP_INT, PROP_NONE); RNA_def_property_ui_text(prop, "RNA Array Index", "Index to the specific property used (if applicable)"); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); } @@ -683,7 +806,7 @@ static void rna_def_channeldriver(BlenderRNA *brna) /* String values */ prop= RNA_def_property(srna, "expression", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Expression", "Expression to use for Scripted Expression."); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); /* Collections */ prop= RNA_def_property(srna, "targets", PROP_COLLECTION, PROP_NONE); @@ -719,10 +842,9 @@ static void rna_def_fpoint(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Point", "Point coordinates"); } -/* channeldriver.targets.* */ static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop) { - /* add target */ + /* add modifiers */ StructRNA *srna; PropertyRNA *prop; @@ -732,7 +854,7 @@ static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_property_srna(cprop, "FCurveModifiers"); srna= RNA_def_struct(brna, "FCurveModifiers", NULL); RNA_def_struct_sdna(srna, "FCurve"); - RNA_def_struct_ui_text(srna, "FCurve Modifiers", "Collection of fcurve modifiers."); + RNA_def_struct_ui_text(srna, "F-Curve Modifiers", "Collection of F-Curve Modifiers."); /* Collection active property */ @@ -742,7 +864,6 @@ static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Active fcurve modifier", "Active fcurve modifier."); - /* Constraint collection */ func= RNA_def_function(srna, "new", "rna_FCurve_modifiers_new"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); @@ -820,7 +941,7 @@ static void rna_def_fcurve(BlenderRNA *brna) prop= RNA_def_property(srna, "keyframe_points", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "bezt", "totvert"); - RNA_def_property_struct_type(prop, "BezierCurvePoint"); + RNA_def_property_struct_type(prop, "BezierSplinePoint"); RNA_def_property_ui_text(prop, "Keyframes", "User-editable keyframes"); prop= RNA_def_property(srna, "modifiers", PROP_COLLECTION, PROP_NONE); @@ -850,6 +971,7 @@ void RNA_def_fcurve(BlenderRNA *brna) rna_def_fmodifier_python(brna); rna_def_fmodifier_limits(brna); rna_def_fmodifier_noise(brna); + rna_def_fmodifier_sound(brna); } diff --git a/source/blender/makesrna/intern/rna_internal_types.h b/source/blender/makesrna/intern/rna_internal_types.h index 46ed1fa055f..8a35f831c96 100644 --- a/source/blender/makesrna/intern/rna_internal_types.h +++ b/source/blender/makesrna/intern/rna_internal_types.h @@ -55,6 +55,7 @@ struct GHash; typedef void (*UpdateFunc)(struct bContext *C, struct PointerRNA *ptr); typedef int (*EditableFunc)(struct PointerRNA *ptr); +typedef int (*ItemEditableFunc)(struct PointerRNA *ptr, int index); typedef struct IDProperty* (*IDPropertiesFunc)(struct PointerRNA *ptr, int create); typedef struct StructRNA *(*StructRefineFunc)(struct PointerRNA *ptr); typedef char *(*StructPathFunc)(struct PointerRNA *ptr); @@ -152,8 +153,10 @@ struct PropertyRNA { UpdateFunc update; int noteflag; - /* callback for testing if editable/evaluated */ + /* callback for testing if editable */ EditableFunc editable; + /* callback for testing if array-item editable (if applicable) */ + ItemEditableFunc itemeditable; /* raw access */ int rawoffset; diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index a4fda162dc5..bacd7fc2b72 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -268,6 +268,15 @@ static int rna_CustomDataLayer_active_get(PointerRNA *ptr, int type, int render) else return (n == CustomData_get_active_layer_index(fdata, type)); } +static int rna_CustomDataLayer_clone_get(PointerRNA *ptr, int type, int render) +{ + Mesh *me= (Mesh*)ptr->id.data; + CustomData *fdata= rna_mesh_fdata(me); + int n= ((CustomDataLayer*)ptr->data) - fdata->layers; + + return (n == CustomData_get_clone_layer_index(fdata, type)); +} + static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type, int render) { Mesh *me= (Mesh*)ptr->id.data; @@ -281,6 +290,18 @@ static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type, else CustomData_set_layer_active_index(fdata, type, n); } +static void rna_CustomDataLayer_clone_set(PointerRNA *ptr, int value, int type, int render) +{ + Mesh *me= (Mesh*)ptr->id.data; + CustomData *fdata= rna_mesh_fdata(me); + int n= ((CustomDataLayer*)ptr->data) - fdata->layers; + + if(value == 0) + return; + + CustomData_set_layer_clone_index(fdata, type, n); +} + static int rna_uv_texture_check(CollectionPropertyIterator *iter, void *data) { CustomDataLayer *layer= (CustomDataLayer*)data; @@ -309,6 +330,16 @@ static PointerRNA rna_Mesh_active_uv_texture_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl); } +static PointerRNA rna_Mesh_clone_uv_texture_get(PointerRNA *ptr) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + int index= CustomData_get_clone_layer_index(fdata, CD_MTFACE); + CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index]; + + return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl); +} + static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value) { Mesh *me= (Mesh*)ptr->data; @@ -325,6 +356,22 @@ static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value) } } +static void rna_Mesh_clone_uv_texture_set(PointerRNA *ptr, PointerRNA value) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + CustomDataLayer *cdl; + int a; + + for(cdl=fdata->layers, a=0; a<fdata->totlayer; cdl++, a++) { + if(value.data == cdl) { + CustomData_set_layer_clone_index(fdata, CD_MTFACE, a); + mesh_update_customdata_pointers(me); + return; + } + } +} + static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr) { Mesh *me= (Mesh*)ptr->data; @@ -332,6 +379,13 @@ static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr) return CustomData_get_active_layer(fdata, CD_MTFACE); } +static int rna_Mesh_clone_uv_texture_index_get(PointerRNA *ptr) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + return CustomData_get_clone_layer(fdata, CD_MTFACE); +} + static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value) { Mesh *me= (Mesh*)ptr->data; @@ -341,6 +395,15 @@ static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value) mesh_update_customdata_pointers(me); } +static void rna_Mesh_clone_uv_texture_index_set(PointerRNA *ptr, int value) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + + CustomData_set_layer_clone(fdata, CD_MTFACE, value); + mesh_update_customdata_pointers(me); +} + static void rna_Mesh_active_uv_texture_index_range(PointerRNA *ptr, int *min, int *max) { Mesh *me= (Mesh*)ptr->data; @@ -480,6 +543,11 @@ static int rna_MeshTextureFaceLayer_active_get(PointerRNA *ptr) return rna_CustomDataLayer_active_get(ptr, CD_MTFACE, 0); } +static int rna_MeshTextureFaceLayer_clone_get(PointerRNA *ptr) +{ + return rna_CustomDataLayer_clone_get(ptr, CD_MTFACE, 0); +} + static void rna_MeshTextureFaceLayer_active_render_set(PointerRNA *ptr, int value) { rna_CustomDataLayer_active_set(ptr, value, CD_MTFACE, 1); @@ -490,6 +558,11 @@ static void rna_MeshTextureFaceLayer_active_set(PointerRNA *ptr, int value) rna_CustomDataLayer_active_set(ptr, value, CD_MTFACE, 0); } +static void rna_MeshTextureFaceLayer_clone_set(PointerRNA *ptr, int value) +{ + rna_CustomDataLayer_clone_set(ptr, value, CD_MTFACE, 0); +} + static void rna_MeshTextureFaceLayer_name_set(PointerRNA *ptr, const char *value) { Mesh *me= (Mesh*)ptr->id.data; @@ -1108,6 +1181,12 @@ static void rna_def_mtface(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Active Render", "Sets the layer as active for rendering"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + prop= RNA_def_property(srna, "active_clone", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "active_clone", 0); + RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_clone_get", "rna_MeshTextureFaceLayer_clone_set"); + RNA_def_property_ui_text(prop, "Active Clone", "Sets the layer as active for cloning"); + RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "MeshTextureFace"); RNA_def_property_ui_text(prop, "Data", ""); @@ -1492,6 +1571,18 @@ static void rna_def_mesh(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Active UV Texture Index", "Active UV texture index."); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + prop= RNA_def_property(srna, "clone_uv_texture", PROP_POINTER, PROP_UNSIGNED); + RNA_def_property_struct_type(prop, "MeshTextureFaceLayer"); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_clone_uv_texture_get", "rna_Mesh_clone_uv_texture_set", NULL); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Clone UV Texture", "UV texture to be used as cloning source."); + RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + + prop= RNA_def_property(srna, "clone_uv_texture_index", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_funcs(prop, "rna_Mesh_clone_uv_texture_index_get", "rna_Mesh_clone_uv_texture_index_set", "rna_Mesh_active_uv_texture_index_range"); + RNA_def_property_ui_text(prop, "Clone UV Texture Index", "Clone UV texture index."); + RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + /* Vertex colors */ prop= RNA_def_property(srna, "vertex_colors", PROP_COLLECTION, PROP_NONE); @@ -1636,7 +1727,8 @@ static void rna_def_mesh(BlenderRNA *brna) prop= RNA_def_property(srna, "use_paint_mask", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "editflag", ME_EDIT_PAINT_MASK); RNA_def_property_ui_text(prop, "Paint Mask", "Face selection masking for painting"); - + RNA_def_property_ui_icon(prop, ICON_FACESEL_HLT, 0); + RNA_def_property_update(prop, 0, "rna_Mesh_update_draw"); rna_def_texmat_common(srna, "rna_Mesh_texspace_editable"); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 5b619e702a0..a86d889d6cf 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -1397,6 +1397,10 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; + static EnumPropertyItem prop_mode_items[] = { + {0, "VOLUME", 0, "Volume", "Bind to volume inside cage mesh."}, + {1, "SURFACE", 0, "Surface", "Bind to surface of cage mesh."}, + {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "MeshDeformModifier", "Modifier"); RNA_def_struct_ui_text(srna, "MeshDeform Modifier", "Mesh deformation modifier to deform with other meshes."); @@ -1436,6 +1440,10 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Dynamic", "Recompute binding dynamically on top of other deformers (slower and more memory consuming.)"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); + prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, prop_mode_items); + RNA_def_property_ui_text(prop, "Mode", "Method of binding vertices are bound to cage mesh."); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); } static void rna_def_modifier_particlesystem(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index ad47a1c5535..9b5e0e0a659 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -577,6 +577,71 @@ static void rna_Object_dimensions_set(PointerRNA *ptr, const float *value) } } +static int rna_Object_location_editable(PointerRNA *ptr, int index) +{ + Object *ob= (Object *)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (ob->protectflag & OB_LOCK_LOCX)) + return 0; + else if ((index == 1) && (ob->protectflag & OB_LOCK_LOCY)) + return 0; + else if ((index == 2) && (ob->protectflag & OB_LOCK_LOCZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_Object_scale_editable(PointerRNA *ptr, int index) +{ + Object *ob= (Object *)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (ob->protectflag & OB_LOCK_SCALEX)) + return 0; + else if ((index == 1) && (ob->protectflag & OB_LOCK_SCALEY)) + return 0; + else if ((index == 2) && (ob->protectflag & OB_LOCK_SCALEZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_Object_rotation_euler_editable(PointerRNA *ptr, int index) +{ + Object *ob= (Object *)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (ob->protectflag & OB_LOCK_ROTX)) + return 0; + else if ((index == 1) && (ob->protectflag & OB_LOCK_ROTY)) + return 0; + else if ((index == 2) && (ob->protectflag & OB_LOCK_ROTZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_Object_rotation_4d_editable(PointerRNA *ptr, int index) +{ + Object *ob= (Object *)ptr->data; + + /* only consider locks if locking components individually... */ + if (ob->protectflag & OB_LOCK_ROT4D) { + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (ob->protectflag & OB_LOCK_ROTW)) + return 0; + else if ((index == 1) && (ob->protectflag & OB_LOCK_ROTX)) + return 0; + else if ((index == 2) && (ob->protectflag & OB_LOCK_ROTY)) + return 0; + else if ((index == 3) && (ob->protectflag & OB_LOCK_ROTZ)) + return 0; + } + + return PROP_EDITABLE; +} + static PointerRNA rna_MaterialSlot_material_get(PointerRNA *ptr) { @@ -875,13 +940,13 @@ static void rna_Object_active_constraint_set(PointerRNA *ptr, PointerRNA value) constraints_set_active(&ob->constraints, (bConstraint *)value.data); } -static bConstraint *rna_Object_constraints_new(Object *object, bContext *C, int type) +static bConstraint *rna_Object_constraint_new(Object *object, bContext *C, int type) { WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object); return add_ob_constraint(object, NULL, type); } -static int rna_Object_constraints_remove(Object *object, bContext *C, int index) +static int rna_Object_constraint_remove(Object *object, bContext *C, int index) { int ok = remove_constraint_index(&object->constraints, index); if(ok) { @@ -892,6 +957,16 @@ static int rna_Object_constraints_remove(Object *object, bContext *C, int index) return ok; } +static ModifierData *rna_Object_modifier_new(Object *object, bContext *C, ReportList *reports, char *name, int type) +{ + return ED_object_modifier_add(reports, CTX_data_scene(C), object, name, type); +} + +static void rna_Object_modifier_remove(Object *object, bContext *C, ReportList *reports, ModifierData *md) +{ + ED_object_modifier_remove(reports, CTX_data_scene(C), object, md); +} + #else static void rna_def_vertex_group(BlenderRNA *brna) @@ -1183,7 +1258,7 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop) /* Constraint collection */ - func= RNA_def_function(srna, "new", "rna_Object_constraints_new"); + func= RNA_def_function(srna, "new", "rna_Object_constraint_new"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); RNA_def_function_ui_description(func, "Add a new constraint to this object"); /* return type */ @@ -1193,7 +1268,7 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop) parm= RNA_def_enum(func, "type", constraint_type_items, 1, "", "Constraint type to add."); RNA_def_property_flag(parm, PROP_REQUIRED); - func= RNA_def_function(srna, "remove", "rna_Object_constraints_remove"); + func= RNA_def_function(srna, "remove", "rna_Object_constraint_remove"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); RNA_def_function_ui_description(func, "Remove a constraint from this object."); /* return type */ @@ -1204,6 +1279,54 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_property_flag(parm, PROP_REQUIRED); } +/* armature.bones.* */ +static void rna_def_object_modifiers(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "ObjectModifiers"); + srna= RNA_def_struct(brna, "ObjectModifiers", NULL); + RNA_def_struct_sdna(srna, "Object"); + RNA_def_struct_ui_text(srna, "Object Modifiers", "Collection of object modifiers."); + +#if 0 + prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "EditBone"); + RNA_def_property_pointer_sdna(prop, NULL, "act_edbone"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Active EditBone", "Armatures active edit bone."); + //RNA_def_property_update(prop, 0, "rna_Armature_act_editbone_update"); + RNA_def_property_pointer_funcs(prop, NULL, "rna_Armature_act_edit_bone_set", NULL); + + /* todo, redraw */ +// RNA_def_property_collection_active(prop, prop_act); +#endif + + /* add target */ + func= RNA_def_function(srna, "new", "rna_Object_modifier_new"); + RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Add a new bone."); + parm= RNA_def_string(func, "name", "Name", 0, "", "New name for the bone."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* modifier to add */ + parm= RNA_def_enum(func, "type", modifier_type_items, 1, "", "Modifier type to add."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "modifier", "Modifier", "", "Newly created modifier."); + RNA_def_function_return(func, parm); + + /* remove target */ + func= RNA_def_function(srna, "remove", "rna_Object_modifier_remove"); + RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Remove an existing modifier from the object."); + /* target to remove*/ + parm= RNA_def_pointer(func, "modifier", "Modifier", "", "Modifier to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); +} + static void rna_def_object(BlenderRNA *brna) { StructRNA *srna; @@ -1252,7 +1375,7 @@ static void rna_def_object(BlenderRNA *brna) {OB_BOUNDBOX, "BOUNDS", 0, "Bounds", ""}, {OB_WIRE, "WIRE", 0, "Wire", ""}, {OB_SOLID, "SOLID", 0, "Solid", ""}, - {OB_SHADED, "SHADED", 0, "Shaded", ""}, + // disabled {OB_SHADED, "SHADED", 0, "Shaded", ""}, {OB_TEXTURE, "TEXTURED", 0, "Textured", ""}, {0, NULL, 0, NULL, NULL}}; @@ -1397,11 +1520,13 @@ static void rna_def_object(BlenderRNA *brna) /* transform */ prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "loc"); + RNA_def_property_editable_array_func(prop, "rna_Object_location_editable"); RNA_def_property_ui_text(prop, "Location", "Location of the object."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); prop= RNA_def_property(srna, "rotation_quaternion", PROP_FLOAT, PROP_QUATERNION); RNA_def_property_float_sdna(prop, NULL, "quat"); + RNA_def_property_editable_array_func(prop, "rna_Object_rotation_4d_editable"); RNA_def_property_ui_text(prop, "Quaternion Rotation", "Rotation in Quaternions."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); @@ -1411,11 +1536,13 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "rotation_axis_angle", PROP_FLOAT, PROP_AXISANGLE); RNA_def_property_array(prop, 4); // TODO: maybe we'll need to define the 'default value' getter too... RNA_def_property_float_funcs(prop, "rna_Object_rotation_axis_angle_get", "rna_Object_rotation_axis_angle_set", NULL); + RNA_def_property_editable_array_func(prop, "rna_Object_rotation_4d_editable"); RNA_def_property_ui_text(prop, "Axis-Angle Rotation", "Angle of Rotation for Axis-Angle rotation representation."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); prop= RNA_def_property(srna, "rotation_euler", PROP_FLOAT, PROP_EULER); RNA_def_property_float_sdna(prop, NULL, "rot"); + RNA_def_property_editable_array_func(prop, "rna_Object_rotation_euler_editable"); RNA_def_property_ui_text(prop, "Euler Rotation", "Rotation in Eulers."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); @@ -1428,6 +1555,7 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "size"); + RNA_def_property_editable_array_func(prop, "rna_Object_scale_editable"); RNA_def_property_ui_text(prop, "Scale", "Scaling of the object."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); @@ -1511,6 +1639,7 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "modifiers", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "Modifier"); RNA_def_property_ui_text(prop, "Modifiers", "Modifiers affecting the geometric data of the Object."); + rna_def_object_modifiers(brna, prop); /* game engine */ prop= RNA_def_property(srna, "game", PROP_POINTER, PROP_NONE); @@ -1800,6 +1929,7 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "active_shape_key_index", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "shapenr"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); // XXX this is really unpredictable... 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"); RNA_def_property_ui_text(prop, "Active Shape Key Index", "Current shape key index."); RNA_def_property_update(prop, 0, "rna_Object_active_shape_update"); diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 9e764419f19..c601622fcc3 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -485,7 +485,7 @@ static void rna_FieldSettings_shape_update(bContext *C, PointerRNA *ptr) if(!md) { if(pd && (pd->shape == PFIELD_SHAPE_SURFACE) && ELEM(pd->forcefield,PFIELD_GUIDE,PFIELD_TEXTURE)==0) if(ELEM4(ob->type, OB_MESH, OB_SURF, OB_FONT, OB_CURVE)) - ED_object_modifier_add(NULL, scene, ob, eModifierType_Surface); + ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Surface); } else { if(!pd || pd->shape != PFIELD_SHAPE_SURFACE) @@ -620,7 +620,7 @@ static void rna_CollisionSettings_dependency_update(bContext *C, PointerRNA *ptr /* add/remove modifier as needed */ if(ob->pd->deflect && !md) - ED_object_modifier_add(NULL, scene, ob, eModifierType_Collision); + ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Collision); else if(!ob->pd->deflect && md) ED_object_modifier_remove(NULL, scene, ob, md); @@ -984,18 +984,18 @@ static void rna_def_field(BlenderRNA *brna) static EnumPropertyItem field_type_items[] = { {0, "NONE", 0, "None", ""}, - {PFIELD_FORCE, "FORCE", 0, "Force", ""}, - {PFIELD_WIND, "WIND", 0, "Wind", ""}, - {PFIELD_VORTEX, "VORTEX", 0, "Vortex", ""}, - {PFIELD_MAGNET, "MAGNET", 0, "Magnetic", ""}, - {PFIELD_HARMONIC, "HARMONIC", 0, "Harmonic", ""}, - {PFIELD_CHARGE, "CHARGE", 0, "Charge", ""}, - {PFIELD_LENNARDJ, "LENNARDJ", 0, "Lennard-Jones", ""}, - {PFIELD_TEXTURE, "TEXTURE", 0, "Texture", ""}, - {PFIELD_GUIDE, "GUIDE", 0, "Curve Guide", ""}, - {PFIELD_BOID, "BOID", 0, "Boid", ""}, - {PFIELD_TURBULENCE, "TURBULENCE", 0, "Turbulence", ""}, - {PFIELD_DRAG, "DRAG", 0, "Drag", ""}, + {PFIELD_FORCE, "FORCE", ICON_FORCE_FORCE, "Force", ""}, + {PFIELD_WIND, "WIND", ICON_FORCE_WIND, "Wind", ""}, + {PFIELD_VORTEX, "VORTEX", ICON_FORCE_VORTEX, "Vortex", ""}, + {PFIELD_MAGNET, "MAGNET", ICON_FORCE_MAGNETIC, "Magnetic", ""}, + {PFIELD_HARMONIC, "HARMONIC", ICON_FORCE_HARMONIC, "Harmonic", ""}, + {PFIELD_CHARGE, "CHARGE", ICON_FORCE_CHARGE, "Charge", ""}, + {PFIELD_LENNARDJ, "LENNARDJ", ICON_FORCE_LENNARDJONES, "Lennard-Jones", ""}, + {PFIELD_TEXTURE, "TEXTURE", ICON_FORCE_TEXTURE, "Texture", ""}, + {PFIELD_GUIDE, "GUIDE", ICON_FORCE_CURVE, "Curve Guide", ""}, + {PFIELD_BOID, "BOID", ICON_FORCE_BOID, "Boid", ""}, + {PFIELD_TURBULENCE, "TURBULENCE", ICON_FORCE_TURBULENCE, "Turbulence", ""}, + {PFIELD_DRAG, "DRAG", ICON_FORCE_DRAG, "Drag", ""}, {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem falloff_items[] = { diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index f458ee86091..6ddec53c28d 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -917,6 +917,7 @@ static void rna_def_particle_settings(BlenderRNA *brna) static EnumPropertyItem integrator_type_items[] = { {PART_INT_EULER, "EULER", 0, "Euler", ""}, + {PART_INT_VERLET, "VERLET", 0, "Verlet", ""}, {PART_INT_MIDPOINT, "MIDPOINT", 0, "Midpoint", ""}, {PART_INT_RK4, "RK4", 0, "RK4", ""}, {0, NULL, 0, NULL, NULL} diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index 1d4909a618f..8a4aadcba57 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -120,7 +120,7 @@ static IDProperty *rna_PoseBone_idproperties(PointerRNA *ptr, int create) if(create && !pchan->prop) { IDPropertyTemplate val = {0}; - pchan->prop= IDP_New(IDP_GROUP, val, "RNA_PoseChannel group"); + pchan->prop= IDP_New(IDP_GROUP, val, "RNA_PoseBone group"); } return pchan->prop; @@ -445,6 +445,71 @@ static int rna_PoseChannel_constraints_remove(bPoseChannel *pchan, bContext *C, return remove_constraint_index(&pchan->constraints, index); } +static int rna_PoseChannel_location_editable(PointerRNA *ptr, int index) +{ + bPoseChannel *pchan= (bPoseChannel*)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (pchan->protectflag & OB_LOCK_LOCX)) + return 0; + else if ((index == 1) && (pchan->protectflag & OB_LOCK_LOCY)) + return 0; + else if ((index == 2) && (pchan->protectflag & OB_LOCK_LOCZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_PoseChannel_scale_editable(PointerRNA *ptr, int index) +{ + bPoseChannel *pchan= (bPoseChannel*)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (pchan->protectflag & OB_LOCK_SCALEX)) + return 0; + else if ((index == 1) && (pchan->protectflag & OB_LOCK_SCALEY)) + return 0; + else if ((index == 2) && (pchan->protectflag & OB_LOCK_SCALEZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_PoseChannel_rotation_euler_editable(PointerRNA *ptr, int index) +{ + bPoseChannel *pchan= (bPoseChannel*)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (pchan->protectflag & OB_LOCK_ROTX)) + return 0; + else if ((index == 1) && (pchan->protectflag & OB_LOCK_ROTY)) + return 0; + else if ((index == 2) && (pchan->protectflag & OB_LOCK_ROTZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_PoseChannel_rotation_4d_editable(PointerRNA *ptr, int index) +{ + bPoseChannel *pchan= (bPoseChannel*)ptr->data; + + /* only consider locks if locking components individually... */ + if (pchan->protectflag & OB_LOCK_ROT4D) { + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (pchan->protectflag & OB_LOCK_ROTW)) + return 0; + else if ((index == 1) && (pchan->protectflag & OB_LOCK_ROTX)) + return 0; + else if ((index == 2) && (pchan->protectflag & OB_LOCK_ROTY)) + return 0; + else if ((index == 3) && (pchan->protectflag & OB_LOCK_ROTZ)) + return 0; + } + + return PROP_EDITABLE; +} + #else static void rna_def_bone_group(BlenderRNA *brna) @@ -526,10 +591,10 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro FunctionRNA *func; PropertyRNA *parm; - RNA_def_property_srna(cprop, "PoseChannelConstraints"); - srna= RNA_def_struct(brna, "PoseChannelConstraints", NULL); + RNA_def_property_srna(cprop, "PoseBoneConstraints"); + srna= RNA_def_struct(brna, "PoseBoneConstraints", NULL); RNA_def_struct_sdna(srna, "bPoseChannel"); - RNA_def_struct_ui_text(srna, "PoseChannel Constraints", "Collection of object constraints."); + RNA_def_struct_ui_text(srna, "PoseBone Constraints", "Collection of pose bone constraints."); /* Collection active property */ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE); @@ -546,7 +611,7 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro /* return type */ parm= RNA_def_pointer(func, "constraint", "Constraint", "", "New constraint."); RNA_def_function_return(func, parm); - /* object to add */ + /* constraint to add */ parm= RNA_def_enum(func, "type", constraint_type_items, 1, "", "Constraint type to add."); RNA_def_property_flag(parm, PROP_REQUIRED); @@ -634,16 +699,19 @@ static void rna_def_pose_channel(BlenderRNA *brna) /* Transformation settings */ prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "loc"); + RNA_def_property_editable_array_func(prop, "rna_PoseChannel_location_editable"); RNA_def_property_ui_text(prop, "Location", ""); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "size"); + RNA_def_property_editable_array_func(prop, "rna_PoseChannel_scale_editable"); RNA_def_property_ui_text(prop, "Scale", ""); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); prop= RNA_def_property(srna, "rotation_quaternion", PROP_FLOAT, PROP_QUATERNION); RNA_def_property_float_sdna(prop, NULL, "quat"); + RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_4d_editable"); RNA_def_property_ui_text(prop, "Quaternion Rotation", "Rotation in Quaternions."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); @@ -653,11 +721,13 @@ static void rna_def_pose_channel(BlenderRNA *brna) prop= RNA_def_property(srna, "rotation_axis_angle", PROP_FLOAT, PROP_AXISANGLE); RNA_def_property_array(prop, 4); // TODO: maybe we'll need to define the 'default value' getter too... RNA_def_property_float_funcs(prop, "rna_PoseChannel_rotation_axis_angle_get", "rna_PoseChannel_rotation_axis_angle_set", NULL); + RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_4d_editable"); RNA_def_property_ui_text(prop, "Axis-Angle Rotation", "Angle of Rotation for Axis-Angle rotation representation."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); prop= RNA_def_property(srna, "rotation_euler", PROP_FLOAT, PROP_EULER); RNA_def_property_float_sdna(prop, NULL, "eul"); + RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_euler_editable"); RNA_def_property_ui_text(prop, "Euler Rotation", "Rotation in Eulers."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); @@ -675,7 +745,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Channel Matrix", "4x4 matrix, before constraints."); - prop= RNA_def_property(srna, "pose_matrix", PROP_FLOAT, PROP_MATRIX); + prop= RNA_def_property(srna, "matrix", PROP_FLOAT, PROP_MATRIX); RNA_def_property_float_sdna(prop, NULL, "pose_mat"); RNA_def_property_array(prop, 16); RNA_def_property_clear_flag(prop, PROP_EDITABLE); @@ -689,11 +759,13 @@ static void rna_def_pose_channel(BlenderRNA *brna) */ /* Head/Tail Coordinates (in Pose Space) - Automatically calculated... */ - prop= RNA_def_property(srna, "pose_head", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "head", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_float_sdna(prop, NULL, "pose_head"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Pose Head Position", "Location of head of the channel's bone."); - prop= RNA_def_property(srna, "pose_tail", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "tail", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_float_sdna(prop, NULL, "pose_tail"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Pose Tail Position", "Location of tail of the channel's bone."); diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c index 4218724d7df..f8adb1a79d8 100644 --- a/source/blender/makesrna/intern/rna_rna.c +++ b/source/blender/makesrna/intern/rna_rna.c @@ -428,7 +428,12 @@ static int rna_Property_unit_get(PointerRNA *ptr) static int rna_Property_editable_get(PointerRNA *ptr) { PropertyRNA *prop= (PropertyRNA*)ptr->data; - return RNA_property_editable(ptr, prop); + + /* dont use this becaure it will call functions that check the internal + * data for introspection we only need to know if it can be edited so the + * flag is better for this */ +// return RNA_property_editable(ptr, prop); + return prop->flag & PROP_EDITABLE ? 1:0; } static int rna_Property_use_return_get(PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 0aa669e20ec..7d5a74cbf68 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -48,7 +48,7 @@ #include "WM_types.h" -EnumPropertyItem snap_mode_items[] = { +EnumPropertyItem snap_target_items[] = { {SCE_SNAP_TARGET_CLOSEST, "CLOSEST", 0, "Closest", "Snap closest point onto target."}, {SCE_SNAP_TARGET_CENTER, "CENTER", 0, "Center", "Snap center onto target."}, {SCE_SNAP_TARGET_MEDIAN, "MEDIAN", 0, "Median", "Snap median onto target."}, @@ -56,20 +56,34 @@ EnumPropertyItem snap_mode_items[] = { {0, NULL, 0, NULL, NULL}}; EnumPropertyItem proportional_falloff_items[] ={ - {PROP_SMOOTH, "SMOOTH", 0, "Smooth", ""}, - {PROP_SPHERE, "SPHERE", 0, "Sphere", ""}, - {PROP_ROOT, "ROOT", 0, "Root", ""}, - {PROP_SHARP, "SHARP", 0, "Sharp", ""}, - {PROP_LIN, "LINEAR", 0, "Linear", ""}, - {PROP_CONST, "CONSTANT", 0, "Constant", ""}, - {PROP_RANDOM, "RANDOM", 0, "Random", ""}, + {PROP_SMOOTH, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""}, + {PROP_SPHERE, "SPHERE", ICON_SPHERECURVE, "Sphere", ""}, + {PROP_ROOT, "ROOT", ICON_ROOTCURVE, "Root", ""}, + {PROP_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", ""}, + {PROP_LIN, "LINEAR", ICON_LINCURVE, "Linear", ""}, + {PROP_CONST, "CONSTANT", ICON_NOCURVE, "Constant", ""}, + {PROP_RANDOM, "RANDOM", ICON_RNDCURVE, "Random", ""}, {0, NULL, 0, NULL, NULL}}; EnumPropertyItem proportional_editing_items[] = { - {PROP_EDIT_OFF, "DISABLED", 0, "Disable", ""}, - {PROP_EDIT_ON, "ENABLED", 0, "Enable", ""}, - {PROP_EDIT_CONNECTED, "CONNECTED", 0, "Connected", ""}, + {PROP_EDIT_OFF, "DISABLED", ICON_PROP_OFF, "Disable", ""}, + {PROP_EDIT_ON, "ENABLED", ICON_PROP_ON, "Enable", ""}, + {PROP_EDIT_CONNECTED, "CONNECTED", ICON_PROP_CON, "Connected", ""}, + {0, NULL, 0, NULL, NULL}}; + +EnumPropertyItem mesh_select_mode_items[] = { + {SCE_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."}, + {SCE_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."}, + {SCE_SELECT_FACE, "FACE", ICON_FACESEL, "Face", "Face selection mode."}, + {0, NULL, 0, NULL, NULL}}; + +EnumPropertyItem snap_element_items[] = { + {SCE_SNAP_MODE_INCREMENT, "INCREMENT", ICON_SNAP_INCREMENT, "Increment", "Snap to increments of grid."}, + {SCE_SNAP_MODE_VERTEX, "VERTEX", ICON_SNAP_VERTEX, "Vertex", "Snap to vertices."}, + {SCE_SNAP_MODE_EDGE, "EDGE", ICON_SNAP_EDGE, "Edge", "Snap to edges."}, + {SCE_SNAP_MODE_FACE, "FACE", ICON_SNAP_FACE, "Face", "Snap to faces."}, + {SCE_SNAP_MODE_VOLUME, "VOLUME", ICON_SNAP_VOLUME, "Volume", "Snap to volume."}, {0, NULL, 0, NULL, NULL}}; #ifdef RNA_RUNTIME @@ -561,19 +575,6 @@ static void rna_def_tool_settings(BlenderRNA *brna) {UV_SELECT_ISLAND, "ISLAND", ICON_UV_ISLANDSEL, "Island", "Island selection mode."}, {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem mesh_select_mode_items[] = { - {SCE_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."}, - {SCE_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."}, - {SCE_SELECT_FACE, "FACE", ICON_FACESEL, "Face", "Face selection mode."}, - {0, NULL, 0, NULL, NULL}}; - - static EnumPropertyItem snap_element_items[] = { - {SCE_SNAP_MODE_VERTEX, "VERTEX", ICON_SNAP_VERTEX, "Vertex", "Snap to vertices."}, - {SCE_SNAP_MODE_EDGE, "EDGE", ICON_SNAP_EDGE, "Edge", "Snap to edges."}, - {SCE_SNAP_MODE_FACE, "FACE", ICON_SNAP_FACE, "Face", "Snap to faces."}, - {SCE_SNAP_MODE_VOLUME, "VOLUME", ICON_SNAP_VOLUME, "Volume", "Snap to volume."}, - {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem auto_key_items[] = { {AUTOKEY_MODE_NORMAL, "ADD_REPLACE_KEYS", 0, "Add & Replace", ""}, {AUTOKEY_MODE_EDITKEYS, "REPLACE_KEYS", 0, "Replace", ""}, @@ -647,8 +648,8 @@ static void rna_def_tool_settings(BlenderRNA *brna) 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."); - RNA_def_property_ui_icon(prop, ICON_SNAP_GEAR, 1); + RNA_def_property_ui_text(prop, "Snap", "Snap during transform."); + RNA_def_property_ui_icon(prop, ICON_SNAP_OFF, 1); RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ prop= RNA_def_property(srna, "snap_align_rotation", PROP_BOOLEAN, PROP_NONE); @@ -663,10 +664,10 @@ static void rna_def_tool_settings(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Snap Element", "Type of element to snap to."); RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ - prop= RNA_def_property(srna, "snap_mode", PROP_ENUM, PROP_NONE); + prop= RNA_def_property(srna, "snap_target", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "snap_target"); - RNA_def_property_enum_items(prop, snap_mode_items); - RNA_def_property_ui_text(prop, "Snap Mode", "Which part to snap onto the target."); + RNA_def_property_enum_items(prop, snap_target_items); + RNA_def_property_ui_text(prop, "Snap Target", "Which part to snap onto the target."); RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ prop= RNA_def_property(srna, "snap_peel_object", PROP_BOOLEAN, PROP_NONE); @@ -1625,7 +1626,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) /* JPEG and AVI JPEG */ - prop= RNA_def_property(srna, "quality", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "quality", PROP_INT, PROP_PERCENTAGE); RNA_def_property_int_sdna(prop, NULL, "quality"); RNA_def_property_range(prop, 1, 100); RNA_def_property_ui_text(prop, "Quality", "Quality of JPEG images, AVI Jpeg and SGI movies."); @@ -1720,7 +1721,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Codec", "QuickTime codec type"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); - prop= RNA_def_property(srna, "quicktime_codec_spatial_quality", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "quicktime_codec_spatial_quality", PROP_INT, PROP_PERCENTAGE); RNA_def_property_int_sdna(prop, NULL, "qtcodecsettings.codecSpatialQuality"); RNA_def_property_range(prop, 0, 100); RNA_def_property_ui_text(prop, "Spatial quality", "Intra-frame spatial quality level"); @@ -2340,7 +2341,6 @@ void RNA_def_scene(BlenderRNA *brna) prop= RNA_def_property(srna, "set", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "set"); RNA_def_property_struct_type(prop, "Scene"); - //RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_pointer_funcs(prop, NULL, "rna_Scene_set_set", NULL); RNA_def_property_ui_text(prop, "Set Scene", "Background set scene."); @@ -2525,7 +2525,7 @@ void RNA_def_scene(BlenderRNA *brna) prop= RNA_def_property(srna, "sync_audio", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "audio.flag", AUDIO_SYNC); - RNA_def_property_ui_text(prop, "Audio Sync", "Play back and sync with audio from Sequence Editor."); + RNA_def_property_ui_text(prop, "Audio Sync", "Play back and sync with audio from Sequence Editor for realtime playback."); RNA_def_property_update(prop, NC_SCENE, NULL); prop= RNA_def_property(srna, "scrub_audio", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c index 6b21f886712..89e9c2ee5ca 100644 --- a/source/blender/makesrna/intern/rna_scene_api.c +++ b/source/blender/makesrna/intern/rna_scene_api.c @@ -44,16 +44,17 @@ #include "BKE_depsgraph.h" #include "ED_object.h" +#include "ED_anim_api.h" #include "WM_api.h" -static void rna_Scene_set_frame(Scene *sce, bContext *C, int frame) +static void rna_Scene_set_frame(Scene *scene, bContext *C, int frame) { - sce->r.cfra= frame; - CLAMP(sce->r.cfra, MINAFRAME, MAXFRAME); - scene_update_for_newframe(sce, (1<<20) - 1); + scene->r.cfra= frame; + CLAMP(scene->r.cfra, MINAFRAME, MAXFRAME); + scene_update_for_newframe(scene, (1<<20) - 1); - WM_event_add_notifier(C, NC_SCENE|ND_FRAME, sce); + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); } static KeyingSet *rna_Scene_add_keying_set(Scene *sce, ReportList *reports, diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index db100c38257..6cfd38ba26e 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -341,9 +341,9 @@ static void rna_def_particle_edit(BlenderRNA *brna) PropertyRNA *prop; static EnumPropertyItem select_mode_items[] = { - {SCE_SELECT_PATH, "PATH", ICON_EDGESEL, "Path", ""}, // XXX icon - {SCE_SELECT_POINT, "POINT", ICON_VERTEXSEL, "Point", ""}, // XXX icon - {SCE_SELECT_END, "END", ICON_FACESEL, "End", "E"}, // XXX icon + {SCE_SELECT_PATH, "PATH", ICON_PARTICLE_PATH, "Path", "Path edit mode"}, + {SCE_SELECT_POINT, "POINT", ICON_PARTICLE_POINT, "Point", "Point select mode"}, + {SCE_SELECT_END, "TIP", ICON_PARTICLE_TIP, "Tip", "Tip select mode"}, {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem puff_mode[] = { @@ -380,7 +380,7 @@ static void rna_def_particle_edit(BlenderRNA *brna) RNA_def_property_enum_bitflag_sdna(prop, NULL, "selectmode"); RNA_def_property_enum_items(prop, select_mode_items); RNA_def_property_ui_text(prop, "Selection Mode", "Particle select and display mode."); - RNA_def_property_update(prop, NC_OBJECT, "rna_ParticleEdit_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_ParticleEdit_update"); prop= RNA_def_property(srna, "keep_lengths", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_KEEP_LENGTHS); diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 4add39a391b..9f9298c66f6 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -532,15 +532,15 @@ static void rna_def_sequence(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Blend Opacity", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); - /* generic factors, should these be exposed some other way? */ - prop= RNA_def_property(srna, "factor_0", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "facf0"); - RNA_def_property_ui_text(prop, "Generic Factor 0", ""); + prop= RNA_def_property(srna, "effect_fader", PROP_FLOAT, PROP_NONE); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_float_sdna(prop, NULL, "effect_fader"); + RNA_def_property_ui_text(prop, "Effect fader position", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); - prop= RNA_def_property(srna, "factor_1", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "facf1"); - RNA_def_property_ui_text(prop, "Generic Factor 0", ""); + prop= RNA_def_property(srna, "speed_fader", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "speed_fader"); + RNA_def_property_ui_text(prop, "Speed effect fader position", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); /* functions */ @@ -743,7 +743,9 @@ static void rna_def_scene(BlenderRNA *brna) RNA_def_struct_sdna(srna, "Sequence"); prop= RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Scene", "Scene that this sequence uses."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); rna_def_filter_video(srna); rna_def_proxy(srna); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index ac93f75156f..ea695880526 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -202,6 +202,31 @@ EnumPropertyItem *rna_TransformOrientation_itemf(bContext *C, PointerRNA *ptr, i return item; } +/* Space 3D View */ +static void rna_Space3DView_lock_camera_and_layers_set(PointerRNA *ptr, int value) +{ + View3D *v3d= (View3D*)(ptr->data); + bScreen *sc= (bScreen*)ptr->id.data; + + v3d->scenelock = value; + + if(value) { + int bit; + v3d->lay= sc->scene->lay; + /* seek for layact */ + bit= 0; + while(bit<32) { + if(v3d->lay & (1<<bit)) { + v3d->layact= 1<<bit; + break; + } + bit++; + } + v3d->camera= sc->scene->camera; + } +} + + /* Space Image Editor */ static PointerRNA rna_SpaceImageEditor_uvedit_get(PointerRNA *ptr) @@ -418,6 +443,9 @@ static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr) /* set action */ adt->action= saction->action; id_us_plus(&adt->action->id); + + /* force depsgraph flush too */ + DAG_id_flush_update(&obact->id, OB_RECALC_OB|OB_RECALC_DATA); } } @@ -638,11 +666,11 @@ static void rna_def_space_3dview(BlenderRNA *brna) {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem pivot_items[] = { - {V3D_CENTER, "BOUNDING_BOX_CENTER", 0, "Bounding Box Center", ""}, - {V3D_CURSOR, "CURSOR", 0, "3D Cursor", ""}, - {V3D_LOCAL, "INDIVIDUAL_CENTERS", 0, "Individual Centers", ""}, - {V3D_CENTROID, "MEDIAN_POINT", 0, "Median Point", ""}, - {V3D_ACTIVE, "ACTIVE_ELEMENT", 0, "Active Element", ""}, + {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""}, + {V3D_CURSOR, "CURSOR", ICON_CURSOR, "3D Cursor", ""}, + {V3D_LOCAL, "INDIVIDUAL_CENTERS", ICON_ROTATECOLLECTION, "Individual Centers", ""}, + {V3D_CENTROID, "MEDIAN_POINT", ICON_ROTATECENTER, "Median Point", ""}, + {V3D_ACTIVE, "ACTIVE_ELEMENT", ICON_ROTACTIVE, "Active Element", ""}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "Space3DView", "Space"); @@ -656,10 +684,16 @@ static void rna_def_space_3dview(BlenderRNA *brna) RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "lock_object", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_sdna(prop, NULL, "ob_centre"); RNA_def_property_ui_text(prop, "Lock Object", "3D View center is locked to this object's position"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "lock_bone", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "ob_centre_bone"); + RNA_def_property_ui_text(prop, "Lock Bone", "3D View center is locked to this bone's position"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "background_image", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "bgpic"); RNA_def_property_ui_text(prop, "Background Image", "Image and settings to display in the 3D View background"); @@ -750,6 +784,12 @@ static void rna_def_space_3dview(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Textured Solid", "Display face-assigned textures in solid view"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "occlude_geometry", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ZBUF_SELECT); + RNA_def_property_ui_text(prop, "Occlude Geometry", "Limit selection to visible (clipped with depth buffer)"); + RNA_def_property_ui_icon(prop, ICON_ORTHO, 0); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "display_background_image", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_funcs(prop, NULL, "rna_View3D_display_background_image_set"); RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DISPBGPIC); @@ -765,26 +805,31 @@ static void rna_def_space_3dview(BlenderRNA *brna) prop= RNA_def_property(srna, "pivot_point_align", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ALIGN); RNA_def_property_ui_text(prop, "Align", "Manipulate object centers only."); + RNA_def_property_ui_icon(prop, ICON_ALIGN, 0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); 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_ui_icon(prop, ICON_MANIPUL, 0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, 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_ui_icon(prop, ICON_MAN_TRANS, 0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, 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_ui_icon(prop, ICON_MAN_ROT, 0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, 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_ui_icon(prop, ICON_MAN_SCALE, 0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "transform_orientation", PROP_ENUM, PROP_NONE); @@ -813,6 +858,18 @@ static void rna_def_space_3dview(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, "RegionView3D", "viewlock", RV3D_BOXCLIP); RNA_def_property_ui_text(prop, "Clip", ""); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + + prop= RNA_def_property(srna, "lock_camera_and_layers", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "scenelock", 1); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Space3DView_lock_camera_and_layers_set"); + RNA_def_property_ui_text(prop, "Lock Camera and Layers", "Lock the active camera and layers to scene."); + RNA_def_property_ui_icon(prop, ICON_LOCKVIEW_OFF, 1); + + prop= RNA_def_property(srna, "used_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER); + RNA_def_property_boolean_sdna(prop, NULL, "lay_used", 1); + RNA_def_property_array(prop, 20); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Used Layers", "Layers that contain something."); } static void rna_def_space_buttons(BlenderRNA *brna) @@ -1158,7 +1215,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceDopeSheetEditor_action_set", NULL); RNA_def_property_ui_text(prop, "Action", "Action displayed and edited in this space."); - RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, "rna_SpaceDopeSheetEditor_action_update"); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, "rna_SpaceDopeSheetEditor_action_update"); /* mode */ prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index aaf011e3e49..e15cc130899 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -37,24 +37,29 @@ #ifdef RNA_RUNTIME -static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle, int icon_only, int event, int full_event) +static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle, int icon_only, int event, int full_event, int index) { + PropertyRNA *prop= RNA_struct_find_property(ptr, propname); int flag= 0; + if(!prop) { + printf("rna_uiItemR: property not found: %s\n", propname); + return; + } + flag |= (slider)? UI_ITEM_R_SLIDER: 0; flag |= (expand)? UI_ITEM_R_EXPAND: 0; flag |= (toggle)? UI_ITEM_R_TOGGLE: 0; flag |= (icon_only)? UI_ITEM_R_ICON_ONLY: 0; flag |= (event)? UI_ITEM_R_EVENT: 0; flag |= (full_event)? UI_ITEM_R_FULL_EVENT: 0; - - uiItemR(layout, name, icon, ptr, propname, flag); + + uiItemFullR(layout, name, icon, ptr, prop, index, 0, flag); } -static PointerRNA rna_uiItemO(uiLayout *layout, char *name, int icon, char *opname, int properties) +static PointerRNA rna_uiItemO(uiLayout *layout, char *name, int icon, char *opname) { - int flag= (properties)? UI_ITEM_O_RETURN_PROPS: 0; - return uiItemFullO(layout, name, icon, opname, NULL, uiLayoutGetOperatorContext(layout), flag); + return uiItemFullO(layout, name, icon, opname, NULL, uiLayoutGetOperatorContext(layout), UI_ITEM_O_RETURN_PROPS); } #else @@ -142,7 +147,7 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_float(func, "percentage", 0.0f, 0.0f, 1.0f, "Percentage", "Percentage of width to split at.", 0.0f, 1.0f); /* items */ - func= RNA_def_function(srna, "itemR", "rna_uiItemR"); + func= RNA_def_function(srna, "prop", "rna_uiItemR"); api_ui_item_common(func); api_ui_item_rna_common(func); RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail."); @@ -151,21 +156,22 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_boolean(func, "icon_only", 0, "", "Draw only icons in buttons, no text."); RNA_def_boolean(func, "event", 0, "", "Use button to input key events."); RNA_def_boolean(func, "full_event", 0, "", "Use button to input full events including modifiers."); + RNA_def_int(func, "index", -1, -2, INT_MAX, "", "The index of this button, when set a single member of an array can be accessed, when set to -1 all array members are used.", -2, INT_MAX); /* RNA_NO_INDEX == -1 */ - func= RNA_def_function(srna, "items_enumR", "uiItemsEnumR"); + func= RNA_def_function(srna, "props_enum", "uiItemsEnumR"); api_ui_item_rna_common(func); - func= RNA_def_function(srna, "item_menu_enumR", "uiItemMenuEnumR"); + func= RNA_def_function(srna, "prop_menu_enum", "uiItemMenuEnumR"); api_ui_item_common(func); api_ui_item_rna_common(func); - func= RNA_def_function(srna, "item_enumR", "uiItemEnumR_string"); + func= RNA_def_function(srna, "prop_enum", "uiItemEnumR_string"); api_ui_item_common(func); api_ui_item_rna_common(func); parm= RNA_def_string(func, "value", "", 0, "", "Enum property value."); RNA_def_property_flag(parm, PROP_REQUIRED); - func= RNA_def_function(srna, "item_pointerR", "uiItemPointerR"); + func= RNA_def_function(srna, "prop_object", "uiItemPointerR"); api_ui_item_common(func); api_ui_item_rna_common(func); parm= RNA_def_pointer(func, "search_data", "AnyType", "", "Data from which to take collection to search in."); @@ -173,69 +179,68 @@ void RNA_api_ui_layout(StructRNA *srna) parm= RNA_def_string(func, "search_property", "", 0, "", "Identifier of search collection property."); RNA_def_property_flag(parm, PROP_REQUIRED); - func= RNA_def_function(srna, "itemO", "rna_uiItemO"); + func= RNA_def_function(srna, "operator", "rna_uiItemO"); api_ui_item_op_common(func); - parm= RNA_def_boolean(func, "properties", 0, "Properties", "Return operator properties to fill in manually."); - parm= RNA_def_pointer(func, "return_properties", "OperatorProperties", "", "Operator properties to fill in, return when 'properties' is set to true."); + parm= RNA_def_pointer(func, "properties", "OperatorProperties", "", "Operator properties to fill in, return when 'properties' is set to true."); RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR); RNA_def_function_return(func, parm); - func= RNA_def_function(srna, "item_enumO", "uiItemEnumO_string"); +/* func= RNA_def_function(srna, "operator_enum", "uiItemEnumO_string"); api_ui_item_op_common(func); parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator."); RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_string(func, "value", "", 0, "", "Enum property value."); - RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_property_flag(parm, PROP_REQUIRED); */ - func= RNA_def_function(srna, "items_enumO", "uiItemsEnumO"); + func= RNA_def_function(srna, "operator_enums", "uiItemsEnumO"); parm= RNA_def_string(func, "operator", "", 0, "", "Identifier of the operator."); RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator."); RNA_def_property_flag(parm, PROP_REQUIRED); - func= RNA_def_function(srna, "item_menu_enumO", "uiItemMenuEnumO"); + func= RNA_def_function(srna, "operator_menu_enum", "uiItemMenuEnumO"); api_ui_item_op_common(func); parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator."); RNA_def_property_flag(parm, PROP_REQUIRED); - func= RNA_def_function(srna, "item_booleanO", "uiItemBooleanO"); +/* func= RNA_def_function(srna, "operator_boolean", "uiItemBooleanO"); api_ui_item_op_common(func); parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator."); RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_boolean(func, "value", 0, "", "Value of the property to call the operator with."); - RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_property_flag(parm, PROP_REQUIRED); */ - func= RNA_def_function(srna, "item_intO", "uiItemIntO"); +/* func= RNA_def_function(srna, "operator_int", "uiItemIntO"); api_ui_item_op_common(func); parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator."); RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_int(func, "value", 0, INT_MIN, INT_MAX, "", "Value of the property to call the operator with.", INT_MIN, INT_MAX); - RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_property_flag(parm, PROP_REQUIRED); */ - func= RNA_def_function(srna, "item_floatO", "uiItemFloatO"); +/* func= RNA_def_function(srna, "operator_float", "uiItemFloatO"); api_ui_item_op_common(func); parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator."); RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_float(func, "value", 0, -FLT_MAX, FLT_MAX, "", "Value of the property to call the operator with.", -FLT_MAX, FLT_MAX); - RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_property_flag(parm, PROP_REQUIRED); */ - func= RNA_def_function(srna, "item_stringO", "uiItemStringO"); +/* func= RNA_def_function(srna, "operator_string", "uiItemStringO"); api_ui_item_op_common(func); parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator."); RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_string(func, "value", "", 0, "", "Value of the property to call the operator with."); - RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_property_flag(parm, PROP_REQUIRED); */ - func= RNA_def_function(srna, "itemL", "uiItemL"); + func= RNA_def_function(srna, "label", "uiItemL"); api_ui_item_common(func); - func= RNA_def_function(srna, "itemM", "uiItemM"); + func= RNA_def_function(srna, "menu", "uiItemM"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); api_ui_item_common(func); parm= RNA_def_string(func, "menu", "", 0, "", "Identifier of the menu."); RNA_def_property_flag(parm, PROP_REQUIRED); - func= RNA_def_function(srna, "itemS", "uiItemS"); + func= RNA_def_function(srna, "separator", "uiItemS"); /* context */ func= RNA_def_function(srna, "set_context_pointer", "uiLayoutSetContextPointer"); @@ -305,6 +310,12 @@ void RNA_api_ui_layout(StructRNA *srna) func= RNA_def_function(srna, "template_layers", "uiTemplateLayers"); api_ui_item_rna_common(func); + parm= RNA_def_pointer(func, "used_layers_data", "AnyType", "", "Data from which to take property."); + RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR); + parm= RNA_def_string(func, "used_layers_property", "", 0, "", "Identifier of property in data."); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_int(func, "active_layer", 0, 0, INT_MAX, "Active Layer", "", 0, INT_MAX); + RNA_def_property_flag(parm, PROP_REQUIRED); func= RNA_def_function(srna, "template_triColorSet", "uiTemplateTriColorSet"); api_ui_item_rna_common(func); @@ -343,6 +354,12 @@ void RNA_api_ui_layout(StructRNA *srna) func= RNA_def_function(srna, "template_header_3D", "uiTemplateHeader3D"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); + + + + func= RNA_def_function(srna, "introspect", "uiLayoutIntrospect"); + parm= RNA_def_string(func, "string", "", 1024*1024, "Descr", "DESCR"); + RNA_def_function_return(func, parm); } #endif diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index c9056e386ac..9f7d897d09c 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -46,6 +46,7 @@ #include "BKE_DerivedMesh.h" #include "BKE_depsgraph.h" #include "DNA_object_types.h" +// #include "GPU_draw.h" static void rna_userdef_update(bContext *C, PointerRNA *ptr) { @@ -151,6 +152,15 @@ static void rna_UserDef_weight_color_update(bContext *C, PointerRNA *ptr) rna_userdef_update(C, ptr); } +// XXX - todo, this is not accessible from here and it only works when the userprefs are in the same window. +// extern int GPU_default_lights(void); +static void rna_UserDef_viewport_lights_update(bContext *C, PointerRNA *ptr) +{ + // GPU_default_lights(); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, NULL); + rna_userdef_update(C, ptr); +} + static void rna_userdef_autosave_update(bContext *C, PointerRNA *ptr) { WM_autosave_init(C); @@ -1596,21 +1606,25 @@ static void rna_def_userdef_solidlight(BlenderRNA *brna) prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", 1); RNA_def_property_ui_text(prop, "Enabled", "Enable this OpenGL light in solid draw mode."); + RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); prop= RNA_def_property(srna, "direction", PROP_FLOAT, PROP_DIRECTION); RNA_def_property_float_sdna(prop, NULL, "vec"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Direction", "The direction that the OpenGL light is shining."); + RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); prop= RNA_def_property(srna, "diffuse_color", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "col"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Diffuse Color", "The diffuse color of the OpenGL light."); + RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); prop= RNA_def_property(srna, "specular_color", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "spec"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Specular Color", "The color of the lights specular highlight."); + RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); } static void rna_def_userdef_view(BlenderRNA *brna) @@ -2160,10 +2174,6 @@ static void rna_def_userdef_system(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_DONT_DOSCRIPTLINKS); RNA_def_property_ui_text(prop, "Auto Run Python Scripts", "Allow any .blend file to run scripts automatically (unsafe with blend files from an untrusted source)."); - prop= RNA_def_property(srna, "emulate_numpad", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_NONUMPAD); - RNA_def_property_ui_text(prop, "Emulate Numpad", "Causes the 1 to 0 keys to act as the numpad (useful for laptops)."); - prop= RNA_def_property(srna, "prefetch_frames", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "prefetchframes"); RNA_def_property_range(prop, 0, 500); @@ -2272,26 +2282,21 @@ static void rna_def_userdef_input(BlenderRNA *brna) {USER_TRACKBALL, "TRACKBALL", 0, "Trackball", "Use trackball style rotation in the viewport."}, {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem middle_mouse_mouse_items[] = { - {0, "PAN", 0, "Pan", "Use the middle mouse button for panning the viewport."}, - {USER_VIEWMOVE, "ROTATE", 0, "Rotate", "Use the middle mouse button for rotation the viewport."}, - {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem view_zoom_styles[] = { {USER_ZOOM_CONT, "CONTINUE", 0, "Continue", "Old style zoom, continues while moving mouse up or down."}, {USER_ZOOM_DOLLY, "DOLLY", 0, "Dolly", "Zooms in and out based on vertical mouse movement."}, {USER_ZOOM_SCALE, "SCALE", 0, "Scale", "Zooms in and out like scaling the view, mouse movements relative to center."}, {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem view_zoom_axes[] = { + {0, "VERTICAL", 0, "Vertical", "Zooms in and out based on vertical mouse movement."}, + {USER_ZOOM_DOLLY_HORIZ, "HORIZONTAL", 0, "Horizontal", "Zooms in and out based on horizontal mouse movement."}, + {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "UserPreferencesInput", NULL); RNA_def_struct_sdna(srna, "UserDef"); RNA_def_struct_nested(brna, srna, "UserPreferences"); RNA_def_struct_ui_text(srna, "Input", "Settings for input devices."); - - prop= RNA_def_property(srna, "middle_mouse", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); - RNA_def_property_enum_items(prop, middle_mouse_mouse_items); - RNA_def_property_ui_text(prop, "Middle Mouse", "Use the middle mouse button to pan or zoom the view."); prop= RNA_def_property(srna, "select_mouse", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); @@ -2303,6 +2308,15 @@ static void rna_def_userdef_input(BlenderRNA *brna) RNA_def_property_enum_items(prop, view_zoom_styles); RNA_def_property_ui_text(prop, "Viewport Zoom Style", "Which style to use for viewport scaling."); + prop= RNA_def_property(srna, "zoom_axis", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "uiflag"); + RNA_def_property_enum_items(prop, view_zoom_axes); + RNA_def_property_ui_text(prop, "Zoom Axis", "Axis of mouse movement to zoom in or out on."); + + prop= RNA_def_property(srna, "invert_zoom_direction", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ZOOM_INVERT); + RNA_def_property_ui_text(prop, "Invert Zoom Direction", "Invert the axis of mouse movement for zooming"); + prop= RNA_def_property(srna, "view_rotation", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); RNA_def_property_enum_items(prop, view_rotation_items); @@ -2310,7 +2324,7 @@ static void rna_def_userdef_input(BlenderRNA *brna) prop= RNA_def_property(srna, "continuous_mouse", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_CONTINUOUS_MOUSE); - RNA_def_property_ui_text(prop, "Continuous Grab", "Experimental option to allow moving the mouse outside the view"); + RNA_def_property_ui_text(prop, "Continuous Grab", "Allow moving the mouse outside the view on some manipulations (transform, ui control drag)."); prop= RNA_def_property(srna, "ndof_pan_speed", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "ndof_pan"); @@ -2326,6 +2340,10 @@ static void rna_def_userdef_input(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_TWOBUTTONMOUSE); RNA_def_property_boolean_funcs(prop, NULL, "rna_userdef_emulate_set"); RNA_def_property_ui_text(prop, "Emulate 3 Button Mouse", "Emulates Middle Mouse with Alt+LeftMouse (doesnt work with Left Mouse Select option.)"); + + prop= RNA_def_property(srna, "emulate_numpad", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_NONUMPAD); + RNA_def_property_ui_text(prop, "Emulate Numpad", "Causes the 1 to 0 keys to act as the numpad (useful for laptops)."); } static void rna_def_userdef_filepaths(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 3233c1d8443..de872b41335 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -42,6 +42,7 @@ EnumPropertyItem event_keymouse_value_items[] = { {KM_ANY, "ANY", 0, "Any", ""}, {KM_PRESS, "PRESS", 0, "Press", ""}, {KM_RELEASE, "RELEASE", 0, "Release", ""}, + {KM_CLICK, "CLICK", 0, "Click", ""}, {0, NULL, 0, NULL, NULL}}; EnumPropertyItem event_tweak_value_items[]= { @@ -61,6 +62,7 @@ EnumPropertyItem event_value_items[] = { {KM_NOTHING, "NOTHING", 0, "Nothing", ""}, {KM_PRESS, "PRESS", 0, "Press", ""}, {KM_RELEASE, "RELEASE", 0, "Release", ""}, + {KM_CLICK, "CLICK", 0, "Click", ""}, {0, NULL, 0, NULL, NULL}}; EnumPropertyItem event_tweak_type_items[]= { diff --git a/source/blender/python/generic/vector.c b/source/blender/python/generic/vector.c index 8d1356f62f4..b3e54ac2250 100644 --- a/source/blender/python/generic/vector.c +++ b/source/blender/python/generic/vector.c @@ -626,36 +626,30 @@ static PyObject *Vector_add(PyObject * v1, PyObject * v2) static PyObject *Vector_iadd(PyObject * v1, PyObject * v2) { int i; - VectorObject *vec1 = NULL, *vec2 = NULL; + + if (!VectorObject_Check(v1) || !VectorObject_Check(v2)) { + PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation....\n"); + return NULL; + } + vec1 = (VectorObject*)v1; + vec2 = (VectorObject*)v2; - if VectorObject_Check(v1) - vec1= (VectorObject *)v1; - - if VectorObject_Check(v2) - vec2= (VectorObject *)v2; - - /* make sure v1 is always the vector */ - if (vec1 && vec2 ) { - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) - return NULL; - - /*VECTOR + VECTOR*/ - if(vec1->size != vec2->size) { - PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation\n"); - return NULL; - } - for(i = 0; i < vec1->size; i++) { - vec1->vec[i] += vec2->vec[i]; - } - Py_INCREF( v1 ); - return v1; + if(vec1->size != vec2->size) { + PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation\n"); + return NULL; } + if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) + return NULL; + + for(i = 0; i < vec1->size; i++) { + vec1->vec[i] = vec1->vec[i] + vec2->vec[i]; + } + BaseMath_WriteCallback(vec1); - PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation....\n"); - return NULL; + Py_INCREF( v1 ); + return v1; } /*------------------------obj - obj------------------------------ diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index 409afee7d7d..6ae63f2ab65 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -76,7 +76,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) Py_XINCREF(context_dict); /* so we done loose it */ if(WM_operator_poll((bContext*)C, ot) == FALSE) { - PyErr_SetString( PyExc_SystemError, "_bpy.ops.call: operator poll() function failed, context is incorrect"); + PyErr_Format( PyExc_SystemError, "_bpy.ops.call: operator %.200s.poll() function failed, context is incorrect", opname); error_val= -1; } else { @@ -230,7 +230,9 @@ static PyObject *pyop_getrna(PyObject *self, PyObject *value) //RNA_pointer_create(NULL, &RNA_Struct, ot->srna, &ptr); /* XXX - should call WM_operator_properties_free */ - WM_operator_properties_create(&ptr, ot->idname); + WM_operator_properties_create_ptr(&ptr, ot); + + pyrna= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr); pyrna->freeptr= TRUE; return (PyObject *)pyrna; diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c index 3789c5b1258..ff49d381dd1 100644 --- a/source/blender/python/intern/bpy_operator_wrap.c +++ b/source/blender/python/intern/bpy_operator_wrap.c @@ -32,6 +32,7 @@ #include "MEM_guardedalloc.h" #include "WM_api.h" #include "WM_types.h" +#include "UI_interface.h" #include "ED_screen.h" #include "RNA_define.h" @@ -78,10 +79,11 @@ static struct BPY_flag_def pyop_ret_flags[] = { #define PYOP_EXEC 1 #define PYOP_INVOKE 2 #define PYOP_POLL 3 +#define PYOP_DRAW 4 extern void BPY_update_modules( void ); //XXX temp solution -static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperator *op, wmEvent *event) +static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperator *op, wmEvent *event, uiLayout *layout) { PyObject *py_class = ot->pyop_data; PyObject *args; @@ -89,7 +91,6 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat int ret_flag= (mode==PYOP_POLL ? 0:OPERATOR_CANCELLED); PointerRNA ptr_context; PointerRNA ptr_operator; - PointerRNA ptr_event; PyGILState_STATE gilstate; @@ -105,10 +106,15 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat py_class_instance = PyObject_Call(py_class, args, NULL); Py_DECREF(args); - if (py_class_instance) { /* Initializing the class worked, now run its invoke function */ + if (py_class_instance==NULL) { /* Initializing the class worked, now run its invoke function */ + PyErr_Print(); + PyErr_Clear(); + } + else { RNA_pointer_create(NULL, &RNA_Context, C, &ptr_context); if (mode==PYOP_INVOKE) { + PointerRNA ptr_event; item= PyObject_GetAttrString(py_class, "invoke"); args = PyTuple_New(3); @@ -130,6 +136,36 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat args = PyTuple_New(2); PyTuple_SET_ITEM(args, 1, pyrna_struct_CreatePyObject(&ptr_context)); } + else if (mode==PYOP_DRAW) { + PointerRNA ptr_layout; + item= PyObject_GetAttrString(py_class, "draw"); + args = PyTuple_New(2); + + RNA_pointer_create(NULL, &RNA_UILayout, layout, &ptr_layout); + + // PyTuple_SET_ITEM "steals" object reference, it is + // an object passed shouldn't be DECREF'ed + PyTuple_SET_ITEM(args, 1, pyrna_struct_CreatePyObject(&ptr_context)); +#if 0 + PyTuple_SET_ITEM(args, 2, pyrna_struct_CreatePyObject(&ptr_layout)); +#else + { + /* mimic panels */ + PyObject *py_layout= pyrna_struct_CreatePyObject(&ptr_layout); + PyObject *pyname= PyUnicode_FromString("layout"); + + if(PyObject_GenericSetAttr(py_class_instance, pyname, py_layout)) { + PyErr_Print(); + PyErr_Clear(); + } + else { + Py_DECREF(py_layout); + } + + Py_DECREF(pyname); + } +#endif + } PyTuple_SET_ITEM(args, 0, py_class_instance); ret = PyObject_Call(item, args, NULL); @@ -137,10 +173,6 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat Py_DECREF(args); Py_DECREF(item); } - else { - PyErr_Print(); - PyErr_Clear(); - } if (ret == NULL) { /* covers py_class_instance failing too */ if(op) @@ -149,21 +181,18 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat else { if (mode==PYOP_POLL) { if (PyBool_Check(ret) == 0) { - PyErr_SetString(PyExc_ValueError, "Python poll function return value "); - if(op) - BPy_errors_to_report(op->reports); + PyErr_Format(PyExc_ValueError, "Python operator '%s.poll', did not return a bool value", ot->idname); + BPy_errors_to_report(op ? op->reports:NULL); /* prints and clears if NULL given */ } else { ret_flag= ret==Py_True ? 1:0; } - + } else if(mode==PYOP_DRAW) { + /* pass */ } else if (BPY_flag_from_seq(pyop_ret_flags, ret, &ret_flag) == -1) { /* the returned value could not be converted into a flag */ - if(op) { - fprintf(stderr, "error using return value from \"%s\"\n", op->idname); // for some reason the error raised doesnt include file:line... this helps - BPy_errors_to_report(op->reports); - } - + PyErr_Format(PyExc_ValueError, "Python operator, error using return value from \"%s\"\n", ot->idname); + BPy_errors_to_report(op ? op->reports:NULL); ret_flag = OPERATOR_CANCELLED; } /* there is no need to copy the py keyword dict modified by @@ -213,17 +242,22 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat static int PYTHON_OT_invoke(bContext *C, wmOperator *op, wmEvent *event) { - return PYTHON_OT_generic(PYOP_INVOKE, C, op->type, op, event); + return PYTHON_OT_generic(PYOP_INVOKE, C, op->type, op, event, NULL); } static int PYTHON_OT_execute(bContext *C, wmOperator *op) { - return PYTHON_OT_generic(PYOP_EXEC, C, op->type, op, NULL); + return PYTHON_OT_generic(PYOP_EXEC, C, op->type, op, NULL, NULL); } static int PYTHON_OT_poll(bContext *C, wmOperatorType *ot) { - return PYTHON_OT_generic(PYOP_POLL, C, ot, NULL, NULL); + return PYTHON_OT_generic(PYOP_POLL, C, ot, NULL, NULL, NULL); +} + +static void PYTHON_OT_draw(bContext *C, wmOperator *op, uiLayout *layout) +{ + PYTHON_OT_generic(PYOP_DRAW, C, op->type, op, NULL, layout); } void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) @@ -260,6 +294,8 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) ot->exec= PYTHON_OT_execute; if (PyObject_HasAttrString(py_class, "poll")) ot->pyop_poll= PYTHON_OT_poll; + if (PyObject_HasAttrString(py_class, "draw")) + ot->ui= PYTHON_OT_draw; ot->pyop_data= userdata; @@ -324,6 +360,7 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class) {"execute", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL}, {"invoke", 'f', 3, -1, BPY_CLASS_ATTR_OPTIONAL}, {"poll", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL}, + {"draw", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL}, {NULL, 0, 0, 0} }; @@ -406,6 +443,3 @@ PyObject *PYOP_wrap_remove(PyObject *self, PyObject *value) Py_RETURN_NONE; } - - - diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index d25a240990b..fd5e1ddf75c 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -39,6 +39,9 @@ #include "BKE_global.h" /* evil G.* */ #include "BKE_report.h" +#include "BKE_animsys.h" +#include "BKE_fcurve.h" + /* only for keyframing */ #include "DNA_scene_types.h" #include "DNA_anim_types.h" @@ -140,18 +143,20 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop) PyObject *ret= NULL; #ifdef USE_MATHUTILS - int type, subtype, totdim; + int subtype, totdim; int len; + /* disallow dynamic sized arrays to be wrapped since the size could change + * to a size mathutils does not support */ + if ((RNA_property_type(prop) != PROP_FLOAT) || (RNA_property_flag(prop) & PROP_DYNAMIC)) + return NULL; + len= RNA_property_array_length(ptr, prop); - type= RNA_property_type(prop); subtype= RNA_property_subtype(prop); totdim= RNA_property_array_dimension(ptr, prop, NULL); - if (type != PROP_FLOAT) return NULL; - if (totdim == 1 || (totdim == 2 && subtype == PROP_MATRIX)) { - ret = pyrna_prop_CreatePyObject(ptr, prop); + ret = pyrna_prop_CreatePyObject(ptr, prop); /* owned by the Mathutils PyObject */ switch(RNA_property_subtype(prop)) { case PROP_TRANSLATION: @@ -591,9 +596,16 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v switch (type) { case PROP_BOOLEAN: { - int param = PyObject_IsTrue( value ); + int param; + /* prefer not to have an exception here + * however so many poll functions return None or a valid Object. + * its a hassle to convert these into a bool before returning, */ + if(RNA_property_flag(prop) & PROP_RETURN) + param = PyObject_IsTrue( value ); + else + param = PyLong_AsSsize_t( value ); - if( param < 0 ) { + if( param < 0 || param > 1) { PyErr_Format(PyExc_TypeError, "%.200s expected True/False or 0/1", error_prefix); return -1; } else { @@ -681,7 +693,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v PyErr_Format(PyExc_TypeError, "%.200s expected a %.200s type", error_prefix, RNA_struct_identifier(ptype)); return -1; } else if((flag & PROP_NEVER_NULL) && value == Py_None) { - PyErr_Format(PyExc_TypeError, "property can't be assigned a None value"); + PyErr_Format(PyExc_TypeError, "%.200s does not suppory a 'None' assignment %.200s type", error_prefix, RNA_struct_identifier(ptype)); return -1; } else { BPy_StructRNA *param= (BPy_StructRNA*)value; @@ -813,9 +825,9 @@ static int pyrna_py_to_prop_index(BPy_PropertyRNA *self, int index, PyObject *va switch (type) { case PROP_BOOLEAN: { - int param = PyObject_IsTrue( value ); + int param = PyLong_AsSsize_t( value ); - if( param < 0 ) { + if( param < 0 || param > 1) { PyErr_SetString(PyExc_TypeError, "expected True/False or 0/1"); ret = -1; } else { @@ -1349,7 +1361,7 @@ static PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args) char *path, *path_full; int index= -1; /* default to all */ PropertyRNA *prop; - PyObject *result; + PyObject *ret; if (!PyArg_ParseTuple(args, "s|i:driver_add", &path, &index)) return NULL; @@ -1378,13 +1390,40 @@ static PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args) return NULL; } - result= PyBool_FromLong( ANIM_add_driver((ID *)self->ptr.id.data, path_full, index, 0, DRIVER_TYPE_PYTHON)); + if(ANIM_add_driver((ID *)self->ptr.id.data, path_full, index, 0, DRIVER_TYPE_PYTHON)) { + ID *id= self->ptr.id.data; + AnimData *adt= BKE_animdata_from_id(id); + FCurve *fcu; + + PointerRNA tptr; + PyObject *item; + + if(index == -1) { /* all, use a list */ + int i= 0; + ret= PyList_New(0); + while((fcu= list_find_fcurve(&adt->drivers, path_full, i++))) { + RNA_pointer_create(id, &RNA_FCurve, fcu, &tptr); + item= pyrna_struct_CreatePyObject(&tptr); + PyList_Append(ret, item); + Py_DECREF(item); + } + } + else { + fcu= list_find_fcurve(&adt->drivers, path_full, index); + RNA_pointer_create(id, &RNA_FCurve, fcu, &tptr); + ret= pyrna_struct_CreatePyObject(&tptr); + } + } + else { + ret= Py_None; + Py_INCREF(ret); + } + MEM_freeN(path_full); - return result; + return ret; } - static PyObject *pyrna_struct_is_property_set(BPy_StructRNA *self, PyObject *args) { char *name; @@ -1427,6 +1466,59 @@ static PyObject *pyrna_struct_path_resolve(BPy_StructRNA *self, PyObject *value) Py_RETURN_NONE; } +static PyObject *pyrna_struct_path_to_id(BPy_StructRNA *self, PyObject *args) +{ + char *name= NULL; + char *path; + PropertyRNA *prop; + PyObject *ret; + + if (!PyArg_ParseTuple(args, "|s:path_to_id", &name)) + return NULL; + + if(name) { + prop= RNA_struct_find_property(&self->ptr, name); + if(prop==NULL) { + PyErr_Format(PyExc_TypeError, "path_to_id(\"%.200s\") not found", name); + return NULL; + } + + path= RNA_path_from_ID_to_property(&self->ptr, prop); + } + else { + path= RNA_path_from_ID_to_struct(&self->ptr); + } + + if(path==NULL) { + if(name) PyErr_Format(PyExc_TypeError, "%.200s.path_to_id(\"%s\") found but does not support path creation", RNA_struct_identifier(self->ptr.type), name); + else PyErr_Format(PyExc_TypeError, "%.200s.path_to_id() does not support path creation for this type", name); + return NULL; + } + + ret= PyUnicode_FromString(path); + MEM_freeN(path); + + return ret; +} + +static PyObject *pyrna_prop_path_to_id(BPy_PropertyRNA *self) +{ + char *path; + PropertyRNA *prop = self->prop; + PyObject *ret; + + path= RNA_path_from_ID_to_property(&self->ptr, self->prop); + + if(path==NULL) { + PyErr_Format(PyExc_TypeError, "%.200s.%.200s.path_to_id() does not support path creation for this type", RNA_struct_identifier(self->ptr.type), RNA_property_identifier(prop)); + return NULL; + } + + ret= PyUnicode_FromString(path); + MEM_freeN(path); + + return ret; +} static void pyrna_dir_members_py(PyObject *list, PyObject *self) { @@ -1883,6 +1975,34 @@ static PyObject *pyrna_prop_values(BPy_PropertyRNA *self) return ret; } +static PyObject *pyrna_struct_get(BPy_StructRNA *self, PyObject *args) +{ + IDProperty *group, *idprop; + + char *key; + PyObject* def = Py_None; + + if (!PyArg_ParseTuple(args, "s|O:get", &key, &def)) + return NULL; + + /* mostly copied from BPy_IDGroup_Map_GetItem */ + if(RNA_struct_idproperties_check(&self->ptr)==0) { + PyErr_SetString( PyExc_TypeError, "this type doesn't support IDProperties"); + return NULL; + } + + group= RNA_struct_idproperties(&self->ptr, 0); + if(group) { + idprop= IDP_GetPropertyFromGroup(group, key); + + if(idprop) + return BPy_IDGroup_WrapData(self->ptr.id.data, idprop); + } + + Py_INCREF(def); + return def; +} + static PyObject *pyrna_prop_get(BPy_PropertyRNA *self, PyObject *args) { PointerRNA newptr; @@ -2175,12 +2295,15 @@ static struct PyMethodDef pyrna_struct_methods[] = { {"values", (PyCFunction)pyrna_struct_values, METH_NOARGS, NULL}, {"items", (PyCFunction)pyrna_struct_items, METH_NOARGS, NULL}, + {"get", (PyCFunction)pyrna_struct_get, METH_VARARGS, NULL}, + /* maybe this become and ID function */ {"keyframe_insert", (PyCFunction)pyrna_struct_keyframe_insert, METH_VARARGS, NULL}, {"driver_add", (PyCFunction)pyrna_struct_driver_add, METH_VARARGS, NULL}, {"is_property_set", (PyCFunction)pyrna_struct_is_property_set, METH_VARARGS, NULL}, {"is_property_hidden", (PyCFunction)pyrna_struct_is_property_hidden, METH_VARARGS, NULL}, {"path_resolve", (PyCFunction)pyrna_struct_path_resolve, METH_O, NULL}, + {"path_to_id", (PyCFunction)pyrna_struct_path_to_id, METH_VARARGS, NULL}, {"__dir__", (PyCFunction)pyrna_struct_dir, METH_NOARGS, NULL}, {NULL, NULL, 0, NULL} }; @@ -2196,6 +2319,9 @@ static struct PyMethodDef pyrna_prop_methods[] = { {"add", (PyCFunction)pyrna_prop_add, METH_NOARGS, NULL}, {"remove", (PyCFunction)pyrna_prop_remove, METH_O, NULL}, + /* almost the same as the srna function */ + {"path_to_id", (PyCFunction)pyrna_prop_path_to_id, METH_NOARGS, NULL}, + /* array accessor function */ {"foreach_get", (PyCFunction)pyrna_prop_foreach_get, METH_VARARGS, NULL}, {"foreach_set", (PyCFunction)pyrna_prop_foreach_set, METH_VARARGS, NULL}, @@ -3487,7 +3613,7 @@ PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw) else if(srna) { static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL}; char *id=NULL, *name="", *description=""; - int hidden; + int hidden= 0; PropertyRNA *prop; StructRNA *ptype; PyObject *type= Py_None; @@ -3526,7 +3652,7 @@ PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw) else if(srna) { static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL}; char *id=NULL, *name="", *description=""; - int hidden; + int hidden= 0; PropertyRNA *prop; StructRNA *ptype; PyObject *type= Py_None; diff --git a/source/blender/python/intern/bpy_util.c b/source/blender/python/intern/bpy_util.c index 174d1aa342f..cd53ba9c069 100644 --- a/source/blender/python/intern/bpy_util.c +++ b/source/blender/python/intern/bpy_util.c @@ -416,6 +416,7 @@ int BPy_reports_to_error(ReportList *reports) int BPy_errors_to_report(ReportList *reports) { PyObject *pystring; + PyObject *pystring_format= NULL; // workaround, see below char *cstring; char *filename; @@ -439,14 +440,23 @@ int BPy_errors_to_report(ReportList *reports) } BPY_getFileAndNum(&filename, &lineno); + if(filename==NULL) + filename= "<unknown location>"; cstring= _PyUnicode_AsString(pystring); - + +#if 0 // ARG!. workaround for a bug in blenders use of vsnprintf BKE_reportf(reports, RPT_ERROR, "%s\nlocation:%s:%d\n", cstring, filename, lineno); +#else + pystring_format= PyUnicode_FromFormat("%s\nlocation:%s:%d\n", cstring, filename, lineno); + cstring= _PyUnicode_AsString(pystring_format); + BKE_report(reports, RPT_ERROR, cstring); +#endif fprintf(stderr, "%s\nlocation:%s:%d\n", cstring, filename, lineno); // not exactly needed. just for testing Py_DECREF(pystring); + Py_DECREF(pystring_format); // workaround return 1; } diff --git a/source/blender/quicktime/apple/qtkit_export.m b/source/blender/quicktime/apple/qtkit_export.m index 9f2a97dee23..6788c22d9a1 100644 --- a/source/blender/quicktime/apple/qtkit_export.m +++ b/source/blender/quicktime/apple/qtkit_export.m @@ -60,6 +60,11 @@ #endif #import <Cocoa/Cocoa.h> #import <QTKit/QTKit.h> + +#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 +#error OSX 10.5 minimum is needed for QTKit +#endif + #endif /* __APPLE__ */ typedef struct QuicktimeExport { @@ -127,9 +132,12 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) char name[2048]; - if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport"); - if (G.afbreek != 1) { + + if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport"); + + [QTMovie enterQTKitOnThread]; + /* Check first if the QuickTime 7.2.1 initToWritableFile: method is available */ if ([[[[QTMovie alloc] init] autorelease] respondsToSelector:@selector(initToWritableFile:error:)] != YES) { G.afbreek = 1; @@ -144,6 +152,7 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) if(qtexport->movie == nil) { G.afbreek = 1; NSLog(@"Unable to create quicktime movie : %@",[error localizedDescription]); + [QTMovie exitQTKitOnThread]; } else { [qtexport->movie retain]; [qtexport->filename retain]; @@ -235,6 +244,8 @@ void end_qt(void) [qtexport->frameAttributes release]; [qtexport->movie release]; } + + [QTMovie exitQTKitOnThread]; if(qtexport) { MEM_freeN(qtexport); diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript index 795e7247597..63ef83a0cfe 100644 --- a/source/blender/render/SConscript +++ b/source/blender/render/SConscript @@ -31,8 +31,11 @@ if env['WITH_BF_OPENEXR']: defs.append('WITH_OPENEXR') if env['OURPLATFORM'] == 'linux2': - cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] - cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] +# SSE is NOT safe all the time on linux, plus that ignores users compile flags and therefore no no +# cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] +# cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] + cflags = env['CCFLAGS'] + cxxflags = env['CXXFLAGS'] incs += ' ../../../extern/binreloc/include' if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index cbb15558a3d..f9d32f9c541 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4492,7 +4492,7 @@ void RE_Database_Free(Render *re) } } -static int allow_render_object(Object *ob, int nolamps, int onlyselected, Object *actob) +static int allow_render_object(Render *re, Object *ob, int nolamps, int onlyselected, Object *actob) { /* override not showing object when duplis are used with particles */ if(ob->transflag & OB_DUPLIPARTS) @@ -4500,6 +4500,10 @@ static int allow_render_object(Object *ob, int nolamps, int onlyselected, Object else if((ob->transflag & OB_DUPLI) && !(ob->transflag & OB_DUPLIFRAMES)) return 0; + /* don't add non-basic meta objects, ends up having renderobjects with no geometry */ + if (ob!=find_basis_mball(re->scene, ob)) + return 0; + if(nolamps && (ob->type==OB_LAMP)) return 0; @@ -4605,7 +4609,7 @@ static void add_group_render_dupli_obs(Render *re, Group *group, int nolamps, in if(ob->flag & OB_DONE) { if(ob->transflag & OB_RENDER_DUPLI) { - if(allow_render_object(ob, nolamps, onlyselected, actob)) { + if(allow_render_object(re, ob, nolamps, onlyselected, actob)) { init_render_object(re, ob, NULL, 0, timeoffset, vectorlay); ob->transflag &= ~OB_RENDER_DUPLI; @@ -4659,7 +4663,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp /* OB_RENDER_DUPLI means instances for it were already created, now * it still needs to create the ObjectRen containing the data */ if(ob->transflag & OB_RENDER_DUPLI) { - if(allow_render_object(ob, nolamps, onlyselected, actob)) { + if(allow_render_object(re, ob, nolamps, onlyselected, actob)) { init_render_object(re, ob, NULL, 0, timeoffset, vectorlay); ob->transflag &= ~OB_RENDER_DUPLI; } @@ -4693,7 +4697,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp if(obd->type==OB_MBALL) continue; - if(!allow_render_object(obd, nolamps, onlyselected, actob)) + if(!allow_render_object(re, obd, nolamps, onlyselected, actob)) continue; if(allow_render_dupli_instance(re, dob, obd)) { @@ -4763,10 +4767,10 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp } free_object_duplilist(lb); - if(allow_render_object(ob, nolamps, onlyselected, actob)) + if(allow_render_object(re, ob, nolamps, onlyselected, actob)) init_render_object(re, ob, NULL, 0, timeoffset, vectorlay); } - else if(allow_render_object(ob, nolamps, onlyselected, actob)) + else if(allow_render_object(re, ob, nolamps, onlyselected, actob)) init_render_object(re, ob, NULL, 0, timeoffset, vectorlay); } diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index d4ba83b2886..a965b484087 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -52,6 +52,8 @@ void WM_init (struct bContext *C); void WM_exit (struct bContext *C); void WM_main (struct bContext *C); +void WM_init_splash (struct bContext *C); + void WM_check (struct bContext *C); @@ -191,6 +193,7 @@ int WM_operator_call_py(struct bContext *C, struct wmOperatorType *ot, int con void WM_operator_properties_alloc(struct PointerRNA **ptr, struct IDProperty **properties, const char *opstring); /* used for keymap and macro items */ void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring); +void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot); void WM_operator_properties_free(struct PointerRNA *ptr); void WM_operator_properties_filesel(struct wmOperatorType *ot, int filter, short type); void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend); diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 891ed8358fb..53cca69fffc 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -82,6 +82,7 @@ enum { #define KM_NOTHING 0 #define KM_PRESS 1 #define KM_RELEASE 2 +#define KM_CLICK 3 /* ************** UI Handler ***************** */ @@ -135,6 +136,7 @@ typedef struct wmNotifier { #define NC_SPACE (15<<24) #define NC_GEOM (16<<24) #define NC_NODE (17<<24) +#define NC_ID (18<<24) /* data type, 256 entries is enough, it can overlap */ #define NOTE_DATA 0x00FF0000 @@ -214,6 +216,9 @@ typedef struct wmNotifier { /* NC_NODE Nodes */ #define ND_NODE_SELECT (1<<16) + /* NC_ID IDs */ +#define ND_ID_RENAME (1<<16) + /* NC_SPACE */ #define ND_SPACE_CONSOLE (1<<16) /* general redraw */ diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 02fb56f93c8..93c8b669611 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -774,6 +774,30 @@ static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi) return 1; } } + /* exception for numpad emulation */ + else if(U.flag & USER_NONUMPAD) { + wmKeyMapItem tmp= *kmi; + + switch(kmi->type) { + case PAD0: tmp.type = ZEROKEY; break; + case PAD1: tmp.type = ONEKEY; break; + case PAD2: tmp.type = TWOKEY; break; + case PAD3: tmp.type = THREEKEY; break; + case PAD4: tmp.type = FOURKEY; break; + case PAD5: tmp.type = FIVEKEY; break; + case PAD6: tmp.type = SIXKEY; break; + case PAD7: tmp.type = SEVENKEY; break; + case PAD8: tmp.type = EIGHTKEY; break; + case PAD9: tmp.type = NINEKEY; break; + case PADMINUS: tmp.type = MINUSKEY; break; + case PADPLUSKEY: tmp.type = EQUALKEY; break; + case PADSLASHKEY: tmp.type = BACKSLASHKEY; break; + } + + if(tmp.type != kmi->type) + if(wm_eventmatch(winevent, &tmp)) + return 1; + } /* the matching rules */ if(kmitype==KM_TEXTINPUT) @@ -913,6 +937,14 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand retval= wm_operator_invoke(C, ot, event, properties, NULL); } + /* Finished and pass through flag as handled */ + if(retval == (OPERATOR_FINISHED|OPERATOR_PASS_THROUGH)) + return WM_HANDLER_HANDLED; + + /* Modal unhandled, break */ + if(retval == (OPERATOR_PASS_THROUGH|OPERATOR_RUNNING_MODAL)) + return (WM_HANDLER_BREAK|WM_HANDLER_MODAL); + if(retval & OPERATOR_PASS_THROUGH) return WM_HANDLER_CONTINUE; @@ -1086,7 +1118,7 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) /* modal+blocking handler */ if(handler->flag & WM_HANDLER_BLOCKING) - action= WM_HANDLER_BREAK; + action |= WM_HANDLER_BREAK; if(handler->keymap) { wmKeyMap *keymap= WM_keymap_active(wm, handler->keymap); @@ -1098,28 +1130,28 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) event->keymap_idname= kmi->idname; /* weak, but allows interactive callback to not use rawkey */ - action= wm_handler_operator_call(C, handlers, handler, event, kmi->ptr); - if(action==WM_HANDLER_BREAK) /* not always_pass here, it denotes removed handler */ + action |= wm_handler_operator_call(C, handlers, handler, event, kmi->ptr); + if(action & WM_HANDLER_BREAK) /* not always_pass here, it denotes removed handler */ break; } } } } else if(handler->ui_handle) { - action= wm_handler_ui_call(C, handler, event); + action |= wm_handler_ui_call(C, handler, event); } else if(handler->type==WM_HANDLER_FILESELECT) { /* screen context changes here */ - action= wm_handler_fileselect_call(C, handlers, handler, event); + action |= wm_handler_fileselect_call(C, handlers, handler, event); } else { /* modal, swallows all */ - action= wm_handler_operator_call(C, handlers, handler, event, NULL); + action |= wm_handler_operator_call(C, handlers, handler, event, NULL); } - if(action==WM_HANDLER_BREAK) { + if(action & WM_HANDLER_BREAK) { if(always_pass) - action= WM_HANDLER_CONTINUE; + action &= ~WM_HANDLER_BREAK; else break; } @@ -1129,6 +1161,22 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) if(CTX_wm_window(C)==NULL) break; } + + /* test for CLICK event */ + if (event->val == KM_RELEASE && (action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL))) { + wmWindow *win = CTX_wm_window(C); + + if (win && win->last_type == event->type && win->last_val == KM_PRESS) { + event->val = KM_CLICK; + action |= wm_handlers_do(C, event, handlers); + + /* revert value if not handled */ + if ((action & WM_HANDLER_BREAK) == 0) { + event->val = KM_RELEASE; + } + } + } + return action; } @@ -1226,7 +1274,7 @@ void wm_event_do_handlers(bContext *C) wm_event_free_all(win); while( (event= win->queue.first) ) { - int action; + int action = WM_HANDLER_CONTINUE; CTX_wm_window_set(C, win); @@ -1238,7 +1286,7 @@ void wm_event_do_handlers(bContext *C) wm_window_make_drawable(C, win); /* first we do priority handlers, modal + some limited keymaps */ - action= wm_handlers_do(C, event, &win->modalhandlers); + action |= wm_handlers_do(C, event, &win->modalhandlers); /* fileread case */ if(CTX_wm_window(C)==NULL) @@ -1247,7 +1295,7 @@ void wm_event_do_handlers(bContext *C) /* builtin tweak, if action is break it removes tweak */ wm_tweakevent_test(C, event, action); - if(action==WM_HANDLER_CONTINUE) { + if((action & WM_HANDLER_BREAK) == 0) { ScrArea *sa; ARegion *ar; int doit= 0; @@ -1264,15 +1312,15 @@ void wm_event_do_handlers(bContext *C) if(wm_event_inside_i(event, &sa->totrct)) { CTX_wm_area_set(C, sa); - if(action==WM_HANDLER_CONTINUE) { + if((action & WM_HANDLER_BREAK) == 0) { for(ar=sa->regionbase.first; ar; ar= ar->next) { if(wm_event_inside_i(event, &ar->winrct)) { CTX_wm_region_set(C, ar); - action= wm_handlers_do(C, event, &ar->handlers); + action |= wm_handlers_do(C, event, &ar->handlers); doit |= (BLI_in_rcti(&ar->winrct, event->x, event->y)); - if(action==WM_HANDLER_BREAK) + if(action & WM_HANDLER_BREAK) break; } } @@ -1280,8 +1328,8 @@ void wm_event_do_handlers(bContext *C) CTX_wm_region_set(C, NULL); - if(action==WM_HANDLER_CONTINUE) - action= wm_handlers_do(C, event, &sa->handlers); + if((action & WM_HANDLER_BREAK) == 0) + action |= wm_handlers_do(C, event, &sa->handlers); CTX_wm_area_set(C, NULL); @@ -1289,12 +1337,12 @@ void wm_event_do_handlers(bContext *C) } } - if(action==WM_HANDLER_CONTINUE) { + if((action & WM_HANDLER_BREAK) == 0) { /* also some non-modal handlers need active area/region */ CTX_wm_area_set(C, area_event_inside(C, event->x, event->y)); CTX_wm_region_set(C, region_event_inside(C, event->x, event->y)); - action= wm_handlers_do(C, event, &win->handlers); + action |= wm_handlers_do(C, event, &win->handlers); /* fileread case */ if(CTX_wm_window(C)==NULL) @@ -1309,6 +1357,18 @@ void wm_event_do_handlers(bContext *C) } } + /* store last event for this window */ + /* mousemove event don't overwrite last type */ + if (event->type != MOUSEMOVE) { + if (action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL)) { + win->last_type = event->type; + win->last_val = event->val; + } else { + win->last_type = -1; + win->last_val = 0; + } + } + /* unlink and free here, blender-quit then frees all */ BLI_remlink(&win->queue, event); wm_event_free(event); diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index a150ca1f8a0..ba514f097e6 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -122,6 +122,8 @@ static void wm_window_match_init(bContext *C, ListBase *wmlist) for(win= wm->windows.first; win; win= win->next) { CTX_wm_window_set(C, win); /* needed by operator close callbacks */ + WM_event_remove_handlers(C, &win->handlers); + WM_event_remove_handlers(C, &win->modalhandlers); ED_screen_exit(C, win, win->screen); } } diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index 06227086006..d5fe9d324c4 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -151,6 +151,19 @@ void WM_init(bContext *C) read_Blog(); BLI_strncpy(G.lib, G.sce, FILE_MAX); + +} + +void WM_init_splash(bContext *C) +{ + wmWindowManager *wm= CTX_wm_manager(C); + wmWindow *prevwin= CTX_wm_window(C); + + if(wm->windows.first) { + CTX_wm_window_set(C, wm->windows.first); + WM_operator_name_call(C, "WM_OT_splash", WM_OP_INVOKE_DEFAULT, NULL); + CTX_wm_window_set(C, prevwin); + } } /* free strings of open recent files */ diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index a68a4b8414e..9e24b6a9b17 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -465,8 +465,11 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i PointerRNA opptr_default; PropertyRNA *prop_default; char *buf_default; - if(!all_args) { - WM_operator_properties_create(&opptr_default, ot->idname); + if(all_args==0 || opptr==NULL) { + WM_operator_properties_create_ptr(&opptr_default, ot); + + if(opptr==NULL) + opptr = &opptr_default; } @@ -510,7 +513,7 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i } RNA_PROP_END; - if(all_args==0) + if(all_args==0 || opptr==&opptr_default ) WM_operator_properties_free(&opptr_default); BLI_dynstr_append(dynstr, ")"); @@ -520,12 +523,17 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i return cstring; } +void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot) +{ + RNA_pointer_create(NULL, ot->srna, NULL, ptr); +} + void WM_operator_properties_create(PointerRNA *ptr, const char *opstring) { wmOperatorType *ot= WM_operatortype_find(opstring, 0); if(ot) - RNA_pointer_create(NULL, ot->srna, NULL, ptr); + WM_operator_properties_create_ptr(ptr, ot); else RNA_pointer_create(NULL, &RNA_OperatorProperties, NULL, ptr); } @@ -699,10 +707,12 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op) uiBlock *block; uiLayout *layout; uiStyle *style= U.uistyles.first; + int columns= 2, width= 300; + block= uiBeginBlock(C, ar, "redo_popup", UI_EMBOSS); uiBlockClearFlag(block, UI_BLOCK_LOOP); - uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1); + uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT); uiBlockSetHandleFunc(block, redo_cb, arg_op); if(!op->properties) { @@ -710,14 +720,20 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op) op->properties= IDP_New(IDP_GROUP, val, "wmOperatorProperties"); } + // XXX - hack, only for editing docs + if(strcmp(op->type->idname, "WM_OT_doc_edit")==0) { + columns= 1; + width= 500; + } + RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr); - layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 300, 20, style); + layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, width, 20, style); uiItemL(layout, op->type->name, 0); if(op->type->ui) - op->type->ui((bContext*)C, &ptr, layout); + op->type->ui((bContext*)C, op, layout); else - uiDefAutoButsRNA(C, layout, &ptr, 2); + uiDefAutoButsRNA(C, layout, &ptr, columns); uiPopupBoundsBlock(block, 4.0f, 0, 0); uiEndBlock(C, block); @@ -757,13 +773,13 @@ static uiBlock *wm_block_create_menu(bContext *C, ARegion *ar, void *arg_op) block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS); uiBlockClearFlag(block, UI_BLOCK_LOOP); - uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1); + uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT); layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 300, 20, style); uiItemL(layout, op->type->name, 0); if(op->type->ui) - op->type->ui(C, op->ptr, layout); + op->type->ui(C, op, layout); else uiDefAutoButsRNA(C, layout, op->ptr, 2); @@ -806,6 +822,72 @@ static void WM_OT_debug_menu(wmOperatorType *ot) RNA_def_int(ot->srna, "debugval", 0, -10000, 10000, "Debug Value", "", INT_MIN, INT_MAX); } + +/* ***************** Splash Screen ************************* */ + +static void wm_block_splash_close(bContext *C, void *arg_block, void *arg_unused) +{ + uiPupBlockClose(C, arg_block); +} + +static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unused) +{ + uiBlock *block; + uiBut *but; + uiLayout *layout, *split, *col; + uiStyle *style= U.uistyles.first; + + block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS); + uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1); + + but= uiDefBut(block, BUT_IMAGE, 0, "", 0, 10, 501, 282, NULL, 0.0, 0.0, 0, 0, ""); + uiButSetFunc(but, wm_block_splash_close, block, NULL); + + uiBlockSetEmboss(block, UI_EMBOSSP); + + layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_MENU, 10, 10, 480, 110, style); + + uiLayoutSetOperatorContext(layout, WM_OP_EXEC_REGION_WIN); + + split = uiLayoutSplit(layout, 0); + col = uiLayoutColumn(split, 0); + uiItemL(col, "Links", 0); + uiItemO(col, NULL, ICON_URL, "HELP_OT_release_logs"); + uiItemO(col, NULL, ICON_URL, "HELP_OT_manual"); + uiItemO(col, NULL, ICON_URL, "HELP_OT_blender_website"); + uiItemO(col, NULL, ICON_URL, "HELP_OT_user_community"); + uiItemO(col, NULL, ICON_URL, "HELP_OT_python_api"); + uiItemS(col); + + col = uiLayoutColumn(split, 0); + uiItemL(col, "Recent", 0); + uiItemsEnumO(col, "WM_OT_open_recentfile_splash", "file"); + uiItemS(col); + + uiCenteredBoundsBlock(block, 0.0f); + uiEndBlock(C, block); + + return block; +} + +static int wm_splash_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + uiPupBlock(C, wm_block_create_splash, NULL); + + return OPERATOR_FINISHED; +} + +static void WM_OT_splash(wmOperatorType *ot) +{ + ot->name= "Splash Screen"; + ot->idname= "WM_OT_splash"; + ot->description= "Opens a blocking popup region with release info"; + + ot->invoke= wm_splash_invoke; + ot->poll= WM_operator_winactive; +} + + /* ***************** Search menu ************************* */ static void operator_call_cb(struct bContext *C, void *arg1, void *arg2) { @@ -851,7 +933,7 @@ static uiBlock *wm_block_search_menu(bContext *C, ARegion *ar, void *arg_op) uiBut *but; block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS); - uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_RET_1); + uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT); but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, 10, 10, 180, 19, ""); uiButSetSearchFunc(but, operator_search_cb, NULL, operator_call_cb, NULL); @@ -1011,6 +1093,7 @@ static EnumPropertyItem *open_recentfile_itemf(bContext *C, PointerRNA *ptr, int /* dynamically construct enum */ for(recent = G.recent_files.first, i=0; (i<U.recent_files) && (recent); recent = recent->next, i++) { tmp.value= i+1; + tmp.icon= ICON_FILE_BLEND; tmp.identifier= recent->filename; tmp.name= BLI_short_filename(recent->filename); RNA_enum_item_add(&item, &totitem, &tmp); @@ -1040,6 +1123,47 @@ static void WM_OT_open_recentfile(wmOperatorType *ot) RNA_def_enum_funcs(prop, open_recentfile_itemf); } +static EnumPropertyItem *open_recentfile_splash_itemf(bContext *C, PointerRNA *ptr, int *free) +{ + EnumPropertyItem tmp = {0, "", 0, "", ""}; + EnumPropertyItem *item= NULL; + struct RecentFile *recent; + int totitem= 0, i; + + /* dynamically construct enum */ + for(recent = G.recent_files.first, i=0; (i<6) && (recent); recent = recent->next, i++) { + tmp.value= i+1; + tmp.icon= ICON_FILE_BLEND; + tmp.identifier= recent->filename; + tmp.name= BLI_last_slash(recent->filename); + if(tmp.name) tmp.name += 1; + else tmp.name = recent->filename; + RNA_enum_item_add(&item, &totitem, &tmp); + } + + RNA_enum_item_end(&item, &totitem); + *free= 1; + + return item; +} + +static void WM_OT_open_recentfile_splash(wmOperatorType *ot) +{ + PropertyRNA *prop; + static EnumPropertyItem file_items[]= { + {0, NULL, 0, NULL, NULL}}; + + ot->name= "Open Recent File"; + ot->idname= "WM_OT_open_recentfile_splash"; + ot->description="Open recent files list."; + + ot->exec= recentfile_exec; + ot->poll= WM_operator_winactive; + + prop= RNA_def_enum(ot->srna, "file", file_items, 1, "File", ""); + RNA_def_enum_funcs(prop, open_recentfile_splash_itemf); +} + /* *************** open file **************** */ static void open_set_load_ui(wmOperator *op) @@ -1922,7 +2046,7 @@ void wm_tweakevent_test(bContext *C, wmEvent *event, int action) } } else { - if(action==WM_HANDLER_BREAK) { + if(action & WM_HANDLER_BREAK) { WM_gesture_end(C, win->tweak); win->tweak= NULL; } @@ -2458,6 +2582,7 @@ void wm_operatortype_init(void) WM_operatortype_append(WM_OT_window_fullscreen_toggle); WM_operatortype_append(WM_OT_exit_blender); WM_operatortype_append(WM_OT_open_recentfile); + WM_operatortype_append(WM_OT_open_recentfile_splash); WM_operatortype_append(WM_OT_open_mainfile); WM_operatortype_append(WM_OT_link_append); WM_operatortype_append(WM_OT_recover_last_session); @@ -2467,6 +2592,7 @@ void wm_operatortype_init(void) WM_operatortype_append(WM_OT_redraw_timer); WM_operatortype_append(WM_OT_memory_statistics); WM_operatortype_append(WM_OT_debug_menu); + WM_operatortype_append(WM_OT_splash); WM_operatortype_append(WM_OT_search_menu); #ifdef WITH_COLLADA @@ -2541,12 +2667,12 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf) {GESTURE_MODAL_BORDER_BEGIN, "BEGIN", 0, "Begin", ""}, {0, NULL, 0, NULL, NULL}}; - wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "View3D Gesture Border"); + wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Gesture Border"); /* this function is called for each spacetype, only needs to add map once */ if(keymap) return; - keymap= WM_modalkeymap_add(keyconf, "View3D Gesture Border", modal_items); + keymap= WM_modalkeymap_add(keyconf, "Gesture Border", modal_items); /* items for modal map */ WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CANCEL); @@ -2564,7 +2690,7 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf) #endif /* assign map to operators */ - WM_modalkeymap_assign(keymap, "ACT_OT_select_border"); + WM_modalkeymap_assign(keymap, "ACTION_OT_select_border"); WM_modalkeymap_assign(keymap, "ANIM_OT_channels_select_border"); WM_modalkeymap_assign(keymap, "ANIM_OT_previewrange_set"); WM_modalkeymap_assign(keymap, "CONSOLE_OT_select_border"); @@ -2576,10 +2702,11 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf) // WM_modalkeymap_assign(keymap, "SCREEN_OT_border_select"); // template WM_modalkeymap_assign(keymap, "SEQUENCER_OT_select_border"); WM_modalkeymap_assign(keymap, "UV_OT_select_border"); + WM_modalkeymap_assign(keymap, "VIEW2D_OT_zoom_border"); WM_modalkeymap_assign(keymap, "VIEW3D_OT_clip_border"); WM_modalkeymap_assign(keymap, "VIEW3D_OT_render_border"); WM_modalkeymap_assign(keymap, "VIEW3D_OT_select_border"); - WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom_border"); + WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom_border"); // XXX TODO: zoom border should perhaps map rightmouse to zoom out instead of in+cancel } /* default keymap for windows and screens, only call once per WM */ diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index dbc3d27be6a..78d70c96ad6 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -230,6 +230,9 @@ void wm_window_close(bContext *C, wmWindowManager *wm, wmWindow *win) BLI_remlink(&wm->windows, win); wm_draw_window_clear(win); + CTX_wm_window_set(C, win); /* needed by handlers */ + WM_event_remove_handlers(C, &win->handlers); + WM_event_remove_handlers(C, &win->modalhandlers); ED_screen_exit(C, win, win->screen); wm_window_free(C, wm, win); diff --git a/source/blender/windowmanager/wm_event_system.h b/source/blender/windowmanager/wm_event_system.h index b7c881629a2..3d7cb3fbad1 100644 --- a/source/blender/windowmanager/wm_event_system.h +++ b/source/blender/windowmanager/wm_event_system.h @@ -31,6 +31,8 @@ /* return value of handler-operator call */ #define WM_HANDLER_CONTINUE 0 #define WM_HANDLER_BREAK 1 +#define WM_HANDLER_HANDLED 2 +#define WM_HANDLER_MODAL 4 /* MODAL|BREAK means unhandled */ struct ScrArea; struct ARegion; diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index f8bf84a14fb..7f9928262c3 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -70,6 +70,8 @@ float texture_value_blend(float tex, float out, float fact, float facg, int blen void texture_rgb_blend(float *in, float *tex, float *out, float fact, float facg, int blendtype){} char stipple_quarttone[1]; //GLubyte stipple_quarttone[128] double elbeemEstimateMemreq(int res, float sx, float sy, float sz, int refine, char *retstr) {return 0.0f;} +struct Render *RE_NewRender(const char *name){return (struct Render*) NULL;} +void RE_BlenderFrame(struct Render *re, struct Scene *scene, int frame){} /* rna */ void WM_menutype_free(void){} @@ -82,13 +84,16 @@ void WM_jobs_stop_all(struct wmWindowManager *wm){} void WM_event_add_notifier(const struct bContext *C, unsigned int type, void *reference){} void ED_armature_bone_rename(struct bArmature *arm, char *oldnamep, char *newnamep){} +void ED_armature_edit_bone_remove(struct bArmature *arm, struct EditBone *exBone){} void object_test_constraints (struct Object *owner){} void ED_object_parent(struct Object *ob, struct Object *par, int type, const char *substr){} void ED_object_constraint_set_active(struct Object *ob, struct bConstraint *con){} void ED_node_composit_default(struct Scene *sce){} struct EditBone *ED_armature_bone_get_mirrored(struct ListBase *edbo, struct EditBone *ebo){return (struct EditBone *) NULL;} +struct EditBone *ED_armature_edit_bone_add(struct bArmature *arm, char *name){return (struct EditBone*) NULL;} struct ListBase *get_active_constraints (struct Object *ob){return (struct ListBase *) NULL;} +struct ListBase *get_constraint_lb(struct Object *ob, struct bConstraint *con, struct bPoseChannel **pchan_r){return (struct ListBase *) NULL;} int ED_pose_channel_in_IK_chain(struct Object *ob, struct bPoseChannel *pchan){return 0;} int ED_space_image_show_uvedit(struct SpaceImage *sima, struct Object *obedit){return 0;} @@ -127,7 +132,7 @@ void ED_node_shader_default(struct Material *ma){} void ED_screen_animation_timer_update(struct bContext *C, int redraws){} void ED_base_object_select(struct Base *base, short mode){} int ED_object_modifier_remove(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md){return 0;} -int ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, int type){return 0;} +int ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, char *name, int type){return 0;} void ED_object_enter_editmode(struct bContext *C, int flag){} void ED_object_exit_editmode(struct bContext *C, int flag){} int uiLayoutGetActive(struct uiLayout *layout){return 0;} @@ -177,6 +182,7 @@ void uiItemStringO(struct uiLayout *layout, char *name, int icon, char *opname, void uiItemL(struct uiLayout *layout, char *name, int icon){} void uiItemM(struct uiLayout *layout, struct bContext *C, char *name, int icon, char *menuname){} void uiItemS(struct uiLayout *layout){} +void uiItemFullR(struct uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int flag){} void uiLayoutSetContextPointer(struct uiLayout *layout, char *name, struct PointerRNA *ptr){} /* rna template */ @@ -224,11 +230,14 @@ int WM_operator_poll(struct bContext *C, struct wmOperatorType *ot){return 0;} int WM_operator_props_popup(struct bContext *C, struct wmOperator *op, struct wmEvent *event){return 0;} void WM_operator_properties_free(struct PointerRNA *ptr){} void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring){} +void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot){} void WM_operatortype_append_ptr(void (*opfunc)(struct wmOperatorType*, void*), void *userdata){} void WM_operator_bl_idname(char *to, const char *from){} void WM_operator_py_idname(char *to, const char *from){} short insert_keyframe (struct ID *id, struct bAction *act, const char group[], const char rna_path[], int array_index, float cfra, short flag){return 0;} char *WM_operator_pystring(struct bContext *C, struct wmOperatorType *ot, struct PointerRNA *opptr, int all_args){return NULL;} +struct wmKeyMapItem *WM_modalkeymap_add_item(struct wmKeyMap *km, int type, int val, int modifier, int keymodifier, int value){return NULL;} +struct wmKeyMap *WM_modalkeymap_add(struct wmKeyConfig *keyconf, char *idname, EnumPropertyItem *items){return NULL;} /* intern/decimation */ int LOD_FreeDecimationData(struct LOD_Decimation_Info *info){return 0;} @@ -239,9 +248,10 @@ int LOD_LoadMesh(struct LOD_Decimation_Info *info){return 0;} /* smoke */ void lzo1x_1_compress(void) {return;} void LzmaCompress(void) { return; } -void smoke_export(void) {return;} void lzo1x_decompress(void) {return;} void LzmaUncompress(void) {return;} +/* smoke is included anyway +void smoke_export(void) {return;} void smoke_init(void) {return;} void smoke_turbulence_init(void) {return;} void smoke_turbulence_initBlenderRNA(void) {return;} @@ -258,6 +268,7 @@ void smoke_get_velocity_z(void) {return;} void smoke_get_obstacle(void) {return;} void smoke_get_index(void) {return;} void smoke_step(void) {return;} +*/ char blender_path(){return NULL;} diff --git a/source/creator/creator.c b/source/creator/creator.c index 10674d830ba..3a9ee9859e8 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -278,7 +278,7 @@ int main(int argc, char **argv) { SYS_SystemHandle syshandle; bContext *C= CTX_create(); - int a, i, stax, stay, sizx, sizy /*XXX, scr_init = 0*/; + int a, i, stax, stay, sizx, sizy /*XXX, scr_init = 0*/, file_loaded= 0; #ifdef WITH_BINRELOC br_init( NULL ); @@ -880,6 +880,8 @@ int main(int argc, char **argv) a file - this should do everything a 'load file' does */ WM_read_file(C, filename, NULL); } + + file_loaded = 1; } } @@ -888,9 +890,12 @@ int main(int argc, char **argv) WM_exit(C); } + if(!G.background && !file_loaded) + WM_init_splash(C); WM_main(C); - + + /*XXX if (scr_init==0) { main_init_screen(); } diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp index c171ba89683..31616fdec15 100644 --- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp +++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp @@ -89,11 +89,11 @@ #include "BKE_global.h" #include "BKE_object.h" #include "BKE_scene.h" -#include "BL_SkinMeshObject.h" #include "BL_ModifierDeformer.h" #include "BL_ShapeDeformer.h" #include "BL_SkinDeformer.h" #include "BL_MeshDeformer.h" +#include "KX_SoftBodyDeformer.h" //#include "BL_ArmatureController.h" #include "BlenderWorldInfo.h" @@ -720,7 +720,6 @@ bool ConvertMaterial( RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene, KX_BlenderSceneConverter *converter) { RAS_MeshObject *meshobj; - bool skinMesh = false; int lightlayer = blenderobj ? blenderobj->lay:(1<<20)-1; // all layers if no object. if ((meshobj = converter->FindGameMesh(mesh/*, ob->lay*/)) != NULL) @@ -743,14 +742,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene, tangent = (float(*)[3])dm->getFaceDataArray(dm, CD_TANGENT); } - // Determine if we need to make a skinned mesh - if (blenderobj && (mesh->dvert || mesh->key || ((blenderobj->gameflag & OB_SOFT_BODY) != 0) || BL_ModifierDeformer::HasCompatibleDeformer(blenderobj))) - { - meshobj = new BL_SkinMeshObject(mesh); - skinMesh = true; - } - else - meshobj = new RAS_MeshObject(mesh); + meshobj = new RAS_MeshObject(mesh); // Extract avaiable layers MTF_localLayer *layers = new MTF_localLayer[MAX_MTFACE]; @@ -877,7 +869,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene, if (kx_blmat == NULL) kx_blmat = new KX_BlenderMaterial(); - kx_blmat->Initialize(scene, bl_mat, skinMesh); + kx_blmat->Initialize(scene, bl_mat); polymat = static_cast<RAS_IPolyMaterial*>(kx_blmat); } else { @@ -1466,7 +1458,9 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj, objprop.m_soft_kAHR= blenderobject->bsoft->kAHR; /* Anchors hardness [0,1] */ objprop.m_soft_collisionflags= blenderobject->bsoft->collisionflags; /* Vertex/Face or Signed Distance Field(SDF) or Clusters, Soft versus Soft or Rigid */ objprop.m_soft_numclusteriterations= blenderobject->bsoft->numclusteriterations; /* number of iterations to refine collision clusters*/ - objprop.m_soft_welding = blenderobject->bsoft->welding; /* welding */ + //objprop.m_soft_welding = blenderobject->bsoft->welding; /* welding */ + /* disable welding: it doesn't bring any additional stability and it breaks the relation between soft body collision shape and graphic mesh */ + objprop.m_soft_welding = 0.f; objprop.m_margin = blenderobject->bsoft->margin; objprop.m_contactProcessingThreshold = 0.f; } else @@ -1736,30 +1730,34 @@ static KX_GameObject *gameobject_from_blenderobject( bool bHasDvert = mesh->dvert != NULL && ob->defbase.first; bool bHasArmature = (ob->parent && ob->parent->type == OB_ARMATURE && ob->partype==PARSKEL && bHasDvert); bool bHasModifier = BL_ModifierDeformer::HasCompatibleDeformer(ob); + bool bHasSoftBody = (!ob->parent && (ob->gameflag & OB_SOFT_BODY)); if (bHasModifier) { BL_ModifierDeformer *dcont = new BL_ModifierDeformer((BL_DeformableGameObject *)gameobj, - kxscene->GetBlenderScene(), ob, (BL_SkinMeshObject *)meshobj); + kxscene->GetBlenderScene(), ob, meshobj); ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont); if (bHasShapeKey && bHasArmature) dcont->LoadShapeDrivers(ob->parent); } else if (bHasShapeKey) { // not that we can have shape keys without dvert! BL_ShapeDeformer *dcont = new BL_ShapeDeformer((BL_DeformableGameObject*)gameobj, - ob, (BL_SkinMeshObject*)meshobj); + ob, meshobj); ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont); if (bHasArmature) dcont->LoadShapeDrivers(ob->parent); } else if (bHasArmature) { BL_SkinDeformer *dcont = new BL_SkinDeformer((BL_DeformableGameObject*)gameobj, - ob, (BL_SkinMeshObject*)meshobj); + ob, meshobj); ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont); } else if (bHasDvert) { // this case correspond to a mesh that can potentially deform but not with the // object to which it is attached for the moment. A skin mesh was created in // BL_ConvertMesh() so must create a deformer too! BL_MeshDeformer *dcont = new BL_MeshDeformer((BL_DeformableGameObject*)gameobj, - ob, (BL_SkinMeshObject*)meshobj); + ob, meshobj); + ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont); + } else if (bHasSoftBody) { + KX_SoftBodyDeformer *dcont = new KX_SoftBodyDeformer(meshobj, (BL_DeformableGameObject*)gameobj); ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont); } diff --git a/source/gameengine/Converter/BL_MeshDeformer.cpp b/source/gameengine/Converter/BL_MeshDeformer.cpp index 0abc344a844..516100394f6 100644 --- a/source/gameengine/Converter/BL_MeshDeformer.cpp +++ b/source/gameengine/Converter/BL_MeshDeformer.cpp @@ -41,7 +41,7 @@ #include "RAS_IPolygonMaterial.h" #include "BL_DeformableGameObject.h" #include "BL_MeshDeformer.h" -#include "BL_SkinMeshObject.h" +#include "RAS_MeshObject.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" diff --git a/source/gameengine/Converter/BL_MeshDeformer.h b/source/gameengine/Converter/BL_MeshDeformer.h index 1749d438d21..0a8c34992e2 100644 --- a/source/gameengine/Converter/BL_MeshDeformer.h +++ b/source/gameengine/Converter/BL_MeshDeformer.h @@ -50,7 +50,7 @@ public: virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map); BL_MeshDeformer(BL_DeformableGameObject *gameobj, struct Object* obj, - class BL_SkinMeshObject *meshobj ): + class RAS_MeshObject *meshobj ): m_pMeshObject(meshobj), m_bmesh((struct Mesh*)(obj->data)), m_transverts(0), @@ -73,7 +73,7 @@ public: // virtual void InitDeform(double time){}; protected: - class BL_SkinMeshObject* m_pMeshObject; + class RAS_MeshObject* m_pMeshObject; struct Mesh* m_bmesh; // this is so m_transverts doesn't need to be converted diff --git a/source/gameengine/Converter/BL_ModifierDeformer.cpp b/source/gameengine/Converter/BL_ModifierDeformer.cpp index 0cdca74fea5..dfdc53acdf9 100644 --- a/source/gameengine/Converter/BL_ModifierDeformer.cpp +++ b/source/gameengine/Converter/BL_ModifierDeformer.cpp @@ -36,7 +36,7 @@ #include "GEN_Map.h" #include "STR_HashedString.h" #include "RAS_IPolygonMaterial.h" -#include "BL_SkinMeshObject.h" +#include "RAS_MeshObject.h" #include "PHY_IGraphicController.h" //#include "BL_ArmatureController.h" diff --git a/source/gameengine/Converter/BL_ModifierDeformer.h b/source/gameengine/Converter/BL_ModifierDeformer.h index 5cc84c7d1e4..ef3a074630f 100644 --- a/source/gameengine/Converter/BL_ModifierDeformer.h +++ b/source/gameengine/Converter/BL_ModifierDeformer.h @@ -50,7 +50,7 @@ public: BL_ModifierDeformer(BL_DeformableGameObject *gameobj, Scene *scene, Object *bmeshobj, - BL_SkinMeshObject *mesh) + RAS_MeshObject *mesh) : BL_ShapeDeformer(gameobj,bmeshobj, mesh), m_lastModifierUpdate(-1), @@ -65,7 +65,7 @@ public: struct Scene *scene, struct Object *bmeshobj_old, struct Object *bmeshobj_new, - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, bool release_object, BL_ArmatureObject* arma = NULL) : diff --git a/source/gameengine/Converter/BL_ShapeDeformer.cpp b/source/gameengine/Converter/BL_ShapeDeformer.cpp index 9b6d3f61705..c1761637d4e 100644 --- a/source/gameengine/Converter/BL_ShapeDeformer.cpp +++ b/source/gameengine/Converter/BL_ShapeDeformer.cpp @@ -36,7 +36,7 @@ #include "GEN_Map.h" #include "STR_HashedString.h" #include "RAS_IPolygonMaterial.h" -#include "BL_SkinMeshObject.h" +#include "RAS_MeshObject.h" //#include "BL_ArmatureController.h" #include "DNA_armature_types.h" diff --git a/source/gameengine/Converter/BL_ShapeDeformer.h b/source/gameengine/Converter/BL_ShapeDeformer.h index ca3770d4006..46db0f71f6c 100644 --- a/source/gameengine/Converter/BL_ShapeDeformer.h +++ b/source/gameengine/Converter/BL_ShapeDeformer.h @@ -45,7 +45,7 @@ class BL_ShapeDeformer : public BL_SkinDeformer public: BL_ShapeDeformer(BL_DeformableGameObject *gameobj, Object *bmeshobj, - BL_SkinMeshObject *mesh) + RAS_MeshObject *mesh) : BL_SkinDeformer(gameobj,bmeshobj, mesh), m_lastShapeUpdate(-1) @@ -56,7 +56,7 @@ public: BL_ShapeDeformer(BL_DeformableGameObject *gameobj, struct Object *bmeshobj_old, struct Object *bmeshobj_new, - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, bool release_object, bool recalc_normal, BL_ArmatureObject* arma = NULL) diff --git a/source/gameengine/Converter/BL_SkinDeformer.cpp b/source/gameengine/Converter/BL_SkinDeformer.cpp index ecc45b2da1a..ea7242b0225 100644 --- a/source/gameengine/Converter/BL_SkinDeformer.cpp +++ b/source/gameengine/Converter/BL_SkinDeformer.cpp @@ -35,7 +35,7 @@ #include "GEN_Map.h" #include "STR_HashedString.h" #include "RAS_IPolygonMaterial.h" -#include "BL_SkinMeshObject.h" +#include "RAS_MeshObject.h" //#include "BL_ArmatureController.h" #include "DNA_armature_types.h" @@ -59,7 +59,7 @@ extern "C"{ BL_SkinDeformer::BL_SkinDeformer(BL_DeformableGameObject *gameobj, struct Object *bmeshobj, - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, BL_ArmatureObject* arma) : // BL_MeshDeformer(gameobj, bmeshobj, mesh), @@ -77,7 +77,7 @@ BL_SkinDeformer::BL_SkinDeformer( BL_DeformableGameObject *gameobj, struct Object *bmeshobj_old, // Blender object that owns the new mesh struct Object *bmeshobj_new, // Blender object that owns the original mesh - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, bool release_object, bool recalc_normal, BL_ArmatureObject* arma) : diff --git a/source/gameengine/Converter/BL_SkinDeformer.h b/source/gameengine/Converter/BL_SkinDeformer.h index 9c6f5db2b95..28f2d0bf644 100644 --- a/source/gameengine/Converter/BL_SkinDeformer.h +++ b/source/gameengine/Converter/BL_SkinDeformer.h @@ -55,14 +55,14 @@ public: BL_SkinDeformer(BL_DeformableGameObject *gameobj, struct Object *bmeshobj, - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, BL_ArmatureObject* arma = NULL); /* this second constructor is needed for making a mesh deformable on the fly. */ BL_SkinDeformer(BL_DeformableGameObject *gameobj, struct Object *bmeshobj_old, struct Object *bmeshobj_new, - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, bool release_object, bool recalc_normal, BL_ArmatureObject* arma = NULL); diff --git a/source/gameengine/Converter/BL_SkinMeshObject.cpp b/source/gameengine/Converter/BL_SkinMeshObject.cpp deleted file mode 100644 index 4eb01df410b..00000000000 --- a/source/gameengine/Converter/BL_SkinMeshObject.cpp +++ /dev/null @@ -1,156 +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 ***** - * Deformer that supports armature skinning - */ - -#ifdef WIN32 -#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning -#endif //WIN32 - -#include "MEM_guardedalloc.h" - -#include "DNA_key_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" - -#include "RAS_BucketManager.h" -#include "RAS_IPolygonMaterial.h" - -#include "KX_GameObject.h" - -#include "BL_SkinMeshObject.h" -#include "BL_DeformableGameObject.h" - -BL_SkinMeshObject::BL_SkinMeshObject(Mesh* mesh) - : RAS_MeshObject (mesh) -{ - m_bDeformed = true; - - if (m_mesh && m_mesh->key) - { - KeyBlock *kb; - int count=0; - // initialize weight cache for shape objects - // count how many keys in this mesh - for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) - count++; - m_cacheWeightIndex.resize(count,-1); - } -} - -BL_SkinMeshObject::~BL_SkinMeshObject() -{ - if (m_mesh && m_mesh->key) - { - KeyBlock *kb; - // remove the weight cache to avoid memory leak - for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) { - if(kb->weights) - MEM_freeN(kb->weights); - kb->weights= NULL; - } - } -} - -void BL_SkinMeshObject::UpdateBuckets(void* clientobj,double* oglmatrix,bool useObjectColor,const MT_Vector4& rgbavec, bool visible, bool culled) -{ - list<RAS_MeshMaterial>::iterator it; - list<RAS_MeshSlot*>::iterator sit; - - for(it = m_materials.begin();it!=m_materials.end();++it) { - if(!it->m_slots[clientobj]) - continue; - - RAS_MeshSlot *slot = *it->m_slots[clientobj]; - slot->SetDeformer(((BL_DeformableGameObject*)clientobj)->GetDeformer()); - } - - RAS_MeshObject::UpdateBuckets(clientobj, oglmatrix, useObjectColor, rgbavec, visible, culled); -} - -static int get_def_index(Object* ob, const char* vgroup) -{ - bDeformGroup *curdef; - int index = 0; - - for (curdef = (bDeformGroup*)ob->defbase.first; curdef; curdef=(bDeformGroup*)curdef->next, index++) - if (!strcmp(curdef->name, vgroup)) - return index; - - return -1; -} - -void BL_SkinMeshObject::CheckWeightCache(Object* obj) -{ - KeyBlock *kb; - int kbindex, defindex; - MDeformVert *dvert= NULL; - int totvert, i, j; - float *weights; - - if (!m_mesh->key) - return; - - for(kbindex=0, kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next, kbindex++) - { - // first check the cases where the weight must be cleared - if (kb->vgroup[0] == 0 || - m_mesh->dvert == NULL || - (defindex = get_def_index(obj, kb->vgroup)) == -1) { - if (kb->weights) { - MEM_freeN(kb->weights); - kb->weights = NULL; - } - m_cacheWeightIndex[kbindex] = -1; - } else if (m_cacheWeightIndex[kbindex] != defindex) { - // a weight array is required but the cache is not matching - if (kb->weights) { - MEM_freeN(kb->weights); - kb->weights = NULL; - } - - dvert= m_mesh->dvert; - totvert= m_mesh->totvert; - - weights= (float*)MEM_callocN(totvert*sizeof(float), "weights"); - - for (i=0; i < totvert; i++, dvert++) { - for(j=0; j<dvert->totweight; j++) { - if (dvert->dw[j].def_nr == defindex) { - weights[i]= dvert->dw[j].weight; - break; - } - } - } - kb->weights = weights; - m_cacheWeightIndex[kbindex] = defindex; - } - } -} - - diff --git a/source/gameengine/Converter/BL_SkinMeshObject.h b/source/gameengine/Converter/BL_SkinMeshObject.h deleted file mode 100644 index 838c6c3cb95..00000000000 --- a/source/gameengine/Converter/BL_SkinMeshObject.h +++ /dev/null @@ -1,67 +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 __BL_SKINMESHOBJECT -#define __BL_SKINMESHOBJECT - -#ifdef WIN32 -#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning -#endif //WIN32 - -#include "RAS_MeshObject.h" -#include "RAS_Deformer.h" -#include "RAS_IPolygonMaterial.h" - -#include "BL_MeshDeformer.h" - -class BL_SkinMeshObject : public RAS_MeshObject -{ -protected: - vector<int> m_cacheWeightIndex; - -public: - BL_SkinMeshObject(Mesh* mesh); - ~BL_SkinMeshObject(); - - void UpdateBuckets(void* clientobj, double* oglmatrix, - bool useObjectColor, const MT_Vector4& rgbavec, bool visible, bool culled); - - // for shape keys, - void CheckWeightCache(struct Object* obj); - - -#ifdef WITH_CXX_GUARDEDALLOC -public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:BL_SkinMeshObject"); } - void operator delete( void *mem ) { MEM_freeN(mem); } -#endif -}; - -#endif - diff --git a/source/gameengine/Converter/KX_SoftBodyDeformer.cpp b/source/gameengine/Converter/KX_SoftBodyDeformer.cpp new file mode 100644 index 00000000000..bee8751548a --- /dev/null +++ b/source/gameengine/Converter/KX_SoftBodyDeformer.cpp @@ -0,0 +1,120 @@ +/** + * $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 ***** + */ + +#ifdef WIN32 +#pragma warning (disable : 4786) +#endif //WIN32 + +#include "MT_assert.h" + +#include "KX_ConvertPhysicsObject.h" +#include "KX_SoftBodyDeformer.h" +#include "RAS_MeshObject.h" +#include "GEN_Map.h" +#include "GEN_HashedPtr.h" + +#ifdef USE_BULLET + +#include "CcdPhysicsEnvironment.h" +#include "CcdPhysicsController.h" +#include "BulletSoftBody/btSoftBody.h" + +#include "KX_BulletPhysicsController.h" +#include "btBulletDynamicsCommon.h" + +void KX_SoftBodyDeformer::Relink(GEN_Map<class GEN_HashedPtr, void*>*map) +{ + void **h_obj = (*map)[m_gameobj]; + + if (h_obj) { + m_gameobj = (BL_DeformableGameObject*)(*h_obj); + m_pMeshObject = m_gameobj->GetMesh(0); + } else { + m_gameobj = NULL; + m_pMeshObject = NULL; + } +} + +bool KX_SoftBodyDeformer::Apply(class RAS_IPolyMaterial *polymat) +{ + KX_BulletPhysicsController* ctrl = (KX_BulletPhysicsController*) m_gameobj->GetPhysicsController(); + if (!ctrl) + return false; + + btSoftBody* softBody= ctrl->GetSoftBody(); + if (!softBody) + return false; + + //printf("apply\n"); + RAS_MeshSlot::iterator it; + RAS_MeshMaterial *mmat; + RAS_MeshSlot *slot; + size_t i; + + // update the vertex in m_transverts + Update(); + + // The vertex cache can only be updated for this deformer: + // Duplicated objects with more than one ploymaterial (=multiple mesh slot per object) + // share the same mesh (=the same cache). As the rendering is done per polymaterial + // cycling through the objects, the entire mesh cache cannot be updated in one shot. + mmat = m_pMeshObject->GetMeshMaterial(polymat); + if(!mmat->m_slots[(void*)m_gameobj]) + return true; + + slot = *mmat->m_slots[(void*)m_gameobj]; + + // for each array + for(slot->begin(it); !slot->end(it); slot->next(it)) + { + btSoftBody::tNodeArray& nodes(softBody->m_nodes); + + int index = 0; + for(i=it.startvertex; i<it.endvertex; i++,index++) { + RAS_TexVert& v = it.vertex[i]; + btAssert(v.getSoftBodyIndex() >= 0); + + MT_Point3 pt ( + nodes[v.getSoftBodyIndex()].m_x.getX(), + nodes[v.getSoftBodyIndex()].m_x.getY(), + nodes[v.getSoftBodyIndex()].m_x.getZ()); + v.SetXYZ(pt); + + MT_Vector3 normal ( + nodes[v.getSoftBodyIndex()].m_n.getX(), + nodes[v.getSoftBodyIndex()].m_n.getY(), + nodes[v.getSoftBodyIndex()].m_n.getZ()); + v.SetNormal(normal); + + } + } + return true; +} + +#endif diff --git a/source/gameengine/Converter/KX_SoftBodyDeformer.h b/source/gameengine/Converter/KX_SoftBodyDeformer.h new file mode 100644 index 00000000000..b55b2a745c0 --- /dev/null +++ b/source/gameengine/Converter/KX_SoftBodyDeformer.h @@ -0,0 +1,102 @@ +/** + * $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 KX_SOFTBODYDEFORMER +#define KX_SOFTBODYDEFORMER + +#ifdef WIN32 +#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning +#endif //WIN32 + +#include "RAS_Deformer.h" +#include "BL_DeformableGameObject.h" +#include <vector> + + +class KX_SoftBodyDeformer : public RAS_Deformer +{ + class RAS_MeshObject* m_pMeshObject; + class BL_DeformableGameObject* m_gameobj; + +public: + KX_SoftBodyDeformer(RAS_MeshObject* pMeshObject,BL_DeformableGameObject* gameobj) + :m_pMeshObject(pMeshObject), + m_gameobj(gameobj) + { + //printf("KX_SoftBodyDeformer\n"); + }; + + virtual ~KX_SoftBodyDeformer() + { + //printf("~KX_SoftBodyDeformer\n"); + }; + virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map); + virtual bool Apply(class RAS_IPolyMaterial *polymat); + virtual bool Update(void) + { + //printf("update\n"); + m_bDynamic = true; + return true;//?? + } + virtual bool UpdateBuckets(void) + { + // this is to update the mesh slots outside the rasterizer, + // no need to do it for this deformer, it's done in any case in Apply() + return false; + } + + virtual RAS_Deformer *GetReplica() + { + KX_SoftBodyDeformer* deformer = new KX_SoftBodyDeformer(*this); + deformer->ProcessReplica(); + return deformer; + } + virtual void ProcessReplica() + { + // we have two pointers to deal with but we cannot do it now, will be done in Relink + m_bDynamic = false; + } + virtual bool SkipVertexTransform() + { + return true; + } + +protected: + //class RAS_MeshObject *m_pMesh; + +#ifdef WITH_CXX_GUARDEDALLOC +public: + void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:BL_ShapeDeformer"); } + void operator delete( void *mem ) { MEM_freeN(mem); } +#endif +}; + + +#endif + diff --git a/source/gameengine/GameLogic/SCA_PythonController.cpp b/source/gameengine/GameLogic/SCA_PythonController.cpp index ac3e0434d20..aeebce6c7d7 100644 --- a/source/gameengine/GameLogic/SCA_PythonController.cpp +++ b/source/gameengine/GameLogic/SCA_PythonController.cpp @@ -465,7 +465,8 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr) { /* clear after PyErrPrint - seems it can be using * something in this dictionary and crash? */ - PyDict_Clear(excdict); + // This doesn't appear to be needed anymore + //PyDict_Clear(excdict); Py_DECREF(excdict); } diff --git a/source/gameengine/GamePlayer/common/windows/GPW_Engine.cpp b/source/gameengine/GamePlayer/common/windows/GPW_Engine.cpp index 71f40d03eb3..0002e538947 100644 --- a/source/gameengine/GamePlayer/common/windows/GPW_Engine.cpp +++ b/source/gameengine/GamePlayer/common/windows/GPW_Engine.cpp @@ -40,7 +40,6 @@ #include "GPW_KeyboardDevice.h" #include "GPW_System.h" -#include "SND_DeviceManager.h" #include "NG_NetworkScene.h" #include "NG_LoopBackNetworkDeviceInterface.h" @@ -64,9 +63,6 @@ GPW_Engine::~GPW_Engine() bool GPW_Engine::Initialize(HDC hdc, int width, int height) { - SND_DeviceManager::Subscribe(); - m_audiodevice = SND_DeviceManager::Instance(); - m_keyboarddev = new GPW_KeyboardDevice(); m_mousedev = new GPC_MouseDevice(); diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp index fb2e1c72a85..8d9a59b1871 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp @@ -688,19 +688,19 @@ int main(int argc, char** argv) if ((!fullScreenParFound) && (!windowParFound)) { // Only use file settings when command line did not override - if (scene->r.fullscreen) { + if (scene->gm.fullscreen) { //printf("fullscreen option found in Blender file\n"); fullScreen = true; - fullScreenWidth= scene->r.xplay; - fullScreenHeight= scene->r.yplay; - fullScreenFrequency= scene->r.freqplay; - fullScreenBpp = scene->r.depth; + fullScreenWidth= scene->gm.xplay; + fullScreenHeight= scene->gm.yplay; + fullScreenFrequency= scene->gm.freqplay; + fullScreenBpp = scene->gm.depth; } else { fullScreen = false; - windowWidth = scene->r.xplay; - windowHeight = scene->r.yplay; + windowWidth = scene->gm.xplay; + windowHeight = scene->gm.yplay; } } @@ -708,9 +708,11 @@ int main(int argc, char** argv) // Check whether the game should be displayed in stereo if (!stereoParFound) { - stereomode = (RAS_IRasterizer::StereoMode) scene->r.stereomode; - if (stereomode == RAS_IRasterizer::RAS_STEREO_QUADBUFFERED) - stereoWindow = true; + if(scene->gm.stereoflag == STEREO_ENABLED){ + stereomode = (RAS_IRasterizer::StereoMode) scene->gm.stereomode; + if (stereomode != RAS_IRasterizer::RAS_STEREO_QUADBUFFERED) + stereoWindow = true; + } } // GPG_Application app (system, maggie, startscenename); diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp index f5086ca89ac..bab7c54a310 100644 --- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp +++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp @@ -58,8 +58,7 @@ KX_BlenderMaterial::KX_BlenderMaterial() void KX_BlenderMaterial::Initialize( KX_Scene *scene, - BL_Material *data, - bool skin) + BL_Material *data) { RAS_IPolyMaterial::Initialize( data->texname[0], diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h index 088d17ea741..c5f5e23c6e7 100644 --- a/source/gameengine/Ketsji/KX_BlenderMaterial.h +++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h @@ -33,8 +33,7 @@ public: KX_BlenderMaterial(); void Initialize( class KX_Scene* scene, - BL_Material* mat, - bool skin + BL_Material* mat ); virtual ~KX_BlenderMaterial(); diff --git a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp index 04e82d21cf4..bae32c74d1a 100644 --- a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp +++ b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp @@ -32,12 +32,12 @@ #include "MT_assert.h" +#include "KX_SoftBodyDeformer.h" #include "KX_ConvertPhysicsObject.h" #include "BL_DeformableGameObject.h" #include "RAS_MeshObject.h" #include "KX_Scene.h" #include "SYS_System.h" -#include "BL_SkinMeshObject.h" #include "BulletSoftBody/btSoftBody.h" #include "PHY_Pro.h" //todo cleanup @@ -79,126 +79,6 @@ extern "C"{ #endif //WIN32 - - class KX_SoftBodyDeformer : public RAS_Deformer - { - class RAS_MeshObject* m_pMeshObject; - class BL_DeformableGameObject* m_gameobj; - - public: - KX_SoftBodyDeformer(RAS_MeshObject* pMeshObject,BL_DeformableGameObject* gameobj) - :m_pMeshObject(pMeshObject), - m_gameobj(gameobj) - { - //printf("KX_SoftBodyDeformer\n"); - }; - - virtual ~KX_SoftBodyDeformer() - { - //printf("~KX_SoftBodyDeformer\n"); - }; - virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map) - { - void **h_obj = (*map)[m_gameobj]; - - if (h_obj) { - m_gameobj = (BL_DeformableGameObject*)(*h_obj); - m_pMeshObject = m_gameobj->GetMesh(0); - } else { - m_gameobj = NULL; - m_pMeshObject = NULL; - } - } - virtual bool Apply(class RAS_IPolyMaterial *polymat) - { - KX_BulletPhysicsController* ctrl = (KX_BulletPhysicsController*) m_gameobj->GetPhysicsController(); - if (!ctrl) - return false; - - btSoftBody* softBody= ctrl->GetSoftBody(); - if (!softBody) - return false; - - //printf("apply\n"); - RAS_MeshSlot::iterator it; - RAS_MeshMaterial *mmat; - RAS_MeshSlot *slot; - size_t i; - - // update the vertex in m_transverts - Update(); - - - - // The vertex cache can only be updated for this deformer: - // Duplicated objects with more than one ploymaterial (=multiple mesh slot per object) - // share the same mesh (=the same cache). As the rendering is done per polymaterial - // cycling through the objects, the entire mesh cache cannot be updated in one shot. - mmat = m_pMeshObject->GetMeshMaterial(polymat); - if(!mmat->m_slots[(void*)m_gameobj]) - return true; - - slot = *mmat->m_slots[(void*)m_gameobj]; - - // for each array - for(slot->begin(it); !slot->end(it); slot->next(it)) - { - btSoftBody::tNodeArray& nodes(softBody->m_nodes); - - int index = 0; - for(i=it.startvertex; i<it.endvertex; i++,index++) { - RAS_TexVert& v = it.vertex[i]; - btAssert(v.getSoftBodyIndex() >= 0); - - MT_Point3 pt ( - nodes[v.getSoftBodyIndex()].m_x.getX(), - nodes[v.getSoftBodyIndex()].m_x.getY(), - nodes[v.getSoftBodyIndex()].m_x.getZ()); - v.SetXYZ(pt); - - MT_Vector3 normal ( - nodes[v.getSoftBodyIndex()].m_n.getX(), - nodes[v.getSoftBodyIndex()].m_n.getY(), - nodes[v.getSoftBodyIndex()].m_n.getZ()); - v.SetNormal(normal); - - } - } - return true; - } - virtual bool Update(void) - { - //printf("update\n"); - m_bDynamic = true; - return true;//?? - } - virtual bool UpdateBuckets(void) - { - // this is to update the mesh slots outside the rasterizer, - // no need to do it for this deformer, it's done in any case in Apply() - return false; - } - - virtual RAS_Deformer *GetReplica() - { - KX_SoftBodyDeformer* deformer = new KX_SoftBodyDeformer(*this); - deformer->ProcessReplica(); - return deformer; - } - virtual void ProcessReplica() - { - // we have two pointers to deal with but we cannot do it now, will be done in Relink - m_bDynamic = false; - } - virtual bool SkipVertexTransform() - { - return true; - } - - protected: - //class RAS_MeshObject *m_pMesh; - }; - // forward declarations @@ -608,7 +488,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj, physicscontroller->SetObject(gameobj->GetSGNode()); - +#if 0 ///test for soft bodies if (objprop->m_softbody && physicscontroller) { @@ -620,6 +500,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj, gameobj->SetDeformer(softbodyDeformer); } } +#endif } @@ -651,7 +532,7 @@ bool KX_ReInstanceBulletShapeFromMesh(KX_GameObject *gameobj, KX_GameObject *fro shapeInfo = spc->GetShapeInfo(); - if(shapeInfo->m_shapeType != PHY_SHAPE_MESH || spc->GetSoftBody()) + if(shapeInfo->m_shapeType != PHY_SHAPE_MESH/* || spc->GetSoftBody()*/) return false; spc->DeleteControllerShape(); diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp index 6800b2aa871..7f8a8e04e2e 100644 --- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp +++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp @@ -1306,7 +1306,13 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam) m_logger->StartLog(tc_rasterizer, m_kxsystem->GetTimeInSeconds(), true); SG_SetActiveStage(SG_STAGE_RENDER); + // Run any pre-drawing python callbacks + scene->RunDrawingCallbacks(scene->GetPreDrawCB()); + scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools); + + // Run any post-drawing python callbacks + scene->RunDrawingCallbacks(scene->GetPostDrawCB()); if (scene->GetPhysicsEnvironment()) scene->GetPhysicsEnvironment()->debugDrawWorld(); diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp index 655c8eedaae..c8c5b33693b 100644 --- a/source/gameengine/Ketsji/KX_Scene.cpp +++ b/source/gameengine/Ketsji/KX_Scene.cpp @@ -53,7 +53,6 @@ #include "SCA_JoystickManager.h" #include "RAS_MeshObject.h" -#include "BL_SkinMeshObject.h" #include "RAS_IRasterizer.h" #include "RAS_BucketManager.h" @@ -83,6 +82,7 @@ #include "BL_ModifierDeformer.h" #include "BL_ShapeDeformer.h" #include "BL_DeformableGameObject.h" +#include "KX_SoftBodyDeformer.h" // to get USE_BULLET! #include "KX_ConvertPhysicsObject.h" @@ -211,6 +211,8 @@ KX_Scene::KX_Scene(class SCA_IInputDevice* keyboarddevice, #ifndef DISABLE_PYTHON m_attr_dict = PyDict_New(); /* new ref */ + m_draw_call_pre = NULL; + m_draw_call_post = NULL; #endif } @@ -264,6 +266,9 @@ KX_Scene::~KX_Scene() #ifndef DISABLE_PYTHON PyDict_Clear(m_attr_dict); Py_DECREF(m_attr_dict); + + Py_XDECREF(m_draw_call_pre); + Py_XDECREF(m_draw_call_post); #endif } @@ -401,6 +406,34 @@ bool KX_Scene::IsClearingZBuffer() return m_isclearingZbuffer; } +void KX_Scene::RunDrawingCallbacks(PyObject* cb_list) +{ + int len; + + if (cb_list && (len=PyList_GET_SIZE(cb_list))) + { + PyObject* args= PyTuple_New(0); // save python creating each call + PyObject* func; + PyObject* ret; + + // Iterate the list and run the callbacks + for (int pos=0; pos < len; pos++) + { + func= PyList_GET_ITEM(cb_list, pos); + ret= PyObject_Call(func, args, NULL); + if (ret==NULL) { + PyErr_Print(); + PyErr_Clear(); + } + else { + Py_DECREF(ret); + } + } + + Py_DECREF(args); + } +} + void KX_Scene::EnableZBufferClearing(bool isclearingZbuffer) { m_isclearingZbuffer = isclearingZbuffer; @@ -1046,7 +1079,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u newobj->SetDeformer(NULL); } - if (mesh->IsDeformed()) /* checks GetMesh() isnt NULL */ + if (mesh->GetMesh()) { // we must create a new deformer but which one? KX_GameObject* parentobj = newobj->GetParent(); @@ -1067,12 +1100,16 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u blendobj->parent->type == OB_ARMATURE && blendobj->partype==PARSKEL && blendmesh->dvert!=NULL; // mesh has vertex group + bool bHasSoftBody = (!parentobj && (blendobj->gameflag & OB_SOFT_BODY)); + bool releaseParent = true; if (oldblendobj==NULL) { - std::cout << "warning: ReplaceMesh() new mesh is not used in an object from the current scene, you will get incorrect behavior" << std::endl; - bHasShapeKey= bHasDvert= bHasArmature=bHasModifier= false; + if (bHasModifier || bHasShapeKey || bHasDvert || bHasArmature) { + std::cout << "warning: ReplaceMesh() new mesh is not used in an object from the current scene, you will get incorrect behavior" << std::endl; + bHasShapeKey= bHasDvert= bHasArmature=bHasModifier= false; + } } if (bHasModifier) @@ -1084,7 +1121,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u newobj, m_blenderScene, oldblendobj, blendobj, - static_cast<BL_SkinMeshObject*>(mesh), + mesh, true, static_cast<BL_ArmatureObject*>( parentobj ) ); @@ -1097,7 +1134,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u newobj, m_blenderScene, oldblendobj, blendobj, - static_cast<BL_SkinMeshObject*>(mesh), + mesh, false, NULL ); @@ -1112,7 +1149,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u shapeDeformer = new BL_ShapeDeformer( newobj, oldblendobj, blendobj, - static_cast<BL_SkinMeshObject*>(mesh), + mesh, true, true, static_cast<BL_ArmatureObject*>( parentobj ) @@ -1125,7 +1162,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u shapeDeformer = new BL_ShapeDeformer( newobj, oldblendobj, blendobj, - static_cast<BL_SkinMeshObject*>(mesh), + mesh, false, true, NULL @@ -1138,7 +1175,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u BL_SkinDeformer* skinDeformer = new BL_SkinDeformer( newobj, oldblendobj, blendobj, - static_cast<BL_SkinMeshObject*>(mesh), + mesh, true, true, static_cast<BL_ArmatureObject*>( parentobj ) @@ -1149,10 +1186,15 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u else if (bHasDvert) { BL_MeshDeformer* meshdeformer = new BL_MeshDeformer( - newobj, oldblendobj, static_cast<BL_SkinMeshObject*>(mesh) + newobj, oldblendobj, mesh ); newobj->SetDeformer(meshdeformer); } + else if (bHasSoftBody) + { + KX_SoftBodyDeformer *softdeformer = new KX_SoftBodyDeformer(mesh, newobj); + newobj->SetDeformer(softdeformer); + } // release parent reference if its not being used if( releaseParent && parentobj) @@ -1997,6 +2039,61 @@ int KX_Scene::pyattr_set_active_camera(void *self_v, const KX_PYATTRIBUTE_DEF *a return PY_SET_ATTR_SUCCESS; } +PyObject* KX_Scene::pyattr_get_drawing_callback_pre(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) +{ + KX_Scene* self = static_cast<KX_Scene*>(self_v); + + if(self->m_draw_call_pre==NULL) + self->m_draw_call_pre= PyList_New(0); + else + Py_INCREF(self->m_draw_call_pre); + return self->m_draw_call_pre; +} + +PyObject* KX_Scene::pyattr_get_drawing_callback_post(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) +{ + KX_Scene* self = static_cast<KX_Scene*>(self_v); + + if(self->m_draw_call_post==NULL) + self->m_draw_call_post= PyList_New(0); + else + Py_INCREF(self->m_draw_call_post); + return self->m_draw_call_post; +} + +int KX_Scene::pyattr_set_drawing_callback_pre(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value) +{ + KX_Scene* self = static_cast<KX_Scene*>(self_v); + + if (!PyList_CheckExact(value)) + { + PyErr_SetString(PyExc_ValueError, "Expected a list"); + return PY_SET_ATTR_FAIL; + } + Py_XDECREF(self->m_draw_call_pre); + + Py_INCREF(value); + self->m_draw_call_pre = value; + + return PY_SET_ATTR_SUCCESS; +} + +int KX_Scene::pyattr_set_drawing_callback_post(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value) +{ + KX_Scene* self = static_cast<KX_Scene*>(self_v); + + if (!PyList_CheckExact(value)) + { + PyErr_SetString(PyExc_ValueError, "Expected a list"); + return PY_SET_ATTR_FAIL; + } + Py_XDECREF(self->m_draw_call_post); + + Py_INCREF(value); + self->m_draw_call_post = value; + + return PY_SET_ATTR_SUCCESS; +} PyAttributeDef KX_Scene::Attributes[] = { KX_PYATTRIBUTE_RO_FUNCTION("name", KX_Scene, pyattr_get_name), @@ -2005,6 +2102,8 @@ PyAttributeDef KX_Scene::Attributes[] = { KX_PYATTRIBUTE_RO_FUNCTION("cameras", KX_Scene, pyattr_get_cameras), KX_PYATTRIBUTE_RO_FUNCTION("lights", KX_Scene, pyattr_get_lights), KX_PYATTRIBUTE_RW_FUNCTION("active_camera", KX_Scene, pyattr_get_active_camera, pyattr_set_active_camera), + KX_PYATTRIBUTE_RW_FUNCTION("pre_draw", KX_Scene, pyattr_get_drawing_callback_pre, pyattr_set_drawing_callback_pre), + KX_PYATTRIBUTE_RW_FUNCTION("post_draw", KX_Scene, pyattr_get_drawing_callback_post, pyattr_set_drawing_callback_post), KX_PYATTRIBUTE_BOOL_RO("suspended", KX_Scene, m_suspend), KX_PYATTRIBUTE_BOOL_RO("activity_culling", KX_Scene, m_activity_culling), KX_PYATTRIBUTE_FLOAT_RW("activity_culling_radius", 0.5f, FLT_MAX, KX_Scene, m_activity_box_radius), diff --git a/source/gameengine/Ketsji/KX_Scene.h b/source/gameengine/Ketsji/KX_Scene.h index 4b01ab39d95..602e919b58d 100644 --- a/source/gameengine/Ketsji/KX_Scene.h +++ b/source/gameengine/Ketsji/KX_Scene.h @@ -95,6 +95,8 @@ class KX_Scene : public PyObjectPlus, public SCA_IScene #ifndef DISABLE_PYTHON PyObject* m_attr_dict; + PyObject* m_draw_call_pre; + PyObject* m_draw_call_post; #endif struct CullingInfo { @@ -102,7 +104,6 @@ class KX_Scene : public PyObjectPlus, public SCA_IScene CullingInfo(int layer) : m_layer(layer) {} }; - protected: RAS_BucketManager* m_bucketmanager; CListValue* m_tempObjectList; @@ -287,6 +288,12 @@ public: void RenderBuckets(const MT_Transform& cameratransform, RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools); + + /** + * Run the registered python drawing functions. + */ + void RunDrawingCallbacks(PyObject* cb_list); + /** * Update all transforms according to the scenegraph. */ @@ -544,6 +551,10 @@ public: static PyObject* pyattr_get_cameras(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef); static PyObject* pyattr_get_active_camera(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef); static int pyattr_set_active_camera(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); + static PyObject* pyattr_get_drawing_callback_pre(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); + static int pyattr_set_drawing_callback_pre(void *selv_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); + static PyObject* pyattr_get_drawing_callback_post(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); + static int pyattr_set_drawing_callback_post(void *selv_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); virtual PyObject* py_repr(void) { return PyUnicode_FromString(GetName().ReadPtr()); } @@ -551,6 +562,8 @@ public: static PyMappingMethods Mapping; static PySequenceMethods Sequence; + PyObject* GetPreDrawCB() { return m_draw_call_pre; }; + PyObject* GetPostDrawCB() { return m_draw_call_post; }; #endif /** diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 69b63affeef..98e67afdd44 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -161,338 +161,265 @@ btSoftBody* CcdPhysicsController::GetSoftBody() #include "BulletSoftBody/btSoftBodyHelpers.h" - -void CcdPhysicsController::CreateRigidbody() +bool CcdPhysicsController::CreateSoftbody() { - - //btTransform trans = GetTransformFromMotionState(m_MotionState); - m_bulletMotionState = new BlenderBulletMotionState(m_MotionState); - - ///either create a btCollisionObject, btRigidBody or btSoftBody - - //create a collision object - int shapeType = m_cci.m_collisionShape ? m_cci.m_collisionShape->getShapeType() : 0; //disable soft body until first sneak preview is ready - if (m_cci.m_bSoft && m_cci.m_collisionShape && - (shapeType == CONVEX_HULL_SHAPE_PROXYTYPE)| - (shapeType == TRIANGLE_MESH_SHAPE_PROXYTYPE) | - (shapeType == SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE)) + if (!m_cci.m_bSoft || !m_cci.m_collisionShape || + (shapeType != CONVEX_HULL_SHAPE_PROXYTYPE)&& + (shapeType != TRIANGLE_MESH_SHAPE_PROXYTYPE) && + (shapeType != SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE)) { - btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor); - rbci.m_linearDamping = m_cci.m_linearDamping; - rbci.m_angularDamping = m_cci.m_angularDamping; - rbci.m_friction = m_cci.m_friction; - rbci.m_restitution = m_cci.m_restitution; - - - - - - - btVector3 p(0,0,0);// = getOrigin(); - - - btSoftRigidDynamicsWorld* softDynaWorld = (btSoftRigidDynamicsWorld*)m_cci.m_physicsEnv->getDynamicsWorld(); - - PHY__Vector3 grav; - grav[0] = softDynaWorld->getGravity().getX(); - grav[1] = softDynaWorld->getGravity().getY(); - grav[2] = softDynaWorld->getGravity().getZ(); - softDynaWorld->getWorldInfo().m_gravity.setValue(grav[0],grav[1],grav[2]); //?? + return false; + } + btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor); + rbci.m_linearDamping = m_cci.m_linearDamping; + rbci.m_angularDamping = m_cci.m_angularDamping; + rbci.m_friction = m_cci.m_friction; + rbci.m_restitution = m_cci.m_restitution; - //btSoftBody* psb=btSoftBodyHelpers::CreateRope(sbi, btVector3(-10,0,i*0.25),btVector3(10,0,i*0.25), 16,1+2); - - btSoftBody* psb = 0; - - if (m_cci.m_collisionShape->getShapeType() == CONVEX_HULL_SHAPE_PROXYTYPE) - { - btConvexHullShape* convexHull = (btConvexHullShape* )m_cci.m_collisionShape; - - //psb = btSoftBodyHelpers::CreateFromConvexHull(sbi,&transformedVertices[0],convexHull->getNumPoints()); - - { - int nvertices = convexHull->getNumPoints(); - const btVector3* vertices = convexHull->getPoints(); - btSoftBodyWorldInfo& worldInfo = softDynaWorld->getWorldInfo(); - - HullDesc hdsc(QF_TRIANGLES,nvertices,vertices); - HullResult hres; - HullLibrary hlib;/*??*/ - hdsc.mMaxVertices=nvertices; - hlib.CreateConvexHull(hdsc,hres); - - psb=new btSoftBody(&worldInfo,(int)hres.mNumOutputVertices, - &hres.m_OutputVertices[0],0); - for(int i=0;i<(int)hres.mNumFaces;++i) - { - const int idx[]={ hres.m_Indices[i*3+0], - hres.m_Indices[i*3+1], - hres.m_Indices[i*3+2]}; - if(idx[0]<idx[1]) psb->appendLink( idx[0],idx[1]); - if(idx[1]<idx[2]) psb->appendLink( idx[1],idx[2]); - if(idx[2]<idx[0]) psb->appendLink( idx[2],idx[0]); - psb->appendFace(idx[0],idx[1],idx[2]); - } - - - - hlib.ReleaseResult(hres); - - - } - + btVector3 p(0,0,0);// = getOrigin(); + //btSoftBody* psb=btSoftBodyHelpers::CreateRope(worldInfo, btVector3(-10,0,i*0.25),btVector3(10,0,i*0.25), 16,1+2); + btSoftBody* psb = 0; + btSoftBodyWorldInfo& worldInfo = m_cci.m_physicsEnv->getDynamicsWorld()->getWorldInfo(); - - - - - } else + if (m_cci.m_collisionShape->getShapeType() == CONVEX_HULL_SHAPE_PROXYTYPE) + { + btConvexHullShape* convexHull = (btConvexHullShape* )m_cci.m_collisionShape; { + int nvertices = convexHull->getNumPoints(); + const btVector3* vertices = convexHull->getPoints(); + + HullDesc hdsc(QF_TRIANGLES,nvertices,vertices); + HullResult hres; + HullLibrary hlib;/*??*/ + hdsc.mMaxVertices=nvertices; + hlib.CreateConvexHull(hdsc,hres); - btSoftBodyWorldInfo& sbi= softDynaWorld->getWorldInfo(); - - if (m_cci.m_collisionShape->getShapeType() ==SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE) - { - btScaledBvhTriangleMeshShape* scaledtrimeshshape = (btScaledBvhTriangleMeshShape*) m_cci.m_collisionShape; - btBvhTriangleMeshShape* trimeshshape = scaledtrimeshshape->getChildShape(); - - ///only deal with meshes that have 1 sub part/component, for now - if (trimeshshape->getMeshInterface()->getNumSubParts()==1) - { - unsigned char* vertexBase; - PHY_ScalarType vertexType; - int numverts; - int vertexstride; - unsigned char* indexbase; - int indexstride; - int numtris; - PHY_ScalarType indexType; - trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); - - psb = btSoftBodyHelpers::CreateFromTriMesh(sbi,(const btScalar*)vertexBase,(const int*)indexbase,numtris); - } - } else + psb=new btSoftBody(&worldInfo,(int)hres.mNumOutputVertices, + &hres.m_OutputVertices[0],0); + for(int i=0;i<(int)hres.mNumFaces;++i) { - btBvhTriangleMeshShape* trimeshshape = (btBvhTriangleMeshShape*) m_cci.m_collisionShape; - ///only deal with meshes that have 1 sub part/component, for now - if (trimeshshape->getMeshInterface()->getNumSubParts()==1) - { - unsigned char* vertexBase; - PHY_ScalarType vertexType; - int numverts; - int vertexstride; - unsigned char* indexbase; - int indexstride; - int numtris; - PHY_ScalarType indexType; - trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); - - psb = btSoftBodyHelpers::CreateFromTriMesh(sbi,(const btScalar*)vertexBase,(const int*)indexbase,numtris); - } - - - //psb = btSoftBodyHelpers::CreateFromTriMesh(sbi,&pts[0].getX(),triangles,numtriangles); + const int idx[]={ hres.m_Indices[i*3+0], + hres.m_Indices[i*3+1], + hres.m_Indices[i*3+2]}; + if(idx[0]<idx[1]) psb->appendLink( idx[0],idx[1]); + if(idx[1]<idx[2]) psb->appendLink( idx[1],idx[2]); + if(idx[2]<idx[0]) psb->appendLink( idx[2],idx[0]); + psb->appendFace(idx[0],idx[1],idx[2]); } - + hlib.ReleaseResult(hres); } - if (m_cci.m_margin > 0.f) + } else + { + if (m_cci.m_collisionShape->getShapeType() ==SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE) { - psb->getCollisionShape()->setMargin(m_cci.m_margin); - psb->updateBounds(); - } - - - m_object = psb; + btScaledBvhTriangleMeshShape* scaledtrimeshshape = (btScaledBvhTriangleMeshShape*) m_cci.m_collisionShape; + btBvhTriangleMeshShape* trimeshshape = scaledtrimeshshape->getChildShape(); - //psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RS;//btSoftBody::fCollision::CL_SS+ btSoftBody::fCollision::CL_RS; - - //psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RS + btSoftBody::fCollision::VF_SS;//CL_SS; - - - //btSoftBody::Material* pm=psb->appendMaterial(); - btSoftBody::Material* pm=psb->m_materials[0]; - pm->m_kLST = m_cci.m_soft_linStiff; - pm->m_kAST = m_cci.m_soft_angStiff; - pm->m_kVST = m_cci.m_soft_volume; - psb->m_cfg.collisions = 0; - - if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_RS) - { - psb->m_cfg.collisions += btSoftBody::fCollision::CL_RS; - } else - { - psb->m_cfg.collisions += btSoftBody::fCollision::SDF_RS; - } - if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_SS) - { - psb->m_cfg.collisions += btSoftBody::fCollision::CL_SS; + ///only deal with meshes that have 1 sub part/component, for now + if (trimeshshape->getMeshInterface()->getNumSubParts()==1) + { + unsigned char* vertexBase; + PHY_ScalarType vertexType; + int numverts; + int vertexstride; + unsigned char* indexbase; + int indexstride; + int numtris; + PHY_ScalarType indexType; + trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); + + psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris); + } } else { - psb->m_cfg.collisions += btSoftBody::fCollision::VF_SS; + btBvhTriangleMeshShape* trimeshshape = (btBvhTriangleMeshShape*) m_cci.m_collisionShape; + ///only deal with meshes that have 1 sub part/component, for now + if (trimeshshape->getMeshInterface()->getNumSubParts()==1) + { + unsigned char* vertexBase; + PHY_ScalarType vertexType; + int numverts; + int vertexstride; + unsigned char* indexbase; + int indexstride; + int numtris; + PHY_ScalarType indexType; + trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); + + psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris); + } } + } + if (m_cci.m_margin > 0.f) + { + psb->getCollisionShape()->setMargin(m_cci.m_margin); + psb->updateBounds(); + } + m_object = psb; + + //btSoftBody::Material* pm=psb->appendMaterial(); + btSoftBody::Material* pm=psb->m_materials[0]; + pm->m_kLST = m_cci.m_soft_linStiff; + pm->m_kAST = m_cci.m_soft_angStiff; + pm->m_kVST = m_cci.m_soft_volume; + psb->m_cfg.collisions = 0; + + if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_RS) + { + psb->m_cfg.collisions += btSoftBody::fCollision::CL_RS; + } else + { + psb->m_cfg.collisions += btSoftBody::fCollision::SDF_RS; + } + if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_SS) + { + psb->m_cfg.collisions += btSoftBody::fCollision::CL_SS; + } else + { + psb->m_cfg.collisions += btSoftBody::fCollision::VF_SS; + } - psb->m_cfg.kSRHR_CL = m_cci.m_soft_kSRHR_CL; /* Soft vs rigid hardness [0,1] (cluster only) */ - psb->m_cfg.kSKHR_CL = m_cci.m_soft_kSKHR_CL; /* Soft vs kinetic hardness [0,1] (cluster only) */ - psb->m_cfg.kSSHR_CL = m_cci.m_soft_kSSHR_CL; /* Soft vs soft hardness [0,1] (cluster only) */ - psb->m_cfg.kSR_SPLT_CL = m_cci.m_soft_kSR_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ - - psb->m_cfg.kSK_SPLT_CL = m_cci.m_soft_kSK_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ - psb->m_cfg.kSS_SPLT_CL = m_cci.m_soft_kSS_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ - psb->m_cfg.kVCF = m_cci.m_soft_kVCF; /* Velocities correction factor (Baumgarte) */ - psb->m_cfg.kDP = m_cci.m_soft_kDP; /* Damping coefficient [0,1] */ - - psb->m_cfg.kDG = m_cci.m_soft_kDG; /* Drag coefficient [0,+inf] */ - psb->m_cfg.kLF = m_cci.m_soft_kLF; /* Lift coefficient [0,+inf] */ - psb->m_cfg.kPR = m_cci.m_soft_kPR; /* Pressure coefficient [-inf,+inf] */ - psb->m_cfg.kVC = m_cci.m_soft_kVC; /* Volume conversation coefficient [0,+inf] */ - psb->m_cfg.kDF = m_cci.m_soft_kDF; /* Dynamic friction coefficient [0,1] */ - psb->m_cfg.kMT = m_cci.m_soft_kMT; /* Pose matching coefficient [0,1] */ - psb->m_cfg.kCHR = m_cci.m_soft_kCHR; /* Rigid contacts hardness [0,1] */ - psb->m_cfg.kKHR = m_cci.m_soft_kKHR; /* Kinetic contacts hardness [0,1] */ + psb->m_cfg.kSRHR_CL = m_cci.m_soft_kSRHR_CL; /* Soft vs rigid hardness [0,1] (cluster only) */ + psb->m_cfg.kSKHR_CL = m_cci.m_soft_kSKHR_CL; /* Soft vs kinetic hardness [0,1] (cluster only) */ + psb->m_cfg.kSSHR_CL = m_cci.m_soft_kSSHR_CL; /* Soft vs soft hardness [0,1] (cluster only) */ + psb->m_cfg.kSR_SPLT_CL = m_cci.m_soft_kSR_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ - psb->m_cfg.kSHR = m_cci.m_soft_kSHR; /* Soft contacts hardness [0,1] */ - psb->m_cfg.kAHR = m_cci.m_soft_kAHR; /* Anchors hardness [0,1] */ + psb->m_cfg.kSK_SPLT_CL = m_cci.m_soft_kSK_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ + psb->m_cfg.kSS_SPLT_CL = m_cci.m_soft_kSS_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ + psb->m_cfg.kVCF = m_cci.m_soft_kVCF; /* Velocities correction factor (Baumgarte) */ + psb->m_cfg.kDP = m_cci.m_soft_kDP; /* Damping coefficient [0,1] */ + psb->m_cfg.kDG = m_cci.m_soft_kDG; /* Drag coefficient [0,+inf] */ + psb->m_cfg.kLF = m_cci.m_soft_kLF; /* Lift coefficient [0,+inf] */ + psb->m_cfg.kPR = m_cci.m_soft_kPR; /* Pressure coefficient [-inf,+inf] */ + psb->m_cfg.kVC = m_cci.m_soft_kVC; /* Volume conversation coefficient [0,+inf] */ + psb->m_cfg.kDF = m_cci.m_soft_kDF; /* Dynamic friction coefficient [0,1] */ + psb->m_cfg.kMT = m_cci.m_soft_kMT; /* Pose matching coefficient [0,1] */ + psb->m_cfg.kCHR = m_cci.m_soft_kCHR; /* Rigid contacts hardness [0,1] */ + psb->m_cfg.kKHR = m_cci.m_soft_kKHR; /* Kinetic contacts hardness [0,1] */ - if (m_cci.m_gamesoftFlag & CCD_BSB_BENDING_CONSTRAINTS)//OB_SB_GOAL) - { - psb->generateBendingConstraints(2,pm); - } + psb->m_cfg.kSHR = m_cci.m_soft_kSHR; /* Soft contacts hardness [0,1] */ + psb->m_cfg.kAHR = m_cci.m_soft_kAHR; /* Anchors hardness [0,1] */ - psb->m_cfg.piterations = m_cci.m_soft_piterations; - psb->m_cfg.viterations = m_cci.m_soft_viterations; - psb->m_cfg.diterations = m_cci.m_soft_diterations; - psb->m_cfg.citerations = m_cci.m_soft_citerations; + if (m_cci.m_gamesoftFlag & CCD_BSB_BENDING_CONSTRAINTS)//OB_SB_GOAL) + { + psb->generateBendingConstraints(2,pm); + } - if (m_cci.m_gamesoftFlag & CCD_BSB_SHAPE_MATCHING)//OB_SB_GOAL) - { - psb->setPose(false,true);// - } else - { - psb->setPose(true,false); - } + psb->m_cfg.piterations = m_cci.m_soft_piterations; + psb->m_cfg.viterations = m_cci.m_soft_viterations; + psb->m_cfg.diterations = m_cci.m_soft_diterations; + psb->m_cfg.citerations = m_cci.m_soft_citerations; + if (m_cci.m_gamesoftFlag & CCD_BSB_SHAPE_MATCHING)//OB_SB_GOAL) + { + psb->setPose(false,true);// + } else + { + psb->setPose(true,false); + } + + psb->randomizeConstraints(); - - psb->randomizeConstraints(); + if (m_cci.m_soft_collisionflags & (CCD_BSB_COL_CL_RS+CCD_BSB_COL_CL_SS)) + { + psb->generateClusters(m_cci.m_soft_numclusteriterations); + } - if (m_cci.m_soft_collisionflags & (CCD_BSB_COL_CL_RS+CCD_BSB_COL_CL_SS)) - { - psb->generateClusters(m_cci.m_soft_numclusteriterations); - } + psb->setTotalMass(m_cci.m_mass); + + psb->setCollisionFlags(0); -// psb->activate(); -// psb->setActivationState(1); -// psb->setDeactivationTime(1.f); - - //psb->m_materials[0]->m_kLST = 0.1+(i/(btScalar)(n-1))*0.9; - psb->setTotalMass(m_cci.m_mass); - - psb->setCollisionFlags(0); + ///create a mapping between graphics mesh vertices and soft body vertices + { + RAS_MeshObject* rasMesh= GetShapeInfo()->GetMesh(); - ///create a mapping between graphics mesh vertices and soft body vertices + if (rasMesh && !m_softbodyMappingDone) { - RAS_MeshObject* rasMesh= GetShapeInfo()->GetMesh(); - - if (rasMesh && !m_softbodyMappingDone) + //printf("apply\n"); + RAS_MeshSlot::iterator it; + RAS_MeshMaterial *mmat; + RAS_MeshSlot *slot; + size_t i; + + //for each material + for (int m=0;m<rasMesh->NumMaterials();m++) { - - //printf("apply\n"); - RAS_MeshSlot::iterator it; - RAS_MeshMaterial *mmat; - RAS_MeshSlot *slot; - size_t i; - - //for each material - for (int m=0;m<rasMesh->NumMaterials();m++) + mmat = rasMesh->GetMeshMaterial(m); + + slot = mmat->m_baseslot; + for(slot->begin(it); !slot->end(it); slot->next(it)) { - // The vertex cache can only be updated for this deformer: - // Duplicated objects with more than one ploymaterial (=multiple mesh slot per object) - // share the same mesh (=the same cache). As the rendering is done per polymaterial - // cycling through the objects, the entire mesh cache cannot be updated in one shot. - mmat = rasMesh->GetMeshMaterial(m); - - slot = mmat->m_baseslot; - for(slot->begin(it); !slot->end(it); slot->next(it)) + int index = 0; + for(i=it.startvertex; i<it.endvertex; i++,index++) { - int index = 0; - for(i=it.startvertex; i<it.endvertex; i++,index++) + RAS_TexVert* vertex = &it.vertex[i]; + //search closest index, and store it in vertex + vertex->setSoftBodyIndex(0); + btScalar maxDistSqr = 1e30; + btSoftBody::tNodeArray& nodes(psb->m_nodes); + btVector3 xyz = btVector3(vertex->getXYZ()[0],vertex->getXYZ()[1],vertex->getXYZ()[2]); + for (int n=0;n<nodes.size();n++) { - RAS_TexVert* vertex = &it.vertex[i]; - - - //search closest index, and store it in vertex - vertex->setSoftBodyIndex(0); - btScalar maxDistSqr = 1e30; - btSoftBody::tNodeArray& nodes(psb->m_nodes); - btVector3 xyz = btVector3(vertex->getXYZ()[0],vertex->getXYZ()[1],vertex->getXYZ()[2]); - for (int n=0;n<nodes.size();n++) + btScalar distSqr = (nodes[n].m_x - xyz).length2(); + if (distSqr<maxDistSqr) { - btScalar distSqr = (nodes[n].m_x - xyz).length2(); - if (distSqr<maxDistSqr) - { - maxDistSqr = distSqr; - - vertex->setSoftBodyIndex(n); - } + maxDistSqr = distSqr; + + vertex->setSoftBodyIndex(n); } } } } } } - - m_softbodyMappingDone = true; - - - - + } + m_softbodyMappingDone = true; + btTransform startTrans; + rbci.m_motionState->getWorldTransform(startTrans); -// m_object->setCollisionShape(rbci.m_collisionShape); - btTransform startTrans; + m_MotionState->setWorldPosition(startTrans.getOrigin().getX(),startTrans.getOrigin().getY(),startTrans.getOrigin().getZ()); + m_MotionState->setWorldOrientation(0,0,0,1); - if (rbci.m_motionState) - { - rbci.m_motionState->getWorldTransform(startTrans); - } else - { - startTrans = rbci.m_startWorldTransform; - } - //startTrans.setIdentity(); - - //m_object->setWorldTransform(startTrans); - //m_object->setInterpolationWorldTransform(startTrans); - m_MotionState->setWorldPosition(startTrans.getOrigin().getX(),startTrans.getOrigin().getY(),startTrans.getOrigin().getZ()); - m_MotionState->setWorldOrientation(0,0,0,1); + if (!m_prototypeTransformInitialized) + { + m_prototypeTransformInitialized = true; + m_softBodyTransformInitialized = true; + psb->transform(startTrans); + } + m_object->setCollisionFlags(m_object->getCollisionFlags() | m_cci.m_collisionFlags); + if (m_cci.m_do_anisotropic) + m_object->setAnisotropicFriction(m_cci.m_anisotropicFriction); + return true; +} - if (!m_prototypeTransformInitialized) - { - m_prototypeTransformInitialized = true; - m_softBodyTransformInitialized = true; - GetSoftBody()->transform(startTrans); - } -// btVector3 wp = m_softBody->getWorldTransform().getOrigin(); -// MT_Point3 center(wp.getX(),wp.getY(),wp.getZ()); -// m_gameobj->NodeSetWorldPosition(center); +void CcdPhysicsController::CreateRigidbody() +{ + //btTransform trans = GetTransformFromMotionState(m_MotionState); + m_bulletMotionState = new BlenderBulletMotionState(m_MotionState); - } else - { - btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor); - rbci.m_linearDamping = m_cci.m_linearDamping; - rbci.m_angularDamping = m_cci.m_angularDamping; - rbci.m_friction = m_cci.m_friction; - rbci.m_restitution = m_cci.m_restitution; - m_object = new btRigidBody(rbci); - } + ///either create a btCollisionObject, btRigidBody or btSoftBody + if (CreateSoftbody()) + // soft body created, done + return; + + //create a rgid collision object + btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor); + rbci.m_linearDamping = m_cci.m_linearDamping; + rbci.m_angularDamping = m_cci.m_angularDamping; + rbci.m_friction = m_cci.m_friction; + rbci.m_restitution = m_cci.m_restitution; + m_object = new btRigidBody(rbci); // // init the rigidbody properly @@ -580,6 +507,20 @@ bool CcdPhysicsController::ReplaceControllerShape(btCollisionShape *newShape) m_collisionShape= newShape; m_cci.m_collisionShape= newShape; + if (GetSoftBody()) { + // soft body must be recreated + m_cci.m_physicsEnv->removeCcdPhysicsController(this); + delete m_object; + m_object = NULL; + // force complete reinitialization + m_softbodyMappingDone = false; + m_prototypeTransformInitialized = false; + m_softBodyTransformInitialized = false; + CreateSoftbody(); + assert(m_object); + // reinsert the new body + m_cci.m_physicsEnv->addCcdPhysicsController(this); + } /* Copied from CcdPhysicsEnvironment::addCcdPhysicsController() */ diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.h b/source/gameengine/Physics/Bullet/CcdPhysicsController.h index 02d723472f6..dcb0af62cf9 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.h +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.h @@ -71,6 +71,7 @@ public: m_meshObject(NULL), m_unscaledShape(NULL), m_useGimpact(false), + m_forceReInstance(false), m_weldingThreshold1(0.f), m_shapeProxy(NULL) { @@ -372,6 +373,7 @@ protected: void GetWorldOrientation(btMatrix3x3& mat); void CreateRigidbody(); + bool CreateSoftbody(); bool Register() { return (m_registerCount++ == 0) ? true : false; diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index 22722c0927a..3d1fa6fc180 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -375,9 +375,7 @@ m_scalingPropagated(false) //m_dynamicsWorld->getSolverInfo().m_solverMode= SOLVER_USE_WARMSTARTING + SOLVER_USE_2_FRICTION_DIRECTIONS + SOLVER_RANDMIZE_ORDER + SOLVER_USE_FRICTION_WARMSTARTING; m_debugDrawer = 0; - m_gravity = btVector3(0.f,-10.f,0.f); - m_dynamicsWorld->setGravity(m_gravity); - + setGravity(0.f,0.f,-9.81f); } void CcdPhysicsEnvironment::addCcdPhysicsController(CcdPhysicsController* ctrl) @@ -884,7 +882,7 @@ void CcdPhysicsEnvironment::setGravity(float x,float y,float z) { m_gravity = btVector3(x,y,z); m_dynamicsWorld->setGravity(m_gravity); - + m_dynamicsWorld->getWorldInfo().m_gravity.setValue(x,y,z); } @@ -1072,6 +1070,8 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IRayCastFilterCallbac rayCallback.m_hitTriangleIndex < shapeInfo->m_polygonIndexArray.size()) { result.m_meshObject = shapeInfo->GetMesh(); + // note for softbody: this assumes that the softbody shape uses the same triangle numbering + // than the triangle mesh shape that was used to build it result.m_polygon = shapeInfo->m_polygonIndexArray.at(rayCallback.m_hitTriangleIndex); // Bullet returns the normal from "outside". @@ -1080,7 +1080,13 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IRayCastFilterCallbac { // mesh shapes are shared and stored in the shapeInfo btTriangleMeshShape* triangleShape = shapeInfo->GetMeshShape(); - if (triangleShape) + + if (shape->isSoftBody()) + { + // we can get the real normal directly from the body + btSoftBody* softBody = static_cast<btSoftBody*>(rayCallback.m_collisionObject); + rayCallback.m_hitNormalWorld = softBody->m_faces[rayCallback.m_hitTriangleIndex].m_normal; + } else if (triangleShape) { // this code is copied from Bullet btVector3 triangle[3]; diff --git a/source/gameengine/PyDoc/GameTypes.py b/source/gameengine/PyDoc/GameTypes.py index 0e4001fa669..3c0292e9e8c 100644 --- a/source/gameengine/PyDoc/GameTypes.py +++ b/source/gameengine/PyDoc/GameTypes.py @@ -3819,6 +3819,10 @@ class KX_Scene(PyObjectPlus): @type activity_culling_radius: float @ivar dbvt_culling: True when Dynamic Bounding box Volume Tree is set (read-only). @type dbvt_culling: bool + @ivar pre_draw: A list of callables to be run before the render step. + @type pre_draw: list + @ivar post_draw: A list of callables to be run after the render step. + @type post_draw: list @group Deprecated: getLightList, getObjectList, getName """ diff --git a/source/gameengine/Rasterizer/CMakeLists.txt b/source/gameengine/Rasterizer/CMakeLists.txt index 0ae17af7634..ec485d82fee 100644 --- a/source/gameengine/Rasterizer/CMakeLists.txt +++ b/source/gameengine/Rasterizer/CMakeLists.txt @@ -34,6 +34,7 @@ SET(INC ../../../intern/string ../../../intern/moto/include ../../../extern/glew/include + ../../../intern/guardedalloc ../Expressions ${PYTHON_INC} ) diff --git a/source/gameengine/Rasterizer/Makefile b/source/gameengine/Rasterizer/Makefile index eafa2ded2f2..d4cc6ab2652 100644 --- a/source/gameengine/Rasterizer/Makefile +++ b/source/gameengine/Rasterizer/Makefile @@ -37,8 +37,9 @@ CCFLAGS += $(LEVEL_1_CPP_WARNINGS) CPPFLAGS += -I$(NAN_GLEW)/include CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_STRING)/include +CPPFLAGS += -I$(NAN_STRING)/include CPPFLAGS += -I$(NAN_MOTO)/include +CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include CPPFLAGS += -I../../kernel/gen_system CPPFLAGS += -I../../blender/makesdna CPPFLAGS += -I../SceneGraph @@ -48,7 +49,7 @@ CPPFLAGS += -I../Expressions CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) ifeq ($(OS),darwin) - CPPFLAGS += -fpascal-strings + CPPFLAGS += -fpascal-strings endif ############### diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.cpp b/source/gameengine/Rasterizer/RAS_MeshObject.cpp index ffc18e5612f..1143d9441c8 100644 --- a/source/gameengine/Rasterizer/RAS_MeshObject.cpp +++ b/source/gameengine/Rasterizer/RAS_MeshObject.cpp @@ -25,6 +25,12 @@ * * ***** END GPL LICENSE BLOCK ***** */ +#include "MEM_guardedalloc.h" + +#include "DNA_object_types.h" +#include "DNA_key_types.h" +#include "DNA_mesh_types.h" +#include "DNA_meshdata_types.h" #include "RAS_MeshObject.h" #include "RAS_IRasterizer.h" @@ -93,15 +99,35 @@ STR_String RAS_MeshObject::s_emptyname = ""; RAS_MeshObject::RAS_MeshObject(Mesh* mesh) : m_bModified(true), m_bMeshModified(true), - m_mesh(mesh), - m_bDeformed(false) + m_mesh(mesh) { + if (m_mesh && m_mesh->key) + { + KeyBlock *kb; + int count=0; + // initialize weight cache for shape objects + // count how many keys in this mesh + for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) + count++; + m_cacheWeightIndex.resize(count,-1); + } } RAS_MeshObject::~RAS_MeshObject() { vector<RAS_Polygon*>::iterator it; + if (m_mesh && m_mesh->key) + { + KeyBlock *kb; + // remove the weight cache to avoid memory leak + for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) { + if(kb->weights) + MEM_freeN(kb->weights); + kb->weights= NULL; + } + } + for(it=m_Polygons.begin(); it!=m_Polygons.end(); it++) delete (*it); @@ -430,39 +456,6 @@ void RAS_MeshObject::AddMeshUser(void *clientobj, SG_QList *head, RAS_Deformer* } } -void RAS_MeshObject::UpdateBuckets(void* clientobj, - double* oglmatrix, - bool useObjectColor, - const MT_Vector4& rgbavec, - bool visible, - bool culled) -{ - list<RAS_MeshMaterial>::iterator it; - - for(it = m_materials.begin();it!=m_materials.end();++it) { - RAS_MeshSlot **msp = it->m_slots[clientobj]; - - if(!msp) - continue; - - RAS_MeshSlot *ms = *msp; - - ms->m_mesh = this; - ms->m_OpenGLMatrix = oglmatrix; - ms->m_bObjectColor = useObjectColor; - ms->m_RGBAcolor = rgbavec; - ms->m_bVisible = visible; - ms->m_bCulled = culled || !visible; - if (!ms->m_bCulled) - ms->m_bucket->ActivateMesh(ms); - - /* split if necessary */ -#ifdef USE_SPLIT - ms->Split(); -#endif - } -} - void RAS_MeshObject::RemoveFromBuckets(void *clientobj) { list<RAS_MeshMaterial>::iterator it; @@ -560,3 +553,64 @@ void RAS_MeshObject::SchedulePolygons(int drawingmode) } } +static int get_def_index(Object* ob, const char* vgroup) +{ + bDeformGroup *curdef; + int index = 0; + + for (curdef = (bDeformGroup*)ob->defbase.first; curdef; curdef=(bDeformGroup*)curdef->next, index++) + if (!strcmp(curdef->name, vgroup)) + return index; + + return -1; +} + +void RAS_MeshObject::CheckWeightCache(Object* obj) +{ + KeyBlock *kb; + int kbindex, defindex; + MDeformVert *dvert= NULL; + int totvert, i, j; + float *weights; + + if (!m_mesh->key) + return; + + for(kbindex=0, kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next, kbindex++) + { + // first check the cases where the weight must be cleared + if (kb->vgroup[0] == 0 || + m_mesh->dvert == NULL || + (defindex = get_def_index(obj, kb->vgroup)) == -1) { + if (kb->weights) { + MEM_freeN(kb->weights); + kb->weights = NULL; + } + m_cacheWeightIndex[kbindex] = -1; + } else if (m_cacheWeightIndex[kbindex] != defindex) { + // a weight array is required but the cache is not matching + if (kb->weights) { + MEM_freeN(kb->weights); + kb->weights = NULL; + } + + dvert= m_mesh->dvert; + totvert= m_mesh->totvert; + + weights= (float*)MEM_callocN(totvert*sizeof(float), "weights"); + + for (i=0; i < totvert; i++, dvert++) { + for(j=0; j<dvert->totweight; j++) { + if (dvert->dw[j].def_nr == defindex) { + weights[i]= dvert->dw[j].weight; + break; + } + } + } + kb->weights = weights; + m_cacheWeightIndex[kbindex] = defindex; + } + } +} + + diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.h b/source/gameengine/Rasterizer/RAS_MeshObject.h index c9ca8152a7e..820d537ab10 100644 --- a/source/gameengine/Rasterizer/RAS_MeshObject.h +++ b/source/gameengine/Rasterizer/RAS_MeshObject.h @@ -70,9 +70,9 @@ private: struct fronttoback; protected: + vector<int> m_cacheWeightIndex; list<RAS_MeshMaterial> m_materials; Mesh* m_mesh; - bool m_bDeformed; public: // for now, meshes need to be in a certain layer (to avoid sorting on lights in realtime) @@ -80,7 +80,8 @@ public: virtual ~RAS_MeshObject(); - bool IsDeformed() { return (m_bDeformed && m_mesh); } + // for shape keys, + void CheckWeightCache(struct Object* obj); /* materials */ int NumMaterials(); @@ -132,13 +133,6 @@ public: /* buckets */ virtual void AddMeshUser(void *clientobj, SG_QList *head, RAS_Deformer* deformer); - virtual void UpdateBuckets( - void* clientobj, - double* oglmatrix, - bool useObjectColor, - const MT_Vector4& rgbavec, - bool visible, - bool culled); void RemoveFromBuckets(void *clientobj); void EndConversion() { diff --git a/source/gameengine/Rasterizer/SConscript b/source/gameengine/Rasterizer/SConscript index 4bcc0f72588..8bc99f1596e 100644 --- a/source/gameengine/Rasterizer/SConscript +++ b/source/gameengine/Rasterizer/SConscript @@ -4,7 +4,7 @@ Import ('env') sources = env.Glob('*.cpp') -incs = '. #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/BlenderRoutines #extern/glew/include #source/gameengine/Expressions #source/gameengine/SceneGraph #source/blender/blenkernel #source/blender/makesdna' +incs = '. #intern/guardedalloc #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/BlenderRoutines #extern/glew/include #source/gameengine/Expressions #source/gameengine/SceneGraph #source/blender/blenkernel #source/blender/makesdna' defs = [ 'GLEW_STATIC' ] |