Merge from trunk
authorAndre Susano Pinto <andresusanopinto@gmail.com>
Wed, 11 Jun 2008 22:53:52 +0000 (22:53 +0000)
committerAndre Susano Pinto <andresusanopinto@gmail.com>
Wed, 11 Jun 2008 22:53:52 +0000 (22:53 +0000)
svn merge -r 15104:15202 https://svn.blender.org/svnroot/bf-blender/trunk/blender

59 files changed:
extern/bFTGL/SConscript
extern/libopenjpeg/opj_malloc.h
extern/libopenjpeg/patches/osx.patch [new file with mode: 0644]
release/datafiles/blenderbuttons
release/scripts/import_dxf.py
source/blender/blenkernel/BKE_object.h
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/cdderivedmesh.c
source/blender/blenkernel/intern/collision.c
source/blender/blenkernel/intern/customdata.c
source/blender/blenkernel/intern/library.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/particle_system.c
source/blender/blenkernel/intern/pointcache.c
source/blender/blenkernel/intern/text.c
source/blender/blenlib/BLI_arithb.h
source/blender/blenlib/intern/BLI_kdopbvh.c
source/blender/blenlib/intern/arithb.c
source/blender/blenlib/intern/bpath.c
source/blender/blenlib/intern/util.c
source/blender/include/BIF_resources.h
source/blender/include/BSE_view.h
source/blender/include/transform.h
source/blender/makesdna/DNA_meshdata_types.h
source/blender/makesdna/DNA_scene_types.h
source/blender/python/BPY_interface.c
source/blender/python/api2_2x/Blender.c
source/blender/python/api2_2x/Object.c
source/blender/python/api2_2x/Particle.c
source/blender/python/api2_2x/Sys.c
source/blender/python/api2_2x/doc/Object.py
source/blender/python/api2_2x/sceneRender.c
source/blender/render/extern/include/RE_pipeline.h
source/blender/render/intern/include/render_types.h
source/blender/render/intern/source/convertblender.c
source/blender/render/intern/source/rendercore.c
source/blender/src/blenderbuttons.c
source/blender/src/buttons_editing.c
source/blender/src/buttons_object.c
source/blender/src/buttons_scene.c
source/blender/src/drawipo.c
source/blender/src/drawmesh.c
source/blender/src/drawview.c
source/blender/src/editmesh_lib.c
source/blender/src/editnode.c
source/blender/src/editparticle.c
source/blender/src/header_view3d.c
source/blender/src/meshtools.c
source/blender/src/space.c
source/blender/src/transform.c
source/blender/src/transform_generics.c
source/blender/src/transform_snap.c
source/blender/src/view.c
source/gameengine/Converter/BL_ArmatureObject.cpp
source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp
source/gameengine/Ketsji/KX_BlenderMaterial.cpp
source/gameengine/Ketsji/KX_RayCast.cpp
source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h

index bd20db5a459674fae3170a3b50a0ba5bf711c5a8..c03992631e6913f93b11e1a1e307a3bdff087989 100644 (file)
@@ -22,7 +22,7 @@ Import('env')
 
 #ftgl_env.Append (CPPDEFINES = defines)
 
-incs = 'include src ' + env['BF_FREETYPE_INC']
+incs = 'include src ' + env['BF_FREETYPE_INC'] + ' ' + env['BF_OPENGL_INC']
 defs = ''
 
 sources = env.Glob('src/*.cpp')
index 79698f8ff1ba795ab077243cc91178c568c7c868..4e9727af0f37e62adac412ac15da3d5f8672148f 100644 (file)
@@ -76,8 +76,10 @@ Allocate memory aligned to a 16 byte boundry
        #if defined(__sun)
                        #define HAVE_MEMALIGN
                #elif defined(__GNUC__)
-                       #define HAVE_MEMALIGN
-                       #include <malloc.h>             
+                        #ifndef __APPLE__
+                           #define HAVE_MEMALIGN
+                           #include <malloc.h>
+                        #endif
                /* Linux x86_64 and OSX always align allocations to 16 bytes */
                #elif !defined(__amd64__) && !defined(__APPLE__)        
                        /* FIXME: Yes, this is a big assumption */
diff --git a/extern/libopenjpeg/patches/osx.patch b/extern/libopenjpeg/patches/osx.patch
new file mode 100644 (file)
index 0000000..c518978
--- /dev/null
@@ -0,0 +1,17 @@
+Index: opj_malloc.h
+===================================================================
+--- opj_malloc.h       (revision 15089)
++++ opj_malloc.h       (working copy)
+@@ -76,8 +76,10 @@
+       #if defined(__sun)
+                       #define HAVE_MEMALIGN
+               #elif defined(__GNUC__)
+-                      #define HAVE_MEMALIGN
+-                      #include <malloc.h>             
++                        #ifndef __APPLE__
++                          #define HAVE_MEMALIGN
++                          #include <malloc.h>
++                        #endif
+               /* Linux x86_64 and OSX always align allocations to 16 bytes */
+               #elif !defined(__amd64__) && !defined(__APPLE__)        
+                       /* FIXME: Yes, this is a big assumption */
index ebd0ec82ebda124f306c90764fe75abfb055b279..a4834091692c0cc61b50ad4c1604350d12622b2e 100644 (file)
Binary files a/release/datafiles/blenderbuttons and b/release/datafiles/blenderbuttons differ
index 88b42e3e564d7ffd5eec1e171341cb8c3902331e..ce7df610d9853f47647e6fb9e8f86ca6f9c10494 100644 (file)
@@ -1,5 +1,5 @@
 #!BPY
-# coding: utf-8
+
 """
 Name: 'Autodesk DXF (.dxf)'
 Blender: 244
@@ -7,14 +7,15 @@ Group: 'Import'
 Tooltip: 'Import for DXF geometry data (Drawing eXchange Format).'
 """
 __author__ = 'Kitsu(Ed Blake) & migius(Remigiusz Fiedler)'
-__version__ = '1.0.12 - 2008.02.08 by migius'
+__version__ = '1.0.12 - 2008.06.05 by migius'
 __url__ = ["http://blenderartists.org/forum/showthread.php?t=84319",
         "http://wiki.blender.org/index.php/Scripts/Manual/Import/DXF-3D"]
 __email__ = ["Kitsune_e(at)yahoo.com", "migius(at)4d-vectors.de"]
 __bpydoc__ = """\
 This script imports objects from DXF (2d/3d) into Blender.
 
-This script imports 2d and 3d geometery from DXFr12 format files.
+This script imports 2d and 3d geometery from DXF files.
+Supported DXF format versions: from (r2.5) r12 up to 2008.
 Enhanced features are:
 - configurable object filtering and geometry manipulation,
 - configurable material pre-processing,
@@ -40,22 +41,23 @@ XREF (External Reference).
 
 Supported DXF>r12 objects:
 ELLIPSE,
-(wip v1.0.12 partly supported) LWPOLYLINE (LightWeight),
-(wip v1.0.12) MLINE,
-(wip v1.0.12) MTEXT
+LWPOLYLINE (LightWeight Polylines),
+(wip v1.0.12) SPLINE,
+(wip v1.0.13) MLINE,
+(wip v1.0.13) MTEXT
 
-Unsupported Objects:
+Unsupported objects:
 DXF r12: DIMENSION.
-DXF>r12: SPLINE, GROUP, RAY/XLINE, LEADER, 3DSOLID, BODY, REGION, dynamic BLOCK
+DXF>r12: GROUP, RAY/XLINE, LEADER, 3DSOLID, BODY, REGION, dynamic BLOCK
 
-Supported Geometry: 2d and 3d DXF-objects.
-Curves imported as curves or meshes optionally.
+Supported geometry: 2d and 3d DXF-objects.
+Curves imported as Blender curves or meshes optionally.
 
 Supported layout modes:
 "model space" is default,
 "paper space" as option (= "layout views")
 
-Scene definitions produced with AVE_RENDER:
+Supported scene definition objescts produced with AVE_RENDER:
 scene: selection of lights assigned to the camera,
 lights: DIRECT, OVERHEAD, SH_SPOT,
 (wip v1.0.13 import of AVE_RENDER material definitions)
@@ -77,14 +79,10 @@ It is recommended to use DXF-object properties for assign Blender materials.
 Notes:
 - Recommend that you run 'RemoveDoubles' on each imported mesh after using this script
 - Blocks are created on layer 19 then referenced at each insert point.
-- Big DXF-files (over 1500 objects) decrease import performance.
+- support for DXF-files up to 160MB on systems with 1GB RAM
+- DXF-files with over 1500 objects decrease import performance.
 The problem is not the inefficiency of python-scripting but Blenders performance
-in creating new objects in his database - probably a database management problem.
-       
-TODO:  
-- the new style object visibility
-- support for real 3d-solids (ACIS)
-- (to see more, search for "--todo--" in script code)
+in creating new objects in scene database - probably a database management problem.
 
 """
 
@@ -92,6 +90,7 @@ TODO:
 History:
  v1.0 - 2008.01. by migius
  planned tasks:
+ -- (to see more, search for "--todo--" in script code)
  -- command-line-mode/batch-mode
  -- in-place-editing for dupliGroups
  -- support for MLINE (is exported to r12 as BLOCK*Unnamed with LINEs)
@@ -102,17 +101,23 @@ History:
  -- added f_layerFilter
  -- to-check: obj/mat/group/_mapping-idea from ideasman42:
  -- curves: added "fill/non-fill" option for closed curves: CIRCLEs,ELLIPSEs,POLYLINEs
- -- bug:? object = Object.Get(obname) -> = SCENE.getChildren(obname)
  -- "normalize Z" option to correct non-planar figures
  -- LINEs need "width" in 3d-space incl vGroups
  -- support width_force for LINEs/ELLIPSEs = "solidify"
  -- add better support for color_index BYLAYER=256, BYBLOCK=0 
- -- bug: "oneMesh" produces sometimes errors
+ -- bug: "oneMesh" produces irregularly errors
  -- bug: Registry recall from hd_cache ?? only win32 bug??
-
- v1.0.12: 2008.02.08 by migius
  -- support DXF-definitions of scene, lights and cameras
  -- support ortho mode for VIEWs and VPORTs as cameras 
+ -- add support for SPLINEs
+
+ v1.0.12: 2008.06.05 by migius
+ b3 bugfix: ob.name conflict with existing meshes (different ob.name/mesh.name)
+ v1.0.12: 2008.05.24 by migius
+ b2 added support for LWPOLYLINEs
+ b2 added support for ProE in readerDXF.py
+ v1.0.12: 2008.02.08 by migius
+ b1 update: object = Object.Get(obname) -> f_getSceChild().getChildren()
  a9 bugfix by non-existing tables views, vports, layers (Kai reported)
  v1.0.12: 2008.01.17 by migius
  a8 lately used INI-dir/filename persistently stored in Registry
@@ -279,9 +284,9 @@ History:
 # --------------------------------------------------------------------------
 
 import Blender
-#import bpy
 from Blender import *
 #from Blender.Mathutils import Vector, Matrix
+import bpy
 #import BPyMessages
 
 from dxfReader import readDXF
@@ -313,6 +318,8 @@ WORLDX = Mathutils.Vector((1,0,0))
 WORLDY = Mathutils.Vector((1,1,0))
 WORLDZ = Mathutils.Vector((0,0,1))
 
+oblist = [] #to be sure, it is an empty list
+
 G_SCALE = 1.0     #(0.0001-1000) global scaling factor for all dxf data
 G_ORIGIN_X = 0.0   #global translation-vector (x,y,z) in DXF units
 G_ORIGIN_Y = 0.0
@@ -330,6 +337,10 @@ ELEVATION = 0.0 #standard elevation = coordinate Z
 
 TARGET_LAYER = 3       #target blender_layer
 GROUP_BYLAYER = 0   #(0/1) all entities from same layer import into one blender-group
+cur_COUNTER = 0  #counter for progress_bar
+M_OBJ = False
+BYBLOCK = 0
+BYLAYER = 256
 
 FILENAME_MAX = 180     #max length of path+file_name string  (FILE_MAXDIR + FILE_MAXFILE)
 MAX_NAMELENGTH = 17   #max_effective_obnamelength in blender =21=17+(.001)
@@ -342,75 +353,6 @@ AUTO = BezTriple.HandleTypes.AUTO
 FREE = BezTriple.HandleTypes.FREE
 VECT = BezTriple.HandleTypes.VECT
 ALIGN = BezTriple.HandleTypes.ALIGN
-cur_COUNTER = 0  #counter for progress_bar
-
-
-"""This module provides wrapper objects for dxf entities.
-
-       The wrappers expect a "dxf object" as input.  The dxf object is
-       an object with a type and a data attribute.  Type is a lowercase
-       string matching the 0 code of a dxf entity.  Data is a list containing
-       dxf objects or lists of [code, data] pairs.
-
-       This module is not general, and is only for dxf import.
-"""
-
-# from Stani's dxf writer v1.1 (c)www.stani.be (GPL)
-#---color values
-BYBLOCK = 0
-BYLAYER = 256
-
-#---block-type flags (bit coded values, may be combined):
-ANONYMOUS                 =1  # This is an anonymous block generated by hatching, associative dimensioning, other internal operations, or an application
-NON_CONSTANT_ATTRIBUTES =2  # This block has non-constant attribute definitions (this bit is not set if the block has any attribute definitions that are constant, or has no attribute definitions at all)
-XREF                                   =4  # This block is an external reference (xref)
-XREF_OVERLAY                   =8  # This block is an xref overlay
-EXTERNAL                               =16 # This block is externally dependent
-RESOLVED                               =32 # This is a resolved external reference, or dependent of an external reference (ignored on input)
-REFERENCED       =64 # This definition is a referenced external reference (ignored on input)
-
-#---polyline flags
-CLOSED                   =1  # This is a closed polyline (or a polygon mesh closed in the M direction)
-CURVE_FIT                         =2  # Curve-fit vertices have been added
-SPLINE_FIT               =4  # Spline-fit vertices have been added
-POLYLINE_3D     =8   # This is a 3D polyline
-POLYGON_MESH                           =16  # This is a 3D polygon mesh
-CLOSED_N                                       =32  # The polygon mesh is closed in the N direction
-POLYFACE_MESH             =64   # The polyline is a polyface mesh
-CONTINOUS_LINETYPE_PATTERN  =128       # The linetype pattern is generated continuously around the vertices of this polyline
-
-#---text flags
-#horizontal
-LEFT           = 0
-CENTER  = 1
-RIGHT   = 2
-ALIGNED  = 3 #if vertical alignment = 0
-MIDDLE  = 4 #if vertical alignment = 0
-FIT   = 5 #if vertical alignment = 0
-#vertical
-BASELINE       = 0
-BOTTOM  = 1
-MIDDLE  = 2
-TOP   = 3
-
-#---mtext flags
-#attachment point
-TOP_LEFT               = 1
-TOP_CENTER  = 2
-TOP_RIGHT   = 3
-MIDDLE_LEFT  = 4
-MIDDLE_CENTER   = 5
-MIDDLE_RIGHT   = 6
-BOTTOM_LEFT  = 7
-BOTTOM_CENTER   = 8
-BOTTOM_RIGHT   = 9
-#drawing direction
-LEFT_RIGHT  = 1
-TOP_BOTTOM  = 3
-BY_STYLE               = 5 #the flow direction is inherited from the associated text style
-#line spacing style (optional):
-AT_LEAST               = 1 #taller characters will override
-EXACT     = 2 #taller characters will not override
 
 
 class View:  #-----------------------------------------------------------------
@@ -652,6 +594,14 @@ def get_extrusion(data):    #-------------------------------------------------
        return vec
 
 
+#------------------------------------------
+def getSceneChild(name):
+       dudu = [i for i in SCENE.objects if i.name==name]
+#      dudu = [i for i in SCENE.getChildren() if i.name==name]
+       #print 'deb:getSceneChild %s -result: %s:' %(name,dudu) #-----------------
+       if dudu!=[]: return dudu[0]
+       return None
+
 
 class Solid:  #-----------------------------------------------------------------
        """Class for objects representing dxf SOLID or TRACE.
@@ -754,16 +704,16 @@ class Solid:  #-----------------------------------------------------------------
                        if   l == 4: faces = [[0,1,3,2]]
                        elif l == 3: faces = [[0,1,2]]
                        elif l == 2: edges = [[0,1]]
-
-
-
-               me = Mesh.New(obname)             # create a new mesh
+               
+               if M_OBJ: obname, me, ob = makeNewObject()
+               else: 
+                       me = Mesh.New(obname)           # create a new mesh
+                       ob = SCENE.objects.new(me) # create a new mesh_object
                me.verts.extend(points)         # add vertices to mesh
                if faces: me.faces.extend(faces)                   # add faces to the mesh
                if edges: me.edges.extend(edges)                   # add faces to the mesh
 
-               ob = SCENE.objects.new(me) # create a new mesh_object
-               if settings.var['vGroup_on']:
+               if settings.var['vGroup_on'] and not M_OBJ:
                        # each MeshSide becomes vertexGroup for easier material assignment ---------------------
                        replace = Blender.Mesh.AssignModes.ADD  #or .AssignModes.ADD/REPLACE
                        if vg_left: me.addVertGroup('side.left')  ; me.assignVertsToGroup('side.left',  vg_left, 1.0, replace)
@@ -777,9 +727,6 @@ class Solid:  #-----------------------------------------------------------------
 
                return ob
 
-
-
-
 class Line:  #-----------------------------------------------------------------
        """Class for objects representing dxf LINEs.
        """
@@ -838,7 +785,7 @@ class Line:  #-----------------------------------------------------------------
                elif settings.var['lines_as'] == 3: # as thin cylinder
                        cyl_rad = 0.5 * settings.var['width_min']
 
-               if settings.var['lines_as'] == 5: # LINE curve representation-------------------------
+               elif settings.var['lines_as'] == 5: # LINE curve representation-------------------------
                        obname = 'li_%s' %self.layer  # create object name from layer name
                        obname = obname[:MAX_NAMELENGTH]
 
@@ -872,20 +819,23 @@ class Line:  #-----------------------------------------------------------------
                        global activObjectName
                        #print 'deb:draw:line.ob IN activObjectName: ', activObjectName #---------------------
        
-                       if activObjectLayer == self.layer and settings.var['one_mesh_on']:
-                               obname = activObjectName
-                               #print 'deb:line.draw obname from activObjectName: ', obname #---------------------
-                               ob = Object.Get(obname)  # open an existing mesh_object
-                               #ob = SCENE.getChildren(obname)  # open an existing mesh_object
-                               me = Mesh.Get(ob.name)   # open objects mesh data
-                       else:
-                               obname = 'li_%s' %self.layer  # create object name from layer name
-                               obname = obname[:MAX_NAMELENGTH]
-                               me = Mesh.New(obname)             # create a new mesh
-                               ob = SCENE.objects.new(me) # create a new mesh_object
-                               activObjectName = ob.name
-                               activObjectLayer = self.layer
-                               #print ('deb:line.draw new line.ob+mesh:"%s" created!' %ob.name) #---------------------
+                       if M_OBJ: obname, me, ob = makeNewObject()
+                       else: 
+                               if activObjectLayer == self.layer and settings.var['one_mesh_on']:
+                                       obname = activObjectName
+                                       #print 'deb:line.draw obname from activObjectName: ', obname #---------------------
+                                       ob = getSceneChild(obname)  # open an existing mesh_object
+                                       #ob = SCENE.getChildren(obname)  # open an existing mesh_object
+                                       #me = Mesh.Get(ob.name)   # open objects mesh data
+                                       me = ob.getData(name_only=False, mesh=True)
+                               else:
+                                       obname = 'li_%s' %self.layer  # create object name from layer name
+                                       obname = obname[:MAX_NAMELENGTH]
+                                       me = Mesh.New(obname)             # create a new mesh
+                                       ob = SCENE.objects.new(me) # create a new mesh_object
+                                       activObjectName = ob.name
+                                       activObjectLayer = self.layer
+                                       #print ('deb:line.draw new line.ob+mesh:"%s" created!' %ob.name) #---------------------
        
                        faces, edges = [], []
                        n = len(me.verts)
@@ -904,7 +854,7 @@ class Line:  #-----------------------------------------------------------------
                        if faces: me.faces.extend(faces)           # add faces to the mesh
                        if edges: me.edges.extend(edges)           # add faces to the mesh
        
-                       if settings.var['vGroup_on']:
+                       if settings.var['vGroup_on'] and not M_OBJ:
                                # entities with the same color build one vertexGroup for easier material assignment ----
                                ob.link(me) # link mesh to that object
                                vG_name = 'color_%s' %self.color_index
@@ -988,155 +938,23 @@ class Point:  #-----------------------------------------------------------------
                        global activObjectLayer
                        global activObjectName
                        #print 'deb:draw:point.ob IN activObjectName: ', activObjectName #---------------------
-                       if activObjectLayer == self.layer and settings.var['one_mesh_on']:
-                               obname = activObjectName
-                               #print 'deb:draw:point.ob obname from activObjectName: ', obname #---------------------
-                               ob = Object.Get(obname)  # open an existing mesh_object
-                               #ob = SCENE.getChildren(obname)  # open an existing mesh_object
-                               me = Mesh.Get(ob.name)   # open objects mesh data
-                       else:
-                               me = Mesh.New(obname)             # create a new mesh
-                               ob = SCENE.objects.new(me) # create a new mesh_object
-                               activObjectName = ob.name
-                               activObjectLayer = self.layer
-                               #print ('deb:draw:point new point.ob+mesh:"%s" created!' %ob.name) #---------------------
-                       me.verts.extend(points) # add vertices to mesh
-
-               return ob
-
-
-
-class LWpolyline:  #-----------------------------------------------------------------
-       """Class for objects representing dxf LWPOLYLINEs.
-       """
-       def __init__(self, obj):
-               """Expects an entity object of type lwpolyline as input.
-               """
-               #print 'deb:LWpolyline.START:----------------' #------------------------
-               if not obj.type == 'lwpolyline':
-                       raise TypeError, "Wrong type %s for polyline object!" %obj.type
-               self.type = obj.type
-               self.data = obj.data[:]
-
-               # required data
-               self.num_points = obj.get_type(90)[0]
-
-               # optional data (with defaults)
-               self.space = getit(obj, 67, 0)
-
-               self.color_index = getit(obj, 62, BYLAYER)
-
-               self.elevation =  getit(obj, 30, 0)
-               self.thic =  getit(obj, 39, 0)
-               self.flags = getit(obj, 70, 0)
-
-               self.closed = self.flags&1 # byte coded, 1 = closed, 128 = plinegen
-
-               self.layer = getit(obj.data, 8, None)
-               self.points = self.get_points(obj.data)
-               self.extrusion = get_extrusion(obj.data)
-
-               #print 'deb:LWpolyline.obj.data:\n', obj.data #------------------------
-               #print 'deb:LWpolyline.ENDinit:----------------' #------------------------
-
-
-       def get_points(self, data):
-               """Gets points for a polyline type object.
-
-               LW-Polylines have no fixed number of verts, and
-               each vert can have a number of properties.
-               Verts should be coded as
-               10:xvalue
-               20:yvalue
-               40:startwidth or 0
-               41:endwidth or 0
-               42:bulge or 0
-               for each vert
-               """
-               num = self.num_points
-               point = None
-               points = []
-               for item in data:
-                       if item[0] == 10:   # 10 = x
-                               if point:
-                                       points.append(point)
-                               point = Vertex()
-                               point.x = item[1]
-                       elif item[0] == 20: # 20 = y
-                               point.y = item[1]
-                       elif item[0] == 40: # 40 = start width
-                               point.swidth = item[1]
-                       elif item[0] == 41: # 41 = end width
-                               point.ewidth = item[1]
-                       elif item[0] == 42: # 42 = bulge
-                               point.bulge = item[1]
-               points.append(point)
-               return points
-
-
-
-       def __repr__(self):
-               return "%s: layer - %s, points - %s" %(self.__class__.__name__, self.layer, self.points)
-
-
-       def draw(self, settings):
-               """for LWPOLYLINE: generate Blender_geometry.
-               """
-               #print 'deb:LWpolyline.draw.START:----------------' #------------------------
-               points = []
-               obname = 'lw_%s' %self.layer  # create object name from layer name
-               obname = obname[:MAX_NAMELENGTH]
-               #settings.var['curves_on'] == True
-               #print 'deb:index_len: ', len(self.points) #------------------
-               for i, point in enumerate(self.points):
-                       #print 'deb:index: ', i #------------------
-                       if not point.bulge:
-                               points.append(point.loc)
-                       elif point.bulge and not self.closed and i == len(self.points)-1:
-                               points.append(point.loc)
-                       elif point.bulge:        #
-                               if i == len(self.points)-1:
-                                       point2 = self.points[0]
+                       if M_OBJ: obname, me, ob = makeNewObject()
+                       else: 
+                               if activObjectLayer == self.layer and settings.var['one_mesh_on']:
+                                       obname = activObjectName
+                                       #print 'deb:draw:point.ob obname from activObjectName: ', obname #---------------------
+                                       ob = getSceneChild(obname)  # open an existing mesh_object
+                                       #ob = SCENE.getChildren(obname)  # open an existing mesh_object
+                                       me = ob.getData(name_only=False, mesh=True)
+                                       #me = Mesh.Get(ob.name)   # open objects mesh data
                                else:
-                                       point2 = self.points[i+1]
-                               arc_res = settings.var['arc_res']/sqrt(settings.var['arc_rad'])
-                               verts, center = calcBulge(point, point2, arc_res)
-#                         if i == len(self.points)-1:
-#                                 if self.closed:
-#                                         verts.pop() #remove last(=first) vertex
-#                         else:
-#                                 verts.pop() #remove last vertex, because this point will be writen as the next vertex
-                               points.extend(verts)
-
-               thic = self.thic
-               if settings.var['thick_force'] and thic == 0: thic = settings.var['thick_min']
-               if settings.var['thick_on'] and thic != 0:
-                       len1 = len(points)
-                       points.extend([[point[0], point[1], point[2]+thic] for point in points])
-                       faces = []
-                       #print 'deb:len1:', len1  #-----------------------
-                       faces = [[num, num+1, num+len1+1, num+len1] for num in xrange(len1 - 1)]
-                       if self.closed:
-                               faces.append([len1-1, 0, len1, 2*len1-1])
-                       #print 'deb:faces_list:\n', faces  #-----------------------
-                       me = Mesh.New(obname)             # create a new mesh
-                       ob = SCENE.objects.new(me) # create a new mesh_object
+                                       me = Mesh.New(obname)             # create a new mesh
+                                       ob = SCENE.objects.new(me) # create a new mesh_object
+                                       activObjectName = ob.name
+                                       activObjectLayer = self.layer
+                                       #print ('deb:draw:point new point.ob+mesh:"%s" created!' %ob.name) #---------------------
                        me.verts.extend(points) # add vertices to mesh
-                       me.faces.extend(faces)   # add faces to the mesh
-               else:
-                       edges = [[num, num+1] for num in xrange(len(points)-1)]
-                       if self.closed:
-                               edges.append([len(points)-1, 0])
-                       #print 'deb:edges_list:\n', edges  #-----------------------
-                       me = Mesh.New(obname)             # create a new mesh
-                       ob = SCENE.objects.new(me) # create a new mesh_object
-                       me.verts.extend(points) # add vertices to mesh
-                       me.edges.extend(edges)   # add edges to the mesh
 
-               ob.LocZ = self.elevation
-               transform(self.extrusion, 0, ob)
-
-               #print 'deb:LWpolyline.draw.END:----------------' #------------------------
                return ob
 
 
@@ -1172,10 +990,10 @@ class Polyline:  #--------------------------------------------------------------
                self.plface = self.flags & 64  # 3D-polyface mesh
                self.contin = self.flags & 128 # the linetype pattern is generated continuously
 
-               if self.poly3d or self.plface or self.plmesh:
-                       self.poly2d = False  # its not a 2D-polyline
-               else:
-                       self.poly2d = True   # it is a 2D-polyline
+               self.pltype='poly2d'   # default is a 2D-polyline
+               if self.poly3d: self.pltype='poly3d'
+               elif self.plface: self.pltype='plface'
+               elif self.plmesh: self.pltype='plmesh'
 
                self.swidth =  getit(obj, 40, 0) # default start width
                self.ewidth =  getit(obj, 41, 0) # default end width
@@ -1213,19 +1031,19 @@ class Polyline:  #--------------------------------------------------------------
                """
                ob = []
                #---- 3dPolyFace - mesh with free topology
-               if self.plface and settings.drawTypes['plmesh']:
+               if self.pltype=='plface' and settings.drawTypes['plmesh']:
                        ob = self.drawPlFace(settings)
                #---- 3dPolyMesh - mesh with ortogonal topology
-               elif self.plmesh and settings.drawTypes['plmesh']:
+               elif self.pltype=='plmesh' and settings.drawTypes['plmesh']:
                        ob = self.drawPlMesh(settings)
                #---- 2dPolyline - plane polyline with arc/wide/thic segments
-               elif (self.poly2d and settings.drawTypes['polyline']):
+               elif self.pltype=='poly2d' and settings.drawTypes['polyline']:
                        if settings.var['plines_as'] == 5: # and self.spline:
                                ob = self.drawPolyCurve(settings)
                        else:
                                ob = self.drawPoly2d(settings)
                #---- 3dPolyline - non-plane polyline (thin segments = without arc/wide/thic)
-               elif (self.poly3d and settings.drawTypes['pline3']):
+               elif self.pltype=='poly3d' and settings.drawTypes['pline3']:
                        if settings.var['plines3_as'] == 5: # and self.spline:
                                ob = self.drawPolyCurve(settings)
                        else:
@@ -1355,21 +1173,7 @@ class Polyline:  #--------------------------------------------------------------
                pline = Curve.New(obname)   # create new curve data
                #pline.setResolu(24) #--todo-----                                               
 
-               if False: #self.spline:  # NURBSplines-----FAKE(with Bezier)-----
-                       #print 'deb:polyline2dCurve.draw self.spline!' #---------------
-                       curve = pline.appendNurb(BezTriple.New(d_points[0]))
-                       for p in d_points[1:]:
-                               curve.append(BezTriple.New(p))
-                       for point in curve:
-                               point.handleTypes = [AUTO, AUTO]
-                       if self.closed:
-                               curve.flagU = 1 # Set curve cyclic=close
-                       else:
-                               curve.flagU = 0 # Set curve not cyclic=open
-                               curve[0].handleTypes = [FREE, ALIGN]   #remi--todo-----
-                               curve[-1].handleTypes = [ALIGN, FREE]   #remi--todo-----
-
-               elif self.spline:  # NURBSplines-----OK-----
+               if self.spline:  # NURBSplines-----OK-----
                        #print 'deb:polyline2dCurve.draw self.spline!' #---------------
                        weight1 = 0.5
                        weight2 = 1.0
@@ -1562,6 +1366,7 @@ class Polyline:  #--------------------------------------------------------------
                ewidths = []
                swidth_default = self.swidth #default start width of POLYLINEs segments
                ewidth_default = self.ewidth #default end width of POLYLINEs segments
+               #print 'deb:drawPoly2d self.swidth=', self.swidth #------------------------
                thic = set_thick(self.thic, settings)
                if self.spline: pline_typ = 'ps'
                elif self.curved: pline_typ = 'pc'
@@ -1633,9 +1438,11 @@ class Polyline:  #--------------------------------------------------------------
 
                        swidth = point1.swidth
                        ewidth = point1.ewidth
+                       #print 'deb:drawPoly2d point1.swidth=', swidth #------------------------
                        if swidth == None: swidth = swidth_default
                        if ewidth == None: ewidth = ewidth_default
                        if swidth != 0.0 or ewidth != 0.0: wide_segment_exist = True
+                       #print 'deb:drawPoly2d vertex_swidth=', swidth #------------------------
 
                        if settings.var['width_force']:  # force minimal width for thin segments
                                width_min = settings.var['width_min']
@@ -1819,14 +1626,14 @@ class Polyline:  #--------------------------------------------------------------
                                                                left_angle = False
                                                        limit_dist = settings.var['dist_min']
                                                        if left_angle:  # if left turning angle
-                                                               print 'deb:drawPoly2d it is left turning angle' #-------------
+                                                               #print 'deb:drawPoly2d it is left turning angle' #-------------
                                                                # to avoid triangelface/doubleVertex
                                                                delta1 = (cornerpointL - vecL1).normalize() * limit_dist
                                                                delta4 = (cornerpointL - vecL4).normalize() * limit_dist
                                                                pointsLc.extend((cornerpointL - delta1, cornerpointL - delta4))
                                                                pointsRc.extend((pointsRe[i],pointsRs[i+1]))
                                                        else:  # if right turning angle
-                                                               print 'deb:drawPoly2d right turning angle' #-------------
+                                                               #print 'deb:drawPoly2d right turning angle' #-------------
                                                                delta1 = (cornerpointR - vecR1).normalize() * limit_dist
                                                                delta4 = (cornerpointR - vecR4).normalize() * limit_dist
                                                                pointsRc.extend((cornerpointR - delta1, cornerpointR - delta4))
@@ -1917,8 +1724,10 @@ class Polyline:  #--------------------------------------------------------------
                                #faces = f_bottom + f_top
                                #faces = f_left + f_right + f_start + f_end
                                #print 'deb:faces_list:\n', faces  #-----------------------
-                               me = Mesh.New(obname)             # create a new mesh
-                               ob = SCENE.objects.new(me) # create a new mesh_object
+                               if M_OBJ: obname, me, ob = makeNewObject()
+                               else: 
+                                       me = Mesh.New(obname)           # create a new mesh
+                                       ob = SCENE.objects.new(me) # create a new mesh_object
                                me.verts.extend(pointsW)                # add vertices to mesh
                                me.faces.extend(faces)  # add faces to the mesh
 
@@ -1926,7 +1735,7 @@ class Polyline:  #--------------------------------------------------------------
                                # The mesh must first be linked to an object so the method knows which object to update.
                                # This is because vertex groups in Blender are stored in the object -- not in the mesh,
                                # which may be linked to more than one object.
-                               if settings.var['vGroup_on']:
+                               if settings.var['vGroup_on'] and not M_OBJ:
                                        # each MeshSide becomes vertexGroup for easier material assignment ---------------------
                                        replace = Blender.Mesh.AssignModes.REPLACE  #or .AssignModes.ADD
                                        vg_left, vg_right, vg_top, vg_bottom = [], [], [], []
@@ -1956,8 +1765,10 @@ class Polyline:  #--------------------------------------------------------------
                                faces = [[num, len1+num, len1+num+1, num+1] for num in xrange(len1 - 1)]
                                if self.closed:
                                        faces.append([len1, 0, len1-1, len1+len1-1])
-                               me = Mesh.New(obname)             # create a new mesh
-                               ob = SCENE.objects.new(me) # create a new mesh_object
+                               if M_OBJ: obname, me, ob = makeNewObject()
+                               else: 
+                                       me = Mesh.New(obname)           # create a new mesh
+                                       ob = SCENE.objects.new(me) # create a new mesh_object
                                me.verts.extend(pointsW)                # add vertices to mesh
                                me.faces.extend(faces)  # add faces to the mesh
 
@@ -1976,8 +1787,10 @@ class Polyline:  #--------------------------------------------------------------
                        faces = [[num, num+1, num+len1+1, num+len1] for num in xrange(len1 - 1)]
                        if self.closed:
                                faces.append([len1-1, 0, len1, 2*len1-1])
-                       me = Mesh.New(obname)             # create a new mesh
-                       ob = SCENE.objects.new(me) # create a new mesh_object
+                       if M_OBJ: obname, me, ob = makeNewObject()
+                       else: 
+                               me = Mesh.New(obname)           # create a new mesh
+                               ob = SCENE.objects.new(me) # create a new mesh_object
                        me.verts.extend(points)   # add vertices to mesh
                        me.faces.extend(faces)  # add faces to the mesh
 
@@ -1993,8 +1806,10 @@ class Polyline:  #--------------------------------------------------------------
                        edges = [[num, num+1] for num in xrange(len(points)-1)]
                        if self.closed:
                                edges.append([len(points)-1, 0])
-                       me = Mesh.New(obname)             # create a new mesh
-                       ob = SCENE.objects.new(me) # create a new mesh_object
+                       if M_OBJ: obname, me, ob = makeNewObject()
+                       else: 
+                               me = Mesh.New(obname)           # create a new mesh
+                               ob = SCENE.objects.new(me) # create a new mesh_object
                        me.verts.extend(points)   # add vertices to mesh
                        me.edges.extend(edges)  # add edges to the mesh
 
@@ -2006,7 +1821,8 @@ class Polyline:  #--------------------------------------------------------------
 
 
 class Vertex(object):  #-----------------------------------------------------------------
-       """Generic vertex object used by POLYLINEs (and maybe others).
+       """Generic vertex object used by POLYLINEs, (and maybe others).
+       also used by class_LWPOLYLINEs but without obj-parameter
        """
 
        def __init__(self, obj=None):
@@ -2017,8 +1833,8 @@ class Vertex(object):  #--------------------------------------------------------
                #print 'deb:Vertex.init.START:----------------' #-----------------------
                self.loc = [0,0,0]
                self.face = []
-               self.swidth = 0
-               self.ewidth = 0
+               self.swidth = None #0
+               self.ewidth = None #0
                self.bulge = 0
                if obj is not None:
                        if not obj.type == 'vertex':
@@ -2058,14 +1874,14 @@ class Vertex(object):  #--------------------------------------------------------
                        self.curv_tangent =  getit(data, 50, None) # curve_tangent
 
                if self.plface and not self.plmesh:
-                               v1 = getit(data, 71, 0) # polyface:Face.vertex 1.
-                               v2 = getit(data, 72, 0) # polyface:Face.vertex 2.
-                               v3 = getit(data, 73, 0) # polyface:Face.vertex 3.
-                               v4 = getit(data, 74, None) # polyface:Face.vertex 4.
-                               self.face = [abs(v1)-1,abs(v2)-1,abs(v3)-1]
-                               if v4 != None:
-                                       if abs(v4) != abs(v1):
-                                               self.face.append(abs(v4)-1)
+                       v1 = getit(data, 71, 0) # polyface:Face.vertex 1.
+                       v2 = getit(data, 72, 0) # polyface:Face.vertex 2.
+                       v3 = getit(data, 73, 0) # polyface:Face.vertex 3.
+                       v4 = getit(data, 74, None) # polyface:Face.vertex 4.
+                       self.face = [abs(v1)-1,abs(v2)-1,abs(v3)-1]
+                       if v4 != None:
+                               if abs(v4) != abs(v1):
+                                       self.face.append(abs(v4)-1)
                else:   #--parameter for polyline2d
                        self.swidth = getit(data, 40, None) # start width
                        self.ewidth = getit(data, 41, None) # end width
@@ -2089,34 +1905,332 @@ class Vertex(object):  #--------------------------------------------------------
                return self.loc.__iter__()
 
 
-       def __str__(self):
-               return str(self.loc)
+       def __str__(self):
+               return str(self.loc)
+
+
+       def __repr__(self):
+               return "Vertex %s, swidth=%s, ewidth=%s, bulge=%s, face=%s" %(self.loc, self.swidth, self.ewidth, self.bulge, self.face)
+
+
+       def getx(self):
+               return self.loc[0]
+       def setx(self, value):
+               self.loc[0] = value
+       x = property(getx, setx)
+
+
+       def gety(self):
+               return self.loc[1]
+       def sety(self, value):
+               self.loc[1] = value
+       y = property(gety, sety)
+
+
+       def getz(self):
+               return self.loc[2]
+       def setz(self, value):
+               self.loc[2] = value
+       z = property(getz, setz)
+
+
+
+class Spline(Polyline):  #-----------------------------------------------------------------
+       """Class for objects representing dxf SPLINEs.
+       """
+       def __init__(self, obj):
+               """Expects an entity object of type spline as input.
+100 - Subclass marker (AcDbSpline)
+210,220, 230  - Normal vector (omitted if the spline is nonplanar) X,Y,Z values of normal vector
+70 - Spline flag (bit coded):
+  1 = Closed spline
+  2 = Periodic spline
+  4 = Rational spline
+  8 = Planar
+ 16 = Linear (planar bit is also set)
+71 - Degree of the spline curve
+72 - Number of knots
+73 - Number of control points
+74 - Number of fit points (if any)
+42 - Knot tolerance (default = 0.0000001)
+43 - Control-point tolerance (default = 0.0000001)
+44 - Fit tolerance (default = 0.0000000001)
+12,22,32 - Start tangent--may be omitted (in WCS). X,Y,Z values of start tangent--may be omitted (in WCS).
+13,23, 33 - End tangent--may be omitted (in WCS). X,Y,Z values of end tangent--may be omitted (in WCS)
+40 - Knot value (one entry per knot)
+41 - Weight (if not 1); with multiple group pairs, are present if all are not 1
+10,20, 30  - Control points (in WCS) one entry per control point.
+DXF: X value; APP: 3D point, Y and Z values of control points (in WCS) (one entry per control point)
+11,21, 31 - Fit points (in WCS) one entry per fit point.
+ X,Y,Z values of fit points (in WCS) (one entry per fit point)
+               """
+               #print 'deb:Spline.START:----------------' #------------------------
+               if not obj.type == 'spline':
+                       raise TypeError, "Wrong type %s for spline object!" %obj.type
+               self.type = obj.type
+               self.data = obj.data[:]
+
+               # required data
+               self.num_points = obj.get_type(73)[0]
+
+               # optional data (with defaults)
+               self.space = getit(obj, 67, 0)
+
+               self.color_index = getit(obj, 62, BYLAYER)
+
+               #self.elevation =  getit(obj, 30, 0)
+               self.thic = 0 # getit(obj, 39, 0)
+
+               width = 0
+               self.swidth =  width # default start width
+               self.ewidth =  width # default end width
+
+               self.flags = getit(obj, 70, 0)
+               self.closed = self.flags & 1   # closed spline
+               self.period = self.flags & 2   # Periodic spline
+               self.ration = self.flags & 4   # Rational spline
+               self.planar = self.flags & 8   # Planar
+               self.linear = self.flags & 16  # Linear (and Planar)
+
+               self.degree = getit(obj, 71, 0) # Degree of the spline curve
+               self.curvNormal = False
+               self.curvQBspline = False
+               self.curvCBspline = False
+               self.curvBezier = False
+               if   self.degree == 0: self.curvNormal = True
+               elif self.degree == 1: self.curvQBspline = True
+               elif self.degree == 2: self.curvCBspline = True
+               #elif self.degree == 3: self.curvBezier = True
+               elif self.degree == 3: self.spline = True
+       
+               self.num_knots = getit(obj, 72, 0) # Number of knots
+               self.num_contr = getit(obj, 73, 0) # Number of control points
+               self.num_fitpk = getit(obj, 74, 0) # Number of fit points (if any)
+
+               self.layer = getit(obj.data, 8, None)
+               self.extrusion = get_extrusion(obj.data)
+
+               self.points = self.get_points(obj.data)
+
+               if self.planar: self.pltype = 'poly2d'
+               else: self.pltype = 'poly3d'
+               self.curved = False
+               #self.curved = False
+
+               #print 'deb:Spline obj.data:\n', obj.data #------------------------
+               #print 'deb:Spline self.points:\n', self.points #------------------------
+               #print 'deb:Spline.ENDinit:----------------' #------------------------
+
+
+       def get_points(self, data):
+               """Gets points for a spline type object.
+
+               Splines have fixed number of verts, and
+               each vert can have a number of properties.
+               Verts should be coded as
+               10:xvalue
+               20:yvalue
+               for each vert
+               """
+               num = self.num_contr
+               point = None
+               points = []
+               #point = Vertex()
+               for item in data:
+                       #print 'deb:Spline item:', item #------------------------
+                       if item[0] == 10:   # control point
+                               if point: points.append(point)
+                               point = Vertex()
+                               point.curved = True
+                               point.x = item[1]
+                       elif item[0] == 20: # 20 = y
+                               point.y = item[1]
+                       elif item[0] == 30: # 30 = z
+                               point.z = item[1]
+
+                       elif item[0] == 11:   # fit point
+                               if point: points.append(point)
+                               point = Vertex()
+                               point.curved = True
+                               point.x = item[1]
+                       elif item[0] == 21: # 20 = y
+                               point.y = item[1]
+                       elif item[0] == 31: # 30 = z
+                               point.z = item[1]
+
+                       elif item[0] == 12:   # start tangent
+                               if point: points.append(point)
+                               point = Vertex()
+                               point.curved = True
+                               point.x = item[1]
+                       elif item[0] == 22: # = y
+                               point.y = item[1]
+                       elif item[0] == 32: # = z
+                               point.z = item[1]
+
+                       elif item[0] == 13:   # end tangent
+                               if point: points.append(point)
+                               point = Vertex()
+                               point.curved = True
+                               point.x = item[1]
+                       elif item[0] == 23: # 20 = y
+                               point.y = item[1]
+                       elif item[0] == 33: # 30 = z
+                               point.z = item[1]
+               points.append(point)
+               #print 'deb:Spline points:\n', points #------------------------
+               return points
+
+
+
+       def __repr__(self):
+               return "%s: layer - %s, points - %s" %(self.__class__.__name__, self.layer, self.points)
+
+
+       
+
+class LWpolyline(Polyline):  #-------------------------------------------------------------
+       """Class for objects representing dxf LWPOLYLINEs.
+       """
+       def __init__(self, obj):
+               """Expects an entity object of type lwpolyline as input.
+               """
+               #print 'deb:LWpolyline.START:----------------' #------------------------
+               if not obj.type == 'lwpolyline':
+                       raise TypeError, "Wrong type %s for polyline object!" %obj.type
+               self.type = obj.type
+               self.data = obj.data[:]
+
+               # required data
+               self.num_points = obj.get_type(90)[0]
+
+               # optional data (with defaults)
+               self.space = getit(obj, 67, 0)
+               self.elevation =  getit(obj, 38, 0)
+               self.thic =  getit(obj, 39, 0)
+               self.color_index = getit(obj, 62, BYLAYER)
+               width =  getit(obj, 43, 0)
+               self.swidth =  width # default start width
+               self.ewidth =  width # default end width
+               #print 'deb:LWpolyline width=', width #------------------------
+               #print 'deb:LWpolyline elevation=', self.elevation #------------------------
+       
+               self.flags = getit(obj, 70, 0)
+               self.closed = self.flags&1 # byte coded, 1 = closed, 128 = plinegen
+
+               self.layer = getit(obj.data, 8, None)
+               self.extrusion = get_extrusion(obj.data)
+
+               self.points = self.get_points(obj.data)
+
+               self.pltype = 'poly2d'   # LW-polyline is a 2D-polyline
+               self.spline = False
+               self.curved = False
+
+
+               #print 'deb:LWpolyline.obj.data:\n', obj.data #------------------------
+               #print 'deb:LWpolyline.ENDinit:----------------' #------------------------
+
+
+       def get_points(self, data):
+               """Gets points for a polyline type object.
+
+               LW-Polylines have no fixed number of verts, and
+               each vert can have a number of properties.
+               Verts should be coded as
+               10:xvalue
+               20:yvalue
+               40:startwidth or 0
+               41:endwidth or 0
+               42:bulge or 0
+               for each vert
+               """
+               num = self.num_points
+               point = None
+               points = []
+               for item in data:
+                       if item[0] == 10:   # 10 = x
+                               if point:
+                                       points.append(point)
+                               point = Vertex()
+                               point.x = item[1]
+                               point.z = self.elevation
+                       elif item[0] == 20: # 20 = y
+                               point.y = item[1]
+                       elif item[0] == 40: # 40 = start width
+                               point.swidth = item[1]
+                       elif item[0] == 41: # 41 = end width
+                               point.ewidth = item[1]
+                       elif item[0] == 42: # 42 = bulge
+                               point.bulge = item[1]
+               points.append(point)
+               return points
+
 
 
        def __repr__(self):
-               return "Vertex %s, swidth=%s, ewidth=%s, bulge=%s, face=%s" %(self.loc, self.swidth, self.ewidth, self.bulge, self.face)
-
-
-       def getx(self):
-               return self.loc[0]
-       def setx(self, value):
-               self.loc[0] = value
-       x = property(getx, setx)
+               return "%s: layer - %s, points - %s" %(self.__class__.__name__, self.layer, self.points)
 
 
-       def gety(self):
-               return self.loc[1]
-       def sety(self, value):
-               self.loc[1] = value
-       y = property(gety, sety)
+       def draw_old(self, settings):
+               """for LWPOLYLINE: generate Blender_geometry.
+               """
+               #print 'deb:LWpolyline.draw.START:----------------' #------------------------
+               points = []
+               obname = 'lw_%s' %self.layer  # create object name from layer name
+               obname = obname[:MAX_NAMELENGTH]
+               #settings.var['curves_on'] == True
+               #print 'deb:index_len: ', len(self.points) #------------------
+               for i, point in enumerate(self.points):
+                       #print 'deb:index: ', i #------------------
+                       if not point.bulge:
+                               points.append(point.loc)
+                       elif point.bulge and not self.closed and i == len(self.points)-1:
+                               points.append(point.loc)
+                       elif point.bulge:        #
+                               if i == len(self.points)-1:
+                                       point2 = self.points[0]
+                               else:
+                                       point2 = self.points[i+1]
+                               arc_res = settings.var['arc_res']/sqrt(settings.var['arc_rad'])
+                               verts, center = calcBulge(point, point2, arc_res)
+#                         if i == len(self.points)-1:
+#                                 if self.closed:
+#                                         verts.pop() #remove last(=first) vertex
+#                         else:
+#                                 verts.pop() #remove last vertex, because this point will be writen as the next vertex
+                               points.extend(verts)
 
+               thic = self.thic
+               if settings.var['thick_force'] and thic == 0: thic = settings.var['thick_min']
+               if settings.var['thick_on'] and thic != 0:
+                       len1 = len(points)
+                       points.extend([[point[0], point[1], point[2]+thic] for point in points])
+                       faces = []
+                       #print 'deb:len1:', len1  #-----------------------
+                       faces = [[num, num+1, num+len1+1, num+len1] for num in xrange(len1 - 1)]
+                       if self.closed:
+                               faces.append([len1-1, 0, len1, 2*len1-1])
+                       #print 'deb:faces_list:\n', faces  #-----------------------
+                       me = Mesh.New(obname)             # create a new mesh
+                       ob = SCENE.objects.new(me) # create a new mesh_object
+                       me.verts.extend(points) # add vertices to mesh
+                       me.faces.extend(faces)   # add faces to the mesh
+               else:
+                       edges = [[num, num+1] for num in xrange(len(points)-1)]
+                       if self.closed:
+                               edges.append([len(points)-1, 0])
+                       #print 'deb:edges_list:\n', edges  #-----------------------
+                       me = Mesh.New(obname)             # create a new mesh
+                       ob = SCENE.objects.new(me) # create a new mesh_object
+                       me.verts.extend(points) # add vertices to mesh
+                       me.edges.extend(edges)   # add edges to the mesh
 
-       def getz(self):
-               return self.loc[2]
-       def setz(self, value):
-               self.loc[2] = value
-       z = property(getz, setz)
+               ob.LocZ = self.elevation
+               transform(self.extrusion, 0, ob)
 
+               #print 'deb:LWpolyline.draw.END:----------------' #------------------------
+               return ob
 
 
 class Text:  #-----------------------------------------------------------------
@@ -2363,8 +2477,6 @@ class Mtext:  #-----------------------------------------------------------------
                return ob
 
 
-
-
 class Circle:  #-----------------------------------------------------------------
        """Class for objects representing dxf CIRCLEs.
        """
@@ -2494,8 +2606,10 @@ class Circle:  #----------------------------------------------------------------
                        return ob
 
                else:  # draw CIRCLE as mesh -----------------------------------------------
-                       cir = Mesh.New(obname)           # create a new mesh
-                       ob = SCENE.objects.new(cir) # create a new circle_object
+                       if M_OBJ: obname, me, ob = makeNewObject()
+                       else: 
+                               me = Mesh.New(obname)           # create a new mesh
+                               ob = SCENE.objects.new(me) # create a new mesh_object
                        # set a number of segments in entire circle
                        arc_res = settings.var['arc_res'] * sqrt(radius) / sqrt(settings.var['arc_rad'])
                        start, end = 0.0 , 360.0
@@ -2534,24 +2648,24 @@ class Circle:  #----------------------------------------------------------------
                                        #print 'deb:circleDraw:verts:', verts  #---------------
                                        faces = f_band + f_bottom + f_top
                                        #print 'deb:circleDraw:faces:', faces  #---------------
-                               cir.verts.extend(verts) # add vertices to mesh
-                               cir.faces.extend(faces)  # add faces to the mesh
+                               me.verts.extend(verts) # add vertices to mesh
+                               me.faces.extend(faces)  # add faces to the mesh
 
                                if settings.var['meshSmooth_on']:  # left and right side become smooth ----------------------
                                        for i in xrange(smooth_len):
-                                               cir.faces[i].smooth = True
+                                               me.faces[i].smooth = True
                                # each MeshSide becomes vertexGroup for easier material assignment ---------------------
-                               if settings.var['vGroup_on']:
+                               if settings.var['vGroup_on'] and not M_OBJ:
                                        # each MeshSide becomes vertexGroup for easier material assignment ---------------------
                                        replace = Blender.Mesh.AssignModes.REPLACE  #or .AssignModes.ADD
                                        vg_band, vg_top, vg_bottom = [], [], []
                                        for v in f_band: vg_band.extend(v)
-                                       cir.addVertGroup('side.band')  ; cir.assignVertsToGroup('side.band',  list(set(vg_band)), 1.0, replace)
+                                       me.addVertGroup('side.band')  ; me.assignVertsToGroup('side.band',  list(set(vg_band)), 1.0, replace)
                                        if settings.var['fill_on']:
                                                for v in f_top: vg_top.extend(v)
                                                for v in f_bottom: vg_bottom.extend(v)
-                                               cir.addVertGroup('side.top')   ; cir.assignVertsToGroup('side.top',   list(set(vg_top)), 1.0, replace)
-                                               cir.addVertGroup('side.bottom'); cir.assignVertsToGroup('side.bottom',list(set(vg_bottom)), 1.0, replace)
+                                               me.addVertGroup('side.top')   ; me.assignVertsToGroup('side.top',   list(set(vg_top)), 1.0, replace)
+                                               me.addVertGroup('side.bottom'); me.assignVertsToGroup('side.bottom',list(set(vg_bottom)), 1.0, replace)
 
                        else: # if thic == 0
                                if settings.var['fill_on']:
@@ -2563,20 +2677,18 @@ class Circle:  #----------------------------------------------------------------
                                        faces.append([len1-1, 0, center1])
                                        #print 'deb:circleDraw:verts:', verts  #---------------
                                        #print 'deb:circleDraw:faces:', faces  #---------------
-                                       cir.verts.extend(verts) # add vertices to mesh
-                                       cir.faces.extend(faces)  # add faces to the mesh
+                                       me.verts.extend(verts) # add vertices to mesh
+                                       me.faces.extend(faces)  # add faces to the mesh
                                else:
-                                       cir.verts.extend(verts) # add vertices to mesh
+                                       me.verts.extend(verts) # add vertices to mesh
                                        edges = [[num, num+1] for num in xrange(len(verts))]
                                        edges[-1][1] = 0   # it points the "new" last edge to the first vertex
-                                       cir.edges.extend(edges)  # add edges to the mesh
+                                       me.edges.extend(edges)  # add edges to the mesh
 
                        ob.loc = tuple(self.loc)
                        transform(self.extrusion, 0, ob)
                        return ob
                        
-                       
-
 
 class Arc:  #-----------------------------------------------------------------
        """Class for objects representing dxf ARCs.
@@ -2670,8 +2782,10 @@ class Arc:  #-----------------------------------------------------------------
                        return ob
 
                else:  # draw ARC as mesh --------------------
-                       me = Mesh.New(obname)  # create a new mesh
-                       ob = SCENE.objects.new(me) # create a new mesh_object
+                       if M_OBJ: obname, me, ob = makeNewObject()
+                       else: 
+                               me = Mesh.New(obname)           # create a new mesh
+                               ob = SCENE.objects.new(me) # create a new mesh_object
                        # set a number of segments in entire circle
                        arc_res = settings.var['arc_res'] * sqrt(radius) / sqrt(settings.var['arc_rad'])
 
@@ -2719,7 +2833,7 @@ class Arc:  #-----------------------------------------------------------------
                                                for i in xrange(smooth_len):
                                                        me.faces[i].smooth = True
                                        # each MeshSide becomes vertexGroup for easier material assignment ---------------------
-                                       if settings.var['vGroup_on']:
+                                       if settings.var['vGroup_on'] and not M_OBJ:
                                                # each MeshSide becomes vertexGroup for easier material assignment ---------------------
                                                replace = Blender.Mesh.AssignModes.REPLACE  #or .AssignModes.ADD
                                                vg_left, vg_right, vg_top, vg_bottom = [], [], [], []
@@ -2792,8 +2906,8 @@ class BlockRecord:  #-----------------------------------------------------------
                # optional data (with defaults)
                self.insertion_units =  getit(obj, 70, None)
                self.insert_units = getit(obj, 1070, None)
-               """code 1070 Einfügeeinheiten:
-               0 = Keine Einheiten; 1 = Zoll; 2 = Fuß; 3 = Meilen; 4 = Millimeter;
+               """code 1070 Einfuegeeinheiten:
+               0 = Keine Einheiten; 1 = Zoll; 2 = Fuss; 3 = Meilen; 4 = Millimeter;
                5 = Zentimeter; 6 = Meter; 7 = Kilometer; 8 = Mikrozoll;
                9 = Mils; 10 = Yard; 11 = Angstrom; 12 = Nanometer;
                13 = Mikrons; 14 = Dezimeter; 15 = Dekameter;
@@ -3048,7 +3162,7 @@ class Insert:  #----------------------------------------------------------------
                                return ob
 
                elif settings.drawTypes['insert']:  #if insert_drawType activated
-                       print 'deb:draw.  settings.blocknamesmap:', settings.blocknamesmap #--------------------
+                       #print 'deb:draw.  settings.blocknamesmap:', settings.blocknamesmap #--------------------
                        obname = settings.blocknamesmap[self.name]
                        obname = 'in_%s' %obname  # create object name from block name
                        #obname = obname[:MAX_NAMELENGTH]
@@ -3193,10 +3307,10 @@ class Ellipse:  #---------------------------------------------------------------
                if settings.var['lines_as'] == 4: # as thin_box
                        thic = settings.var['thick_min']
                        width = settings.var['width_min']
-               if settings.var['lines_as'] == 3: # as thin cylinder
+               elif settings.var['lines_as'] == 3: # as thin cylinder
                        cyl_rad = 0.5 * settings.var['width_min']
 
-               if settings.var['lines_as'] == 5:  # draw ELLIPSE as curve -------------
+               elif settings.var['lines_as'] == 5:  # draw ELLIPSE as curve -------------
                        arc_res = settings.var['curve_arc']
                        triples = True
                        VectorTriples = calcArc(None, radius, start, end, arc_res, triples)
@@ -3236,12 +3350,13 @@ class Ellipse:  #---------------------------------------------------------------
 
 
                else: # draw ELLIPSE as mesh --------------------------------------
-                       me = Mesh.New(obname)  # create a new mesh
-                       ob = SCENE.objects.new(me) # create a new mesh_object
+                       if M_OBJ: obname, me, ob = makeNewObject()
+                       else: 
+                               me = Mesh.New(obname)           # create a new mesh
+                               ob = SCENE.objects.new(me) # create a new mesh_object
                        # set a number of segments in entire circle
                        arc_res = settings.var['arc_res'] * sqrt(radius) / sqrt(settings.var['arc_rad'])
 
-
                        verts = calcArc(None, radius, start, end, arc_res, False)
                        #verts = [list(point) for point in verts]
                        if False: #--todo--: if ellipse_closed:
@@ -3287,8 +3402,7 @@ class Ellipse:  #---------------------------------------------------------------
                                                smooth_len = len(f_left) + len(f_right)
                                                for i in xrange(smooth_len):
                                                        me.faces[i].smooth = True
-
-                                       if settings.var['vGroup_on']:
+                                       if settings.var['vGroup_on'] and not M_OBJ:
                                                # each MeshSide becomes vertexGroup for easier material assignment ---------------------
                                                replace = Blender.Mesh.AssignModes.REPLACE  #or .AssignModes.ADD
                                                vg_left, vg_right, vg_top, vg_bottom = [], [], [], []
@@ -3408,21 +3522,24 @@ class Face:  #-----------------------------------------------------------------
                global activObjectName
                #print 'deb:draw:face.ob IN activObjectName: ', activObjectName #---------------------
 
-               if activObjectLayer == self.layer and settings.var['one_mesh_on']:
-                       obname = activObjectName
-                       #print 'deb:face.draw obname from activObjectName: ', obname #---------------------
-                       ob = Object.Get(obname)  # open an existing mesh_object
-                       #ob = SCENE.getChildren(obname)  # open an existing mesh_object
-               else:
-                       obname = 'fa_%s' %self.layer  # create object name from layer name
-                       obname = obname[:MAX_NAMELENGTH]
-                       me = Mesh.New(obname)             # create a new mesh
-                       ob = SCENE.objects.new(me) # create a new mesh_object
-                       activObjectName = ob.name
-                       activObjectLayer = self.layer
-                       #print ('deb:except. new face.ob+mesh:"%s" created!' %ob.name) #---------------------
-
-               me = Mesh.Get(ob.name)   # open objects mesh data
+               if M_OBJ: obname, me, ob = makeNewObject()
+               else: 
+                       if activObjectLayer == self.layer and settings.var['one_mesh_on']:
+                               obname = activObjectName
+                               #print 'deb:face.draw obname from activObjectName: ', obname #---------------------
+                               ob = getSceneChild(obname)  # open an existing mesh_object
+                               #ob = SCENE.getChildren(obname)  # open an existing mesh_object
+                               me = ob.getData(name_only=False, mesh=True)
+                       else:
+                               obname = 'fa_%s' %self.layer  # create object name from layer name
+                               obname = obname[:MAX_NAMELENGTH]
+                               me = Mesh.New(obname)             # create a new mesh
+                               ob = SCENE.objects.new(me) # create a new mesh_object
+                               activObjectName = ob.name
+                               activObjectLayer = self.layer
+                               #print ('deb:except. new face.ob+mesh:"%s" created!' %ob.name) #---------------------
+       
+               #me = Mesh.Get(ob.name)   # open objects mesh data
                faces, edges = [], []
                n = len(me.verts)
                if len(self.points) == 4:
@@ -3435,7 +3552,7 @@ class Face:  #-----------------------------------------------------------------
                me.verts.extend(points) # add vertices to mesh
                if faces: me.faces.extend(faces)           # add faces to the mesh
                if edges: me.edges.extend(edges)           # add faces to the mesh
-               if settings.var['vGroup_on']:
+               if settings.var['vGroup_on'] and not M_OBJ:
                        # entities with the same color build one vertexGroup for easier material assignment ---------------------
                        ob.link(me) # link mesh to that object
                        vG_name = 'color_%s' %self.color_index
@@ -3468,6 +3585,7 @@ type_map = {
 #   'mline':MLine,
        'polyline':Polyline,
        'lwpolyline':LWpolyline,
+       'spline':Spline,
 #   'region':Region,
        'trace':Solid,
        'solid':Solid,
@@ -3738,7 +3856,11 @@ class Blocks:  #----------------------------------------------------------------
                        global oblist
                        oblist.append((ob, insertFlag, blockFlag))
                else:           
+                       if M_OBJ:
+                               car_end()
+                               car_start()
                        drawEntities(block.entities, self.settings, block_def)
+                       if M_OBJ: car_end()
                self.settings.write("Drawing block:\'%s\' done!" %name)
                self.blocks[name] = blender_group
 
@@ -3809,7 +3931,8 @@ class Settings:  #--------------------------------------------------------------
                """Given the drawing, build dictionaries of Layers, Colors and Blocks.
                """
 
-               #de:    paßt die distance parameter an globalScale
+               global oblist
+               #adjust the distance parameter to globalScale
                if self.var['g_scale'] != 1.0:
                        self.var['dist_min']  = self.var['dist_min'] / self.var['g_scale']
                        self.var['thick_min'] = self.var['thick_min'] / self.var['g_scale']
@@ -3859,7 +3982,6 @@ class Settings:  #--------------------------------------------------------------
 
                        if views: #----------------------------------
                                if self.var['views_on']:
-                                       global oblist
                                        for item in views.data:
                                                if type(item) != list and item.type == 'view':
                                                        #print 'deb:settings_valid views dir(item)=', dir(item) #-------------
@@ -3876,7 +3998,6 @@ class Settings:  #--------------------------------------------------------------
 
                        if vports: #----------------------------------
                                if self.var['views_on']:
-                                       global oblist
                                        for item in vports.data:
                                                if type(item) != list and item.type == 'vport':
                                                        #print 'deb:settings_valid views dir(item)=', dir(item) #-------------
@@ -3901,7 +4022,8 @@ class Settings:  #--------------------------------------------------------------
                        # Read the block definitions and build our block object
                        if self.drawTypes['insert']: #if support for entity type 'Insert' is activated
                                #Build a dictionary of blockname:block_data pairs
-                               blocksmap, self.obj_number = getBlocksmap(drawing, layersmap, self.var['layFrozen_on'])
+                               blocksmap, obj_number = getBlocksmap(drawing, layersmap, self.var['layFrozen_on'])
+                               self.obj_number += obj_number
                                self.blocknamesmap = getBlocknamesmap(blocksmap)
                                self.blocks = Blocks(blocksmap, self) # initiates container for blocks_data
                                self.usedBlocks = blocksmap.keys()
@@ -3916,9 +4038,7 @@ class Settings:  #--------------------------------------------------------------
                # The section:entities
                if 'entities' in sections.keys():
                        self.write("found section:entities")
-
                        self.obj_number += len(drawing.entities.data)
-                       #print 'deb:settings_valid self.obj_number', self.obj_number #----------
                        self.obj_number = 1.0 / self.obj_number
 
 
@@ -4152,6 +4272,7 @@ def       analyzeDXF(dxfFile): #---------------------------------------
 def main(dxfFile):  #---------------#############################-----------
        #print 'deb:filename:', filename #--------------
        global SCENE
+       global oblist
        editmode = Window.EditMode()    # are we in edit mode?  If so ...
        if editmode:
                Window.EditMode(0) # leave edit mode before
@@ -4206,7 +4327,6 @@ def main(dxfFile):  #---------------#############################-----------
                        return None
 
                # Draw all the know entity types in the current scene
-               global oblist
                oblist = []  # a list of all created AND linked objects for final f_globalScale
                time2 = Blender.sys.time()  #time marker2
 
@@ -4218,9 +4338,12 @@ def main(dxfFile):  #---------------#############################-----------
                global activObjectLayer, activObjectName
                activObjectLayer, activObjectName = None, None
 
+               if M_OBJ: car_init()
+
                drawEntities(drawing.entities, settings)
 
                #print 'deb:drawEntities after: oblist:', oblist #-----------------------
+               if M_OBJ: car_end()
                if oblist: # and settings.var['g_scale'] != 1:
                        globalScale(oblist, settings.var['g_scale'])
 
@@ -4357,7 +4480,7 @@ def getBlocksmap(drawing, layersmap, layFrozen_on=False):  #--------------------
                        try: usedblocks[item.name] = [used, childList]
                        except KeyError: print 'Cannot map "%s" - "%s" as Block!' %(item.name, item)
        #print 'deb:getBlocksmap: usedblocks=' , usedblocks #-------------
-       print 'deb:getBlocksmap:  layersmap=' , layersmap #-------------
+       #print 'deb:getBlocksmap:  layersmap=' , layersmap #-------------
 
        for item in drawing.entities.data:
                if type(item) != list and item.type == 'insert':
@@ -4527,19 +4650,27 @@ def drawer(_type, entities, settings, block_def):  #----------------------------
                                insertFlag = False
                                alt_obname = activObjectName
                                ob = entity.draw(settings)
-                               if ob and ob.name != alt_obname:
-                                       if block_def:
-                                               blockFlag = True
-                                               bl_loc = block_def[1]
-                                               ob.loc = [ob.loc[0]-bl_loc[0],ob.loc[1]-bl_loc[1],ob.loc[2]-bl_loc[2]]
-                                       else: blockFlag = False
-                                       setObjectProperties(ob, group, entity, settings, block_def)
-                                       if settings.var['optimization'] <= settings.MIN:
-                                               #if settings.var['g_origin_on'] and not block_def: ob.loc = Mathutils.Vector(ob.loc) + settings.g_origin
-                                               if settings.var['g_scale_on']: globalScaleOne(ob, insertFlag, blockFlag, settings.var['g_scale'])
-                                               settings.redraw()
-                                       else: oblist.append((ob, insertFlag, blockFlag))
-
+                               if ob:
+                                       if M_OBJ and ob.type=='Mesh': #'Curve', 'Text'
+                                               if block_def:
+                                                       blockFlag = True
+                                                       bl_loc = block_def[1]
+                                                       ob.loc = [ob.loc[0]-bl_loc[0],ob.loc[1]-bl_loc[1],ob.loc[2]-bl_loc[2]]
+                                               car_nr()
+       
+                                       elif ob.name != alt_obname:
+                                               if block_def:
+                                                       blockFlag = True
+                                                       bl_loc = block_def[1]
+                                                       ob.loc = [ob.loc[0]-bl_loc[0],ob.loc[1]-bl_loc[1],ob.loc[2]-bl_loc[2]]
+                                               else: blockFlag = False
+                                               setObjectProperties(ob, group, entity, settings, block_def)
+                                               if settings.var['optimization'] <= settings.MIN:
+                                                       #if settings.var['g_origin_on'] and not block_def: ob.loc = Mathutils.Vector(ob.loc) + settings.g_origin
+                                                       if settings.var['g_scale_on']: globalScaleOne(ob, insertFlag, blockFlag, settings.var['g_scale'])
+                                                       settings.redraw()
+                                               else: oblist.append((ob, insertFlag, blockFlag))
+       
                #print 'deb:Finished drawing:', entities[0].type   #------------------------
                message = "\nDrawing dxf\'%ss\' done!" % _type
                settings.write(message, True)
@@ -4569,7 +4700,8 @@ def globalScaleOne(ob, insertFlag, blockFlag, SCALE):  #------------------------
                ob.loc = Mathutils.Vector(ob.loc) * SCALE_MAT
        else:   # entire scaling for all other imported objects ------------
                if ob.type == 'Mesh':           
-                       me = Mesh.Get(ob.name)
+                       me = ob.getData(name_only=False, mesh=True)
+                       #me = Mesh.Get(ob.name)
                        # set centers of all objects in (0,0,0)
                        #me.transform(ob.matrixWorld*SCALE_MAT) 
                        #ob.loc = Mathutils.Vector([0,0,0])
@@ -4990,6 +5122,7 @@ points_as_menu  = "convert to: %t|empty %x1|mesh.vertex %x2|thin sphere %x3|thin
 lines_as_menu   = "convert to: %t|*edge %x1|mesh %x2|*thin cylinder %x3|thin box %x4|curve %x5"
 mlines_as_menu  = "convert to: %t|*edge %x1|*mesh %x2|*thin cylinder %x3|*thin box %x|*curve %x5"
 plines_as_menu  = "convert to: %t|*edge %x1|mesh %x2|*thin cylinder %x3|*thin box %x4|curve %x5"
+splines_as_menu  = "convert to: %t|*edge %x1|mesh %x2|*thin cylinder %x3|*thin box %x4|curve %x5"
 plines3_as_menu = "convert to: %t|*edge %x1|mesh %x2|*thin cylinder %x3|*thin box %x4|curve %x5"
 plmesh_as_menu  = "convert to: %t|*edge %x1|mesh %x2"
 solids_as_menu  = "convert to: %t|*edge %x1|mesh %x2"
@@ -5072,6 +5205,7 @@ keywords_org = {
        'lines_as'  : 2,
        'mlines_as' : 2,
        'plines_as' : 2,
+       'splines_as' : 2,
        'plines3_as': 2,
        'plmesh_as' : 2,
        'solids_as' : 2,
@@ -5087,6 +5221,7 @@ drawTypes_org = {
        'ellipse': 1,
        'mline' : 0,
        'polyline': 1,
+       'spline': 0,
        'plmesh': 1,
        'pline3': 1,
        'lwpolyline': 1,
@@ -5272,12 +5407,14 @@ def presetConfig_curv():  #-----------------------------------------------
                GUI_A['lines_as'].val  = 5
                GUI_A['mlines_as'].val = 5
                GUI_A['plines_as'].val = 5
+               GUI_A['splines_as'].val = 5
                GUI_A['plines3_as'].val = 5
        else:
                GUI_A['points_as'].val = 2
                GUI_A['lines_as'].val  = 2
                GUI_A['mlines_as'].val = 2
                GUI_A['plines_as'].val = 2
+               GUI_A['splines_as'].val = 2
                GUI_A['plines3_as'].val = 2
 
        
@@ -5315,6 +5452,7 @@ def resetDefaultConfig_2D():  #-----------------------------------------------
                'ellipse': 1,
                'mline' : 0,
                'polyline': 1,
+               'spline': 0,
                'plmesh': 0,
                'pline3': 0,
                'lwpolyline': 1,
@@ -5361,6 +5499,7 @@ def resetDefaultConfig_3D():  #-----------------------------------------------
                'ellipse': 1,
                'mline' : 0,
                'polyline': 1,
+               'spline': 0,
                'plmesh': 1,
                'pline3': 1,
                'lwpolyline': 1,
@@ -5429,7 +5568,7 @@ def draw_UI():  #---------------------------------------------------------------
        menu_w = (3 * butt_margin) + but_0c + but_1c + but_2c + but_3c  #menu width
 
        simple_menu_h = 80
-       extend_menu_h = 350
+       extend_menu_h = 370
        y = simple_menu_h                # y is menu upper.y
        if config_UI.val: y += extend_menu_h
        x = 20 #menu left.x
@@ -5450,8 +5589,9 @@ def draw_UI():  #---------------------------------------------------------------
        if config_UI.val:
                b0, b0_ = but0c, but_0c + butt_margin
                b1, b1_ = but1c, but_1c
-               y -= 10
+               y_top = y
 
+               y -= 10
                y -= 20
                Draw.BeginAlign()
                GUI_B['point'] = Draw.Toggle('POINT', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['point'].val, "support dxf-POINT on/off")
@@ -5476,7 +5616,14 @@ def draw_UI():  #---------------------------------------------------------------
 
                y -= 20
                Draw.BeginAlign()
-               GUI_B['polyline'] = Draw.Toggle('2D-PLINE', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['polyline'].val, "support dxf-2D-POLYLINE on/off")
+               GUI_B['spline'] = Draw.Toggle('SPLINE', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['spline'].val, "support dxf-SPLINE on/off")
+               if GUI_B['spline'].val:
+                       GUI_A['splines_as'] = Draw.Menu(splines_as_menu, EVENT_NONE, but1c, y, but_1c, 20, GUI_A['splines_as'].val, "select target Blender-object")
+               Draw.EndAlign()
+
+               y -= 20
+               Draw.BeginAlign()
+               GUI_B['polyline'] = Draw.Toggle('2D/LWPLINE', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['polyline'].val, "support dxf-2D-POLYLINE on/off")
                if GUI_B['polyline'].val:
                        GUI_A['plines_as'] = Draw.Menu(plines_as_menu, EVENT_NONE, but1c, y, but_1c, 20, GUI_A['plines_as'].val, "select target Blender-object")
                Draw.EndAlign()
@@ -5488,6 +5635,64 @@ def draw_UI():  #---------------------------------------------------------------
                        GUI_A['plines3_as'] = Draw.Menu(plines3_as_menu, EVENT_NONE, but1c, y, but_1c, 20, GUI_A['plines3_as'].val, "select target Blender-object")
                Draw.EndAlign()
 
+               y_down = y
+               # -----------------------------------------------
+
+               y = y_top
+               b0, b0_ = but2c, but_2c + butt_margin
+               b1, b1_ = but3c, but_3c
+
+               y -= 10
+               y -= 20
+               Draw.BeginAlign()
+               GUI_B['plmesh'] = Draw.Toggle('POLY-MESH/FACE', EVENT_NONE, b0, y, b0_+b1_, 20, GUI_B['plmesh'].val, "support dxf-POLYMESH/POLYFACE on/off")
+#              GUI_A['plmesh_as'] = Draw.Menu(plmesh_as_menu, EVENT_NONE, but1c, y, but_1c, 20, GUI_A['plmesh_as'].val, "select target Blender-object")
+               Draw.EndAlign()
+
+               y -= 20
+               Draw.BeginAlign()
+               GUI_B['solid'] = Draw.Toggle('SOLID', EVENT_NONE, b0, y, b0_, 20, GUI_B['solid'].val, "support dxf-SOLID and TRACE on/off")
+               GUI_B['face'] = Draw.Toggle('3DFACE', EVENT_NONE, b1, y, b1_, 20, GUI_B['face'].val, "support dxf-3DFACE on/off")
+#              GUI_A['solids_as'] = Draw.Menu(solids_as_menu, EVENT_NONE, but3c, y, but_3c, 20, GUI_A['solids_as'].val, "select target Blender-object")
+               Draw.EndAlign()
+               #print 'deb:support solid, trace', GUI_B['trace'].val, GUI_B['solid'].val # ------------
+
+
+               y -= 20
+               Draw.BeginAlign()
+               GUI_B['text'] = Draw.Toggle('TEXT', EVENT_NONE, b0, y, b0_, 20, GUI_B['text'].val, "support dxf-TEXT on/off")
+               GUI_B['mtext'] = Draw.Toggle('*MTEXT', EVENT_NONE, b1, y, b1_, 20, GUI_B['mtext'].val, "(*wip)support dxf-MTEXT on/off")
+#              GUI_A['texts_as'] = Draw.Menu(texts_as_menu, EVENT_NONE, but3c, y, but_3c, 20, GUI_A['texts_as'].val, "select target Blender-object")
+               Draw.EndAlign()
+
+               y -= 20
+               Draw.BeginAlign()
+               GUI_B['block'] = Draw.Toggle('BLOCK', EVENT_REDRAW, b0, y, b0_-30, 20, GUI_B['block'].val, "support dxf-BLOCK and ARRAY on/off")
+               GUI_B['insert'].val = GUI_B['block'].val
+               if GUI_B['block'].val:
+                       GUI_A['block_nn'] = Draw.Toggle('n', EVENT_NONE, b1-30, y, 15, 20, GUI_A['block_nn'].val, "support hatch/noname BLOCKs *X... on/off")
+                       GUI_A['blockFilter_on'] = Draw.Toggle('F', EVENT_NONE, b1-15, y, 15, 20, GUI_A['blockFilter_on'].val, "(*wip) support name filtering of BLOCKs on/off")
+                       GUI_A['xref_on'] = Draw.Toggle('Xref', EVENT_NONE, b1, y, 20, 20, GUI_A['xref_on'].val, "support place holder for XREF-BLOCKs on/off")
+                       GUI_A['blocks_as'] = Draw.Menu(blocks_as_menu, EVENT_NONE, b1+20, y, b1_-20, 20, GUI_A['blocks_as'].val, "select target representation for imported BLOCKs")
+               Draw.EndAlign()
+
+
+               y -= 20
+               Draw.BeginAlign()
+               GUI_A['views_on'] = Draw.Toggle('views', EVENT_NONE, b0, y, b0_-25, 20, GUI_A['views_on'].val, "imports VIEWs and VIEWPORTs as cameras on/off")
+               GUI_A['cams_on'] = Draw.Toggle('*cams', EVENT_NONE, b1-25, y, b1_-25, 20, GUI_A['cams_on'].val, "(*wip) support ASHADE cameras on/off")
+               GUI_A['lights_on'] = Draw.Toggle('*lights', EVENT_NONE, b1+25, y, b1_-25, 20, GUI_A['lights_on'].val, "(*wip) support AVE_RENDER lights on/off")
+               Draw.EndAlign()
+
+
+               if y < y_down: y_down = y
+               # -----end supported objects--------------------------------------
+
+               b0, b0_ = but0c, but_0c + butt_margin
+               b1, b1_ = but1c, but_1c
+
+               y_top = y_down
+               y = y_top
                y -= 10
                y -= 20
                Draw.BeginAlign()
@@ -5534,6 +5739,14 @@ def draw_UI():  #---------------------------------------------------------------
                        Draw.Label(scale_str, b1+45, y, 200, 20)
                Draw.EndAlign()
 
+               y_down = y
+               # -----end material,translate,scale------------------------------------------
+
+               b0, b0_ = but0c, but_0c + butt_margin
+               b1, b1_ = but1c, but_1c
+
+               y_top = y_down
+               y = y_top
                y -= 10
                y -= 20
                Draw.BeginAlign()
@@ -5571,56 +5784,11 @@ def draw_UI():  #---------------------------------------------------------------
 
                y_down = y
                # -----------------------------------------------
-               y = simple_menu_h + extend_menu_h +20
+
                b0, b0_ = but2c, but_2c + butt_margin
                b1, b1_ = but3c, but_3c
 
-               y -= 20
-               Draw.BeginAlign()
-               GUI_B['plmesh'] = Draw.Toggle('POLY-MESH/FACE', EVENT_NONE, b0, y, b0_+b1_, 20, GUI_B['plmesh'].val, "support dxf-POLYMESH/POLYFACE on/off")
-#              GUI_A['plmesh_as'] = Draw.Menu(plmesh_as_menu, EVENT_NONE, but1c, y, but_1c, 20, GUI_A['plmesh_as'].val, "select target Blender-object")
-               Draw.EndAlign()
-
-               y -= 20
-               Draw.BeginAlign()
-               GUI_B['solid'] = Draw.Toggle('SOLID', EVENT_NONE, b0, y, b0_, 20, GUI_B['solid'].val, "support dxf-SOLID and TRACE on/off")
-               GUI_B['face'] = Draw.Toggle('3DFACE', EVENT_NONE, b1, y, b1_, 20, GUI_B['face'].val, "support dxf-3DFACE on/off")
-#              GUI_A['solids_as'] = Draw.Menu(solids_as_menu, EVENT_NONE, but3c, y, but_3c, 20, GUI_A['solids_as'].val, "select target Blender-object")
-               Draw.EndAlign()
-               #print 'deb:support solid, trace', GUI_B['trace'].val, GUI_B['solid'].val # ------------
-
-
-               y -= 20
-               Draw.BeginAlign()
-               GUI_B['text'] = Draw.Toggle('TEXT', EVENT_NONE, b0, y, b0_, 20, GUI_B['text'].val, "support dxf-TEXT on/off")
-               GUI_B['mtext'] = Draw.Toggle('*MTEXT', EVENT_NONE, b1, y, b1_, 20, GUI_B['mtext'].val, "(*wip)support dxf-MTEXT on/off")
-#              GUI_A['texts_as'] = Draw.Menu(texts_as_menu, EVENT_NONE, but3c, y, but_3c, 20, GUI_A['texts_as'].val, "select target Blender-object")
-               Draw.EndAlign()
-
-               y -= 20
-               Draw.BeginAlign()
-               GUI_B['block'] = Draw.Toggle('BLOCK', EVENT_REDRAW, b0, y, b0_-30, 20, GUI_B['block'].val, "support dxf-BLOCK and ARRAY on/off")
-               GUI_B['insert'].val = GUI_B['block'].val
-               if GUI_B['block'].val:
-                       GUI_A['block_nn'] = Draw.Toggle('n', EVENT_NONE, b1-30, y, 15, 20, GUI_A['block_nn'].val, "support hatch/noname BLOCKs *X... on/off")
-                       GUI_A['blockFilter_on'] = Draw.Toggle('F', EVENT_NONE, b1-15, y, 15, 20, GUI_A['blockFilter_on'].val, "(*wip) support name filtering of BLOCKs on/off")
-                       GUI_A['xref_on'] = Draw.Toggle('Xref', EVENT_NONE, b1, y, 20, 20, GUI_A['xref_on'].val, "support place holder for XREF-BLOCKs on/off")
-                       GUI_A['blocks_as'] = Draw.Menu(blocks_as_menu, EVENT_NONE, b1+20, y, b1_-20, 20, GUI_A['blocks_as'].val, "select target representation for imported BLOCKs")
-               Draw.EndAlign()
-
-
-               y -= 20
-               Draw.BeginAlign()
-               GUI_A['views_on'] = Draw.Toggle('views', EVENT_NONE, b0, y, b0_-25, 20, GUI_A['views_on'].val, "imports VIEWs and VIEWPORTs as cameras on/off")
-               GUI_A['cams_on'] = Draw.Toggle('*cams', EVENT_NONE, b1-25, y, b1_-25, 20, GUI_A['cams_on'].val, "(*wip) support ASHADE cameras on/off")
-               GUI_A['lights_on'] = Draw.Toggle('*lights', EVENT_NONE, b1+25, y, b1_-25, 20, GUI_A['lights_on'].val, "(*wip) support AVE_RENDER lights on/off")
-               Draw.EndAlign()
-
-               y -= 10
-               y -= 20
-               y -= 20
-               y -= 20
-
+               y = y_top
                y -= 10
                y -= 20
                Draw.BeginAlign()
@@ -5656,8 +5824,13 @@ def draw_UI():  #---------------------------------------------------------------
                GUI_A['newScene_on'] = Draw.Toggle('newScene', EVENT_NONE, b0, y, b0_, 20, GUI_A['newScene_on'].val, "creates new Blender-Scene for each import on/off")
                GUI_A['target_layer'] = Draw.Number('layer', EVENT_NONE, b1, y, b1_, 20, GUI_A['target_layer'].val, 1, 18, "imports into this Blender-layer (<19> reserved for block_definitions)")
 
+               if y < y_down: y_down = y
+               # -----end options --------------------------------------
+
+
                #--------------------------------------
-               if y > y_down: y = y_down
+               y_top = y_down
+               y = y_top
                #GUI_A['dummy_on'] = Draw.Toggle(' - ', EVENT_NONE, but0c, y, but_0c, 20, GUI_A['dummy_on'].val, "reserved")
                y -= 30
                Draw.BeginAlign()
@@ -5891,6 +6064,7 @@ def multi_import(DIR):
 
 
 
+UI_MODE = True
 
 if __name__ == "__main__":
        UI_MODE = True
@@ -5942,5 +6116,4 @@ if 1:
                        main(_dxf)
 
        print 'TOTAL TIME: %.6f' % (Blender.sys.time() - TIME)
-"""
-
+"""
\ No newline at end of file
index a940ac628760de65d89db54783c55a66bf775e84..116a59fa97e6d33ea4b1a75659710280e48ed39e 100644 (file)
@@ -108,6 +108,7 @@ void object_boundbox_flag(struct Object *ob, int flag, int set);
 void minmax_object(struct Object *ob, float *min, float *max);
 void minmax_object_duplis(struct Object *ob, float *min, float *max);
 void solve_tracking (struct Object *ob, float targetmat[][4]);
+int ray_hit_boundbox(struct BoundBox *bb, float ray_start[3], float ray_normal[3]);
 
 void object_handle_update(struct Object *ob);
 
index 654cf0991ccde0697cc6d16a1e48a2dbb15ea049..3040566065818b7c1d6d68f04e8012048986f126 100644 (file)
@@ -186,10 +186,6 @@ void DM_init_funcs(DerivedMesh *dm)
 void DM_init(DerivedMesh *dm,
              int numVerts, int numEdges, int numFaces)
 {
-       CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, numVerts);
-       CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, numEdges);
-       CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, numFaces);
-
        dm->numVertData = numVerts;
        dm->numEdgeData = numEdges;
        dm->numFaceData = numFaces;
index c2946bb666fe5b985949472b18acef2d7a69b46c..472df3d0f262f80f771af9b59f0d4601fa4f51c4 100644 (file)
@@ -732,6 +732,10 @@ DerivedMesh *CDDM_new(int numVerts, int numEdges, int numFaces)
 
        DM_init(dm, numVerts, numEdges, numFaces);
 
+       CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, numVerts);
+       CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, numEdges);
+       CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, numFaces);
+
        CustomData_add_layer(&dm->vertData, CD_MVERT, CD_CALLOC, NULL, numVerts);
        CustomData_add_layer(&dm->edgeData, CD_MEDGE, CD_CALLOC, NULL, numEdges);
        CustomData_add_layer(&dm->faceData, CD_MFACE, CD_CALLOC, NULL, numFaces);
@@ -753,6 +757,11 @@ DerivedMesh *CDDM_from_mesh(Mesh *mesh, Object *ob)
         * with an exception for fluidsim */
 
        DM_init(dm, mesh->totvert, mesh->totedge, mesh->totface);
+
+       CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totvert);
+       CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totedge);
+       CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totface);
+
        dm->deformedOnly = 1;
 
        if(ob && ob->fluidsimSettings && ob->fluidsimSettings->meshSurface)
index fc9a8132aaf122b770ddb0cfe27f3da99f7d48aa..7f41ca033d330183c749c42f6a2fa83de57fcda1 100644 (file)
@@ -683,7 +683,8 @@ CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTreeOverlap
 
                        collpair->distance = distance;
                        collpair->flag = 0;
-               }
+                       collpair++;
+               }/*
                else
                {
                        float w1, w2, w3, u1, u2, u3;
@@ -716,9 +717,9 @@ CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTreeOverlap
                        {
                                // check for collision in the future
                                collpair->flag |= COLLISION_IN_FUTURE;
+                               collpair++;
                        }
-               }
-               collpair++;
+               }*/
        }
        return collpair;
 }
@@ -1398,7 +1399,7 @@ int cloth_bvh_objcollision ( ClothModifierData * clmd, float step, float dt )
        Cloth *cloth=NULL;
        Object *coll_ob=NULL;
        BVHTree *cloth_bvh=NULL;
-       long i=0, j = 0, k = 0, numfaces = 0, numverts = 0;
+       long i=0, j = 0, k = 0, l = 0, numfaces = 0, numverts = 0;
        int result = 0, rounds = 0; // result counts applied collisions; ic is for debug output;
        ClothVertex *verts = NULL;
        int ret = 0, ret2 = 0;
@@ -1498,88 +1499,91 @@ int cloth_bvh_objcollision ( ClothModifierData * clmd, float step, float dt )
                ////////////////////////////////////////////////////////////
                if ( clmd->coll_parms->flags & CLOTH_COLLSETTINGS_FLAG_SELF )
                {
-                       // TODO: add coll quality rounds again
-                       BVHTreeOverlap *overlap = NULL;
-
-                       collisions = 1;
-                       verts = cloth->verts; // needed for openMP
-
-                       numfaces = clmd->clothObject->numfaces;
-                       numverts = clmd->clothObject->numverts;
-
-                       verts = cloth->verts;
-
-                       if ( cloth->bvhselftree )
+                       for(l = 0; l < clmd->coll_parms->self_loop_count; l++)
                        {
-                               // search for overlapping collision pairs 
-                               overlap = BLI_bvhtree_overlap ( cloth->bvhselftree, cloth->bvhselftree, &result );
-
-// #pragma omp parallel for private(k, i, j) schedule(static)
-                               for ( k = 0; k < result; k++ )
+                               // TODO: add coll quality rounds again
+                               BVHTreeOverlap *overlap = NULL;
+       
+                               collisions = 1;
+                               verts = cloth->verts; // needed for openMP
+       
+                               numfaces = clmd->clothObject->numfaces;
+                               numverts = clmd->clothObject->numverts;
+       
+                               verts = cloth->verts;
+       
+                               if ( cloth->bvhselftree )
                                {
-                                       float temp[3];
-                                       float length = 0;
-                                       float mindistance;
-
-                                       i = overlap[k].indexA;
-                                       j = overlap[k].indexB;
-
-                                       mindistance = clmd->coll_parms->selfepsilon* ( cloth->verts[i].avg_spring_len + cloth->verts[j].avg_spring_len );
-
-                                       if ( clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL )
+                                       // search for overlapping collision pairs 
+                                       overlap = BLI_bvhtree_overlap ( cloth->bvhselftree, cloth->bvhselftree, &result );
+       
+       // #pragma omp parallel for private(k, i, j) schedule(static)
+                                       for ( k = 0; k < result; k++ )
                                        {
-                                               if ( ( cloth->verts [i].flags & CLOTH_VERT_FLAG_PINNED )
-                                                       && ( cloth->verts [j].flags & CLOTH_VERT_FLAG_PINNED ) )
+                                               float temp[3];
+                                               float length = 0;
+                                               float mindistance;
+       
+                                               i = overlap[k].indexA;
+                                               j = overlap[k].indexB;
+       
+                                               mindistance = clmd->coll_parms->selfepsilon* ( cloth->verts[i].avg_spring_len + cloth->verts[j].avg_spring_len );
+       
+                                               if ( clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL )
                                                {
-                                                       continue;
+                                                       if ( ( cloth->verts [i].flags & CLOTH_VERT_FLAG_PINNED )
+                                                               && ( cloth->verts [j].flags & CLOTH_VERT_FLAG_PINNED ) )
+                                                       {
+                                                               continue;
+                                                       }
                                                }
-                                       }
-
-                                       VECSUB ( temp, verts[i].tx, verts[j].tx );
-
-                                       if ( ( ABS ( temp[0] ) > mindistance ) || ( ABS ( temp[1] ) > mindistance ) || ( ABS ( temp[2] ) > mindistance ) ) continue;
-
-                                       // check for adjacent points (i must be smaller j)
-                                       if ( BLI_edgehash_haskey ( cloth->edgehash, MIN2(i, j), MAX2(i, j) ) )
-                                       {
-                                               continue;
-                                       }
-
-                                       length = Normalize ( temp );
-
-                                       if ( length < mindistance )
-                                       {
-                                               float correction = mindistance - length;
-
-                                               if ( cloth->verts [i].flags & CLOTH_VERT_FLAG_PINNED )
+       
+                                               VECSUB ( temp, verts[i].tx, verts[j].tx );
+       
+                                               if ( ( ABS ( temp[0] ) > mindistance ) || ( ABS ( temp[1] ) > mindistance ) || ( ABS ( temp[2] ) > mindistance ) ) continue;
+       
+                                               // check for adjacent points (i must be smaller j)
+                                               if ( BLI_edgehash_haskey ( cloth->edgehash, MIN2(i, j), MAX2(i, j) ) )
                                                {
-                                                       VecMulf ( temp, -correction );
-                                                       VECADD ( verts[j].tx, verts[j].tx, temp );
+                                                       continue;
                                                }
-                                               else if ( cloth->verts [j].flags & CLOTH_VERT_FLAG_PINNED )
+       
+                                               length = Normalize ( temp );
+       
+                                               if ( length < mindistance )
                                                {
-                                                       VecMulf ( temp, correction );
-                                                       VECADD ( verts[i].tx, verts[i].tx, temp );
+                                                       float correction = mindistance - length;
+       
+                                                       if ( cloth->verts [i].flags & CLOTH_VERT_FLAG_PINNED )
+                                                       {
+                                                               VecMulf ( temp, -correction );
+                                                               VECADD ( verts[j].tx, verts[j].tx, temp );
+                                                       }
+                                                       else if ( cloth->verts [j].flags & CLOTH_VERT_FLAG_PINNED )
+                                                       {
+                                                               VecMulf ( temp, correction );
+                                                               VECADD ( verts[i].tx, verts[i].tx, temp );
+                                                       }
+                                                       else
+                                                       {
+                                                               VecMulf ( temp, -correction*0.5 );
+                                                               VECADD ( verts[j].tx, verts[j].tx, temp );
+       
+                                                               VECSUB ( verts[i].tx, verts[i].tx, temp );
+                                                       }
+                                                       ret = 1;
+                                                       ret2 += ret;
                                                }
                                                else
                                                {
-                                                       VecMulf ( temp, -correction*0.5 );
-                                                       VECADD ( verts[j].tx, verts[j].tx, temp );
-
-                                                       VECSUB ( verts[i].tx, verts[i].tx, temp );
+                                                       // check for approximated time collisions
                                                }
-                                               ret = 1;
-                                               ret2 += ret;
-                                       }
-                                       else
-                                       {
-                                               // check for approximated time collisions
                                        }
+       
+                                       if ( overlap )
+                                               MEM_freeN ( overlap );
+       
                                }
-
-                               if ( overlap )
-                                       MEM_freeN ( overlap );
-
                        }
                        ////////////////////////////////////////////////////////////
 
index 3644a50b799a8fd752a63343f8b6ffaa625441ff..77068d8ed6647fa729b96966c8edf51ce6ed05e1 100644 (file)
@@ -1278,7 +1278,7 @@ void *CustomData_em_get_n(const CustomData *data, void *block, int type, int n)
        int layer_index;
        
        /* get the layer index of the first layer of type */
-       layer_index = CustomData_get_active_layer_index(data, type);
+       layer_index = CustomData_get_layer_index(data, type);
        if(layer_index < 0) return NULL;
 
        return (char *)block + data->layers[layer_index+n].offset;
index cc3f3f211a49b6630047803f5e620a74f2fc0dca..7c50b4096939d92fd810bd2b90fe9c241ed71745 100644 (file)
@@ -934,7 +934,7 @@ int new_id(ListBase *lb, ID *id, const char *tname)
        }
 
        /* if result > 21, strncpy don't put the final '\0' to name. */
-       if( result > 21 ) name[21]= 0;
+       if( result >= 21 ) name[21]= 0;
 
        result = check_for_dupid( lb, id, name );
        strcpy( id->name+2, name );
index 4f901ba72163c688b84a243211260a29e657bebc..125243bc56ff91c9d104dc70e997a8f7024e4f9d 100644 (file)
@@ -2380,3 +2380,31 @@ int give_obdata_texspace(Object *ob, int **texflag, float **loc, float **size, f
        }
        return 1;
 }
+
+/*
+ * Test a bounding box for ray intersection
+ * assumes the ray is already local to the boundbox space
+ */
+int ray_hit_boundbox(struct BoundBox *bb, float ray_start[3], float ray_normal[3])
+{
+       static int triangle_indexes[12][3] = {{0, 1, 2}, {0, 2, 3},
+                                                                                 {3, 2, 6}, {3, 6, 7},
+                                                                                 {1, 2, 6}, {1, 6, 5}, 
+                                                                                 {5, 6, 7}, {4, 5, 7},
+                                                                                 {0, 3, 7}, {0, 4, 7},
+                                                                                 {0, 1, 5}, {0, 4, 5}};
+       int result = 0;
+       int i;
+       
+       for (i = 0; i < 12 && result == 0; i++)
+       {
+               float lambda;
+               int v1, v2, v3;
+               v1 = triangle_indexes[i][0];
+               v2 = triangle_indexes[i][1];
+               v3 = triangle_indexes[i][2];
+               result = RayIntersectsTriangle(ray_start, ray_normal, bb->vec[v1], bb->vec[v2], bb->vec[v3], &lambda, NULL);
+       }
+       
+       return result;
+}
index 5112fb08fe637d7935ad179b0ca5502b4a63d284..f06ef22179596cfe7e0799b4096cbb9ce02f2d78 100644 (file)
@@ -4814,9 +4814,20 @@ static void system_step(Object *ob, ParticleSystem *psys, ParticleSystemModifier
                        pa->flag &= ~PARS_NO_DISP;
        }
 
-       /* ok now we're all set so let's go */
-       if(psys->totpart)
-               dynamics_step(ob,psys,psmd,cfra,vg_vel,vg_tan,vg_rot,vg_size);
+       if(psys->totpart) {
+               int dframe, totframesback = 0;
+
+               /* handle negative frame start at the first frame by doing
+                * all the steps before the first frame */
+               if(framenr == startframe && part->sta < startframe)
+                       totframesback = (startframe - (int)part->sta);
+
+               for(dframe=-totframesback; dframe<=0; dframe++) {
+                       /* ok now we're all set so let's go */
+                       dynamics_step(ob,psys,psmd,cfra+dframe,vg_vel,vg_tan,vg_rot,vg_size);
+                       psys->cfra = cfra+dframe;
+               }
+       }
        
        cache->simframe= framenr;
        cache->flag |= PTCACHE_SIMULATION_VALID;
index 7b727528b3da4dfe2741cf5e2314d0f40042083d..57ecffbb79649b20d4bf062178a5219a69cce79f 100644 (file)
@@ -185,8 +185,8 @@ static int ptcache_path(PTCacheID *pid, char *filename)
                        file[i-6] = '\0';
                
                sprintf(filename, "//"PTCACHE_PATH"%s", file); /* add blend file name to pointcache dir */
-               BLI_add_slash(filename);
                BLI_convertstringcode(filename, blendfilename);
+               BLI_add_slash(filename);
                return strlen(filename);
        }
        
index 872f81ead632a3b7139ceac9602753baf53e1f47..876547042dcef06c3445545e6d318b93068859d7 100644 (file)
@@ -2075,13 +2075,13 @@ void txt_backspace_char (Text *text)
          return;
        }
        else if (text->curc==0) { /* Appending two lines */
-           if (text->curl->prev) {
-             text->curl= text->curl->prev;
-             text->curc= text->curl->len;
-                       
-             txt_combine_lines(text, text->curl, text->curl->next);
-             txt_pop_sel(text);
-           }
+               if (!text->curl->prev) return;
+               
+               text->curl= text->curl->prev;
+               text->curc= text->curl->len;
+               
+               txt_combine_lines(text, text->curl, text->curl->next);
+               txt_pop_sel(text);
        } 
        else { /* Just backspacing a char */
          int i= text->curc-1;
index 9ed23bc32b6bc35e020bb4033be428d96eea48eb..4d277cf98e1a590cd4117c35b62f43e4bdadf61a 100644 (file)
@@ -258,6 +258,7 @@ void Vec2Addf(float *v, float *v1, float *v2);
 void Vec2Subf(float *v, float *v1, float *v2);
 void Vec2Copyf(float *v1, float *v2);
 
+void AxisAngleToQuat(float *q, float *axis, float angle);
 void vectoquat(float *vec, short axis, short upflag, float *q);
 
 float VecAngle2(float *v1, float *v2);
@@ -269,6 +270,8 @@ float NormalizedVecAngle2_2D(float *v1, float *v2);
 
 void euler_rot(float *beul, float ang, char axis);
        
+void NormalShortToFloat(float *out, short *in);
+void NormalFloatToShort(short *out, float *in);
 
 float DistVL2Dfl(float *v1, float *v2, float *v3);
 float PdistVL2Dfl(float *v1, float *v2, float *v3);
@@ -372,6 +375,7 @@ void tubemap(float x, float y, float z, float *u, float *v);
 void spheremap(float x, float y, float z, float *u, float *v);
 
 int LineIntersectsTriangle(float p1[3], float p2[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv);
+int RayIntersectsTriangle(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv);
 int SweepingSphereIntersectsTriangleUV(float p1[3], float p2[3], float radius, float v0[3], float v1[3], float v2[3], float *lambda, float *ipoint);
 int AxialLineIntersectsTriangle(int axis, float co1[3], float co2[3], float v0[3], float v1[3], float v2[3], float *lambda);
 int AabbIntersectAabb(float min1[3], float max1[3], float min2[3], float max2[3]);
index 2dc345e894e197158437190804d61719a386f7f0..e69332be295f7f92c42610ad5075adcb0acce98c 100644 (file)
@@ -250,16 +250,16 @@ void sort_along_axis(BVHTree *tree, int start, int end, int axis)
 //after a call to this function you can expect one of:
 //      every node to left of a[n] are smaller or equal to it
 //      every node to the right of a[n] are greater or equal to it
-int partition_nth_element(BVHNode **a, int _begin, int _end, int n, int axis){        
-       int begin = _begin, end = _end, cut;        
-       while(end-begin > 3)        
-       {                            
-               cut = bvh_partition(a, begin, end, bvh_medianof3(a, begin, (begin+end)/2, end-1, axis), axis );                 
-               if(cut <= n)                        
-                       begin = cut;                
-               else                        
-                       end = cut;        
-       }        
+int partition_nth_element(BVHNode **a, int _begin, int _end, int n, int axis){
+       int begin = _begin, end = _end, cut;
+       while(end-begin > 3)
+       {
+               cut = bvh_partition(a, begin, end, bvh_medianof3(a, begin, (begin+end)/2, end-1, axis), axis );
+               if(cut <= n)
+                       begin = cut;
+               else
+                       end = cut;
+       }
        bvh_insertionsort(a, begin, end, axis);
 
        return n;
@@ -424,7 +424,7 @@ static void refit_kdop_hull(BVHTree *tree, BVHNode *node, int start, int end)
 
        for (j = start; j < end; j++)
        {
-                // for all Axes.
+// for all Axes.
                for (i = tree->start_axis; i < tree->stop_axis; i++)
                {
                        newmin = tree->nodes[j]->bv[(2 * i)];   
@@ -708,7 +708,7 @@ BVHTreeOverlap *BLI_bvhtree_overlap(BVHTree *tree1, BVHTree *tree2, int *result)
        }
 
 #pragma omp parallel for private(j) schedule(static)
-       for(j = 0; j < tree1->tree_type; j++)
+       for(j = 0; j < MIN2(tree1->tree_type, tree1->nodes[tree1->totleaf]->totnode); j++)
        {
                traverse(data[j], tree1->nodes[tree1->totleaf]->children[j], tree2->nodes[tree2->totleaf]);
        }
index 48a149f4b3a1c2e49894eca3be2ab31589e3165b..322a9e6fd028e037ddf8abf32ef3feace5ce3b84 100644 (file)
@@ -1335,6 +1335,22 @@ void NormalQuat(float *q)
        }
 }
 
+void AxisAngleToQuat(float *q, float *axis, float angle)
+{
+       float nor[3];
+       float si;
+       
+       VecCopyf(nor, axis);
+       Normalize(nor);
+       
+       angle /= 2;
+       si = (float)sin(angle);
+       q[0] = (float)cos(angle);
+       q[1] = nor[0] * si;
+       q[2] = nor[1] * si;
+       q[3] = nor[2] * si;     
+}
+
 void vectoquat(float *vec, short axis, short upflag, float *q)
 {
        float q2[4], nor[3], *fp, mat[3][3], angle, si, co, x2, y2, z2, len1;
@@ -2258,6 +2274,20 @@ double Sqrt3d(double d)
        else return exp(log(d)/3);
 }
 
+void NormalShortToFloat(float *out, short *in)
+{
+       out[0] = in[0] / 32767.0;
+       out[1] = in[1] / 32767.0;
+       out[2] = in[2] / 32767.0;
+}
+
+void NormalFloatToShort(short *out, float *in)
+{
+       out[0] = (short)(in[0] * 32767.0);
+       out[1] = (short)(in[1] * 32767.0);
+       out[2] = (short)(in[2] * 32767.0);
+}
+
 /* distance v1 to line v2-v3 */
 /* using Hesse formula, NO LINE PIECE! */
 float DistVL2Dfl( float *v1, float *v2, float *v3)  {
@@ -3671,6 +3701,43 @@ int LineIntersectsTriangle(float p1[3], float p2[3], float v0[3], float v1[3], f
        return 1;
 }
 
+/* moved from effect.c
+   test if the ray starting at p1 going in d direction intersects the triangle v0..v2
+   return non zero if it does 
+*/
+int RayIntersectsTriangle(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv)
+{
+       float p[3], s[3], e1[3], e2[3], q[3];
+       float a, f, u, v;
+       
+       VecSubf(e1, v1, v0);
+       VecSubf(e2, v2, v0);
+       
+       Crossf(p, d, e2);
+       a = Inpf(e1, p);
+       if ((a > -0.000001) && (a < 0.000001)) return 0;
+       f = 1.0f/a;
+       
+       VecSubf(s, p1, v0);
+       
+       Crossf(q, s, e1);
+       *lambda = f * Inpf(e2, q);
+       if ((*lambda < 0.0)) return 0;
+       
+       u = f * Inpf(s, p);
+       if ((u < 0.0)||(u > 1.0)) return 0;
+       
+       v = f * Inpf(d, q);
+       if ((v < 0.0)||((u + v) > 1.0)) return 0;
+
+       if(uv) {
+               uv[0]= u;
+               uv[1]= v;
+       }
+       
+       return 1;
+}
+
 /* Adapted from the paper by Kasper Fauerby */
 /* "Improved Collision detection and Response" */
 int SweepingSphereIntersectsTriangleUV(float p1[3], float p2[3], float radius, float v0[3], float v1[3], float v2[3], float *lambda, float *ipoint)
index 79d3e4877128397682c270ab00569a6d2b898a5a..898ad6ddd67b78ba2ff161536b1fb69c549ce1bd 100644 (file)
@@ -456,13 +456,10 @@ void checkMissingFiles( char *txtname ) {
        
        /* be sure there is low chance of the path being too short */
        char filepath_expanded[FILE_MAXDIR*2]; 
-       char *libpath;
        int files_missing = 0;
        
        BLI_bpathIterator_init(&bpi);
        while (!BLI_bpathIterator_isDone(&bpi)) {
-               libpath = BLI_bpathIterator_getLib(&bpi);
-               
                BLI_bpathIterator_getPathExpanded( &bpi, filepath_expanded );
                
                if (!BLI_exists(filepath_expanded)) {
index 3610813f2dac1be4c7023eee39356e772bee759b..a353015052cc473923322cfc0629d914b32d023c 100644 (file)
@@ -865,11 +865,8 @@ int BLI_strcaseeq(char *a, char *b) {
 void BLI_cleanup_dir(const char *relabase, char *dir)
 {
        BLI_cleanup_file(relabase, dir);
-#ifdef WIN32
-       strcat(dir, "\\");
-#else
-       strcat(dir, "/");
-#endif
+       BLI_add_slash(dir);
+
 }
 
 void BLI_cleanup_file(const char *relabase, char *dir)
@@ -878,7 +875,23 @@ void BLI_cleanup_file(const char *relabase, char *dir)
        char *start, *eind;
        if (relabase) {
                BLI_convertstringcode(dir, relabase);
+       } else {
+               if (dir[0]=='/' && dir[1]=='/') {
+                       if (dir[2]== '\0') {
+                               return; /* path is "//" - cant clean it */
+                       }
+                       dir = dir+2; /* skip the first // */
+               }
        }
+       
+       /* Note
+        *   memmove( start, eind, strlen(eind)+1 );
+        * is the same as
+        *   strcpy( start, eind ); 
+        * except strcpy should not be used because there is overlap,
+         * so use memmove's slightly more obscure syntax - Campbell
+        */
+       
 #ifdef WIN32
        if(dir[0]=='.') {       /* happens for example in FILE_MAIN */
           get_default_root(dir);
@@ -892,17 +905,18 @@ void BLI_cleanup_file(const char *relabase, char *dir)
                        if (dir[a] == '\\') break;
                        a--;
                }
-               strcpy(dir+a,eind);
+               memmove( dir+a, eind, strlen(eind)+1 );
+               
        }
 
        while ( (start = strstr(dir,"\\.\\")) ){
                eind = start + strlen("\\.\\") - 1;
-               strcpy(start,eind);
+               memmove( start, eind, strlen(eind)+1 );
        }
 
        while ( (start = strstr(dir,"\\\\" )) ){
                eind = start + strlen("\\\\") - 1;
-               strcpy(start,eind);
+               memmove( start, eind, strlen(eind)+1 );
        }
 
        if((a = strlen(dir))){                          /* remove the '\\' at the end */
@@ -925,17 +939,17 @@ void BLI_cleanup_file(const char *relabase, char *dir)
                        if (dir[a] == '/') break;
                        a--;
                }
-               strcpy(dir+a,eind);
+               memmove( dir+a, eind, strlen(eind)+1 );
        }
 
        while ( (start = strstr(dir,"/./")) ){
                eind = start + strlen("/./") - 1;
-               strcpy(start,eind);
+               memmove( start, eind, strlen(eind)+1 );
        }
 
        while ( (start = strstr(dir,"//" )) ){
                eind = start + strlen("//") - 1;
-               strcpy(start,eind);
+               memmove( start, eind, strlen(eind)+1 );
        }
 
        if( (a = strlen(dir)) ){                                /* remove all '/' at the end */
@@ -1150,24 +1164,32 @@ int BLI_convertstringcode(char *path, const char *basepath)
        BLI_char_switch(tmp, '\\', '/');
        BLI_char_switch(base, '\\', '/');       
 
+       /* Paths starting with // will get the blend file as their base,
+        * this isnt standard in any os but is uesed in blender all over the place */
        if (tmp[0] == '/' && tmp[1] == '/') {
-               char *filepart= BLI_strdup(tmp+2); /* skip code */
                char *lslash= BLI_last_slash(base);
-
                if (lslash) {
                        int baselen= (int) (lslash-base) + 1;
-
+                       /* use path for for temp storage here, we copy back over it right away */
+                       BLI_strncpy(path, tmp+2, FILE_MAX);
+                       
                        memcpy(tmp, base, baselen);
-                       strcpy(tmp+baselen, filepart);
+                       strcpy(tmp+baselen, path);
+                       strcpy(path, tmp);
                } else {
-                       strcpy(tmp, filepart);
+                       strcpy(path, tmp+2);
                }
-               
-               MEM_freeN(filepart);
+       } else {
+               strcpy(path, tmp);
        }
        
-       BLI_cleanup_file(NULL, tmp);
-       strcpy(path, tmp);
+       if (path[0]!='\0') {
+               if ( path[strlen(path)-1]=='/') {
+                       BLI_cleanup_dir(NULL, path);
+               } else {
+                       BLI_cleanup_file(NULL, path);
+               }
+       }
        
 #ifdef WIN32
        /* skip first two chars, which in case of
index adddb0d1347e4945c69410c26412aff3bac2e4af..e6cbe7bb69aa1aa02fcfa2c6a03eb2fbc2df60c3 100644 (file)
@@ -293,7 +293,7 @@ typedef enum {
        ICON_ARMATURE_DEHLT,
        ICON_SNAP_GEAR,
        ICON_SNAP_GEO,
-       ICON_BLANK41,
+       ICON_SNAP_NORMAL,
        ICON_BLANK42,
        
        ICON_SMOOTHCURVE,
index 236f35f17c6fd96448e6dea58fbce1b63c1f3ead..f7afce958f5a09e03cb349eebd53fe1f90b199ad 100644 (file)
@@ -63,7 +63,11 @@ void window_to_3d(float *vec, short mx, short my);
 void project_short(float *vec, short *adr);
 void project_short_noclip(float *vec, short *adr);
 void project_int(float *vec, int *adr);
+void project_int_noclip(float *vec, int *adr);
 void project_float(float *vec, float *adr);
+void project_float_noclip(float *vec, float *adr);
+void viewray(short mval[2], float ray_start[3], float ray_normal[3]);
+void viewline(short mval[2], float ray_start[3], float ray_end[3]);
 
 int boundbox_clip(float obmat[][4], struct BoundBox *bb);
 void fdrawline(float x1, float y1, float x2, float y2);
index 82adb1ac12af8ee302aac102034bf2f7739d0478..7d497dc05ec135dfc530f8a3985ebd8c2a197dfe 100644 (file)
@@ -75,6 +75,8 @@ typedef struct TransSnap {
        int     status;
        float   snapPoint[3];
        float   snapTarget[3];
+       float   snapNormal[3];
+       float   snapTangent[3];
        float   dist; // Distance from snapPoint to snapTarget
        double  last;
        void  (*applySnap)(struct TransInfo *, float *);
@@ -457,6 +459,8 @@ void applySnapping(TransInfo *t, float *vec);
 void resetSnapping(TransInfo *t);
 int  handleSnapping(TransInfo *t, int event);
 void drawSnapping(TransInfo *t);
+int usingSnappingNormal(TransInfo *t);
+int validSnappingNormal(TransInfo *t);
 
 /*********************** Generics ********************************/
 
@@ -487,6 +491,7 @@ void calculateCenterCursor2D(TransInfo *t);
 void calculatePropRatio(TransInfo *t);
 
 void getViewVector(float coord[3], float vec[3]);
+void getViewRay(short mval[2], float p[3], float d[3]);
 
 TransInfo * BIF_GetTransInfo(void);
 
index 79c1710a897b04e4aa63e234ee594c5b0c500e8f..a717df640f1b7ec04e296a1cca2436614690ed0b 100644 (file)
@@ -229,14 +229,16 @@ typedef struct PartialVisibility {
 #define TF_SHADOW              8192
 #define TF_BMFONT              16384
 
-/* mtface->transp */
+/* mtface->transp, values 1-4 are used as flags in the GL, WARNING, TF_SUB cant work with this */
 #define TF_SOLID       0
 #define TF_ADD         1
 #define TF_ALPHA       2
+#define TF_CLIP                4 /* clipmap alpha/binary alpha all or nothing! */
 
 /* sub is not available in the user interface anymore */
 #define TF_SUB         3
 
+
 /* mtface->unwrap */
 #define TF_DEPRECATED1 1
 #define TF_DEPRECATED2 2
index 7b1b979b7777a7fa4489f9071d81a50246aa14e4..75affbfa7f5133e7854fe540c031cc5e68838ce2 100644 (file)
@@ -274,7 +274,7 @@ typedef struct RenderData {
        
        /* Bake Render options */
        short bake_osa, bake_filter, bake_mode, bake_flag;
-       short bake_normal_space, bpad;
+       short bake_normal_space, bake_quad_split;
        float bake_maxdist, bake_biasdist, bake_pad;
        
        /* yafray: global panel params. TODO: move elsewhere */
@@ -543,8 +543,8 @@ typedef struct Scene {
        ListBase markers;
        ListBase transform_spaces;
        
-       short jumpframe, pad1;
-       short snap_flag, snap_target;
+       short jumpframe;
+       short snap_mode, snap_flag, snap_target;
        
        /* none of the dependancy graph  vars is mean to be saved */
        struct  DagForest *theDag;
@@ -707,11 +707,16 @@ typedef struct Scene {
 
 /* scene->snap_flag */
 #define SCE_SNAP                               1
+#define SCE_SNAP_ROTATE                        2
 /* scene->snap_target */
 #define SCE_SNAP_TARGET_CLOSEST        0
 #define SCE_SNAP_TARGET_CENTER 1
 #define SCE_SNAP_TARGET_MEDIAN 2
 #define SCE_SNAP_TARGET_ACTIVE 3
+/* scene->snap_mode */
+#define SCE_SNAP_MODE_VERTEX   0
+#define SCE_SNAP_MODE_EDGE             1
+#define SCE_SNAP_MODE_FACE             2
 
 /* sce->selectmode */
 #define SCE_SELECT_VERTEX      1 /* for mesh */
index c63fa28c46e396507063756d880346baeb22f7d0..2f94e0eeebc74c0eb0db93dcc8ff61c9fcce3bcf 100644 (file)
@@ -1154,13 +1154,17 @@ static void unlink_script( Script * script )
                                if( sl->spacetype == SPACE_SCRIPT ) {
                                        SpaceScript *sc = ( SpaceScript * ) sl;
 
-                                       if( sc->script == script ) {
+                                       if( sc->script == script ) {                                    
                                                sc->script = NULL;
 
-                                               if( sc ==
-                                                   area->spacedata.first ) {
-                                                       scrarea_queue_redraw
-                                                               ( area );
+                                               if( sc == area->spacedata.first ) {
+                                                       scrarea_queue_redraw( area );
+                                               }
+                                               
+                                               if (sc->but_refs) {
+                                                       BPy_Set_DrawButtonsList(sc->but_refs);
+                                                       BPy_Free_DrawButtonsList();
+                                                       sc->but_refs = NULL;
                                                }
                                        }
                                }
@@ -1222,7 +1226,7 @@ static int bpy_pydriver_create_dict(void)
 {
        PyObject *d, *mod;
 
-       if (bpy_pydriver_Dict || (G.f&G_DOSCRIPTLINKS)==0) return -1;
+       if (bpy_pydriver_Dict) return -1;
 
        d = PyDict_New();
        if (!d) return -1;
@@ -1259,15 +1263,16 @@ static int bpy_pydriver_create_dict(void)
 
        /* If there's a Blender text called pydrivers.py, import it.
         * Users can add their own functions to this module. */
-       mod = importText("pydrivers"); /* can also use PyImport_Import() */
-       if (mod) {
-               PyDict_SetItemString(d, "pydrivers", mod);
-               PyDict_SetItemString(d, "p", mod);
-               Py_DECREF(mod);
+       if (G.f&G_DOSCRIPTLINKS) {
+               mod = importText("pydrivers"); /* can also use PyImport_Import() */
+               if (mod) {
+                       PyDict_SetItemString(d, "pydrivers", mod);
+                       PyDict_SetItemString(d, "p", mod);
+                       Py_DECREF(mod);
+               } else {
+                       PyErr_Clear();
+               }
        }
-       else
-               PyErr_Clear();
-
        /* short aliases for some Get() functions: */
 
        /* ob(obname) == Blender.Object.Get(obname) */
index 6fce086418988143a74bc80a465a53781cef088b..d8385c1d6609d61f75783b04cb1aa5d809f9ad98 100644 (file)
@@ -936,6 +936,7 @@ static PyObject *Blender_GetPaths( PyObject * self, PyObject *args, PyObject *ke
        PyObject *list = PyList_New(0), *st; /* stupidly big string to be safe */
        /* be sure there is low chance of the path being too short */
        char filepath_expanded[FILE_MAXDIR*2]; 
+       char *lib;
        
        int absolute = 0;
        static char *kwlist[] = {"absolute", NULL};
@@ -952,7 +953,12 @@ static PyObject *Blender_GetPaths( PyObject * self, PyObject *args, PyObject *ke
                if (absolute) {
                        BLI_bpathIterator_getPathExpanded( &bpi, filepath_expanded );
                } else {
-                       BLI_bpathIterator_getPathExpanded( &bpi, filepath_expanded );
+                       lib = BLI_bpathIterator_getLib( &bpi );
+                       if ( lib && ( strcmp(lib, G.sce) ) ) { /* relative path to the library is NOT the same as our blendfile path, return an absolute path */
+                               BLI_bpathIterator_getPathExpanded( &bpi, filepath_expanded );
+                       } else {
+                               BLI_bpathIterator_getPath( &bpi, filepath_expanded );
+                       }
                }
                st = PyString_FromString(filepath_expanded);
                
index 1a806932bdba9252b53ad2bd84ba061c53ced0e4..45cce46d389688ce177117d17d7d8def42283bf0 100644 (file)
@@ -360,6 +360,8 @@ static PyObject *Object_getMatrix( BPy_Object * self, PyObject * args );
 static PyObject *Object_getParent( BPy_Object * self );
 static PyObject *Object_getParentBoneName( BPy_Object * self );
 static int Object_setParentBoneName( BPy_Object * self, PyObject * value );
+static PyObject *Object_getParentVertexIndex( BPy_Object * self );
+static int Object_setParentVertexIndex( BPy_Object * self, PyObject * value );
 static PyObject *Object_getSize( BPy_Object * self, PyObject * args );
 static PyObject *Object_getTimeOffset( BPy_Object * self );
 static PyObject *Object_getTracked( BPy_Object * self );
@@ -1054,10 +1056,12 @@ PyObject *Object_getParticleSys( BPy_Object * self ){
 /* fixme:  for(;;) */
        current = ParticleSys_CreatePyObject( blparticlesys, ob );
        PyList_Append(partsyslist,current);
+       Py_DECREF(current);
 
        while((blparticlesys = blparticlesys->next)){
                current = ParticleSys_CreatePyObject( blparticlesys, ob );
                PyList_Append(partsyslist,current);
+               Py_DECREF(current);
        }
 
        return partsyslist;
@@ -1491,6 +1495,92 @@ static int Object_setParentBoneName( BPy_Object * self, PyObject *value )
        return 0;
 }
 
+static PyObject *Object_getParentVertexIndex( BPy_Object * self )
+{
+       PyObject *pyls = NULL;
+       
+       if( self->object->parent) {
+               if (self->object->partype==PARVERT1) {
+                       pyls = PyList_New(1);
+                       PyList_SET_ITEM( pyls, 0, PyInt_FromLong( self->object->par1 ));
+                       return pyls;
+               } else if (self->object->partype==PARVERT3) {
+                       pyls = PyList_New(3);
+                       PyList_SET_ITEM( pyls, 0, PyInt_FromLong( self->object->par1 ));
+                       PyList_SET_ITEM( pyls, 1, PyInt_FromLong( self->object->par2 ));
+                       PyList_SET_ITEM( pyls, 2, PyInt_FromLong( self->object->par3 ));
+                       return pyls;
+               }
+       }
+       return PyList_New(0);
+}
+
+static int Object_setParentVertexIndex( BPy_Object * self, PyObject *value )
+{
+       PyObject *item;
+       int val[3] = {0,0,0};
+       if( !self->object->parent) {
+               return EXPP_ReturnIntError( PyExc_RuntimeError,
+                       "This object has no vertex parent, cant set the vertex parent indicies" );
+       }
+       if (self->object->partype==PARVERT1) {
+               if (PySequence_Length(value) != 1)
+                       return EXPP_ReturnIntError( PyExc_RuntimeError,
+                               "Vertex parented to 1 vertex, can only assign a sequence with 1 vertex parent index" );
+               item = PySequence_GetItem(value, 0);
+               if (item) {
+                       val[0] = PyInt_AsLong(item);
+                       Py_DECREF(item);
+               }
+       } else if (self->object->partype==PARVERT3) {
+               int i;
+               if (PySequence_Length(value) != 3)
+                       return EXPP_ReturnIntError( PyExc_RuntimeError,
+                               "Vertex parented to 3 verts, can only assign a sequence with 3 verts parent index" );
+               
+               for (i=0; i<3; i++) {
+                       item = PySequence_GetItem(value, i);
+                       if (item) {
+                               val[i] = PyInt_AsLong(item);
+                               Py_DECREF(item);
+                       }
+               }
+       } else {
+               return EXPP_ReturnIntError( PyExc_RuntimeError,
+                       "This object has no vertex parent, cant set the vertex parent indicies" );
+       }
+       
+       if (PyErr_Occurred()) {
+               return EXPP_ReturnIntError( PyExc_RuntimeError,
+                       "This object has no vertex parent, cant set the vertex parent indicies" );
+       } else {
+               if (self->object->partype==PARVERT1) {
+                       if (val[0] < 0) {
+                               return EXPP_ReturnIntError( PyExc_RuntimeError,
+                                       "vertex index less then zero" );
+                       }
+                       
+                       self->object->par1 = val[0];
+               } else if (self->object->partype==PARVERT3) {
+                       if (val[0]==val[1] || val[0]==val[2] || val[1]==val[2]) {
+                               return EXPP_ReturnIntError( PyExc_RuntimeError,
+                                       "duplicate indicies in vertex parent assignment" );
+                       }
+                       if (val[0] < 0 || val[1] < 0 || val[2] < 0) {
+                               return EXPP_ReturnIntError( PyExc_RuntimeError,
+                                       "vertex index less then zero" );
+                       }
+               
+                       self->object->par1 = val[0];
+                       self->object->par2 = val[1];
+                       self->object->par3 = val[2];
+               }
+       }
+
+       return 0;
+}
+
+
 static PyObject *Object_getSize( BPy_Object * self, PyObject * args )
 {
        char *space = "localspace";     /* default to local */
@@ -4916,6 +5006,10 @@ static PyGetSetDef BPy_Object_getseters[] = {
         (getter)Object_getParentBoneName, (setter)Object_setParentBoneName,
         "The object's parent object's sub name",
         NULL},
+       {"parentVertexIndex",
+        (getter)Object_getParentVertexIndex, (setter)Object_setParentVertexIndex,
+        "Indicies used for vertex parents",
+        NULL},
        {"track",
         (getter)Object_getTracked, (setter)Object_setTracked,
         "The object's tracked object",
index f0a32db0623e446b02b435ed109bd09123945a78..95de9757b8709c3f81ea686535841ddcf480ff07 100644 (file)
@@ -854,7 +854,7 @@ static PyObject *Part_GetLoc( BPy_PartSys * self, PyObject * args ){
                                        return EXPP_ReturnPyObjError( PyExc_RuntimeError,
                                                        "Couldn't append item to PyList" );
                                }
-
+                               Py_DECREF(loc); /* PyList_Append increfs */
                                path++;
                        }
 
@@ -864,6 +864,7 @@ static PyObject *Part_GetLoc( BPy_PartSys * self, PyObject * args ){
                                return EXPP_ReturnPyObjError( PyExc_RuntimeError,
                                                "Couldn't append item to PyList" );             
                        }
+                       Py_DECREF(seglist); /* PyList_Append increfs */
                }
 
                cache=psys->childcache;
@@ -885,7 +886,7 @@ static PyObject *Part_GetLoc( BPy_PartSys * self, PyObject * args ){
                                        return EXPP_ReturnPyObjError( PyExc_RuntimeError,
                                                        "Couldn't append item to PyList" );
                                }
-
+                               Py_DECREF(loc);/* PyList_Append increfs */
                                path++;
                        }
 
@@ -895,6 +896,7 @@ static PyObject *Part_GetLoc( BPy_PartSys * self, PyObject * args ){
                                return EXPP_ReturnPyObjError( PyExc_RuntimeError,
                                                "Couldn't append item to PyList" );     
                        }
+                       Py_DECREF(seglist); /* PyList_Append increfs */
                }
                
        } else {
@@ -933,6 +935,7 @@ static PyObject *Part_GetLoc( BPy_PartSys * self, PyObject * args ){
                                        return EXPP_ReturnPyObjError( PyExc_RuntimeError,
                                                                "Couldn't append item to PyList" );
                                }
+                               Py_DECREF(loc);/* PyList_Append increfs */
                        }
                        else {
                                if ( all ){
@@ -941,6 +944,7 @@ static PyObject *Part_GetLoc( BPy_PartSys * self, PyObject * args ){
                                                return EXPP_ReturnPyObjError( PyExc_RuntimeError,
                                                                        "Couldn't append item to PyList" );
                                        }
+                                       Py_DECREF(Py_None); /* PyList_Append increfs */
                                }
                        }
                }
@@ -985,6 +989,7 @@ static PyObject *Part_GetRot( BPy_PartSys * self, PyObject * args ){
                        if(psys_get_particle_state(ob,psys,i,&state,0)==0){
                                if ( all ){
                                        PyList_Append(partlist,Py_None);
+                                       Py_DECREF(Py_None); /* PyList_Append increfs */
                                        continue;
                                } else {
                                        continue;
@@ -1001,6 +1006,7 @@ static PyObject *Part_GetRot( BPy_PartSys * self, PyObject * args ){
                        if (id)
                                PyTuple_SetItem(loc,4,PyInt_FromLong(i));
                        PyList_Append(partlist,loc);
+                       Py_DECREF(loc); /* PyList_Append increfs */
                }
        }
        return partlist;
@@ -1060,9 +1066,11 @@ static PyObject *Part_GetSize( BPy_PartSys * self, PyObject * args ){
                                PyTuple_SetItem(tuple,0,PyFloat_FromDouble((double)size));
                                PyTuple_SetItem(tuple,1,PyInt_FromLong(i));
                                PyList_Append(partlist,tuple);
+                               Py_DECREF(tuple);
                        } else {
                                siz = PyFloat_FromDouble((double)size);
                                PyList_Append(partlist,siz);
+                               Py_DECREF(siz);
                        }
                }
        }
@@ -1125,9 +1133,11 @@ static PyObject *Part_GetAge( BPy_PartSys * self, PyObject * args ){
                                PyTuple_SetItem(tuple,0,PyFloat_FromDouble((double)life));
                                PyTuple_SetItem(tuple,1,PyInt_FromLong(i));
                                PyList_Append(partlist,tuple);
+                               Py_DECREF(tuple);
                        } else {
                                lif = PyFloat_FromDouble((double)life);
                                PyList_Append(partlist,lif);
+                               Py_DECREF(lif);
                        }
                }
        }
index 3863cc12227605c679a469925e214540400cf1aa..baae2220143d28762e2fc8aace387f197b01ef13 100644 (file)
@@ -406,11 +406,12 @@ static PyObject *M_sys_cleanpath( PyObject * self, PyObject * value )
 {
        char *path = PyString_AsString(value);
        char cleaned[FILE_MAXDIR + FILE_MAXFILE];
-       int trailing_slash = 0;
+       int trailing_slash = 0, last;
        if (!path)
                return EXPP_ReturnPyObjError( PyExc_TypeError,
                        "expected string argument" );
-       if (strstr(path, "/") || strstr(path, "\\")) {
+       last = strlen(path)-1;
+       if ((last >= 0) && ((path[last]=='/') || (path[last]=='\\'))) {
                trailing_slash = 1;
        }
        BLI_strncpy(cleaned, path, FILE_MAXDIR + FILE_MAXFILE);
index 09167c0e117af070188031f5830a30f30434db11..2e4850aeb14985f88959d6c455b15de7a6fa1cd1 100644 (file)
@@ -389,6 +389,8 @@ class Object:
        @ivar parentbonename: The string name of the parent bone (if defined).
                This can be set to another bone in the armature if the object already has a bone parent.
        @type parentbonename: string or None
+       @ivar parentVertexIndex: A list of vertex parent indicies, with a length of 0, 1 or 3. When there are 1 or 3 vertex parents, the indicies can be assigned to a sequence of the same length.
+       @type parentVertexIndex: list
        @ivar protectFlags: The "transform locking" bitfield flags for the object.  
        See L{ProtectFlags} const dict for values.
        @type protectFlags: int
index bfad069f9434ad88ea467e02b8f48875ec510391..b446af7efd401bf21a59c7c7caccd0609a62ee09 100644 (file)
@@ -2048,7 +2048,7 @@ static int RenderData_setIValueAttrClamp( BPy_RenderData *self, PyObject *value,
                break;
        case EXPP_RENDER_ATTR_BAKEMODE:
                min = RE_BAKE_LIGHT;
-               max = RE_BAKE_DISPLACEMENT;
+               max = RE_BAKE_SHADOW;
                size = 'h';
                param = &self->renderContext->bake_mode;
                break;
@@ -3781,6 +3781,7 @@ static PyObject *M_Render_BakeModesDict( void )
                PyConstant_Insert( d, "NORMALS", PyInt_FromLong( RE_BAKE_NORMALS ) );
                PyConstant_Insert( d, "TEXTURE", PyInt_FromLong( RE_BAKE_TEXTURE ) );
                PyConstant_Insert( d, "DISPLACEMENT", PyInt_FromLong( RE_BAKE_DISPLACEMENT ) );
+               PyConstant_Insert( d, "SHADOW", PyInt_FromLong( RE_BAKE_SHADOW ) );
        }
        return M;
 }
index 66dc1dd5fef042bcb0d2d19a84c7e024812d1d61..64cf7fcb37b0f8e5f8c1482c5de928525ff2c6d6 100644 (file)
@@ -220,6 +220,8 @@ void RE_zbuf_accumulate_vecblur(struct NodeBlurData *nbd, int xsize, int ysize,
 #define RE_BAKE_NORMALS                        3
 #define RE_BAKE_TEXTURE                        4
 #define RE_BAKE_DISPLACEMENT   5
+#define RE_BAKE_SHADOW                 6
+
 void RE_Database_Baking(struct Render *re, struct Scene *scene, int type, struct Object *actob);
 
 void RE_DataBase_GetView(struct Render *re, float mat[][4]);
index d7e71b3e5310fdb73aa3e743cd7cc4ac9b47da95..8414b6aefe3e483f6b6d5ae99010e12879ea7307 100644 (file)
@@ -499,6 +499,7 @@ typedef struct LampRen {
 #define R_NEED_TANGENT 32
 #define R_SKIP_MULTIRES        64
 #define R_BAKE_TRACE   128
+#define R_BAKING               256
 
 /* vlakren->flag (vlak = face in dutch) char!!! */
 #define R_SMOOTH               1
index dbade68ba1dae46675b69c76eb9ddd0630d0ea81..89a0a5ba7cb21ed2ec2618bc08aca53569d16a6a 100644 (file)
@@ -3935,6 +3935,57 @@ static void set_fullsample_flag(Render *re, ObjectRen *obr)
        }
 }
 
+/* split quads for pradictable baking
+ * dir 1 == (0,1,2) (0,2,3),  2 == (1,3,0) (1,2,3) 
+ */
+static void split_quads(ObjectRen *obr, int dir) 
+{
+       VlakRen *vlr, *vlr1;
+       int a;
+
+       for(a=obr->totvlak-1; a>=0; a--) {
+               vlr= RE_findOrAddVlak(obr, a);
+               
+               /* test if rendering as a quad or triangle, skip wire */
+               if(vlr->v4 && (vlr->flag & R_STRAND)==0 && (vlr->mat->mode & MA_WIRE)==0) {
+                       
+                       if(vlr->v4) {
+
+                               vlr1= RE_vlakren_copy(obr, vlr);
+                               vlr1->flag |= R_FACE_SPLIT;
+                               
+                               if( dir==2 ) vlr->flag |= R_DIVIDE_24;
+                               else vlr->flag &= ~R_DIVIDE_24;
+
+                               /* new vertex pointers */
+                               if (vlr->flag & R_DIVIDE_24) {
+                                       vlr1->v1= vlr->v2;
+                                       vlr1->v2= vlr->v3;
+                                       vlr1->v3= vlr->v4;
+
+                                       vlr->v3 = vlr->v4;
+                                       
+                                       vlr1->flag |= R_DIVIDE_24;
+                               }
+                               else {
+                                       vlr1->v1= vlr->v1;
+                                       vlr1->v2= vlr->v3;
+                                       vlr1->v3= vlr->v4;
+                                       
+                                       vlr1->flag &= ~R_DIVIDE_24;
+                               }
+                               vlr->v4 = vlr1->v4 = NULL;
+                               
+                               /* new normals */
+                               CalcNormFloat(vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
+                               CalcNormFloat(vlr1->v3->co, vlr1->v2->co, vlr1->v1->co, vlr1->n);
+                       }
+                       /* clear the flag when not divided */
+                       else vlr->flag &= ~R_DIVIDE_24;
+               }
+       }
+}
+
 static void check_non_flat_quads(ObjectRen *obr)
 {
        VlakRen *vlr, *vlr1;
@@ -3997,6 +4048,7 @@ static void check_non_flat_quads(ObjectRen *obr)
                                xn= nor[0]*vlr->n[0] + nor[1]*vlr->n[1] + nor[2]*vlr->n[2];
 
                                if(ABS(xn) < 0.999995 ) {       // checked on noisy fractal grid
+                                       
                                        float d1, d2;
 
                                        vlr1= RE_vlakren_copy(obr, vlr);
@@ -4008,10 +4060,10 @@ static void check_non_flat_quads(ObjectRen *obr)
 
                                        CalcNormFloat(vlr->v2->co, vlr->v3->co, vlr->v4->co, nor);
                                        d2= nor[0]*vlr->v2->n[0] + nor[1]*vlr->v2->n[1] + nor[2]*vlr->v2->n[2];
-                                       
+                               
                                        if( fabs(d1) < fabs(d2) ) vlr->flag |= R_DIVIDE_24;
                                        else vlr->flag &= ~R_DIVIDE_24;
-                                       
+
                                        /* new vertex pointers */
                                        if (vlr->flag & R_DIVIDE_24) {
                                                vlr1->v1= vlr->v2;
@@ -4064,8 +4116,14 @@ static void finalize_render_object(Render *re, ObjectRen *obr, int timeoffset)
                        ob->smoothresh= 0.0;
                        if((re->r.mode & R_RAYTRACE) && (re->r.mode & R_SHADOW)) 
                                set_phong_threshold(obr);
-
-                       check_non_flat_quads(obr);
+                       
+                       if (re->flag & R_BAKING && re->r.bake_quad_split != 0) {
+                               /* Baking lets us define a quad split order */
+                               split_quads(obr, re->r.bake_quad_split);
+                       } else {
+                               check_non_flat_quads(obr);
+                       }
+                       
                        set_fullsample_flag(re, obr);
 
                        /* compute bounding boxes for clipping */
@@ -5406,6 +5464,7 @@ void RE_Database_FromScene_Vectors(Render *re, Scene *sce)
    RE_BAKE_AO:     for baking, no lamps, but all objects
    RE_BAKE_TEXTURE:for baking, no lamps, only selected objects
    RE_BAKE_DISPLACEMENT:for baking, no lamps, only selected objects
+   RE_BAKE_SHADOW: for baking, only shadows, but all objects
 */
 void RE_Database_Baking(Render *re, Scene *scene, int type, Object *actob)
 {
@@ -5421,6 +5480,7 @@ void RE_Database_Baking(Render *re, Scene *scene, int type, Object *actob)
        RE_init_threadcount(re);
        
        re->flag |= R_GLOB_NOPUNOFLIP;
+       re->flag |= R_BAKING;
        re->excludeob= actob;
        if(type == RE_BAKE_LIGHT)
                re->flag |= R_SKIP_MULTIRES;
@@ -5435,6 +5495,10 @@ void RE_Database_Baking(Render *re, Scene *scene, int type, Object *actob)
                re->r.mode &= ~R_RAYTRACE;
        }
        
+       if(!actob && (type==RE_BAKE_SHADOW)) {
+               re->r.mode |= R_SHADOW;
+       }
+       
        /* setup render stuff */
        re->memArena = BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
        
@@ -5472,7 +5536,7 @@ void RE_Database_Baking(Render *re, Scene *scene, int type, Object *actob)
        set_node_shader_lamp_loop(shade_material_loop);
 
        /* MAKE RENDER DATA */
-       nolamps= !ELEM(type, RE_BAKE_LIGHT, RE_BAKE_ALL);
+       nolamps= !ELEM3(type, RE_BAKE_LIGHT, RE_BAKE_ALL, RE_BAKE_SHADOW);
        onlyselected= ELEM3(type, RE_BAKE_NORMALS, RE_BAKE_TEXTURE, RE_BAKE_DISPLACEMENT);
 
        database_init_objects(re, lay, nolamps, onlyselected, actob, 0);
index ff31ba8a6eea0d2c952b5117c88d2e475ac1cd60..dae7b0dcd88f1a4636c067017efe47e2ee420c73 100644 (file)
@@ -2017,9 +2017,12 @@ static void bake_shade(void *handle, Object *ob, ShadeInput *shi, int quad, int
                        ambient_occlusion_to_diffuse(shi, shr.combined);
        }
        else {
+               if (bs->type==RE_BAKE_SHADOW) /* Why do shadows set the color anyhow?, ignore material color for baking */
+                       shi->r = shi->g = shi->b = 1.0f;
+       
                shade_input_set_shade_texco(shi);
                
-               if(!ELEM(bs->type, RE_BAKE_NORMALS, RE_BAKE_TEXTURE))
+               if(!ELEM3(bs->type, RE_BAKE_NORMALS, RE_BAKE_TEXTURE, RE_BAKE_SHADOW))
                        shade_samples_do_AO(ssamp);
                
                if(shi->mat->nodetree && shi->mat->use_nodes) {
@@ -2070,6 +2073,10 @@ static void bake_shade(void *handle, Object *ob, ShadeInput *shi, int quad, int
                        shr.combined[2]= shi->b;
                        shr.alpha = shi->alpha;
                }
+               else if(bs->type==RE_BAKE_SHADOW) {
+                       VECCOPY(shr.combined, shr.shad);
+                       shr.alpha = shi->alpha;
+               }
        }
        
        if(bs->rect_float) {
@@ -2505,7 +2512,12 @@ int RE_bake_shade_all_selected(Render *re, int type, Object *actob)
                memset(&handles[a], 0, sizeof(BakeShade));
                
                handles[a].ssamp.shi[0].lay= re->scene->lay;
-               handles[a].ssamp.shi[0].passflag= SCE_PASS_COMBINED;
+               
+               if (type==RE_BAKE_SHADOW) {
+                       handles[a].ssamp.shi[0].passflag= SCE_PASS_SHADOW;
+               } else {
+                       handles[a].ssamp.shi[0].passflag= SCE_PASS_COMBINED;
+               }
                handles[a].ssamp.shi[0].combinedflag= ~(SCE_PASS_SPEC);
                handles[a].ssamp.shi[0].thread= a;
                handles[a].ssamp.tot= 1;
index 6c6afdef68c5d6ccd5075f26729cd11e495ef2c2..e15ef3fd89860266c62680d0147ccffc604696e2 100644 (file)
 /* DataToC output of file <blenderbuttons> */
 
-int datatoc_blenderbuttons_size= 69070;
+int datatoc_blenderbuttons_size= 69599;
 char datatoc_blenderbuttons[]= {
-137, 80, 78, 71, 13, 10, 26, 10,  0,  0,  0, 13, 73, 72,
- 68, 82,  0,  0,  2,  0,  0,  0,  1,  0,  8,  6,  0,  0,  0,197,144,206,103,  0,  0,  0,  6, 98, 75, 71, 68,  0,255,  0,255,  0,
-255,160,189,167,147,  0,  0,  0,  9,112, 72, 89,115,  0,  0, 11, 19,  0,  0, 11, 19,  1,  0,154,156, 24,  0,  0,  0,  7,116, 73,
- 77, 69,  7,216,  3, 21, 16,  3, 34,240,181, 88,200,  0,  0, 32,  0, 73, 68, 65, 84,120,218,236,125,121, 92, 84, 85,255,255,251,
-220,217,217,119, 84, 92, 64,197,125,197, 61,212,160,  7, 45,253,154,166,  2,102,182, 61,245,196,100,218,106,105, 86,207, 83,254,
-242,145,220, 90, 53, 29,159, 74,179,212, 18,212,180, 92, 18,116, 80, 67,114, 87, 44, 23, 20, 69,  4, 65,182, 97,102,152,253,206,
- 61,191, 63,102,134,134, 17,152,  5, 52,173,121,191,152, 23,115,239,220,249,204,185,247,156,243,121,127,150,179,144,  1,  3,  6,
- 80,120,225,133, 23, 94,120,225,133, 23,127, 43, 48,222, 71,224,133, 23, 94,120,225,133, 23,127, 31,156, 60,149, 13,  0, 32,222,
-  8,128, 23, 94,120,225,133, 23, 94,120, 35,  0, 94,120,225,133, 23, 94,120,225,133,215,  0,240,194, 11, 47,188,240,194, 11, 47,
-188,  6,128, 23, 94,120,225,133, 23, 94,120,241,151,  0,223,254, 96,230,204,153,196, 83, 65,171, 86,173,186,101, 44,129, 87,158,
- 87, 94, 51,160,171, 86,173,250,211,202,151,147,147, 67, 19, 18, 18,136,183, 62,238, 93,121,167, 79,159,246,184,241, 13, 24, 48,
-  0,222,250,240,202,251, 43,203,115,219,  0,248, 59, 67, 42,149, 54,120,128, 50,153,140,220,205,229, 92,189,122, 53,  8, 33,196,
- 91,115,158,213,241,244,233,211,145,153,153, 89,127,156,156,156,252,151,120,150,187,118,159,108, 86, 17,140, 31, 23,247,151,110,
- 51,146,224,109, 16,235,187, 34,  6, 70,212, 97, 55, 10,116,239,220,181,109,241,110,213, 49, 94,252, 77, 35,  0,119,162,177,238,
-218,181, 43, 97,251,246,237,114,219,241,164, 73,147, 18,199,143, 31,159,115, 55, 60, 12, 74, 45,186,243,110,229, 85,169, 84, 74,
-139,138,138,  0,  0,209,209,209,  0,112, 79, 40, 17, 71,227,202,106, 96, 53,233,153,187, 42,119,211,166, 77, 46, 27,106, 82,169,
-148,110,222,188,185,254,120,219,182,109, 24, 51,102, 76,253,113,102,102, 38,253,179,140,128, 65,131,  6, 81,  0, 56,113,226,  4,
-105,141,235,182,255, 32,107,198,  0,144,181,184,254,162, 98, 58,  0,  0,110,234,245, 96,117,  6,203,201, 90, 21,  0, 32, 37, 37,
-  5, 73, 73, 73, 77,150,111, 77,210, 26, 26, 91, 22,235,214,239, 39,254,158,232, 66,189, 72, 16,252,194, 89,232,183,111,131, 66,
- 49, 25, 10,  0,113,146,165,120, 71,114,  2, 29,196, 64,165,190, 16,239,232, 82,221,250,221,236,236,236,132,140,140, 12,185,253,
-185,148,148,148,196,164,164,164,156,187,169,111,181,150, 14,184, 23,238,247,118,224,189,183, 94, 34,126,130, 64, 98, 16, 11,169,
-161, 86,199,212,233, 84,220,135,159,174,248, 91,204,142,115,106,  0,236,218,181, 43,193,246,191,165, 68,109, 83, 36, 11, 54, 47,
-132, 95,135, 64,212, 93, 87,226,221,212,119,228,219,183,111,135,215, 26,118, 14,153, 76, 70,162,163,163,105, 81, 81, 17,138,138,
-138,176,103,207,158,187,214,147,176,213,181, 76, 38, 35, 50,153, 76, 32,149, 74, 77, 75,150, 44, 57,  6,  0,115,231,206, 29,210,
-220,119, 39, 79,158, 92,255,158,101,205, 48,154, 12, 48, 26,140, 48, 26, 45, 47,150,101, 49,119,238, 92,183,202, 98, 79,254,141,
- 97,204,152, 49,127,170, 17,224,138,241, 51,104,208, 32,167, 50,198,143,139, 35,158,144,188,203,  8, 10, 64,254,149,239, 32, 65,
-123,152,145,139,138, 47, 78,226, 76, 97, 53,166,124,176,214,165,175,199,150,197,186, 72,232, 22,200,123,203,157, 42, 98,201,248,
-119, 16, 50,233, 89,148,190, 18,  7,232, 20,245,231, 79,234,222,192, 73,  0,208,  1,163, 37, 41,216, 23,124,  2, 65,  0,  6, 41,
-  6,185,220,126, 29,145,145,145, 33,207,200,200,184, 43,244,149,173,140,173,161,  3,238,133,251,109,109,172, 95,185,138, 60, 30,
- 21,195,127, 41,249, 73, 94, 68,207, 40,134, 79, 34,136, 86,169,228,196,136, 52, 51,237,218,155,245, 55,174,154, 93,124,118, 55,
-220,208,225,237, 92,144, 55,199, 13,121,203,111,171,  1,176,125,251,118,249,230,127,191,133,212,247, 23,201,199,143, 31, 79, 90,
-210,192,108,196, 15,  0, 85,218,106, 32, 20,152,191,239, 61,168,174, 40, 32,125,238,238, 34,178,166, 58,196,159, 93, 70,123, 35,
-224,161,135, 30, 66, 81, 81, 17,162,163,163,239,186,103, 39,151, 91, 28,137,196,196, 68, 42,147,201, 24,153, 76, 22, 37,149, 74,
- 75,151, 44, 89,114,194, 85, 57, 44,203,194,104, 52,213, 19,191, 61,249, 31, 63,126, 28,131,  7, 15,118,171, 92,169,169,127,120,
-128,211,167, 79, 71, 86, 86, 86,  3,  3,160, 53,218,138, 39,245,112,226,196,  9,146,147,147, 67,199,142, 29,123,203,103,123,247,
-238,197,166, 77,155,234,143,155, 27,183,112,139,241,222,138,233,128,168,152, 14, 40, 85, 40,177,245,249,169,  8, 37,241, 40,252,
-223,235,232, 60,185, 51,178,220, 32,127, 27,210,210,210, 40,  0,172, 89,179,166,197,109, 54,106,115, 46,180,215,234, 80, 42,141,
-105,246,186,179,226,108, 44,232,123, 19,233,103,223,110, 81,125,182,  6,233,182,166,140,214,136,  4,220,238,251,109, 45,228,230,
-230,250,  0,184, 15,128,159,221,233, 90,  0,249,241,241,241, 53,174,202,209,113, 58,198, 88,101, 16,140,155, 56, 89,172,128, 73,
- 44, 16,240,249, 42,189,152, 17, 10,117, 28, 47,192,151, 53, 74, 76, 38,126,249, 13,131,152, 39,210,235,205,  6,179, 84, 42, 37,
-141,141, 25,177, 71,109,109,237,127,109,239, 11, 10, 10,170,124,125,125, 25,141, 70,195,217, 95, 51,116,232,208,143, 92, 45, 35,
-165,212, 41,177, 19, 66,230,180,244,153,242,157,121,255,221,186,117, 67,172, 95,  0, 90, 18,  5,176, 39,255, 42,109, 53,210,255,
-241, 94,253,103,255,220,254,  2, 16,  1, 76, 94,146,234, 86, 35,107,138,160, 91,139,164,175, 95,191, 14,  0,232,208,161, 67,131,
-247,182,223,117,214, 32,110,103,136,207,222,  8, 48,153, 88,172, 94,189,250,182,121,  1,238,202,116, 32,127,251,239,223,144,201,
-100,193, 82,169, 84,225, 50,249,155, 76, 48, 26, 13, 48, 24,141, 48, 57,144, 63,229,220,139,208,165,166,166,226,248,241,227,245,
-199,203,151, 47, 71,114,114,114,253,113,102,102,102,139,141, 29, 59,131,167,197,237,207,158,248,167, 79,159,142,129,  3,  7,122,
- 36,167,181,210,  1, 37, 87,138,161,217,246, 31,248, 61,243,  9,162, 98, 58, 32, 50, 84,130, 43,219,174, 88,200, 63, 40,192,146,
-  2, 16,240, 92,146,213, 26,196, 15,  0,221,206, 93,198,245,119, 23, 66,151,177,174,249,  8,129, 68,  2,189, 94,143,194,194, 66,
- 84,232, 47,162, 27,162,154,188, 54, 59, 59, 59,161,185,182, 47,147,201,136,173,159,100,103,103, 39,184, 19, 30,183,143,138,217,
-250,171,253, 57,119, 29,129,166,136,219, 29, 93,208,216,253,102,101,101, 81, 66,  8,146,146,146, 72, 75,238,215,134,103,159,125,
-150,126,249,229,151, 45,170,243,220,220,220, 64,  0,147,247,237,219,247, 31,142,227, 12,118, 36,200,231,241,120,190,  0,254, 21,
- 31, 31,191,203,153,156,130, 43,  5,124,137, 80, 44, 22,  8, 68,190, 12,159,  4, 80,158,200,135,227,241,248, 28, 97,192, 17,190,
-153,242,120,  6, 30, 71,244, 26,158, 89,235, 43, 20, 16, 94,151, 14,122,241,196,  8, 14,197,206,203,168, 80, 40, 84, 90,173,150,
-  5,  0,141, 70,195,189,245,214, 91,245,132,191,104,209,162, 87, 91,218,222,199,140, 25,243,188,237,125, 86, 86,214,234,214,232,
- 67,140, 51,239,127,225,180,100,232, 43, 43,241,122,239, 30,176,207,221,187,236,133, 88, 83,  8,246,228, 63,105,210,164, 68,153,
- 76, 70, 38, 77,154,148,184,118,210,231,150,200, 98,247,176,  6,215,187,130,185, 43, 11, 48,119,101,  1,102, 45, 59,143,167,222,
-255, 13, 83,230,159,110,241,  3, 41, 41, 41,113,201, 48,184, 83,228, 95, 84, 84,212, 36, 49, 71, 71, 71,195,100, 52, 98,216,208,
-161, 45,254, 29, 91,152,124,243,230,205,144,203,229,245,175,230, 12,173,166,200, 48, 49, 49,209,145,252,235, 13,101, 87, 20, 19,
-203,154, 45,158,191,193, 18,250,119, 36,127,179,217, 12,141, 78,227,214, 61,218, 34,  6,142, 81,131,204,204, 76,100,102,102, 54,
- 48,  6,220,186,223,156,134,250, 80,158,147,227,214, 51,107,142,252,167, 79,159,142, 37, 75,150,212,147,191,128, 47,112, 75,206,
-248,113,113,196,154,130,105,244,229,142, 44, 29,138, 81, 55,121, 24,104,198,235, 40,185, 82, 12, 58,185,231, 31,222, 74,198,235,
-224,183, 13,  7,130,130,238,168, 71,168,169, 42,132, 46, 99, 29, 40,165, 56,123,246, 44, 70,143, 30, 13,137, 68,210,128,248,131,
-131,131,161,211,233,160,211,233, 80, 90, 90,138,199,116, 47,225,139,224, 87,154,148,105,203,129, 55,247,124,108,159, 57,230,203,
- 93, 37,238,214,114, 86,108,223,117, 36,127,103, 14, 82,115,247,155,149,149, 69, 51, 51, 51,145,145,145,129,236,236,108,218,210,
-251,125,246,217,103, 41,159,207,199,179,207, 62,235,113,159,200,205,205, 21,  3,120, 46, 59, 59,251,173,247,223,127,255,  8, 33,
- 36,218,246,  2,208, 62, 52, 52,212,103,255,254,253,171,114,115,115, 71, 55, 39,199, 76, 57, 30,143,  8, 68, 70,150,  6, 24, 12,
-166,  8, 51,199,181, 55,115, 92,140,153,144,142,224,241, 66,  9, 33, 65, 32,188,  0,142, 34,132, 26,185, 32,149,206,228, 27, 17,
-192,242,152,161,106,151,234, 72,171,213,178,142, 94,255,221, 14,198, 21,239, 95, 91, 94,134,113,  3,227,220, 38,104,155, 17,177,
- 96,243, 66,  0,168, 39,127, 91, 20, 97,252,248,241, 57, 54, 35,160, 68,117,  3,113,115,135,187,101,100,104,116,102,104,116,102,
-148, 85, 27, 80, 90,169,199,245,155,122,143,136,207,214, 89,156,145,255,159,133,166,140,  0,  0,208, 27, 13,208,235,245, 30,203,
-182,145,182, 45, 71, 30, 30, 30,110,239,205,194, 85,101,226,232,  9, 55, 21, 74,116, 69,233, 25, 77,  6,139,231,111, 48,194,104,
-106, 72,254, 38,147,  9, 26,141,  6,106,149,250, 79,173, 19,139,193,148, 97, 31,144,179,253, 97,243,230, 12,143,141,  0,123,242,
-183, 17, 63,195, 48, 16,139,197,240,245,243,105, 81,153,119,237, 62, 73,155,122, 57,251,238,158,249,239, 33, 20,241, 96,147, 94,
-  4,  0,248,229, 93,198,153,194,106,139,193,150,244, 34, 76,103, 23,  0, 85,213,110,149, 39, 45, 45,141,218,210,  1,158,192, 23,
- 85,  0,128,117,235,214, 97,251,246,237, 88,186,116, 41,142, 30, 61, 10,131,193,128,138,138, 10,155, 87, 86,127,125, 84, 84, 20,
-116,  0,120,184,250,167,180,151,166,218,189,163, 55,239,169, 65,209, 88, 90,192, 93,121,246,145,176,140,140,140, 22,221,179,141,
-252,  1,192, 83, 35, 32, 55, 55,183,141,149,252,211,190,254,250,235,115,239,188,243,206, 35, 27, 55,110, 68,183,110,221,  0,  0,
-157, 58,117,130, 82,169, 20, 45, 88,176,224,196,254,253,251,191,205,205,205,141,110, 84, 16,  1,192, 81,  2,142, 21,155,205,108,
-136,153, 53,183, 55,153, 77, 93,121, 12,105, 39,228, 51,  2,177,128,167,227,251,  8,107,125,253,121, 42,158,152,178, 98, 30,207,
-151,207, 26,  3,174,158, 60, 37,122, 34,252, 99,167,229, 46, 40, 40,168,210,104, 52, 92, 99, 97,254,254,253,251, 95, 52, 26,141,
-173,214,150,250,247,239,223,106,178,248,205, 17,247,255,210,158,253,131,108, 75,174,227,245,222, 61,176,108,251,118,183,199,  2,
-216,188,127, 27,233, 55,240, 82,198,143,207,217,190,125, 59,  0, 32,180,111, 27,183, 10, 95,167, 51, 67,173,101,161,210,176, 80,
-214,177,168, 85,179,110, 63,128,198, 70,254,219,123,249,246,239,175, 92,185,130,218,218,218, 59,166, 52, 86,175, 94,141,232,232,
-104,216,  6,253,217,231,250,165, 82, 41, 93,189,122, 53,244, 58,157,199,  6,128, 84, 42,165,107,215,174, 69, 73,105, 41,  4, 60,
- 30, 34,219,180,105, 64,254,255,248,199, 63,144,154,154,234,146,114,146,201,100, 36, 49, 49,177,129, 17,224, 24,201,112,117,172,
-130,209, 96,132,209, 96,128,201,100,  4,203,154,235,201,223, 96, 48, 64,171,213,162,174,174, 14,106,181,251,  6,128,125, 10,192,
-  6, 79, 61,255,205, 25,155,  1, 10, 84, 89,137,134, 90, 26, 17,  8,165, 22, 35, 32, 35,  3,169, 41, 41,110,167,  3, 28,201, 95,
- 32, 16, 64, 36, 18, 65, 44, 22, 67, 44, 22,123,116,223, 13,250,117, 19, 41,  1,103, 41,173, 41,171,183,128, 78,140,193,205, 17,
-113,  8, 69, 60, 36, 83, 63,  3, 91, 86,  9,  4,  5,128, 95,189,  9, 63,125,124,  2,224,241,220, 42, 75, 75, 83,  1, 26,158, 69,
-167,164,167,167,163,178,178, 18,171, 86,173, 66,255,254,253,241,254,251,239, 35, 46, 46, 14, 58,157,206,209, 67,179,153,212,119,
-148,248, 93, 37,104, 79,211,  1, 77, 25, 18,158,200, 73, 73, 73,169, 39,126, 79,250, 70, 99,228, 95, 79, 54,124, 62, 88,150,117,
- 55, 29,224,159,159,159,255,233,204,153, 51, 15,246,237,219, 55,  0,  0,222,123,239, 61, 20, 20, 20,  0,  0,134, 15, 31,142,173,
- 91,183, 98,228,200,145,190,143, 61,246, 88, 97, 78, 78, 78, 54,143,199,123,236, 86, 69, 15,132,132,134,112, 87,174, 20,178, 57,
-242,125,187,187,118,141,205,137,233, 20,125,142,231, 47,169,224, 17,161,134, 17,  9,180,140,216, 71,109,228,243,140,160, 38, 30,
- 39, 54,249,171, 75,171,253,142,238, 63, 61, 52, 44, 56,114,171, 83, 99,212, 46,231,191,109,219,182,167, 38, 79,158,252,181, 45,
-236,175, 82,169, 24,161, 80,216,226,182,212, 90, 97,127,167, 17,  0,155,151, 63,184, 75, 44,244,149,149,208,148, 88, 72,112,180,
-213, 59,116, 55, 10,112,229,183,203,183,200,110,236,184,250,108,185, 91,133,111, 41,249,219, 19, 63,165, 20, 29, 58,116,104,240,
-153,201,100,170,127,213,214,214, 66,163,209,160,166,166,230,142, 41, 15,219, 60,255, 61,123,246, 52,136,  4,216,200,191, 95,191,
-126,208,235,117,245,138,142,218,172, 25, 23, 21,211,202,207, 87,194,100, 50,161,125, 84, 20, 76,102,115,163,228,239,142, 34,177,
- 26,  1,183,120, 37,182,169,139,205, 69, 50,110, 49,  0,140,166,122,242, 63,118,244, 24,180, 58, 29,212,106, 53,148, 74, 37,106,
-107,107, 27,120,118,238,194,150,  6,240, 52,239, 15,  0,213, 85,213,168,174,174, 66, 85,117, 13,170,170,171, 81, 93, 93,141,234,
- 42,139, 71,218,163,103, 79,212, 88,223,187,235,253,  3,192,192,129,  3,255,240,250,125,125,225,231,231, 15,127, 63,127,168,213,
-234,196,150,180,167,230, 82,  2,206,190, 91,184, 52, 13,130,169,159, 33, 20,241,224,231,125,  6,211,150, 23,129,160,  0,236,120,
- 33, 25,215,118, 92,197,195, 75,214,  3,252, 59,188,172,136,254, 26, 36, 81, 18,104, 52, 26,232,245,122,104,181, 90,228,229,229,
-225,131, 15, 62,104,244,114, 31, 31, 91,  4,229,178,219,228,237,169, 87,109,255,124, 29,159,119, 83,199, 45, 49, 50, 26, 75, 11,
-184, 35, 39, 41, 41,137,164,164,164, 32, 57, 57, 25, 99,198,140,241, 56, 50,241,229,151, 95, 18,150,109,168,147, 89,150,133,187,
- 99,  1,226,227,227, 47,165,164,164,244,223,184,113,227,232, 67,135, 14,249, 39, 37, 37, 29,181,145,191,213, 81,133, 72, 36,162,
-215,174, 93, 19,236,222,189,187,123,112,112,240,177,248,248,248,194,198,100, 41,107,149, 92,108, 76, 55,245,240,225,195,147,207,
-157,251,253,  1,149, 70,221,134,178, 38, 22, 12, 76,172,129, 49, 24, 12,  6,157, 10,229, 42,206,160, 87,151, 22,151,179, 63,237,
-220,181, 56, 44, 52,188,194,104,212, 58,117,223, 27,243,254, 21, 10,  5, 31,  0,  2,  2,  2,238,218,180,  0,211,148,247,191,249,
-223,111, 89,172,230,242,178,  6,159,185, 59, 22, 96,210,164, 73,137, 43,159,251,  4,128,101,192,223,246,237,219,229,246, 83, 11,
-183,111,223, 46, 31,243,205, 35,  0,128,147, 75,126,197,164, 73,147, 18,239,212,205,219,119,146,146,146,146,122,111,223, 70,250,
-118,149, 11,181, 90, 13,189, 94,111,167, 68,238, 92, 25,159,127,222, 50,246,195,196,178, 56,119,238, 28, 78,157, 60,137,254,253,
-250, 67,175,215, 67,167,211, 67,175,211,225,219,111,190,129,237, 58, 87, 58,250,242,229,203,209,171,103, 47,152, 76, 38, 92,186,
-116,  9,172,201,136,210,146,210, 86,125,166,182, 99,235,154,  5,136,142,142,118, 73, 49, 25, 77,  6,176,102, 75,216,255,200,145,
- 95,161,209,105, 80,167, 86, 65,169, 84, 66, 81, 91, 11,133,162,166, 69,134,152, 45, 18,208, 18, 15,231,224,193,131, 80,171,213,
- 80,171, 85,214,255,106,132,133,134,162, 71,207,158,184,112,254, 60, 14, 28, 60,232,182, 76,155,247,207,231, 11,224,227,227,  3,
- 63, 63, 63,248,251,249,193,207,207,  7, 53,138,154, 68,  0, 57,183, 59,212,223, 20,206, 20, 86,195,116,118,  1,170,145, 11, 50,
-126, 25, 72,252,127, 80,184, 52, 13, 19,151,124, 13,177,128,  1,  4,124,203,203,  3,120,154, 10, 40,157,240, 57, 66, 54, 77,128,
- 86,171, 69, 72, 72,  8, 20, 10,  5, 20, 10,  5, 14, 31, 62,140,178,178,178,250, 48,113,253,245,165,165,120, 33, 88,130, 48,159,
-202,230, 60,224, 68,123, 82,181, 31, 36,103,123,111,251,204,118,173, 39,222,185,171,233,  1, 87,201,223, 83,207,191,177,251, 77,
- 74, 74, 34, 99,198,140, 33, 45,185, 95, 71, 35,192, 19,242,183, 33, 44, 44, 44,255,145, 71, 30,121, 44, 61, 61,189,251,153, 51,
-103,226, 37, 18,  9,111,226,196,137, 68, 36, 18,129,227, 56, 50,126,252,248,252,151, 95,126,185, 95,159, 62,125,118,252,235, 95,
-255,122,202,108, 54, 87, 55, 19,243,230,126, 63,127,233, 88,159,190,253, 30, 63,118,244,232,148, 29, 59,127, 92,116,252,232,209,
- 54,231, 10, 46,136, 47,149, 22,210,111, 63,249, 94,146,190,124,105,175,236,157, 59,151,119,237,210,245, 39,191, 72,223,131,241,
-241,241,102,184, 88,242,164,164, 36, 28, 59,118,108,192,234,213,171, 23,232,245,122,193,251,239,191,255,225,142, 29, 59,166,151,
-150,150,222, 89,226,104,105, 10, 32,244,106, 17,106,172,161,127,123,140, 14, 15,199, 50, 92,112,221,235,176,134,248, 47,156, 56,
-135,160,238, 97, 24,243,205, 35,216,254,196, 15,114, 91,216,223, 70,254, 54,239,223,157, 89,  6, 91,211, 91,103, 36, 62, 33,  4,
-231,207,159,135,173,177, 58,134, 89,  5,  2,  1,  4,  2,  1, 42, 43, 43, 49,126,252,248, 59, 94, 73,182, 81,255,171, 87,175,198,
-208,161, 67,161, 55, 24,160,211,235,160,183, 14,110,210,233, 45,105,128, 21, 43, 86, 56, 85, 38, 82,169,148, 46, 89,178,  4,102,
-179, 25, 39, 78,156,132,128,111,  9,219,198,198,198,226,106, 81, 17, 74, 75, 75,177,105,211,119,152, 62,253, 81,236,219,183,143,
-218, 71,  2,154, 83, 64, 50,153, 76,  8,128,149, 74,165, 92, 99, 30,144, 59, 83, 21,109,158,127, 94, 94, 30, 52,117,218,122,  3,
- 76,165, 86, 65,165, 82, 66,165,170,243, 56, 20,110,243,254,173, 43,  1,122,100,  8, 76,159, 62,189,193,113, 76,116, 52,122,244,
-180, 12,138,187,112,254, 60,174, 90, 35, 30,142,215,185,130, 17,247,141,128, 72, 40,130, 68, 34,129, 88, 44,134, 72, 36, 66,121,
-121,185,203,228,239, 44,212,239,233, 26,  1, 83, 62, 88,139,173,  0, 30, 74,255, 63,208,140,215, 65, 82,151,227, 76, 97, 53, 72,
- 72, 48, 46,151,168, 44,222,191,155, 41,  0,199, 84,128,219,211,  3,117, 58,128, 87,232, 16,222,183, 16,189,201,100,194, 23, 95,
-124,129,209,163,255, 24, 23,182,239,233, 40,160, 66,139,238,187, 20, 24, 16,222,169, 41,  5,158,227,144,251,150,  3,245,234, 95,
-238,120,173, 39,132,221, 92,222,222, 83,207,223, 83, 67,226,118,223,175,213,  8,104,241, 44,128,232,232,232, 77, 35, 71,142, 12,
- 63,157,159,159,170,211,233,250,201,229,251, 37, 34,177,136,207, 16,  6,251,247,239,247,239,213,171,215,250,148,148,148,255, 84,
- 86, 86, 58,245,214,167, 79,155,202,253,180,251,167,  3,253,251, 15,156,107,100, 13, 15, 93, 46,184,180,136, 43, 42,100,  1, 80,
- 49, 24, 83,223,174,221, 51, 34, 34,194,119,241,248,194,111,255,251,206, 98,227,183,235,214, 90,115,124, 77, 99,232,208,161, 31,
- 37, 37, 37,  1,  0, 42, 43, 43,145,157,157, 29,240,213, 87, 95, 45,  2,128, 99,199,142, 13,237,221,187,247,158,123,194,  0,176,
-121,231,255,248,118, 99,243, 94,134, 27, 83,  2,109,214,111,220,220,225,  8,237,219,166,158,244,237, 67,255, 39,151,252,234,150,
-229,218, 90,115, 82,109,101,235,217,179, 39,206,158, 61,219,128, 88,106,107,107, 11,  1,116,105,236, 59,158,174,189,220,210,114,
- 58,158,255,246,155,111,161,215,235, 97, 48, 26, 96, 52, 26,177,100,201, 18, 56, 35,127, 27, 56,206, 12,177,196, 15, 58,157, 30,
-231,207,157,  3, 95, 32,128,201,104,132,143,175, 15, 54,109,218,  4, 30,143,103,155, 59,223,236,189, 46, 89,178,100,143, 84, 42,
- 53,202,100,178,  8, 91, 57, 29,214,  1,112, 43,180, 57,119,238, 92,228,230,230,162,174,174, 14,117, 26, 13,212, 42,149,149,252,
- 85, 80,171,212,168, 83,215, 65, 99,167,240, 93,121,118,131,  7, 15,166,199,143, 31,175,247,254, 27,155,  6,232,234, 34, 64,  9,
-  9,  9,183,212,133,141,244, 79,157, 58, 85,239,205,187,122,207,131,  6, 13,162,182, 69,126,252,124,252, 32,150,136,161, 86,171,
- 19,237,114,216,110, 41,222,219,181, 24,144,205,  8,152,156,254, 21,232, 22, 32,236,105, 25,114, 94, 73,198,200,197, 27,  0,129,
-  0,190,226,150,229, 57, 29, 13,  1,  0,144,231, 58, 11, 54,222, 68,223, 61, 62, 40,255, 81, 11,197,194, 63,206,154, 76, 38,140,
- 26, 53, 10,  0, 16, 21, 44,193, 47,178, 14, 88,250,193,117,124,126, 82,215,172, 52,123,143, 31,176, 12,132,179, 41,118,199, 65,
-113,238, 78,139,179, 31,191,211, 82,207,191, 49,157,224,137,172,219,121,191,246, 70, 64,107,180,191,222,189,123,127,170, 86,169,
-119, 15, 25, 52,120,168, 90,165, 10, 97,205,172, 33, 50, 50,178, 50, 42, 42,170, 92,165, 82,157,169,172,172,116, 89, 41, 76, 24,
- 55,129,  3,176,233,208,193,163,121,241, 35, 71,254, 32,145, 72,  2,  9, 40, 71,  8,  1,199, 81,165, 78,163,144, 95,204, 47, 86,
-127,187,110,173, 75,122,222,246,204,  0,203, 64,106,199,129,122, 31,124,240,193,127,238,  9,  3, 96,252,248,241, 57, 45, 89,240,
-199,149,198,106, 51,  4,108,196,223,154,132,222,146,178,245,237,219, 23,199,142, 29, 67,101,101,125,136,176, 11,  0, 84, 87, 91,
- 34, 74, 79, 60,241,196,159, 90, 89,142,207,136, 82, 74, 31,127,226,113,172, 88,177,210,154, 51,103, 17, 24, 24, 72, 92,253,190,
- 13, 18,137,216, 38,207,226, 77,105,180,246,223,  1,224,116,179,137,158, 75,150, 44,185, 36,149, 74, 43,100, 50, 25,207,126, 64,
-160,117, 90,160,203,138,206, 54,247, 61, 62, 62,190,213,159,221,224,193,131, 29,247,  2,168,255,220,221, 21,  0,101, 50, 25,201,
-201,201,161,155, 54,109,106,176, 80,143, 77,182, 39,237, 57, 33, 33,129,152, 88, 19, 76,106, 83,171,222,123,115,161,127,119,247,
-  6,152,242,193, 90,192,110,225,159,251,223,250, 99, 92,146,166,149,202,219, 32,  2,208,187,121,227,179, 52,190, 20,165,  0,226,
-150,  6, 99,225,137,110,  8,  7, 80, 89,168, 65,215,174, 93,  1,  0,159, 46, 12,198,131, 67,194, 17,243, 96,129, 75,191,237,206,
- 84,183,140,140, 12,121,115,203, 30, 59,211, 55,173,161,243, 90, 42,235, 78,220,111,107, 98,248,136,225,151,  0, 92,186, 37, 98,
- 29, 26,234,145,188, 81,163,135, 22,161,209, 81,161, 81,232,218,173,143, 59,134, 84,171,222,103,107, 44,242,227,145,  1,112,187,
-  9,108,215,174, 93,  9,219,151,220,125,123,  1,216, 58,210,144, 33, 67,176,107,215, 46,189,149,244, 57,  0, 62,183, 35,242,208,
- 74,141,132,200,100,178,122,207,190, 57,242,191,157,152, 59,119,174,125, 60,181, 94, 97,219,166, 17,186,227,237,220,206,231,107,
- 47, 59, 39, 39,167,197,203,254, 38, 36, 36,144,132,132,132, 22,151,203,217,218,254,173,129,150,164,  4,230,205,155,135, 43, 87,
-174,180, 90, 89, 92, 89,222,215, 93,156,124, 67,129,147,176, 12, 12, 29,157, 34,193,207, 71,186, 33,210,199, 15,191, 31,191,137,
-238, 46,146,191,179,246,119,183, 46,135,219, 26,107,  9,220, 75,247,123, 23, 62,255,118,173, 44,111,249,157, 42,251, 29,223, 13,
-240,118, 69, 24, 90,211,  8, 24, 63,126,188,248, 30,107,128,228, 79,254,109,219, 10, 53,172,205,  0,240, 42,143,187,  7, 45, 77,
-  9,116,238,220,153,116,238,220,185, 85,244,141, 59,251,  0,120,138,131, 25, 58, 28,204, 40,240,246, 89, 47,188,112,230, 68, 14,
- 24, 48,128,122, 31,131, 23, 94,120,225,133, 23, 94,252,189,192,120, 31,129, 23, 94,120,225,133, 23, 94,120, 13,  0, 47,188,240,
-194, 11, 47,188,240,194,107,  0,120,225,133, 23, 94,120,225,133, 23, 94,  3,192, 11, 47,188,240,194, 11, 47,188,248, 75,160,193,
- 44,128,153, 51,103,122, 60, 50,181,177,121,226, 94,121,119,159,188,180,180, 52,143,228, 13, 28, 56,240, 22,121,167, 78,157,242,
-184,124,141,201,187, 87,234,195,221,103,184,102,205,154, 59, 82,190,214,174,143, 59, 89,191,206,166,137,186,251,252, 90, 91,158,
- 87,191,120,229, 53, 34,175, 61,  0,  5,  0, 33,128,218,187,173,124,110, 27,  0, 94,252,245,177,102,205, 26,239, 67,248,155, 33,
- 40, 40,136,129,101,122, 38, 95,169, 84,114,148, 82,243,221, 84, 62,219,190,243,217,217,217,180, 53, 22,154,105,173,149,246,188,
-184,125,216,177, 99, 71,194,196,137, 19,115,238,241,219,176,173,125, 37,113,215,  0,184, 43, 35,  0, 94,252,245, 64, 41,109,176,
-213,177,167, 17,128, 85,171, 86, 57,189,102,236,216,177,  9, 89, 89, 89, 13, 86, 22, 27, 51,102, 76,226,222,189,123, 61,234,232,
-153,153,153,141,202, 75, 78, 78,190, 43,228,221,205, 32,132,144, 78,145,145, 40, 42, 47,167,181,181,181,182,253, 25,220, 90, 98,
-208,222, 88, 60,190,117, 69,  9, 33,152, 37,219,157,191, 93, 58,174,223, 55,148, 66,181,102, 79,254,172,121, 83,134, 18, 48,148,
-175, 80,235,233,224,169, 47,186,189, 37,103,118,118,118,130,109,201, 89,235,127,143,150,155,117, 36,127, 91,187,111,233, 70, 59,
-141,125,215, 83,153,173, 33,175,165, 91,  6,123, 18, 45,185, 29,228,191,107,215, 46,249,196,137, 19,239,117,227,204,182, 15,251,
-109, 77,165,191,247,214, 75,140,159, 32,144, 49,136,133,156,161, 86,199,175,211,169,216, 15, 63, 93,209, 42, 59, 12,222, 98,  0,
-180, 38, 65,120, 42,203, 93,121,132, 16,198,106,133,233, 40,165,220,221, 86,190,214, 34,216,214, 48,  0,108, 74,221,190,172,132,
- 16,  3,165, 84,212,146, 72,  1, 33,132,  2,192,242,229,203, 27,236, 24, 54,103,206, 28, 57, 33,  4,148, 82,226,174, 82,  2,  0,
-238,251,224,  6,231,153,105, 89,242,172,172, 44,183, 21, 96,107,202,187, 23,162, 40,148, 82,154,216, 37,134, 38,118,137,  1,  0,
-148, 27,217, 25,109,132,252, 13,182,207, 47,168,234, 68,101, 46,108,156,  2,  0,199,182,124, 86,192,113,136,186,111, 68, 88,192,
-135,175,140,220,219,175, 95,208,181, 89,139,135,254, 23,  0,110, 42,181,255, 39,224,147, 31,  1,114, 46, 45, 45,173,183,187,207,
-198,113, 41,218,150, 44, 55,107, 79,254,173, 97,  4, 52,245, 29, 79,201,178, 53,228,165,164,164, 32, 35, 35,195,165,123,114, 39,
-162,210,156,188,214,138,204,216,147, 63,199,113, 88,179,102, 13, 54,108,216, 64,103,204,152, 65,220,172, 99,161, 76, 38,107,149,
-245,178,231,207,159,159,150,158,158,238,105,135, 14,176,122,254,154,219,209,135,215,175, 92,197, 60, 30, 21, 35,126, 41,249, 73,
- 97, 68,207, 40, 62,159, 68, 48, 90,165,146, 21, 35,210,200,180,107,111,212,223,184,106,108,233,111,240, 93, 81,110, 82,169, 52,
- 28,192, 96,  0,199,101, 50, 89,229, 93,230,233,  4,  0, 72,  2, 48, 25,192, 54, 66, 72, 54,165, 84,213, 10,114,191,163,148, 62,
-234, 41,193,222, 45, 96, 24,166, 89, 35,133, 16, 50, 20,128,144, 16, 18, 65, 41,173,104,234,186,230, 12, 20, 66,  8,125,249,229,
-151,209,177, 99,199, 91,182, 11, 93,190,124,121, 98,113,113,177,156, 16, 66, 93, 53,  2,164, 82, 41, 93,247,162, 47,158, 28,121,
-235,230, 50,220,247,193, 88,255,139, 17, 79,187,233, 53,181,166, 60,165, 82,153,240,230,155,111,202, 83, 83, 83,145,152,104, 89,
-217,238,244,233,211,  9,171, 86,173,146,119,236,216, 17, 28,199, 65,167,211, 33, 33, 33,  1, 99,199,142,117, 42, 83,168,212, 36,
-116,127,115,179, 60, 43,174,125, 98,155,231,198,228,  0,  0, 91,206, 38, 92,124,151,149,155, 59,  6, 64,197,249, 66,161, 11, 64,
- 69,224,177,196,103,231, 69, 56,245,142,187,116,104,211,166,163, 80, 82,246,226,172, 39, 12,145, 18,161, 80, 85,163, 35, 75,190,
-218,184,225,173,231, 31, 71,176, 68, 66,245, 38, 51,253,247,138,175, 12,  0, 72,219,182, 97,252,242,242,106,102,192,128,198,119,
-214, 28, 18,177, 55,246, 70,148, 79, 80,252,125,225,203,  7, 14, 10, 17,172, 91,119, 57, 58, 60, 76, 82,245,209, 43, 71,150, 23,
- 93, 27,104, 30,247, 96,219,188,130, 75,234,226,167,159,236, 50,222,214,110,220,233,  3,246, 27,228,180,196, 11,117, 36,127,199,
-254,233,137,252,187, 49,  2, 96, 37, 98,106, 51,  2, 82, 82, 82,236,207, 55, 32,109,251,141,125, 60, 53, 42,108,114, 50, 50, 50,
- 90, 28, 37,176, 39,255, 57,115,230,224,248,241,227,244,151, 95,126,193,140, 25, 51,220, 21,101,148, 74,165,  2,153, 76,198,182,
-130,138, 44,159, 63,127,254,228,244,244,244,109, 30,124, 55, 10, 64, 13,128,104,  0,167,115,115,115, 59,  1,248, 28, 64,136,189,
-124,  0,159,198,199,199,187,188,231,130,142,211,241,141, 85,  6,159,113, 19, 39,  7, 42, 96, 10, 20,  8,248, 34,149, 94,204, 23,
- 10,117, 44, 47,192,215, 96,148,152,116,252,242, 27,106, 49, 79, 84,171, 55, 27,140, 82,169,180,201,254,219,226,  8,  0, 33,164,
-  3,128,255,  1, 40,  5,240,178, 84, 42,125,142, 82,122,253, 78,121,176, 78, 72, 58, 20,192,122,  0, 55,  0, 28,  6,240, 16,128,
-103,  9, 33, 79, 82, 74,171, 91, 40,126, 26, 33,100,134,179,124,233,157, 12,177,223, 38, 12,  7,112, 17, 64, 12,128, 10, 98,101,
-106, 87, 13,154,177, 99,199, 38,  0,104, 64,254,115,230,204,145,219, 71,  3,172,159,201,199,142, 29,155,224, 44, 29,144,153,153,
-153,  0,160,  1, 89, 51,211, 20,176,247,222,159, 28, 41,196,211,159,105,144,153,153,153,224, 44,124,223,218,242,  0,224,200,145,
- 35,114,177, 88,140,188,188,188,  6,251, 29, 48, 12,131,183,223,126,155,216,148,221,206,157, 59,229, 99,199,142,117, 90,  1,109,
-142,156,147, 83,177,  0,253, 42,133,242,138, 63,182, 98,  5, 97, 40,250,189,109, 36,128, 17,103, 15, 94, 75,184,177,101,130, 28,
- 56,218,172, 18, 78,236, 18, 67, 59, 10, 37,120,237,133, 25,134, 72, 63,161,176,234,108, 46,241,101,248,120,105, 84, 44,218,  5,
- 73,112, 45,239, 16,209, 25, 41,153,147,246,132, 49,177, 75, 12,237,225,227,143, 50, 90, 69,  6, 14, 28,216,168,188,176, 48,225,
-253, 66, 33, 35, 62,124,184,236,101,214,172,255, 56,178,125,103, 83, 80,152,128,168, 84,151,125, 58,199,248,132,133,132,136, 42,
- 57,170, 50,252,116,180, 66, 51,115,212,159,211,128, 29,195,254,246,125,211, 93, 35,192,118,141,253, 56,  2,103,215, 57,219,126,
-187, 53,229,217, 27,  1, 50,153,  2,128,  2, 82,105, 48, 26, 35,109, 87,209,148, 81, 97,141,200,180, 40,234, 97, 79,254, 59,119,
-238,148, 51, 12,  3,134, 97, 48,106,212, 40, 28, 58,116,168, 65,125,185, 10,179,217,156,207,227,241, 76, 82,169,148, 47,147,201,
- 90, 58,158, 69, 82, 93, 93,253,125,104,104,232,212,244,244,244, 45,110,126, 87,  7,203,126, 49,234,220,220,220, 62,  0,182,236,
-219,183,175, 27,199,113,246, 28,  5, 30,143,247,  8,128,156,248,248,248, 68,103,  2, 11,174, 20,136, 37, 66,113,160, 64, 32, 10,
-103,248,164, 45,229,137,130, 56, 30, 79,196, 17,  6, 28,225,155, 40,143, 87,199,227,136, 90,195, 51,215,248, 10,  5,132,215,165,
-131, 82, 60, 49,130, 69,241,237,139,  0,124, 12, 96,159,213,178,121,  1,192,199,107,214,172,153,234, 33, 97,  7,  3,120, 25,192,
- 16,  0,227,  1,236,  2,112, 12,192, 39,148, 82,133,  7, 34, 15, 90,203,181,138, 82,202, 17, 66,124,  1, 60,101, 61,223,187,  5,
-134, 69,160,245,173, 47,  0,149, 59, 30,118, 19, 17, 20, 33,128,183,  0, 44,146,201,100, 70,220, 93, 24,  2, 32, 23, 64, 27, 66,
-200, 38,107,157,124,227,104,208, 52,101,160,100,101,101,201,237,195,254,115,230,204,169, 63,182,127,191,124,249,242, 68,171, 97,
-208,108,143,207,202,202,146,219,135,233,153,105, 10, 92,218,101,217,133,145, 25,255, 77, 61,105,115,223,  7,131,153,150, 37,119,
-182,161, 79, 99,242,108,202,140,153, 38,165,238,202,163,148, 38, 28, 62,124, 24, 51,102,204,192, 23, 95,124,129,147, 39, 79, 38,
-196,197,197,229, 56, 94, 35, 22,139,229,109,219,182,117, 37, 86,159,208,246,240,111,184, 56, 35,  1,126, 95,156,  5, 41,211, 38,
-208,182, 62, 86,121,196,122,  9, 18,  4,250,142,242,144,182,205,111,101,155,216, 37,134,166,253,107,154, 49,210, 87, 40, 48, 93,
- 62, 46, 12, 14,247, 39,242, 50, 21,166, 14,232,128, 30, 81, 65, 16,214, 94,132, 92,173, 67,  7,129,  8, 65,132, 39,152,255,236,
- 12, 90, 39, 20, 21, 36,118,137,161,  8,  8,106, 84,166,162, 86, 29, 50,116,168,223,114, 21, 59,108,158,127,112,165, 72,207,248,
-114, 18, 63,163, 33, 36, 44,148,241,  9, 18,243, 21, 53,101, 34,149,146,133, 64,105, 32,246,109,166, 57,131,214,154,247,151, 59,
- 35,206,148,148,148, 68,103,227,  1, 26,243,252, 29, 13,  1,119,140,  0,219,103,205,145,177,253,121,103,196,232, 40,143,110, 14,
-190, 85,223,164, 42,224,170,188,230,194,253, 45, 33,109, 71,163,  2,  0, 66, 66,178, 91,133,252,103,206,156,105, 73,191,113, 28,
- 94,127,253,117,124,252,241,199,245,228,191,106,213, 42,183,101, 51, 12,  3,163,209,120, 74, 40, 20,178,173, 16,  9,168,  1,128,
-234,234,234, 45,161,161,161,137,233,233,233,114, 55,190,203,  7,128,167,159,126, 90,148,155,155,155,149,157,157,221,102,225,194,
-133,236, 59,239,188,211,128, 87, 67, 67, 67,177,127,255,254,  4,  0, 25,241,241,241, 41,205,  9,228, 17, 65,128,145,165,237, 56,
-206, 20, 35,228,241, 58, 81, 66, 34,  8,159, 79,248, 60,158,146, 16,162,  3,225,169, 56,138, 96,106,228,124, 84,102, 19,186,  4,
-176, 58,102,168,154,107, 53,  3,192, 33, 55, 28,  5,160,  3,165,212, 70,248, 75,  9, 33, 71,165, 82,105, 20,165,180,212, 29, 15,
-150, 16,242,132,149,172, 63,  4, 48, 15,192,227,214, 16, 74, 10,128, 98, 66,200, 11,148,210,111,220, 32,233,255,  0,184, 76, 41,
- 93, 73,  8, 17, 89, 59, 60, 75, 41,253,156, 16,242, 32, 33,228, 63,148,210,255,231, 97,163, 24, 13,160, 18,192,253,  0,126,116,
-231,139,141, 69,  0,164, 82,233, 51,  0,222,  5, 80,158,150,150,182,250, 46,139,  0,244,182,150,109, 12,128,113,  0,174, 57, 51,
-104,154,130, 61,225,219,147,190,227,184,  0,151, 59,186, 29,249,  3,192,165, 93, 79, 52, 48,  2, 60,145,103,175,204,100, 50, 25,
-177, 55,  2, 92,193,129,  3,  7, 96, 52, 26, 49,104,208,160,196, 95,126,249, 69, 94, 84, 84, 36,143,139,179,108,169,203,113, 28,
-210,211,211,105, 93, 93, 29,  4,  2,  1,166, 76,153,226,244,190,245,121,199,192, 24, 89,212, 14,138, 78, 20,252,114, 67,126,121,
-237,  1,116,121,107,156,133,180, 56,138,252,116, 33,173,169,243,135, 78,224,135, 49, 51, 47, 57,127,142, 12,175,174,242,108, 94,
-160,222, 96,102,  2, 37, 34,154, 60,160, 35,  2, 36,  2, 82, 82, 93,  7, 95,134,143,212,129, 29,233,145,223, 43,240,235,143,123,
-208,201,215,143,158, 81,171,174,  1,232,222,148,184,188, 83,237,102, 13, 31, 88,117,192,143, 31,195, 10,217,155, 93, 70,143, 72,
-245,211, 27,125, 39,240,252,142, 49,170,218, 26,159,162,243,199, 98, 76,198,243,149, 87, 10, 53,  1,214, 62,227,148,168, 92,245,
- 78,109,227,  3,154,202, 63, 55,229, 77, 59,243, 42,165, 82, 41,245, 52,100,122, 55,193,209,243,183,144, 55,144,145,209,122,131,
-  4, 91,195,243,167,148,130,101,255,224,232,145, 35, 71,226,208,161, 67, 30,145,191, 21, 38,129, 64, 96,230, 56,238, 48,195, 48,
-166, 22, 26,  1, 17,182, 55,213,213,213,242,208,208, 80,105,122,122,186,171, 59,103, 21,165,166,166,  6, 28, 56,112, 32, 61, 59,
- 59,187,205,215, 95,127,205, 61,245,212, 83,252,141, 27, 55,226,189,247,222, 67, 65, 65,  1, 58,117,234,132,242,242,114, 44, 88,
-176,192,252,238,187,239, 38,  3,120, 33, 62, 62,254,243, 38, 37,114,108,160, 25, 76, 39,194,161,183,  9, 92,172,143, 64, 36, 20,
-242,153, 50,177,128,167,226, 73,132, 85, 34, 17,175,206, 96,230,124,248, 38,126,136,145, 53,152,175,158, 60,165,120, 34,252, 99,
-237, 17,120,198, 31,206, 34,  0, 15,  2,200,117, 24, 56,150, 11,224,193, 53,107,214,124,229,  6, 89, 63,  6,224, 21,  0,209, 14,
-161,121,  5,128,223,  8, 33,159,  2,216, 75,  8, 49, 83, 74, 55,186, 32,207,  7, 64,154,255, 11,176,  0,  0, 32,  0, 73, 68, 65,
- 84,154,205,203,167,148, 26, 28, 46,121, 18,192,239,132,144,101,148, 82,173, 39,225,127,  0, 95, 89,255,187,101,  0, 56, 18,166,
- 84, 42,253, 39,128, 89,214,103,185,156, 16, 98,144,201,100,107,239,  6,  5, 66,  8,233,106, 13, 97,253,  4, 96, 59,  0, 91, 61,
-193,213,  8,192,223, 13,165,165,165,242, 97,195,134,129, 16,146, 51,108,216, 48,252,240,195, 15,120,228,145, 71, 18,218,180,105,
- 35,103, 24,  6,243,231,207, 39, 86,101,146,176,105,211, 38,185,193, 96,192,144, 33, 67,154, 84,116, 35,174,222,144,151, 15,235,
-  9, 16,146,243,123,164, 57,177,247,233, 16,185,158, 67,162, 37,  5,  0,244,155,111, 36, 64, 53, 52,213,202,132,253,155,186,202,
- 53,254, 71, 19, 31,125, 42,160, 81,175,184,196,200, 46, 91,179,102,227,235,225, 97,146, 34,165,198, 24, 24, 29,236, 43, 72,233,
-223,217,103, 96,180,136,232,181,102,104,117, 28, 46, 19,157,121,123, 81,169,182,176,188,206,220, 70, 40, 46, 43, 55,234,199, 94,
- 55,152, 62,244,  7, 94,107, 76,102, 64,112, 84,123, 93,221,165,118,189,146, 30, 96,206, 29, 41, 27, 93,122,225,135,235, 93,  7,
-167, 69,240,122, 14, 40, 57,117,232,123, 37,225,  5, 12,225, 56,174,230,230, 77,157, 83, 43,202,145,176,157, 29,219,188,217,140,
-140,140, 38,  9,219, 62,188,238, 24,  9,112,229,250,123, 21, 73, 73, 73,196,222,235,183,135,125,  8,191, 37,104, 13, 57,117,117,
-117,114,  0,224,243,249,120,245,213, 87,113,252,248,113,252,242,203, 47, 45, 21,107,  0, 96, 54, 24, 12,108,105,105,105, 86, 84,
- 84,148,201, 89,100,177, 25,168,237, 15,170,171,171,101,161,161,161, 15,167,167,167,187,162,247,  3,245,122,125,183,185,115,231,
- 78,156, 57,115, 38,237,219,183, 47,  1, 80, 79,254,  0, 48,124,248,112,108,221,186, 21, 35, 71,142,100, 30,123,236, 49,154,147,
-147,179,146,199,227,233,124,124,124,160,213,222, 74, 77, 28, 71,245, 57,242,125,153, 93,187,198, 22,199,116,138,190,196,243,151,
-148,241,136, 80,201,136,  4, 74, 70,236, 83, 97,228,243,180,160, 38,  1, 39, 54, 69,168, 75,171,195,142,238, 63,253,118, 88,112,
-228, 59,158, 62,200,102, 35,  0, 82,169,116, 44,128, 13, 14, 94,237,126,  0, 51,210,210,210,190,114,197,131, 37,132,240,172,225,
-239, 73, 77,229,229, 41,165,213,132,144, 84,  0,219,  9, 33,223,187, 48, 79,249, 49,  0,123, 41,165,202, 38,228, 41,  9, 33,123,
-173,215,125,225, 38, 41, 62,  0, 32, 20,192,108,  0,155,  8, 33, 15, 80, 74,247,123, 18,  1, 32,132, 36,  3, 88, 10,160, 19,165,
- 84, 67,  8, 25, 14,224,154, 84, 42, 85, 83, 74, 51, 93,141,  0, 72, 45,166,190, 43, 74,139,200,108,110,128,107, 24,  1,224, 40,
-165,148, 18,139,219,116, 13,128,134, 16,210,193, 54,206,195,157,  8,128,163,199,223, 18,239,191, 62, 44, 63,254,155,250, 40, 64,
-108, 11,188,255, 63,194,252,127,132,111,165, 82,247,188,127,147,201, 68,143, 31, 63, 14,127,127,127,228,231,231, 83,179,217, 12,
-149, 74,133,243,231,207,203, 67, 67, 67,225, 16,246,203,233,213,171, 87,226,230,205,155,229, 67,134, 12,105, 60,220,103, 50,209,
- 14,199,207, 66,232, 31,  5, 65,126, 53,141, 52,251, 67,173, 98, 96, 62, 95,  7,132, 54,220,145,218, 55,148,205,233, 56,248, 68,
-226,158, 45,211,228,192,238, 70,149,221,165,235,215,223,136,237,208,  1,168,210,189, 14,  0,  5, 58, 21,118,138, 74, 43,123,221,
- 63, 58,188,151, 49, 31,191, 93, 83, 96,231,233,155,252,194,202,186,  0,  0, 40, 55,234,131,175, 27, 76, 41,133,165,165, 91,  7,
-132,135, 55,106,  0,220, 63, 33,149,241, 17,142,237,203,106,126, 43,238,216, 51,169,155,242,250, 22,227,229,223,178,106, 77,156,
-223,205,138,226, 95, 43, 84, 53,190, 67,192, 48,164, 70,173, 15,148, 78,139,235, 32,251,254,228,245,166,218,140, 76, 38, 35,246,
- 17,  0,123,239,210, 49,220,110, 35,233,148,148, 20, 36, 37, 37,145,198, 22, 58,105,201,104,124, 79, 23, 78,185,219, 96,235,238,
- 82,105,240, 45, 17,  1, 79,163, 10, 25, 25, 25,173, 66,254, 27, 54,108,160,  7, 15, 30,  4,221, 28, 12,146,170,192, 71, 31,125,
-  4, 74, 41, 24,134,193,234,213,171, 61,142, 44, 40, 20, 10, 67, 72, 72, 72,226,193,131,  7,119,143, 30, 61,122, 92, 99,237,199,
- 13,  4, 89,251,107, 90,117,117,245,154,208,208,208, 39,  0,212,204,159, 63,255,159,233,233,233,206, 28, 53,229,142, 29, 59, 74,
-247,236,217,243, 85, 98, 98,226, 51, 61,122,244, 64, 82, 82, 18,205,206,206,174, 47,199,246,237,219, 33, 18,137,112,237,218, 53,
-236,222,189,155,180,107,215,142,141,143,143,255,229,252,249,243,141, 10,140,141,233, 86,166,211,233,211, 14, 30, 60,184, 38, 52,
- 44, 84, 21, 24, 16, 80, 12,161,208,192, 26,152, 58,150,103,168,213,243, 85, 85,190,  6, 95,241,141,138,202,192,253,123,118,175,
-233,213,187,207, 82,163, 94, 91,215, 42,  6,128, 84, 42, 37, 82,169,212, 86,248, 54,214,215,  1,235, 52,187,250, 40, 40,128, 57,
-132,144,118,176,140,112,  4,128, 70, 45,116, 43,169,188,  4,203,  0,189,171, 14,114, 28,113,213,122,221, 75,132,144,143,155,145,
- 71,  0, 76,  1,176,216,137,188,175,  1,204, 35,132,124,229,164,124,246,141, 38, 26,150,241, 14,131, 96,201,253,191, 13,224,  4,
- 33,164, 11,128, 34,123, 27,195,  5,121,143,  2,120,214, 74,178, 58,107, 89,117,214,227,213,132, 16, 33,128,239,154,147,103,173,
-139, 39,  0,204,116,213,  0,144, 74,165,171,  0,124,211,148, 60,171,204,101,  0,252,  1,  4,  2,216, 97, 45,155, 24,150,121,226,
-191,  1, 24, 70,  8,153, 13,224, 23,  0, 59,155, 42, 31, 96,153, 71,223, 68,174, 31,142, 99,  3,198,140, 25,227,212, 24, 24, 51,
-102, 76, 34, 51,237,143,188,189,205,  8,176,189,183, 15,231,123, 44,111,218,173, 83,  2, 93,145,119,250,244,105,116,236,216, 17,
-175,190,250,106,125,155, 89,191,126, 61,205,203,203,195,132,  9, 19,110,185,222,199,199, 71, 46, 22,139,155,148, 23,125,250, 52,
-106, 59,182,197,145, 87,159,169,151,119,241,141,173,  9, 49,121, 74, 57, 51, 65,124, 75, 89,138, 11,140, 16,137,155,159,253,116,
-185,164,100, 46,218,183,255, 21,192,112, 10,202,195,213,202, 87,181, 44, 11, 86,111,  9,146,157,171,172,196, 85,189,113, 61,159,
- 16, 53,  8, 49, 93, 46, 41,201,  4,128,166,  6,  1,182,139,238, 49, 23,192,146,130, 67, 47, 23,137, 35,167, 40, 74,203,197,237,
-203, 75,142,137, 33,  8,233, 90,116,205, 28, 85, 93,126, 29, 66,161, 32,162,119,164,239, 99,181,106,211,183,  0,174, 59,243, 92,
-  1, 36, 56, 78,255,107,194,  3, 77,244,100, 77,128,198,242,255,127,  7,180,116,170,158,237,251, 25, 25, 25,180,165,242, 54,110,
-220, 64,115,114,114, 64, 50, 45,134,241,222,119,252, 49,118,161, 26,163, 71,143,134, 59,211,254, 26, 67, 72, 72, 72, 34,  0,220,
-119,223,125,218, 86, 72, 83, 40, 66, 67, 67,103,  0,176, 57,167,134,244,244,244,157, 46,126,151,  5, 80,177,125,251,118,249, 35,
-143, 60, 50, 56, 61, 61,189,159,217,108, 38, 18,137,  4, 99,198,140,193,207, 63,255, 12,142,227, 48,126,252,120,250,242,203, 47,
-147,  1,  3,  6, 24,166, 76,153,210,169,166,166,230,166, 94,175,111,138,145,217,223,207, 95, 90,223,167,111,191,192, 99, 71,143,
- 46, 61,197,231,247,233,220,169,243,151,  1,161,225, 37,130,112, 49, 61,176,123,127,112,141,162,122, 84, 84, 72,248,187,221,186,
-117, 59,224, 23,233,187,170,103,251, 65,198,252,252,252, 86,137,  0,240, 96,153,238, 23, 15,224,125,  0, 47, 90,137,199,215,190,
- 63,193, 50, 72,236, 50,128,127, 91, 83,  2,199,155,144,207,192, 50,200,108, 47,  0, 31, 23,202,115, 24,192, 88, 52,189,176,  2,
-  3, 32, 28, 64, 39,  0, 39,156,200, 60, 97,189, 46,  2, 77,231, 38, 25, 88,150,113, 12,182,166, 13, 30,177, 18,119,129, 85,118,
-129,245,120, 35,128, 31, 96,153,113,160,  0, 96,116, 34,111,154, 53,242,208,195,106, 36,217,151,179, 12,128, 20,192,  5,235,181,
-223, 59,145,247, 10, 44,179, 27, 92, 73,101,248,  0,216,  3, 96,131,147,250,152, 10,224,191,214,255,167,236,202, 39,176,214,101,
-  6,128,207,  0, 44,180,126, 94,214,212, 15,238,221,187, 55,135, 16,130,226,226, 98,185,109, 38,128,163,215, 95, 92, 92, 44,183,
- 93,235,236,  6,146,147,147,115,178,178,178,176,254, 23, 99,253,200,125, 71, 47,125,253, 47,198,250,107,239,164,188,188,188, 60,
-140, 26,213,112,168,123,116,116,116,226,230,205,155,229,157, 59,119, 78,228, 56, 78,190,104,209, 34,106,155,  6, 72,  8,193,224,
-193,131,155, 52, 42,186,231,229,225,187,208,136,196,  0,187,115, 61,103,143,133,102,233,117,224, 31, 17,160, 28,144,191, 72, 64,
-235, 56, 63,212,232,  2,160, 32,  3,209,127,212,142,196,230,154,189,117,  6,199, 22,  0, 91,186,118,138,234, 14,224, 85,131,153,
- 67,102,126, 17, 70, 69, 90,210,157,132, 82,181,154,101,223,191,121,243,230, 77, 23,218,212, 82,  0,190,  5, 23,106, 30,175, 61,
-177, 57,172,162,172,  6, 21, 55,213,224,243,171,125,235, 20, 20,181, 42, 51,141,  8, 23,  6,241, 57, 76,214, 25,204,223, 45,124,
- 53, 62, 40,162,231, 83,181, 78,136, 38,199, 25,185,180, 56,135,157,180,217,242, 63, 59,213, 77, 15,248,246,206,  2, 32,169, 10,
-180, 68, 94, 83, 30,251,160, 65,131,238, 26, 67,164,126,176,163,141,252,243, 89,172,149, 91,250, 88, 75,201,223,214, 54, 94,120,
-225,133,112, 62,159, 95,113,248,240,225, 47,239,187,239,190,150, 76, 81,236,152,158,158,190,210, 26,  5,152,102,157, 17, 48, 45,
- 61, 61,253,123, 87,130,138,  0,234,  0, 84, 69, 71, 71,247, 31, 57,114,100,233,233,252,252,182, 58,157,142,200,229,251, 33, 18,
-139,192, 16,  6,251,247,239, 39,189,122,245,210,166,164,164, 12,171,172,172,116,218,231,166, 79,155,202,254,180,251,167,207,250,
-247, 31,216,217,200, 26,198, 93, 46,184,244, 44, 87, 84,248, 12,  0,136,193,208,190, 93,187, 31,139,136,  8,207,225,241,133,111,
-252,247,157,197,117,223,174,243, 60,163,220,152,  1,240,170,213, 26,154,  0,224, 60,  0,191, 70,190,183,203,234,177, 39,  3, 24,
-106, 37,207, 70,163,156,  0, 98,  1,108,114,209,  0,168,182, 94,207,107, 70, 94,  2,128, 75, 46,202,187,100,189,126,107, 51,242,
-210,  0, 60, 13,224, 44, 44, 51, 20,174, 58,200,150, 91,189,255, 89, 86,111,120, 29,208,228,136, 11,158,213, 99,127, 18,192,  0,
-107, 20,161,177,114,170,172,159,175,182, 26,  1,235,154,145,247,181,213,232,114,229,126,169,245,250,230,158,223,135,214,200,198,
- 94,171, 81,  3,  7,217, 63,  3,232,101,173,139,  2,171, 33,213,161,217, 31,181,100, 16, 40,  0,121, 99, 11,  1,217,174,113,167,
-131, 63, 45,149,210,167, 63,211, 52,178,112,143,194,109,130,104, 45,121, 47,189,244,210, 45,215,140, 30, 61, 58,103,244,232,209,
-  4,  0, 30,120,224,  1,183,148,208,174,151, 94, 34,  1,142, 26,165,147, 95,142,100, 69, 79,  2,  0,189,101,  2, 98,  9,202,216,
- 70,102, 95,115,177, 25, 88,235,197, 76,139,192,  7,120,117,168, 39,127,171,139,124, 83, 44, 22,187, 58, 27,133,  0,120,239, 80,
-246, 41,159,200,246,157, 30,230,224, 19, 91, 82, 92,206, 51,233,107,105,155,  8, 63,226,231, 43, 32,172,137,131,162,214,200, 18,
-  9,145, 40,213,108,215,136,166, 29,130, 70,201,194,241,253,159,185,124,239,237,158,  5,208, 82,121, 77,121,236,157, 59,119,190,
-107,200,159,251, 62, 24,123,243, 45, 99,242,214,201,141,248,238,176, 17,148,210, 86,169, 87,155, 12,179,217, 92, 13,  0,113,113,
-113, 45, 90, 16,200, 70,254, 86, 84, 89,255,187,218, 55,132, 86,199,236, 36,  0,244,238,221, 59, 74,173, 82,207, 27, 50,104,240,
- 19,106,149, 42,144, 53,179,166,200,200,200,155, 81, 81, 81,151, 84, 42,213,194,202,202,202,  2, 87,203, 53, 97,220,  4, 22,192,
-139,135, 14, 30, 29, 25, 63,114,228,  4,137, 68, 18, 70, 64,205,132, 16,112, 28,173,214,105, 20, 43, 47,230, 23,151,125,187,110,
-109,139, 86,  4,116, 52,  0,204,  0,254,217, 12,129,216,227,152,245,101,182,190, 26,131, 25,150, 17,245, 60, 23,203, 35,  7,144,
-237, 68,222,118, 88,  6,173,185,130,199, 93, 40,223, 26,  0, 95, 58,145,243, 59, 44, 83, 32,225,130,188,111,172, 17,  3,103, 40,
-178,122,246,174,148,143,231, 70,157,174,113, 34,239, 31, 46,200,179, 69, 27,214, 89,159,141,211,185,182,148, 82, 50,118,236,216,
-  4, 27,225,219,135,224, 61, 89, 10, 88, 38,147,145,204,204,204,  4,102, 90,235, 44,221,219,218,242,238,  5, 20,150,220, 48,196,
-118,232,176,110,230,210,213, 79,219,206, 25,  5,204,  6,189,150,219, 83, 94, 92,172,118,169, 49,173, 89, 67,171, 78,172, 37,139,
-191,255,109,238,206, 21, 15,108, 59,114,180,236,249,240, 64,110, 34, 19, 18, 16, 68, 41, 64,  8, 53, 24, 88,174,156,  3,170,140,
-  6, 46,168,180, 76,103,140,117,163,140, 41, 41, 41,137,246,233,128,148,148,148,196,187,229,249,221,141, 43,  1,222, 43,120,112,
-161,250,182,222,163, 76, 38,227,164, 82,105, 91,177, 88, 92, 22, 23, 23,247,143,214,144,153,158,158,190, 47, 52, 52,244,233,244,
-244,244,117,110, 24,  0,172, 53,114, 10,  0, 24, 62, 98,248, 98,  0,139, 29, 47,116, 28, 35,228, 42, 70,141, 30,250, 11, 44,169,
- 88,  7, 68,161,107,183, 62, 45,190,231,198, 12,  0,189,  7,114,104, 51, 33, 18,131, 87,222, 95, 86, 94,  3, 88,137,190,213, 58,
-122,114,114,114,142,179,121,249,127,166,188,123,  1, 53, 90,237, 51,128,143,  9, 64, 56,  7, 90,170,215, 27, 55,150,151, 87,158,
-161,148,186, 60,109, 42,108,208, 63,233,246,143,198,145,155,190,143,230,181, 31,137,188,236,175, 62,124, 53, 36, 68, 52,143,207,
- 35,180,172, 90,127,177,204,200,174,151,  8, 24,177,132,207,227,153, 88, 78,236, 78,249,108, 57,126,219,192, 51, 79,247,  1,184,
-101,234,159, 93,232,223,147,197,102, 28, 61,115, 87,206,223,105,121,119,218,240,113, 21,204, 52,  5,  8, 33,152, 56,233,143,  1,
-209,187,118,159,172,215, 33,227,199,197,181,214, 20,197,242,214,212, 55, 86, 35, 96,157, 27,151,  7, 91, 13,  0,205,189,170, 31,
-248, 14, 15,148,186,170,236, 29,209,216, 40,118,175,188,191,182, 60, 47,238,126, 84, 87, 87, 83, 88,210, 92, 45,194, 77,223,201,
- 20,  0, 14,109,248,132, 36, 61,243,218, 71, 79,166,229,127,246,226,244,195,189,140, 26, 18, 19, 34,224,135,129, 16,173,159,132,
- 95,217,167, 71, 64,129,187,178,147,146,146, 72, 70, 70,134,199,235,205,223, 46,242,188, 87, 34,  0,119,159,241, 96,137, 13,253,
- 13,186, 87,148,213, 97,246,199, 61,186, 27, 32, 25, 48, 96,192,223, 99,136,172, 23, 94,120,  1, 62, 15,240, 17, 17,112,156, 69,
- 71,215,233,188,221,223, 11, 47,254,182,250,192,251,  8,188,240,226,239,  3,214, 12,168,180, 54,210,247,146,191, 23, 94,252,157,
-193,120, 31,129, 23, 94,120,225,133, 23, 94,120, 13,  0, 47,188,240,194, 11, 47,188,240,194,107,  0,120,225,133, 23, 94,120,225,
-133, 23,127, 69, 52, 24,  3, 48,115,230, 76,143, 71,110, 54,182,182,118, 99,242,126,252,254,127,  9,125,250,117,149,183,109, 31,
-149,168,214,105,228,  7,228,121,137,201,211, 94,200,241, 84,222,138,175,182, 36, 12,232, 55, 76,126,179,180, 20,190, 18, 95, 92,
- 47, 41, 76,124,238,153, 73, 30,203,107,237,251, 61,123, 96,102,194,240, 97,157,229, 18, 95, 30,248, 60,  6, 68, 76, 80,166,122,
-153,120, 42,239,228,205,126,  9, 67,134, 13,145,  7,250,241,  0, 62, 80,115,122, 13,113,181,124,177, 15,198,122,124,191,151,126,
-190,116,139,188,161, 67,135,122, 44,239,232,209,163,183,202,139,245,188,124, 71, 47,221, 90,190, 97,221,186,121, 44,239, 72, 65,
-193, 61, 39,239,193,102,234,119,241,226, 12, 58,111, 94, 74,147,159,255,220, 72,253,198, 62,244,160,231,237,101,207,207,183,182,
-231,  7, 61,111, 47,139,179,170,105,  0, 87,216,224, 92, 88,236,163, 30,203,171,186,244,221, 45,229, 59,245,214, 53,143, 21,233,
-192, 69,157,110, 57,247, 81, 88,169,199,242, 94,173,138,194,159,161,175,254,238,242,164, 82, 41,191,177,157,  5,239,197,251,117,
-219,  0,104, 10,250, 77,210, 88,  0,157, 97, 89, 39,160, 80, 60, 93,118,213,213, 31,216,242,205,226,  4,  2, 14,225, 65, 33,200,
- 59,112, 82,254,245,215,159, 32, 62, 41, 30,172, 70, 43,239,213, 99, 52, 56, 14,242,223, 99,190, 78, 28, 56,176, 31, 46, 95,190,
-  6,101,173,  6,125, 71,204,200,105, 74,222,154,111,229,  9, 20,  4,157,186,118,150, 75, 95, 91,136,234, 79,183,224,155,255,125,
- 14, 64,140, 93,103, 74,192, 48,144,127,242,222, 59, 40, 40,184,136,232,232, 78, 16, 73,248,184, 81, 82,208,228,226, 34, 87,182,
-126, 78,133, 66, 33, 36, 18,  9, 10, 11, 11,209, 46, 34,  0, 97,124, 63,180,235, 24,132, 96, 73, 32,124,137, 25, 12,195,128,114,
-102,104, 69,124, 40,111, 42, 81, 49,216,249, 92,114,101,225, 74,234, 47, 81, 98,196,144, 46,240,243,229, 67, 40, 97,192,231,  1,
-140,144,143,238, 81,255,163, 38,202,195,149, 27,207,184, 92,225, 43,118,235, 19,162,162,162, 16,127, 95,123,185, 78,111,  0, 35,
-146,  0, 38, 32,191, 46, 46, 65,167,213, 96, 88,196,197,156, 63,203,138, 92,179,102, 13, 77, 75, 75,251, 91,205,175,191, 91,225,
-140,232, 91,120,189, 47,128, 33,109, 36, 62,255, 45, 45, 45,237, 33, 16,139,192,249,248,124,  0,203,202,152,117,119,203, 51, 40,
-252,125,119,194,213,115,  7,110,217,107, 32, 41,229,131,191, 74, 27, 37,223,172, 95,127, 65, 36, 20, 74, 56,142, 11,244,245,243,
-243,123,120,226, 68, 31, 88, 86,176,187, 91, 71,118,218,162,205, 92, 75,  5, 73,165,210,128,192,192,192, 57,221,187,119,159, 34,
- 18,137,218,151,148,148,148,148,150,150, 30, 53, 26,141,139,100, 50, 89,161,  7,242,130,130,131,131, 23, 62,240,192,  3,227, 94,
-120,225,133,232, 47,190,248,226,230,217,179,103, 15,235,245,250,  5, 50,153,236,236,223, 38,  2,208,  4,249,243,124, 69,252, 33,
- 79,140,236,178,140,163, 84,127,232,226,205, 79,207,111,146,238, 21, 79,151,157,115,246,221,148,137, 93,233,196,  7, 22,195, 84,
- 87, 11,190,153,193,111,231, 46,226,169,167, 94,254,163, 69, 48,192,175,121,235, 16,214, 49, 74,206,213,169, 96,228,  8,246,239,
-207, 75, 44,209, 53, 85, 81,139, 40,132,129, 32, 62,  1, 56,121,174, 24,103,206,253, 19, 95,125,247,115,253,231, 28,  7, 60, 52,
- 98,  4, 80, 87, 14,192, 31,133,103,207, 67, 16, 22,132,248,225,125,228,181,218,102,108, 22,194,  0,132,193,128,126,113,104,227,
- 43, 68,187, 48, 49,  2, 66, 67, 16, 44,242, 71,176,152,  7,  1,143,  7,147,217,140, 90,150,195,177,170, 19, 78, 31,106,249,153,
-133, 52, 36, 16,  8,240,241, 65,120, 88, 40,  2,  2,124, 64, 25, 51, 88,174, 14,102,152,225,231,231,131,176, 54,237,209, 57,246,
- 23,154,125, 96,100,179, 74,105,117,150,145,  6,250,251,162,115, 76,  4,194,195, 66,161,209,104, 32, 20,137, 33,208, 91, 22,231,
-139,137,238, 36,175, 81,212,226,251,188,162,196,226,146, 27, 80,148, 95,195,162, 23,226,154, 53,  6, 50, 22,103,184,172, 36,146,
-158, 78, 74, 12,142, 12,206,105,142,252,239,132, 17,240,214,210,165, 20,  0, 22,189,241, 70,171,252,198,252, 37, 75, 40,  0,164,
-207,157,235,177,188,159,114,115,159, 50, 26,141,235,  0, 96, 74, 98, 34,227,137,242,149,109,222,108, 89, 35,222,110,218, 52,165,
- 20,132,144,250,255,182,115,182,235,210, 82,154, 38,236,121,243, 82,136,171,164,238, 38,249,247,242, 53,177, 91,252,131,  2,123,
-  0,128, 80, 34,134, 81,167,  7,167,209, 46, 57,124,240,192,123,247, 79,157,218, 19, 64,177, 51, 33,  6,158,144,194,178,120, 10,
-107, 37,  5,206,170,135, 26,213, 69,253,239, 31,135, 11,251,183,187, 85, 71, 87,207, 29,144,119,237,147,144, 24,221,243, 33,247,
-141,226,148, 26,183, 46, 79, 77, 77,197,230,148,236,102,175, 73,204,110,184, 21, 73,175, 32,203,173, 86,232, 57,232, 88, 75,189,
-106,172,255,101,195,130,208,205, 95,208,172,188,101,203,150,229,188,245,202,235, 17,147,166, 76,246,211,235,117,248,228,163, 15,
-153, 21, 43, 86,232,103,207,158, 29,  5,224, 70,107,247,189, 61,123,246, 36,109,219,182, 45, 11,112,111,205,129,188,188, 60, 90,
- 84, 84,132,234,234,106,168,213,106,248,251,251, 35, 52, 52, 20,209,209,209, 24, 49, 98,132, 71,253, 78, 42,149,142,142,139,139,
- 91,255,218,107,175, 93,238,222,189,251,186,129,  3,  7,158,191,121,243,102,251,188,188,188,184,103,158,121,102,167, 84, 42, 93,
- 34,147,201,190,114, 67, 94,226,148, 41, 83, 50, 22, 47, 94, 28,106, 50,153, 32,145, 72,224,235,235,219, 86,163,209, 76,157, 52,
-105,210,195, 82,169,116,182, 76, 38,251,223,189, 72,238,167, 79,159,110,112,220,216,134,110,252, 38, 72,191,  3,128, 46,176, 44,
- 25,107,214, 24,216,235,121,151, 42, 62, 30, 17, 27,241,242,  3,189,218,190,215, 38, 80,210, 78,190, 73,186,  9,192, 69,241,116,
- 89,147,155,212, 24,234,106,208,166,235, 63,176,240,141, 41, 88, 39,251,163, 47, 30, 56,188, 26, 26,173,  1,227,147, 94,198,125,
-241, 79,227,209,212,  7, 32,145,136, 96, 52,179, 80,107,141,242,110,195,187, 54,209, 56,174,  1, 70, 96,202,140, 85,120,238,181,
-231,235,207, 62,116, 95,  2,196, 98, 17,126,216,255, 51,118,229,230, 97,253,218,207,161,215, 25, 32,228,241,225,231, 35,132,166,
-186, 36,177,182,  4,141,238, 62, 70, 41,  5, 40,103,121, 49, 28, 40,165, 48, 24, 69, 22,245, 36,  2,168,209, 12, 51, 15, 48,195,
- 12,179,145,  3,107,110,222,128, 45, 60,154, 78,219,135, 83,  4,248,251, 34,170,125, 12,122,244,237, 10,127, 63,  9,148,117,149,
- 40,175, 44,135, 66,121, 19, 38, 61,129,143,143, 15,194,195,227, 49,117,242, 89,186,101, 91,247,198,195,248, 27,174, 83,179,191,
- 63,116,124, 64, 40, 22, 66,167, 21,194,168, 21, 66, 47, 22,129, 79, 88, 80,240,160,215,213, 65,167, 85,163,125,251,118,114, 33,
-143,143, 26,168,240,241,199,  7, 33, 18, 53,223, 56,150,174, 95,234,180,  1,189,241,228, 27,205,126,174, 80, 40,168,195,241,160,
-144,144,144,  2, 66,136,158, 82,202, 15, 14, 14,246, 41, 44, 44, 12,205,200,200,200, 73, 75, 75,107,231,105, 67, 22, 70, 70, 78,
-175,255, 13, 32, 33, 24,104,181,104,199,154,140, 12, 58,107,214,172, 68, 83, 69,133, 91, 50,127,202,205,149, 14, 29, 58,116,209,
-200,  1,  3, 96, 18,137,176,124,249,114,110,234,  3, 15,140,161,148,102,187,229,202, 17,130,101,239,189, 87,127, 60,231,221,119,
-177,124,193,130,102,143,157,193,209,  8, 88,188, 56,131, 14, 26, 52,  8,217,217, 87,104, 82, 82,231,222,  0,174, 44, 94,156,161,
-115,147,252,243,250,246,238, 29, 96,235, 51,190, 98,  9,202, 42, 43,160, 82,212, 34,110,232, 48,159,159,190, 90,155, 61,225,153,
-127,246,134,101,243,130,230,192,190,180,104,  5,255,241,169, 15,243, 99,163,163, 57,155,103,248,238,242,207, 26, 92,180, 96,206,
-139, 22,195,239,149,217,137, 79, 78, 28,227,118,189,122, 68,254,245, 22,114,136, 27, 23, 39,185, 37,218,151, 79,112,102,193,179,
- 32,  1, 97, 48, 95, 57,  3,195,149,223, 81, 80,163,193,224,221, 21, 46,125,127,181, 76,118,232, 53,233,172, 78, 79,254,235,153,
-160,140, 13,223,113,209,209,209,204,194,197, 75,224,255,222, 66,252,240,195, 15,165,143, 60,242,136, 71,134,104, 19,196, 63,102,
-219,182,109,123,109,199,147, 39, 79, 30,235,202,247,212,106,117,194,222,189,123,229, 38,147,  9, 93,186,116,193,168, 81,163, 16,
- 24, 24,136,218,218, 90,220,184,113,  3, 87,175, 94,197,141, 27, 55,232,216,177, 99, 19,253,253,253, 93,174, 39,169, 84, 58,249,
-129,  7, 30,248,100,217,178,101,155,  6, 14, 28,248,137,205,216,105,215,174, 29,166, 78,157, 74,146,147,147,253,  0,228, 73,165,
-210,188,166,118, 47,117,148, 55,123,246,236,204, 89,179,102, 49, 39, 78,156,  0, 33,  4,161,161,161,245,175,221,187,119, 11,135,
- 15, 31,254,185, 84, 42, 61,226,138,188,187,153,252,109,231, 28,239,131,223,  8,249,135, 14,142,  9,125,114, 64,167,144, 25,132,
- 16,  1,165,212,196, 89, 94, 70,179, 73,175, 19, 50, 92,187,190,109,196,111,132,  5,116,233,186,237,216,213,239,244,155,164,135,
-196,211,101,101,205,168,111,244,234,217, 29, 12,147,131,130,218,106,  0,231,161, 44,189,  4,129, 88,132,237, 59, 63,133,182,202,
-140, 25,255,124, 21, 28,  7, 76,124,120,  4,204,124, 63,167, 55, 87, 80,112, 30, 28,  7,140,239, 79,  0,180,  3,208,  9,122,131,
- 17,201, 15,141,133, 56,136,193,250,141,123,192, 48, 64,230,119,235, 80,122,229,247,196, 71, 18, 98,115, 46,158,106, 92, 22, 71,
-  1,142,227,192,113, 28,204,102, 51, 12,  2, 10, 19, 49,193,104, 52, 66,235,163,  7, 56, 49, 24,106,134, 89, 72, 81,103,212, 67,
-163, 82, 54, 91,182,112, 63,  3,248,124,  9, 66, 67, 67,209,181,107, 87, 68,182, 25,  6,240, 24,152,205, 39,192,208, 90,232, 53,
- 44,204,156,  6,229, 55,106, 16, 30, 90,133,208,160,120, 40,212,243, 19, 26,219,228, 69,162,103, 65, 13, 85,128, 94,  4, 35, 99,
-130, 70,200, 71,157, 68,  0,190, 64,  8,112,190, 32, 60,130, 58,141, 22,138,242,107, 40, 60,145,139,154,226, 98,112, 28,  7,134,
-242, 60,106, 52, 95,173,250,195,112,126,102,230, 51,206,245,164,117, 95,119, 91,211,201,200,200,152,247,218,107,175, 61, 95, 92,
- 92,204, 16, 66,194,101, 50,217,119,176,108,238,228,211,130,182, 44, 88,185,114,229,198,155, 55,111, 34, 51, 51, 19,131,187,119,
-231,  5,247,237,219,226, 14,146, 62,119, 46, 81,  0,  9,148, 82,249,138, 21, 43,228,  0, 32, 77, 77,117,217, 43, 49, 26,141,171,
- 71, 90, 59,147, 80, 40, 68,183,110,221,176,101,255,254, 44,107, 52,192,101, 57,183,107,171,218,121,243, 82, 72,118,246, 21,122,
-226,132, 37, 98,101,247,255,247,251,239,191,191,116,222,188,148, 64, 87, 57,203,215,196,110,233,219,187,119,  0,143, 97,240,194,
-227, 51,160,211, 27,176,252,203, 47,225, 35,145, 64,175,215, 67,175,211,161,255,192,  1,177, 63,111,216, 48,235,193, 25, 51, 62,
-118, 22,117, 92, 48,231, 69, 14,  0,115,169,168,136,113, 36,124,199,238,233,201,189,119,232, 49, 58, 49, 59,227, 77, 58,102,226,
-179,137, 84, 20,235,145, 33, 96,191,107, 31,221, 28,236,244,188, 83, 11, 42,136,143,107,117,102, 28, 24, 19, 14,193,203, 50,168,
-102,196,128, 31, 28,225, 22,249,239,219,183,175, 60,186,109,187, 27,255,122,225,249, 14,111,190, 58, 23, 43,214,174, 62, 55, 52,
- 46,174,243,234,207, 86,251,188, 50,247,117,108, 24, 49, 12, 27, 55,110,124,226,177,199, 30, 91,223, 66,226, 79,216,182,109, 91,
-189,195,100, 13,171,191,  4,203, 86,233, 78,177,119,239, 94,121,120,120, 56,  6, 14, 28,200, 50, 12,195,183, 68,103, 57,  8,  4,
-  2,132,132,132,160, 77,155, 54,184,122,245, 42,246,238,221, 43,159, 58,117,170, 75,125, 69, 42,149,166, 76,152, 48,225,195,101,
-203,150,125,214,189,123,247, 85,132, 16, 14,192,231,  0, 30,  4,112, 16,192,  2, 74,105, 17, 33,228,117,  0, 11, 92,145,183,108,
-246,236,239, 71,166,164,144, 29, 59,118,128,207,231, 67, 46,151,227,204,153, 51,232,218,181, 43,222,127,255,125,244,233,211,  7,
-207, 63,255, 60,255,237,183,223, 94,118, 47,146,127,218,188, 15,254,112,116, 22,191,217,168, 17,208,216, 44,  0,134,207, 99,248,
- 44, 71,213, 58, 19,123,131, 16, 34,242, 19,241,250,  5,  8, 49, 88,210,251,254, 46, 72,124, 14,232, 49, 10,109,125,233,228, 39,
-226, 99,222, 12,  9,240, 25,163,223, 36,109, 70,153,112,224,241,108,132, 20,  0,160, 61,  2,163, 38, 64,103,214, 99,149,108, 45,
-190,217,152,137,177,137,241,  0,  0,173, 22,224,241,155, 22, 37,241,233, 14,  0, 48,155,237,247,166, 41,  7,144,  7,134, 39,194,
-147, 79, 61,139,228,212, 84,252,180,211, 66,100, 62,190,128,166,174,172,217,135,101,  2,175,158,252, 77,172, 25,  6,149,  9,218,
- 90, 45,106, 77, 70,212,104,141, 80, 24,212,168, 85,215, 65, 81,161, 70, 77,173, 30, 53,117, 77, 47,161,126, 70,190,152, 18, 66,
-192,227, 17, 16, 70,  4,179,153,130,213, 22, 67, 83,123,  9,165,229, 74,212, 40,234,160, 84,155, 81,163,208,163,164,164, 28,231,
- 46,156, 70,173,242, 52,134,197, 13,106,114,111,116, 30,  0, 70,173,135,238,242, 13, 84,255,118, 30,213,197,215,160, 82,214, 64,
-165,172,193,181,115, 39,112, 56,227, 43,228,109, 94,143,202,203,151, 97, 54,114,150,133,177,121,119, 38, 13,152,150,150, 70,172,
- 97,127, 99,114,114,114,207,133, 11, 23,190,214,182,109, 91, 77,102,102,102,191,140,140,140, 31,  1, 12,180, 86,186,199, 11, 78,
-  9, 35, 35,231,  0,192,240, 62,125, 48,107,214,172,138, 99, 23, 46,100,159, 58,123, 54,161, 53,202, 31, 12,228, 72, 83, 83,201,
-236,217,179, 19,  1, 64, 16, 17,225,150, 92,147, 53,204,178,101,203, 22, 68, 68, 68,224,205,217,179, 49,103,206, 28,108,149,203,
-239,138, 60,172,141,244,101, 50, 89,253, 11,  0, 14, 28, 56, 16,  5,224, 97, 23,197, 12,  9, 10, 14,238,193, 99, 24,252, 51, 57,
- 25,181, 74, 21, 74,202,110, 64, 32,224,131,207,183,188,  4,  2,  1, 68, 18, 31,116,137,142,254,232,242,241, 19, 46,109,230,115,
-169,168,  8,223,110,249,177,254,101,195,187,203, 63,195,187,203, 63,195, 46,249,  1, 15,238, 88,157,  0,  0,221,251,142,207, 73,
-154,248,108, 98,214,142, 47,229,217, 25,111,222, 21,117,145,255,245,199,168,120, 46, 14,247,103, 85,162, 87, 16, 31,188,128, 16,
-176,138, 10, 12,222, 93,  1, 95,190,133,  3,121, 78,230,100, 93,189,124,185,122,141,236,127,221,191,254,223,215,248,244,203,207,
-175,125,190,236,195,119, 95,123,241,165,135, 23, 46, 90,  8,137,191, 47, 70, 13,143,199,177,163,199,190, 62,148,123,200,227,123,
-118, 36,255, 29, 59,118, 96,200,144, 33, 93,  0,204,112, 53,236,111, 50,153, 16, 23, 23,199,153,205,102,190, 82,169,132,193, 96,
-128,193, 96,192,133, 11, 23, 32,151,203,145,155,155,139,182,109,219,194,100, 50, 33, 47, 47,207,105, 89,165, 82,233,244,212,212,
-212,143,167, 76,153, 18,176,106,213,170,  0, 66,136, 16,192,  1,  0, 74,  0,113,  0,126,  4, 96, 51, 60,247,  1,232,227, 76,222,
-182,215, 94,251,254,225,254,253,201,134,228,100,148,158, 58,133, 15, 63,252,144,251,233,167,159,254,223,245,235,215, 35,228,114,
-249,115,243,230,205,131,201,100, 66,124,124, 60,124,125,125, 71,224, 30,135,189, 49,208,128,236, 29, 79,136,167,203, 42,127,189,
- 92,185,122,221,193,203,175, 94, 40, 85,238,101, 64,249,  0,  5, 38,188,143, 95,  7,125,136,255, 42,146,177,191,247, 18,224,193,
-249,240, 23,112,  3, 31, 26, 16, 61,195,154, 46,184,  5, 59,246,215, 16, 64,133, 73, 79,189, 12,142,  3,128, 26, 88,150, 77, 54,
-161, 83,247, 56,136, 69,124,152, 89,  3,168,209, 66,170,254,254,254,168,174, 81, 52,121, 19, 31,127,244, 26,  1,128,115,191,126,
-  9,134,105,232, 36,112,186,223,161, 55,152,192, 19,136, 65,132,150, 28,154, 90,165,194,136, 17,205,215, 29,159, 51,130,227, 56,
-176, 44, 11,131,193,128, 58,142,133,210,104,130,170, 76,  5,229, 13, 37, 84,229, 53,168, 81,213,162, 92,175,133, 74, 83,139, 90,
- 67,211, 99,157,252,253, 52, 96, 89, 14,  6,163, 25,181, 74, 21, 10, 46, 23,227,232,137,124,252,122, 52, 31,231, 47, 20,162,228,
-122, 21,234, 52, 70,168,235, 12, 40, 43, 85,226,236,239, 87,145,151,119, 10, 37,101,229, 77,202,180, 55,117, 88,165,  6, 37,167,
-207,227,183,221,251,145,181,246, 35,236,223,180, 22, 37,133,151,193, 81, 19, 56, 66,234,137,223,157,228,154,179, 48,191, 51,240,
-249,124,  0,184,  9,224,102,112,112,112,137,191,191,191, 97,222,188,121,199, 96, 25, 48,198,192,178, 86,118,129,167,242, 87,174,
- 92,153,158,156,156, 12,  0,136,  9, 15,143,176,230,196,121,173,217, 57,108,225,127, 91, 36,192,133,240,127, 18,  0, 44, 95,190,
- 28,151,202,202, 48,101,236, 88,216,162,  1,249,249,249,  0, 96, 51,  2, 92,170,138, 57,239,190,139,215,223,123,175, 62,188,111,
-123,111, 59,182,189,119, 37,252,111, 67,118,246, 21,219,214,186, 13,206,219,142,179,179,175,124,235,138,156, 32, 62,255,191,122,
-163,  1, 60, 30, 15, 23,174, 20,226, 74,201,117, 28, 57,125,  6, 70,163,  9, 12,  8,248,124, 62,  8, 33,224,204,102,232, 52, 90,
-228, 31,200,217,239,130, 88,198,158,244, 31,159,250,240, 45, 30,255,145,147,249,176,143, 16,184,  6,187,112,178, 40, 54,199, 54,
-232, 47, 59,227, 77, 42, 96, 47, 37,252,169, 26,184,166, 12,194,142,221, 80, 49,235, 62,228,127,253, 49,248, 97,109,235, 63,170,
-152,117, 31,194,196, 12,  2,248,205, 55,151,238,177,221,219,249,248,248,250,124,250,197, 74,125,226,253,247, 11,135,141, 24,190,
-225,234,229,171,220,133,203,  5,  0, 71, 33, 22,137, 16, 63, 40, 30, 59,119,236,196,182,109,219,220, 50,  2,246,236,217,147, 32,
-149, 74,169,141,252,247,238,221,139,213,171, 87, 27,  1,224,232,209,163, 70,169, 84,250,152, 43,169,133,162,162, 34, 88,183, 38,
-102,138,138,138,144,149,149,133,252,252,124,104, 52, 26, 40, 20, 10, 28, 63,126, 28,197,197,197,184,126,253, 58, 58,117,234,132,
-162,162,162,102,229,205,156, 57,243,201, 71, 31,125,116,105, 66, 66,130,223,177, 99,199,  2,180, 90,237,191, 36, 18, 73, 14,128,
-207,100, 50,217,124,153, 76,166,180, 26,  0, 67,  8, 33, 66, 74,169,  9,205, 76,111,159, 61,123,246,147, 63,204,153,179, 33, 62,
- 34,130,176,115,231, 98,132,209,136, 99, 59,118,208,210,210,210,103,101, 50,217,187, 50,153,172, 18,192,186,115,231,206,177, 44,
-203,194,207,207, 15, 81, 81, 81,126, 38,147,  9,127, 69, 52,150,  2,136,  4,208,101,242,224,142, 47,116,  8,245,157,  1,147, 14,
-232, 62,  6, 39,195, 39,227,129,217, 95, 65, 87, 85, 11, 94,128, 63,228,159, 60,137, 81,189,126, 69, 72,126,214,104,  0, 29,155,
-250,129,174,  1,237,241, 91,254, 86, 59,123, 67,  3, 75,154,208,  4,152, 12,224,115, 60, 48,214,126,191,237,  7, 75,186, 41,126,
- 92,106,211, 13,245, 44,197, 67,  3,237, 13, 60, 98,189, 13,  1, 32, 16,131, 37,102, 88,253, 96, 76,155,241, 18,  0,200,175, 29,
- 94,211,100,207, 50,115, 20, 44,199,128, 97, 89, 48, 70,  3,180, 86,203, 66,199,227,193,151,213, 65,165,163, 32,  2,  2,179,217,
- 12,173, 25,168,208, 24,209, 84, 50,155, 53,114,208, 11,120,224,180, 44, 88, 78,  9,117,157,  9, 60, 34,128,129, 53,193, 72,141,
- 96, 77, 70, 64,200,129, 33,  0, 17,113, 80,234,204, 40,175,212, 66, 99, 96, 27,117,146, 25, 98,174, 55,  0,  8,249,131, 79, 76,
-122, 29,148, 53, 53, 96,  8, 15,124, 62,  5, 40, 31, 60,226,121,226,239,226,181,139,198,238,157,186, 11, 93,  9,251, 55,  8,147,
- 18,  2,137, 68,  2,  0, 58,  0, 70, 62,159,143, 43, 87,174, 96,241,226,197, 15,  3,184, 62,111,222,188,129,129,129,129, 65, 74,
-165,242, 90,109,109,173,219,225,110, 97,100,228, 51,  0,208,166, 77, 27,251, 14, 92,251,217,103,159,101,  3, 72, 26,216,183,239,
-190,214,234,  8,179,103,207, 78,116,197,  0,248, 41, 55, 55, 97,232,208,161, 81, 35,  7, 12,  0,241,247,199,226,197,139, 49,119,
-238, 92,  8,  4,  2,152, 20, 10,  4,  6,  6,226,205,217,179,235,199,  5,184, 50, 56,208, 49,199,239,108, 76, 64, 83, 88,236,198,
-224,206, 19, 39, 78,224,196,137, 19,245,215, 55,149,227, 84,212,212,244,240,243,247, 71,149, 66,  1,249,145, 35,224, 51, 60, 24,
- 76, 38,104,117, 58,112, 28, 87, 63, 88,145, 53, 25, 97, 52, 24, 92,169, 99, 14,  0, 99, 77,  3,112,118, 13, 95,111, 61,143,119,
-151,127, 38,  4,128,216,232,232,138,171,231,126,107, 81,189, 38,165,124, 64, 46,156,204, 76,216,189,237, 75,121,107,204,  2,112,
- 39,236,223, 32, 44,187,249,127, 24,240,212,171, 16,197,244,179,232,138,170, 50, 20,212, 88, 54,145, 19,141,152,128, 98, 51, 11,
-159, 21, 71,154,149,161, 82,169,130, 68, 18, 49,186,198,196,136,175,150, 92,111, 91, 93, 89,141,105,143,207,144,239,218,151,133,
- 79, 62, 88,158,185,109,215,142,228,216,152, 88, 60, 57,245,  9,228,157,204,197,182, 45, 91,232,100, 23, 66,236,246, 94,255,222,
-189,123, 49,102,204, 24,155,177, 40,188,113,227,  6,158,127,254,121,161,237,246,157,201,170,174,174,198,168, 81,163, 96, 54,155,
- 81, 84, 84,132,220,220, 92,244,234,213, 11,129,129,129,232,208,161,  3,  6, 12, 24,  0,134, 97,192, 48, 12,218,182,109, 91, 31,
-165,220, 29,174, 51,  0,  0, 32,  0, 73, 68, 65, 84,106,194, 83,239,213,175, 95,191,143, 71,140, 24,193,203,207,207, 15, 48,155,
-205,229, 91,182,108, 81,233,116,186,197, 50,153,204,222,128,125, 97,220,184,113,197,187,118,237,138, 33,132,148,161,137, 29,109,
-165, 82,233,192,217,137,137,235,134,241,249,164,114,209, 34, 80,147,  9,114, 30,143,203,211,106,159,150,201,100,223,216,219, 29,
-239,188,243, 14,159, 97, 24,212,212,212,224,202,149, 43, 21,125,250,244,137,248,203, 27,  0,250, 77,210,216,200, 64,201,200,113,
-253,163,158, 15,144,  8,134,178,102, 78,193,167,230,  0,  4,181,229,149,213,234,161,171, 82,  2, 66, 62,204,181,106,148, 40,140,
- 64,104, 71, 48,156, 81,220, 92,136,247,178, 74,133,110, 65,  1, 96, 13,192,229,156,111,209, 53,225,193,122,  7,206,100, 52, 65,
-  0,  6,117,122,203, 14,181, 15, 37,196, 65, 18, 26,213,108,129, 31,234, 75,176,235, 12,133, 64, 12,  8, 59, 62,  8, 99,241,161,
-122,199, 65, 32, 20,193,  4, 61,252, 36,150, 29, 73,119,236,218,132,223,142,230, 36,206, 24, 59,168,105,109,196,113, 16, 26,117,
- 48, 65,  8,134, 97,  1,189, 69,177,153, 76, 38, 24,244,  2,240,248,  2, 64, 15, 80,206,146, 34,232, 20, 29,211,164, 44,173,158,
-  3,143, 71, 96, 98, 77,208, 27, 56,168,212,150,118,104,226, 40,140,  6, 14,224,  3, 60,  1, 15,124, 49, 64,116,102,112,132,  5,
-  7, 29,212, 58,107, 64,218,  9,204,  0, 24, 14,160,  4, 96, 24, 14,132,240,192, 81,  2,134,177,142,165,226, 24,112, 12,  3,194,
-185,230, 32,219,121,255, 66, 79, 27,144,143,143, 15,172,222,126,248,149, 43, 87, 42, 22, 47, 94,156,  8,224,145,121,243,230,141,
-237,220,185,179, 70,173, 86, 87,179, 44, 91, 79, 20,238,240,255,202,149, 43,191, 76, 78, 78, 70,116, 88, 88,253,201,232,176,176,
- 32,107, 20, 32,252,207,232, 48, 70,163, 81,110,243,246,169, 90,141,127,255,251,223, 48, 84, 87,215,143,124,235,106, 53, 86,  4,
-  6,  3, 30,126,248,225,138,210,138,138,199,162,124,124, 54,220,137,178,217, 15,234,179,207,255, 55,134, 65,131,  6, 33, 41,169,
-115,253,245,141,173,  3,  0,  0,172,193,136, 90, 99, 13,244,122, 61,130,  2,  3, 33, 22,138, 96, 50,179,160,148,194,108, 54,195,
-104, 52,194,100, 50,129, 99,205,174,214, 47,119,169,168,136,137,141,142,182,121,  4,220,165,162, 34,230,219, 45, 63,138,237, 35,
-  2,177,209,209,181,104,165,193,108, 61,226,146,115, 74, 10,143,183,202, 51,246,116, 12,192,253, 89,149,168,136,206,132,176, 99,
- 55,144,152,126,232,180,246, 20,170,244, 28,124,249,  4,198, 95,126,192,197, 43, 87,157,238,159,167, 99,141, 56,145,119, 20, 31,
- 47,251,  8,247, 37,140,196, 59,255,239, 61,252,188,251,103,108, 88,255, 13, 70,140, 30,153,220, 33,186, 35,248, 62,  2,236, 59,
-180, 15, 27,191,254,  6, 91,127,216,130,157, 59,119,210,255,251,191,255, 35,205,144, 44,117, 36,126, 27,106,107,221,223,224, 78,
-173, 86, 35, 48, 48,240,  8,128, 97,209,209,209, 24, 52,104, 16,120, 60, 75,154,181, 83,167, 78, 16,137, 68, 80, 42,149,136,142,
-142,134,191,191,255, 53,181, 90,221,169, 41, 89, 50,153,236,156, 84, 42, 77,223,186,117,235,248,216,216,216, 30, 91,182,108,169,
- 83, 40, 20, 11,100, 50,217, 70,187,242, 79,190,255,254,251, 95, 91,187,118,237,102,  0, 21,  0, 82,  0,252, 10,160,127, 35,242,
- 78, 73,165,210,244,160,227,199,223,122,148,101,241, 17,192,125, 89, 87,247,132,131,188, 71, 94,122,233,165,143,210,210,210,112,
-245,234, 85,236,220,185, 19, 44,203,238,  7,240,232,189, 66,234,  3,  6, 12,192,233,211,167,235,243,254,205,134,226, 28,142, 59,
- 79, 30,220,113, 97,128, 68, 48,180, 82,165,255,249,240,165,202,197,224,137,128,139,135,240,143,104,138,249, 47, 62,140, 65,189,
-163,241,146,116, 28, 38,118, 49,  2,103,247,130, 10, 36, 44,154, 29,172, 83,139,130,218, 98,240, 69,192, 67, 19, 95,197,198, 79,
- 63,  0, 96,  4,180,  6,152,117,192, 15,242,211,200, 62,102,153, 81,216,190, 99, 12, 24,190,115,242, 26,223,159,192,164,  7,118,
-236,220,131,193, 99, 95,180,120,255, 16,128, 39,  1, 82, 39,164, 96,252,232, 73,  0,128,146,107,133, 96,245,198,230, 45,122, 74,
-193, 18, 11,193, 27,140,150,193,127,  6,189, 14, 90,173, 22,117,117,117, 80,171,148, 80,171,213, 80,169,235,160,175,171,131, 78,
-167,107,186,241,215, 17,232,244,102,232,244,102,104,180, 38,168,235, 12, 80,168, 13,168, 85, 25,161, 84,155, 80, 91,107,249, 95,
- 83,205,162, 70,193,162, 70,201,162,170,198,136,155, 85, 77,151,145,161, 20,102,  0,196, 76, 64, 24, 14,148, 80,128, 82, 80,202,
-131,153,251,163,250, 56,171,246,112, 55, 54,222,115, 68, 79,228,238,202,197,207,251,127,174, 55, 10, 46, 94,187,232,210,119,121,
- 60, 30,248,150,250,138,  2,208,101,201,146, 37,103,  0,172,120,243,205, 55, 95,233,220,185, 51,107,  9, 18, 88, 10,230, 38,249,
- 19, 97,100,228, 54,  0,136,140,140,188,229,195, 89,179,102,177,199, 47, 94,220,212, 90, 99,  1,108,225,127, 87,247,141, 55,217,
- 77,177,248,254,251,239,113,185,220,146,194,249, 41, 39,167,193,103, 23, 47, 94,140,  8, 15, 15, 87,252, 25, 74, 32, 41,169, 51,
- 99, 85,104,142, 10,191,193,231, 78, 13,188,  0,255, 11,156,217, 12, 85,141,  2, 85, 85, 85,168,174, 85, 64,163,213, 66,163,213,
- 66, 93, 87,  7,141, 82,  5,117,109, 45,244, 58, 45,140,122, 61, 56,214,236, 84,231,196, 70, 71,219,116,  6,  7,192,104,159, 14,
-  0,128,111,183,252,136,119,151,127, 22,  4, 32,210,221,251, 62,127, 50, 51,193, 49,239, 95,248,251,238,132, 63, 91, 41,151, 77,
-139, 70,167,181,167, 64, 98,250,193,112, 32, 19,215,254, 57, 16,190,124,130, 67, 99,194,193, 42, 43, 49,120, 79,  5,156,100,  0,
-144,156,156, 76,158,123,121, 38, 46, 95,188,136,188,156, 67,  8,244, 15,196,244,105,211, 17, 20, 26,130,147, 71,143,195, 79, 40,
-134,175,175, 47,218, 70,183,195,166,239, 54,225,205,183,223, 66, 93,173,231,187,212,198,197,197,185,253, 29,127,127,127, 40,149,
-202, 97, 12,195, 24, 59,116,232,128,161, 67,135,162,119,239,222,  8, 11, 11,131, 88, 44, 70,116,116, 52,250,247,239,143,160,160,
- 32,168,213,234, 78,254,254,254,205,202,147,201,100, 75, 15, 28, 56,144,181,126,253,122,129, 66,161,120,199,129,172, 83, 70,141,
- 26,245,241,218,181,107,191,138,140,140, 92, 68,  8,241,  3,240, 38,128,119,155,145,247,246, 66,181,122,233,179, 44,107,254, 82,
-167,123,204, 65, 94,242,163,210,255,108,125,241,149, 57,188,139, 23, 47,226,200,145, 35, 88,187,118,109, 29,128,249,247,154,103,
-239, 24,209,107, 42,194,231,168,  4, 68, 60,134,248, 23, 87,107, 54,108,202,187, 58,255,244,181,154,163, 58, 51,185,140,170,171,
- 16,111,125,  1,139,226,213, 56,190, 96, 40, 62, 73,172,131,239, 15,179,128,154, 18,212, 81,241, 89,171,229,213,  4,254, 24,213,
-127, 38,255, 71,252,231, 63,235,209, 53,160, 47,126, 63,124,  6,123,229,231,241,255,217,251,242,248,166,170,244,253,231,220, 36,
-109,218,  2, 93,216,119, 40, 82,118, 89,138,208,130,208,  4, 82,168, 32, 42,218,  2,194,136,157,130, 77,113, 28, 65,196, 65, 69,
-197, 13,149,249, 89,192,113,161, 41, 35, 95,112,  6,  6,104,113, 97,147, 37,144, 84,150,150, 90,112, 97, 17, 40, 20, 40,148,165,
-208,164, 91,246,228,158,223, 31,201, 13,105, 73,147,155,180,  8,104,158,207, 39,144,187,244,205,185,247,158,123,158,247,125,207,
-123,222, 87, 26,223, 15,137,163,236, 29,141, 10,132, 48,219,248, 95,100,210,224,222,120,255,255,125,132,157,199,170,209,172, 91,
- 95, 60,250,232, 36,236,218,247, 13,182,239,250,159,253,226,108, 22,  4,139, 60,143,115,148,181,193,198,218,173, 25, 56,172, 25,
-179,217, 12,163,209,  8,131,193,  0,157,222,  0,131, 94,  7,131, 94,  7,189,201,  8,179,201,216,176,251,203,208, 28, 85,181, 54,
- 84, 27, 88, 84, 27, 88,251,247, 26, 22,181, 58, 43,106,245, 86,104, 53, 54, 84,104, 44,168,208, 90, 80, 81, 97,193,205,155,102,
- 92,191,105,241,168,  0,220,114,255,187,180,153,115,223,  8, 40,  4,132,128,214,139,250,167,196, 59,217,190, 50,243, 21,244,137,
-239,227,220, 86,174, 81, 58, 61,  2,  7,119, 28,196,233,139,167,121, 37,123, 98, 89,251,111,229,230,230, 30,160,148,246, 79, 78,
- 78,158,217,189,123,247,214,  0, 24,150,101,131, 45, 22, 75,164,213,106,109,225, 70,  1, 96, 61,184,254, 23,127,254,249,231, 19,
-146,147,147,209,189,117,107, 94, 83, 87,141,  1, 23,252, 55,180,119,111,175,  1,108, 61,219,181,147,102,102,102,226,196,197,139,
-213, 95,239,222,141, 83,167, 78, 57,173,254, 94,189,122,193,113,204,252,245,238,221,184,120,241, 34, 78, 23, 21, 25,188,201,188,
- 19, 49,  0,  0,104, 66, 66,194,243,174,164,207,253, 31, 27, 27,203,203,157, 11,  0,197,167,206, 21, 89,173, 86,152,205, 38,104,
-174,151,227,198,213,107,184,121,237, 58,110, 94,187, 14, 77,249, 13, 84, 86, 84,192,164,211,217,227,103, 42, 43, 49, 88, 38,243,
-118, 15,173,139, 51, 63, 21, 46,206,252, 84,  8,160, 26,  0, 59,124,200,131,183,157,228, 18, 23,192, 27, 39,143,230, 74,202,206,
- 21,169,  6, 14,187,213,134,243,103, 15, 73, 42,111,148,168, 26,211, 63,200, 20,109, 29,203,223, 31,156,209,232, 80, 58,251, 33,
-208,243,191,162,205,170,163,  8, 91,121,  4, 87,167,118, 67,236,206,114, 16, 81, 48,132,  4, 16, 50,222, 21,208,191,189,240,  2,
-121,243,163,247,241,226,130,249,176,176, 54,156,186, 80,140, 25, 79, 79, 71,144, 88,140,239,190,221,  2, 88,108, 48, 25, 77,216,
- 95,116,  8,  6, 67, 45,210, 83, 83,243,138,138,138,168,  7, 66, 36,147, 39, 79,150,142, 27, 55, 14,132, 16,236,217,179,231, 54,
-151,254, 43,175,240,143, 19,106,217,178, 37,174, 92,185,  2,  0,194,172,172, 44,220,184,113,  3,  3,  6, 12, 64, 68, 68,  4, 24,
-134, 65, 97, 97, 33, 24,134,  1, 33,  4, 87,174, 92, 65,203,150, 45,189,202, 84, 40, 20, 31,152,205,230,209, 10,133, 98,163, 11,
- 89, 63, 61,106,212,168,204,217,179,103, 71,102,101,101,137,  9, 33, 12,128,111,  0, 44, 80, 40, 20,215,189,200,251,199, 97,139,
-101,104,125,121,211, 22,126,189,233,169,233,127, 35, 19,230,100, 65,125,248, 36, 50, 51, 51,217,234,234,234, 52,133, 66,113,225,
-126,116,239, 15, 26, 52,200,249,225, 53,  5,  0,224,220,255, 14,157,127, 65,163, 51, 29,129, 61,112,171,125,126,241,141,236,209,
-189,219, 46, 18,158, 63, 28,133,255,123,  6,  8, 14,  3, 76, 58,128, 82, 88,  4,226,235,251, 79, 92,253, 18, 64,131,217,151,214,
-175,251, 66, 58,125,198, 76, 21,  0,232, 88, 11,206, 86,150,  2,176,225,129, 22,221, 33,149, 62,136,182,173,218,161,162,170,218,
-238, 43, 48, 91,113,181, 82,135, 62, 30, 46,170, 83,151,120, 92, 46,205,119,188,153, 66, 36, 13,180,199,  0,236, 60,102,193,174,
-109,185,184,126,243, 10, 90, 70,216, 87, 18, 68,  4,137,240,224, 80,207,235, 55,205, 16, 34,136,181,194,  6,  1, 88, 66,192,216,
- 88,192, 98,133, 77, 36,  4,  8,  3,238,157,100, 41,236,185,  2, 60,224,137,105,175,146,111,255,179,128,134,  6, 81,  8, 69, 46,
- 30,  6, 11, 96,165,128,209, 12,216, 76, 54, 16, 66, 64,130,  8,172, 54, 64,103,  2,102,165,254,147,184, 75,229,104,115,209,208,
- 88,134,  5,113,184,255,237, 74,  1,129,141,101,192,  8, 28, 43,  5,  0, 80,  1,  5, 40, 63, 47,128, 43,249,187,219, 62,184,227,
- 96,119,175, 83, 18, 54, 27, 76, 38, 19,146,147,147,251,229,230,230, 46,  7, 48, 40, 55, 55,119,103,110,110,238,254,228,228,228,
- 23,122,244,232, 97, 33,132,180,252,228,147, 79,118,191,250,234,171, 51, 52, 26, 77,158,  7,229,211,217, 39, 23, 44, 88,176,120,
-193,130,  5,216,185,115, 39,116,215,111,127,151,187,183,110,141,243,231,207,  3,128,138, 79, 98,160,134,146,254,136,218,180,145,
-124,254,249,231, 42, 74, 41,134,246,234, 37, 29, 50, 96,128,218,155,172,  1,125,250,168,  9,195,140, 63,245,227,143,221,  0,  4,
-  3,248,151, 37, 56, 24, 34,147,  9, 61,219,183,199,252,249,243,113,240,224,193,165, 49, 49, 49,121,253, 59,118,244, 26,163,224,
- 46, 15,128,191, 49,  0,174,224,242,  0,196,197,165,252, 88, 80, 80,126, 80, 46,151,  7, 57,166,  9, 70,  0,200,231,155,  4,168,
-219,192,190,175, 27,174, 94, 27,199, 90,109,189,117, 85, 85,168,186,121,  3,132, 48,160,148,133,209,104,  4,165, 20,148, 82,156,
- 63,249, 27, 44,102, 19, 30, 24, 26,235,237, 30,186,142, 57, 17,  0,152,  9,210,  4,118,130, 52,161, 78,208,159, 99,138,128, 55,
- 78,253,252,181,228,202,185, 34, 21,  0,116,235,218, 21,223,213,243,  2,180,238, 50, 68,122, 55,  7,227,161,223,151,163,232, 17,
- 96, 80,172, 12,229,127, 27,129,118, 95, 28,194, 25,141, 14,145, 65,  4, 21, 26, 45,132,132,120,245,  0,112,152, 57,115,102,157,
- 51,183,110,221, 74, 39, 76,124,  4,219,182,108,195,166, 77,155,240,246,162, 55,177, 91,189, 23,  2,161,  0, 29, 59,117, 76,168,
-170,242,188,116, 57, 41, 41, 73,157,148,148, 68,118,238,220, 41, 25, 55,110, 92,157, 88,128, 61,123,246,224,236,217,179, 70,133,
- 66,209,158, 79,219,186,117,235,134,146,146, 18,244,237,219,215, 58,111,222,188,160, 13, 27, 54, 32, 60, 60, 28,167, 78,157,186,
-205,243, 90, 82, 82,130,110, 60,159,179, 66,113, 43,241,156, 92, 46,127,230,161,135, 30,122,247,233,167,159, 14, 47, 42, 42,106,
-110, 52, 26,255, 26, 18, 18,242,168,193, 96,248, 88,161, 80,124,199, 83,222,207,174,242, 30,253,251,134,181, 15,143,157, 76,254,
-169,  4, 72,135,199,240,193,138,215,169,166,248, 84,154, 66,161,200,193, 31, 24,117, 20,  0,241,211,138, 19,154,255,201,207,136,
-159, 86,112, 83,154,165,199,255, 39,255,190,198,104,213, 13,127,160,213,132,168, 80,193, 67,  2,147, 49,204, 74,153,154,138, 26,
-115, 65,254,217,107,187,202, 52,250, 60,241,211,138,171, 88,185,210,237, 15,212,234, 90,171, 51,254, 54, 71, 10, 64,197, 10,184,
-105, 62,  1,206, 86, 95,197, 91, 47,164, 65,175, 55,161,218, 96,143,  1, 48, 51,193, 24,147,228, 57,205,238,155,139, 82,201,206,
-237, 67,237, 47,183,141,179,156,173, 72, 26, 64, 48,237,249,101,  8, 13, 13, 70,139, 16,177, 20,128,170,248,248, 81,105,124,127,
-207,  9, 65,132,212, 10, 51,177, 43,  1, 32,  4, 54, 74,237,138,128,213,177,220,143, 48, 16,178, 44,172,220,178,  3, 47, 74, 64,
-165, 33,  2,  6, 83,  5,130,132,140, 51,205,153,149,  5, 44, 22, 10,139,149,162,214,192,130,  8,  8,108, 32,176,176,183, 92,247,
-110,  9,150,101,192, 16, 27,136,141,128, 50,212,233,254, 39, 13, 24,207,156,164, 23, 95,146,146,149, 43, 79,121,180,240,126,203,
-255,173,177,125,199, 76, 41,133,193, 96,192,128,  1,  3,174, 70, 71, 71, 79,190,112,225, 66,207, 77,155, 54, 21,  2,120, 60, 55,
- 55,247,113,215,147, 63,250,232, 35,245,171,175,190, 42,213,104, 52,222,  8,194,121, 67, 50, 50, 50, 26, 60,233,169,103,159,  5,
-224, 91, 98, 32, 46,235, 94,125, 12,235,211, 71, 58,152,  7,249,115,232,223,171,215,110, 87, 79, 70,102,102,230,103,147, 38, 77,
-178,158, 62,125, 90,120,241,226, 69,116,107,217, 50,191, 99,104, 40,175,  0,197, 59,145,  7,160, 30,185, 95,207,203,203,115,141,
-241, 56,230, 80,  4,248,102, 12,212,133,180,111,247,212,169,189,251,242, 35,194,194, 90, 84,107, 43, 97,181, 90, 65, 29,239,129,
-246,122, 57,170,181, 90, 80, 74,249, 88,255,246,151,245, 86,204,  9,227, 88, 14,200, 12, 31,242, 32, 38, 72, 19,156,137,129,138,
- 47, 92,224,175,  4,232,127,145, 92, 46, 46,116, 90,249,223,229,124,169,  2,128,214,209, 35,165,  3, 99, 39,169,239,222,240, 74,
-111, 87,  2,176, 10,131, 50,222,194, 53,150,197,192, 53,133, 40, 76,106,139,126,219,174, 67, 72,128,230, 34,255,106,179, 77,154,
- 52,137,236, 83,239,163, 99, 18,199, 98,203,230,111,241,222,210,143,176,176,170, 10,148,101,177,113,227,102,148,149,149, 61, 10,
- 96,155, 87,143,170, 27, 69,  0,  0, 38, 79,158,252, 51,128, 26, 62,109,137,143,143, 39, 87,174, 92,161, 71,143, 30, 13, 26, 50,
-100,  8,198,142, 29, 11,149, 74,133, 46, 93,186,192,100, 50, 33, 33, 33,  1,148, 82,246,232,209,163,140, 72, 36,242, 57, 35,160,
- 92, 46,239, 27, 30, 30,190,124,234,212,169,162,147, 39, 79,182, 48,153, 76, 13,  5,  6,242,149, 55,184,227,160, 41,107,  7,141,
-158, 74,190,204,  3,170, 13,128,249,252, 78, 86, 83,172,170, 31, 24,120,223,128,203,  3,224,106,249,187,219,231,214,149,234, 66,
-254,220,246,111, 23,255, 39, 47,189,120,179, 54, 31, 64,123,199,203,107,  2, 80,  6,160, 68,252,180,194,171,139,115,200,192,199,
-212, 39,126, 45,149,218,104, 51,149,235,203, 81,171,171,182,175,251,103, 66,241,143,143,249,167,152, 76,154,216,159,188, 63,231,
- 81,  9, 24,189,202,149, 11,155, 53, 11,135,205,162,  5,168, 14, 23, 15,101,147,153,211,146,188,202,178, 64,  0, 80,106, 39,106,
-  8, 16, 68, 29,138,128,131,252,237, 57,  0,  1,216,248,205, 77,164,166,191, 65,178, 63,125,155, 90, 45, 26,  8, 29, 11,123, 41,
-165,176, 89, 41,140, 22,160,186,198, 10, 11, 40,172,148,129, 80, 68,176,228,221,207, 26,188,238,217,179,237, 65, 90,107,215,156,
-165,196, 98,183,254, 41,  0, 74,  9, 64, 29, 22,  3, 21,128,  8, 88,176,172, 16, 47, 47, 24,199,235, 30,206,126,111,182,244,194,
-185, 11,158,  8, 88,  4,251, 82, 13, 79,236,196,  2,128,201,100,130, 86,171,213,134,135,135, 35, 54, 54,246,151, 97,195,134,  5,
-223,184,113,  3,231,206,157,179, 47, 15, 99, 89,201,230,205,155, 85, 14, 37, 64,197, 67,  9,176,164, 36, 37,165,116, 27, 48,192,
-246, 80,239,222, 58, 71, 31, 53,161,238,138, 72,164, 36,217,159,109, 55, 30, 73,129, 94,121,229, 21, 41,  0, 12,237,213,235,182,
- 99,177,  3,  7, 54,138, 32,  6,244,233,243,  5,195, 48,182, 83, 63,254, 24,214,182,109,219,155,253, 71,140, 88,123, 55, 95,126,
- 55,164,174,139,141,141,117,141,182,118,174, 99,245, 65,  9, 56, 57,120,236,152,225, 91,254,253,229,230,232,238,221,250,154, 76,
- 70,216, 44, 86,176, 44,139,230,145,145,168,210,104, 48, 88, 38,147,242,176,254,  1,160,242,157,151,255,222,  6,128,185,248,194,
-133, 32,110,254,255,240,209, 95, 49, 65,154,192, 46,206,252,212, 91,114, 32, 39, 98,218,107,233,169,211,167,164,251,118,125, 87,
-199,197, 63,102,252,227, 82,166, 69,124,163,158,107, 67,  1,126,238,247,243,231,176,161,223,151,  3,223,191,224,220,126,224,187,
- 91, 75,128,171, 44, 54,191,219, 59, 70, 50,134,124, 85,250,213, 35,227, 38, 38,237,120,238,153, 89,  7, 30, 28, 56,224,225, 45,
-223,109, 69,254,207, 71,144,158,158,190,125,101,  3,  6,154, 23, 69, 96,214, 55,223,124,243,239,111,190,249, 38, 46, 41, 41,137,
-119,227,198,141, 27, 55,102,247,238,221,251,182,109,219,134,232,232,104, 36, 38, 38, 34, 60, 60,252, 76, 85, 85, 85,204,137, 19,
- 39, 80, 82, 82,194,136, 68, 34,140, 27, 55, 78,230,235,117, 58,  2,  3,151,110,221,186,181,193,192, 64, 31,229,253, 36,151,203,
- 63,252, 54,247,177,215, 13, 29,103,192,240,227, 27,236,149,253, 75,158,241, 87,222,189,168,  8,240,246,  0, 52,  4,241,211, 10,
- 29,128, 95, 29, 31,191,240,204, 51, 47,168, 51, 50, 94,149,102, 41,222, 83,117,236,218, 19,128,  9,162, 96, 49, 46, 95,173, 70,
-194,164,153,196,119,121,143,169, 31,232, 29,131, 53,171,191,  6,216,139,  0,132,176, 26, 13,232,216, 62, 92,218,165,133,149,255,
-203,111, 99, 33,100, 88, 88,136, 16, 34,106,189,165,  8,192, 10, 80, 27,248,  6,134,185, 34,253,239,111, 19,  0, 88,252,218, 28,
- 42, 18,218,173,125, 43,107,119,153, 87,214, 80,216,172,128, 64,200,226,139,207,249, 41, 61,207,166,218, 83, 35,175,254,242, 52,
-  5,151, 19,158,  1, 88, 98,119,247,207, 95,240,168, 79,141,172,170,173, 82, 71,182,141,108,108,255, 98,  0,251, 42, 10,131,193,
-  0,155,205,134,234,234,106,  8,  4,  2,216,108, 54,180,107,215, 14, 22,139,  5, 10,133, 66, 85,207, 19,160,242, 86, 51, 96,240,
-128,  1,185,  0,208, 20, 25,255,  0, 32,138, 16, 53,  0, 68, 13, 28,120, 71,204,188,126,189,122,101, 53, 70,192,203,139, 23,215,
- 89, 37,177,224,237,183,235,120,  6,124,153,251,119, 67,230, 58, 79,171,  1,124, 72,  7,124,234,177,217,179,250,  3, 16,156,202,
-203,179, 24,245,  6,176, 54, 27,250,196,198, 74,219,199,244, 69,183,129,125,249,189,115,148, 76,221,245,253,118,231,230,136,190,
-209,206,239,187,190,223,126,219,182,167,208,248, 51, 87, 35,  9,211, 34, 30, 99,199, 19,233,201, 83,231,112,245,226, 49, 21,  0,
-236,219,245,157,170,109,151,115,210,  1,195,255,226,179, 18, 48,101,202, 20,248,154,222,215, 70, 60,231,221, 46,157,220, 14,223,
- 95, 49,222,241,  1,127,230,204,153,223,  3, 96,138,138,138,216,189,  5,121,104,217,170, 37, 26, 83,159, 35, 41, 41,233,203,164,
-164,164,175,224, 61,189,115, 29, 52,111,222, 92,245,212, 83, 79,145,252,252,124,122,238,220, 57, 20, 22, 22,162,166,166, 38,166,
- 41,106,  1, 56, 72,251,255,201,229,114, 81,126,126,254,  0,179,217,252,134,235, 92,190,159,242, 22,201,229,127, 17,133,247,248,
-106,126,213,185,221, 51, 26, 43,239,110,131, 91,  5,224,110,191, 95, 10,128,175, 83,  9, 13,186,170,158,124, 86,189,125,215, 89,
-242,196,196, 80,218,166, 99,103,104,106,172, 72,152,248,140,223, 29, 33,254,161,222, 36,254,161,215, 33,151,191, 69,129,235,136,
-108, 46, 68,151, 40,214,167,151,126,232, 95, 23,220,177,  2, 54,239,124,184,146,  0,192,220,121, 47, 80,179,193,  2, 22,246,101,
-115,203, 63, 95,238,215,111,166,205,178,215, 12, 88,253,239, 83,148,165,  2,188,246,234,227,119,179,186, 89,144,171, 27,219,100,
- 50,193,108, 54, 59,137,140, 35,176, 64,149, 64, 47, 46, 72, 31,210, 15,251,  9,243,194,133, 41,193, 14, 15,138,173,145,178, 40,
-  0,107,239,132,132, 58,109,238,214,190, 29,111,  1,193,172, 73,253,236, 36,159, 13, 63,212, 47,  5, 92,199,254,110, 17,167,238,
- 55, 44, 14,253,134,161,209,247,210, 91, 97,159,250, 58,176,149,  4,195,192,120, 94,145,122,174,198,138,152,230,124,134,200, 38,
-233, 10,116,232,208,161, 77,217,167,252,206,128, 19, 31, 31, 79,188, 37, 98,107,  4,105,127, 32,151,203,191,117,141, 13,104,164,
-188,127,200,229,242,245,174,177,  1,247,187, 18,192,  7,100,208,160, 65, 20,  1,  4,208, 72,244,236,217, 19,197,197,197,129, 27,
- 17, 64,  0,  1,  4,112,159,128,  9,220,130,  0,154,  2,  1,242, 15, 32,128,  0,  2,  8, 40,  0,  1,  4, 16, 64,  0,  1,  4, 16,
- 64, 64,  1,  8, 32,128,  0,  2,  8, 32,128,  0,  2, 10, 64,  0,  1,  4, 16, 64,  0,  1,  4,112,215, 81, 39, 52,117,206,156, 57,
-126, 71,143,186,203,100, 23,144, 23,144, 23,144,119,111,200,147,203,229, 84,161,104,120,217,105,224,254,  5,228,  5,228,253,177,
-228,249,172,  0,112,  3,133,175, 66, 60, 13, 44, 77, 45, 47,128,123, 19,222,  8, 38,128,123,243, 57,248,120,126, 24,128,135, 14,
- 28, 56,176, 68, 32, 16,140,  8, 14, 14,134, 94,175, 63,244,240,195, 15, 47,  2, 80,  8, 64,127, 47,220,  3,165, 82, 41,201,201,
-201, 81,253, 17,199,149,227,199,143,163,176,176,208,235,121,  5,  5,  5,244,248,241,227,200,206,206, 38,253,251,247,111,180, 60,
- 14,195,134, 13,131, 39,121,  1,220,199, 30,  0, 14,190,164, 39,229,147, 40,199,157,188,134,202,195,250,147,120,231,143, 62,160,
-243, 61,119,252,248,241,210, 39,159,124, 82,205, 87,102,199,142,183,151, 94, 46, 43, 43,171,179,157,146,146,  2,153, 76, 70,248,
-200,187,147, 74,192,248,241,227, 41,  0,236,218,181,139,220, 11,242,116, 58,221,216,205,155, 55, 43,207,156, 57,  3,  0,136,142,
-142,126, 44, 45, 45,109,171,191,207,215,181,223, 83, 74,157,239,  7,183,159,123, 87,  8, 33,200,202,202, 34,158,148,103,190,207,
-193,199,231,213,247,248,241,227,155,171,171,171,123,119,237,218, 21, 55,111,222,132,209,104,  4,128, 17,155, 55,111, 86,133,133,
-133,157, 74, 74, 74,122,  2,128,199, 82,146, 35, 71,142,244,201, 32, 56,120,240,160, 20, 60, 83, 61,115,200,201,201, 81,165,164,
-164, 72,101, 50,153,218,215,231,145,158,158,238, 83,251,166, 76,153,194,251,253,224,208,181,171,189,  2,110, 77, 77, 13, 76, 38,
- 19,215,159,120,189,111,133,133,133,248,207,127, 60,103,168, 53,153, 76,116,196,136, 17,232,211,167, 15,214,173, 91, 87,110, 50,
-153,186, 52,180, 46,188,176,176, 16, 51,102,204,224,117,173,215,175, 95,199,146, 37, 75,160, 80, 40,  2,  3,243,125,128,250,201,
-128,238,100, 34,160,128, 21,123,  7,241, 93,150,247,148,198, 79,204,217,233,147, 76,149,234,150,129,116,230,204, 25,132,133,133,
- 57,  7, 33,151,251,193,199,218,162,245,183,235, 15, 96, 74,165,146,230,228,228,248,109,129,173, 95,191, 94, 50,126,252,248,  6,
-229, 55,  6, 25, 25, 25,116,244,232,209,210,233,211,167,251, 68, 22,155, 55,111, 86,182,105,211,  6, 51,103,206,132, 86,171,101,
- 51, 51, 51,183,104,181,218,105,145,145,145, 62,101, 17, 35,132,224,251,239,191,119,110, 39, 37, 37, 97,231,206,157, 30,183,189,
-161,190, 18, 32,151,203,105,108,108, 44,178,179,179, 41,151,152,201, 87,242,175,170,170,202,239,209,163, 71, 11,  0, 16,139,197,
-  8,  9,  9, 65,121,121, 57, 42, 43, 43, 17, 30, 30,142,242,242,242,222, 59,119,238, 44, 76, 74, 74,234,  5,224,154, 39, 97,253,
-251,247, 71, 74, 74, 10,162,163,111,101,253, 91,186,116,105,157,115, 22, 46, 92,200, 89,178,170,233,211,167,251,252,188,253, 33,
-127, 14, 43, 86,172,104,232,144,179, 86,129,191,  8, 11, 11,195,201,147, 39, 33, 18,137, 96, 54,155,177,115,231, 78, 20, 23, 23,
-227,181,215,124,171, 56,123,189, 94,145,172,199, 30,123, 76,  0, 64,246,195, 15, 63,236, 76, 72, 72,184,254,196, 19, 79,180, 85,
- 42,149, 16,  8,  4,173, 35, 34, 34,  4,190,200,106,  8, 23, 46, 92,  8,144,196,125, 74,254,220, 62,175,181,  0,238, 87,172, 94,
-189, 90,146,150,150,166,110,172,156,251,197,149,221,113,232,251,183,172,246,162, 55,252,146,161,213,106,161,215,235,157, 22, 72,
-118,118,182,171, 37,196,215,218,186,109, 91, 38,147, 97,207,158, 61,148, 16,114,219,113,127,240,195, 15, 63,168, 94,121,229, 21,
-228,230,230, 34, 57, 57,185, 73,238,223,174, 93,187,200,222,189,123, 41,165, 20,121,121,121,170,188,188, 60,159, 20,148, 51,103,
-206, 96,230,204,153, 44,  0, 38, 40, 40,136,137,137,137, 65,102,102,230,  6,  0, 27,162,163,163, 39,166,165,165,237,224, 35,231,
- 78, 20,  3,226,148,128,236,236,108,202,165,  1,230,254,151,203,229, 52, 37, 37,197,151,107, 13,211,106,181,155,197, 98,113, 11,
-  0,248,219,223,254,  6,163,209,136,172,172, 44,132,132,132, 56,203,102, 11,  4,  2, 84, 85, 85,181,  0,144,  9,224, 47,158,  4,
-114,228, 94, 82, 82,114,219,190,166, 64, 74, 74,138,212,113,157, 82,127, 21,129,151, 94,122,201,249,125,249,242,229,220, 87,166,
-222,126,222, 10,  1,231, 53,121,227,141, 55, 16, 22, 22,134,220,220, 92, 36, 36, 36,248, 69,254,245, 49,106,212, 40,192,158,165,
-241,175,207, 60,243, 12,122,246,236,217,118,231,206,157,168,168,168,224, 74,238,154,189,188, 11, 77,221,253, 36, 19, 39, 78, 84,
-109,223,190,221,157,247, 70, 50,102,204, 24, 21, 33,  4,123,247,238, 13,184,123,239, 48,249,167, 47,252,  8,  0,144,189,244, 85,
-183, 74,192,239,162,  0,100,103,103,187,123,208,180,161,253,254,252,198,225,195,135, 85,  0,164,141, 85,  2,102,204,152,241,167,
-153,207,214,235,245,183, 89,253,254, 16, 13, 71, 44,201,201,201, 72, 76, 76, 36,  0,144,155,155,219, 36,109, 92,191,126,189,196,
- 97,209,145,242,242,114, 73, 78, 78,142,170,188,188, 92,226,171,197,238, 14, 99,199,142, 37, 99,199,142,197,250,245,235, 37,121,
-121,121,170,245,235,215,251, 36, 87,171,213, 90, 35, 35, 35,131, 54,111,222, 12,135, 55,192,168,213,106,153,204,204,204,237, 90,
-173,118, 92,100,100,228,158,187,249,124, 57,210,119,237,203,114,185,156,114, 74, 26, 79, 60, 84, 92, 92,220,123,192,128,  1,152,
- 53,107, 22,170,170,170, 80, 81, 81,  1,145, 72,  4,161, 80,  8,161, 80,  8,145, 72,132,144,144, 16,104, 52, 26, 40,149,202,233,
- 50,153,236,239,222,132,150,148,148,212, 81, 14, 57,  5,128,243,  4,196,198,198,250,210, 70,119,214,191, 52, 39, 39, 71,213, 24,
-207,147, 11,172, 13,140,149,188,189,  1, 23, 46, 92, 64, 94, 94, 30, 38, 78,156,136,174, 93,187,162, 85,171, 86,200,203,203,195,
-107,175,189,230,244,190,  9,  4,  2,159, 27, 54,106,212, 40, 44, 90,180,  8, 75,150, 44,105,159,150,150, 54,245,233,167,159, 70,
- 98, 98, 34,  0, 64, 32, 16,204,108,217,178,229, 86,133, 66, 97,241, 84, 12,104,253,250,245,188,188,  0,101,101,101,152, 54,109,
- 26, 63,  3,165, 99, 71,164,167,167,171, 74, 74, 74,160, 84, 42,185,251, 47, 73, 79, 79, 87,113, 10,116,  0,119, 22, 28,249,115,
-223, 57, 37,224,119,247,  0, 52, 52,143,237, 79,128,224,157, 86,  2, 38, 76,152,208,104, 79,128, 47,215,229,203,111, 60,245,194,
- 46,108,254,108,124,147,220, 43,238,  5,148,203,229,110,231,244, 14, 29, 58,212,104,197,160, 41,158,239, 15, 63,252,160,226,172,
-254,233,211,167,171,127,248,225,  7,180,105,211, 70,133, 38, 74,156,206,201,205,203,203, 67, 94, 94,158, 87,119,179, 78,167,155,
-176,121,243,230,237,  0,144,153,153, 25, 20, 29, 29,141,180,180, 52,238,176,248,215, 95,237,245,178, 50, 51, 51,119, 71, 71, 71,
- 63,145,150,150,230,181, 62,121, 82, 82, 82,157,152,152, 71, 30,121,164,142,103,128,143,219,223,141,210, 77,221,245, 47,238,185,
-184, 78,  7,120,194,206,157, 59,151,196,196,196,  0,  0,206,158, 61, 11, 74, 41, 78,159, 62,237,172,251, 32, 20, 10, 65,  8,129,
-205,102,131, 94,175,199, 55,223,124,  3,153, 76,230,181,234,146, 43,249,167,164,164,184, 85, 94, 92,167,  8,252, 81,  2,100, 50,
- 25,145,203,229,180,177,222,128,166, 24, 39, 45, 22, 11,134, 12, 25,  2,181, 90,141,161, 67,135, 66,167,211, 57,167,118,212,106,
- 53,198,143, 31, 15, 43, 87,130,220, 55,203, 31, 75,150, 44,233,144,150,150,118,249,203, 47,191,116, 30,235,208,161,  3,150, 45,
- 91,246, 31,190,132,221,196, 80, 31, 57,114,  4,177,177,177,136,142,142,198,144, 33, 67,232,209,163, 71,165, 28,249,151,148,148,
- 64,173, 86,243,137, 81, 25,  6,224,  5,  0,127, 85, 40, 20, 54, 15,231, 77,  4,208, 17,192, 55, 10,133,226, 70,128,250,127,199,
-142,205,  7,191,103, 16, 96, 83, 40,  1,221,186,117,107,148, 39,128, 27,100,215,173, 91,231,246,248,142, 29, 59,176,110,221, 58,
-191, 44,147,130,243,125, 17,215,253,164,223,110,127, 14,174,115,254, 74,165, 18, 50,153,204,233,246, 63,116,232, 16, 58,119,238,
-220, 36, 74, 95, 99,172, 47,206,250,191,121,243,166,179,206,188, 68, 34,145, 54,165, 23,128, 67, 66, 66,130, 52, 47, 47, 79,229,
-237,188,205,155, 55,111,231,230,254,117, 58, 29,150, 46, 93,138,218,218, 90,136, 68, 34,  4,  7,  7,227,252,249,243,120,255,253,
-247,161,213,106,145,153,153,249,173, 86,171, 29, 19, 25, 25,169,242, 66,178,117,200,222, 91, 76, 64, 83, 40,158, 71,142, 28,169,
-115,126, 67, 65, 98, 81, 81, 81, 35, 76, 38, 19,172, 86, 43, 14, 29, 58,  4,129, 64,  0,179,217, 12,131,193,  0,150,101,157,239,
-177,197, 98,129,201,100,226,222,105,175, 97,226, 13,185,252, 23, 46, 92,232,244,  2, 68, 71, 71,163,188,188,188,209,138, 40,183,
- 42,192,135,216, 17, 13,128, 40,119,  7, 92,166,  3,124, 66,102,102, 38, 94,121,229, 21, 12, 30, 60,216,233,  1,225,210,103, 15,
- 30, 60, 24,167, 79,159, 70,155, 54,109,124,146,185,127,255,126,140, 26, 53,170,107, 90, 90,218,  5,142,252, 29,227,103,199,141,
- 27, 55, 94,169, 31,208,203, 87,161,104,232,183,124,244, 62,145, 35, 71,142, 72,210,211,211, 85, 67,135, 14,197,208,161, 67, 85,
-  0,112,250,244,105,228,229,229,241,125, 14, 63,  3,  8,  1,176, 65, 46,151, 79,115,167,  4,200,229,242, 23,  0,124,234,216, 92,
- 36,151,203,123, 43, 20,222, 75,212,255,145,193, 85,  3,204, 94,250,234,109, 83,  0,127,216, 24,128,123, 81,  9,152, 49, 99,  6,
- 93,180,104,209,109,174, 64,127,200,255,169, 23,154,118,158, 78,167,211,221, 22,228,199, 89,253, 34,145,  8,215,174, 93,187,171,
-228,239,106,253,187, 90,110,211,166, 77, 83,171,213,234, 38,247,  2,248,226, 57,153, 57,115,166, 30, 64,104, 88, 88, 24,222,124,
-243, 77,136, 68, 34,231,241,212,212, 84,  0, 64,100,100, 36, 38, 77,154,132,  3,  7, 14,236,155, 52,105,210,239,210, 78,215,251,
-237, 58,255,239, 14,177,177,177,117, 42, 53, 54,180,142,216,108, 54, 67,163,209,192,104, 52, 34, 60, 60, 28,193,193,193,176, 90,
-173,160,148,194,102,179,193,108, 54,195, 98,177,192,102,179,185, 42,244, 55, 61,181,179,164,164,164,142,117, 95,127, 58,160,126,
-128, 96, 99, 33,147,201,212, 62,198,162,136, 27, 58,208, 64,108,128, 87,188,255,254,251,152, 56,113, 34,186,117,235,134,208,208,
- 80, 72, 36, 18,104, 52, 26,132,133,133, 65,171,213, 98,205,154, 53, 96, 24,223,226, 11, 71,141, 26,213, 41, 45, 45,237,194,188,
-121,243,176,101,203, 22, 60,254,248,227,  0,208,110,255,254,253,215,253,185, 79, 14,133,  2,220,152,197,141, 85,190,146,191,171,
- 39, 96,227,198,141,210,169, 83,167,170,  0, 96,227,198,141,210,170,170, 42,181, 15,253,217, 44,151,203,103,  0, 88,231, 65,  9,
- 72,116,249,222,  5,192,  0,216,151,164,  6,224, 66,252, 13,225, 15,153,  9,112,248,240,225,210,166,  8,  8,244,215, 74,119, 29,
-144,151, 44, 89,210,104,242,231, 48,100,240, 32,236,221,167,194,250,125,161, 78,165,160,224,124,223, 70, 93, 99,108,108, 44, 74,
- 74, 74,144,155,155,139,206,157, 59, 99,237,218,181,126, 88, 93, 84,194,125,203,200,200,104, 18,242,231,172,255,242,242,114,105,
-253, 99,163, 71,143,150,230,230,230, 58,207,105, 10,228,229,229,169,248,122,159,180, 90,237,111,176,207, 11,179, 27, 55,110,196,
-154, 53,107,  0,  0, 27, 54,108,128, 86,171,229, 78,179,158, 62,125, 26,173, 91,183,190, 43,239,128,107,180,191, 59,229,140,111,
-153,230,146,146,146, 67, 54,155, 13, 90,173, 22, 55,111,222,116,  6,142,234,245,122,212,214,214,162,186,186, 26, 85, 85, 85, 48,
- 24, 12, 48,153, 76,176,217,108,  0,144,239, 73,102,125,114,119, 23, 72, 90,127, 85,  0, 95, 40,149, 74, 73,253,107, 86, 42,149,
-190,246,147,208,166,126, 30,107,215,174,133, 68, 34, 65,104,104, 40, 78,158, 60,  9,181, 90,141,176,176, 48,188,245,214, 91, 56,
-112,224,  0, 94,123,237, 53,159, 20,128, 81,163, 70,181, 75, 75, 75,187, 52,109,218, 52,124,253,245,215, 28,249,119,  0,112,221,
-147, 37,207, 71,  9, 88,178,100, 73, 83,144, 63,  0, 72, 56,242,  7,128,169, 83,167,170, 18, 18, 18,168,143, 99,168, 25,  0,183,
- 78,113,131, 92, 46,175, 31, 40,113,214,229,123, 41,128, 99,  1,218,119, 25,  7, 22,126, 84, 39, 22,160, 62,254, 48, 65,128, 77,
- 77,254,142,245,174,141,182,220,184,233,128, 25, 51,102,248, 77,254, 79,189,176, 11, 67,  6,223,114,221,108,254,250, 27,108,254,
-218,254,125,239, 62, 21, 48, 70, 10,192,183,101,128,114,185, 28,177,177,177,  0,236,193,128, 71,142, 28,193,158, 61,246,152,181,
- 99,199,142, 33, 33, 33,193,  7,105, 68, 13,220, 10,252,107,108,164,254,250,245,235, 37,238,172,255,250,104, 42, 47,  0,167, 72,
- 72, 36, 18,169,183,115,163,163,163,199,101,102,102,238,158, 52,105, 18, 78,159, 62,141, 51,103,206,224,253,247,223,183,  2, 16,
-234,245,122,100,102,102,194,113, 76,120,241,226, 69, 60,243,204, 51, 94,101,222,137, 24,  0,206,146,206,201,201,113,122,177, 56,
- 98,228,158, 59, 31,196,196,196, 20,233,245,250, 17,102,179, 25, 55,110,220, 64,112,112, 48,132, 66,161,211,  3,160,211,233,160,
-215,235, 97, 50,153, 80, 85, 85,197,205,231, 95,246, 36,147, 35,119,110, 26, 32, 54, 54, 22,245,189, 21,238,226,  2,248,144, 63,
-151,  3,160,254,190,198,244, 15,206,234,119, 99,241, 91,249,142,161,197,197,197, 56,125,250, 52,244,122, 61,226,227,227,161,215,
-235,145,147,147,131,169, 83,167, 98,203,150, 45, 16, 20,150,  5, 38,  0,  0, 32,  0, 73, 68, 65, 84,  8,  4,188, 21,128,152,152,
-152, 78, 28,249, 23, 22, 22,226,237,183,223,  6,128, 46, 51,102,204,184,186,110,221, 58,178,127,255,254, 70,141,161,156, 39,160,
- 49,228, 31, 27, 27, 75,185,126,118,244,232, 81, 20, 21, 21, 73,211,211,211, 85,189,122,245,130, 72, 36,162, 46,129,129,126,123,
-  2,228,114,249, 92,  0, 19,  1, 36,  3,104,  3,123, 12,192,159,218,253, 15,220, 90,  5,224, 46,  8,240,174,172,  2,248,189,130,
-  0,239, 53,242,175,175,  4, 52,198,242,247,180,189,119,159,202,159, 23,244,150,185, 19, 26,138, 62,125,250,212, 57,126,248,240,
- 97,159,228, 37, 39, 39, 59, 21,128,220,220, 92,228,230,230,214, 89, 21,224,203,245,175, 93,187, 86,  5,  0, 59,119,238,116, 75,
-158,211,167, 79, 87,175, 93,187, 22,  0,191, 37, 76, 13, 37,253,225, 20, 13, 74, 41, 18, 18, 18,164,211,166, 77,243,218,119,210,
-210,210,246,104, 52,154,177,  7, 15, 30,220, 27, 19, 19,131, 51,103,206, 64,171,213, 10, 35, 35, 35,145,150,150,  6,141, 70,115,
-241,224,193,131, 93, 99, 98, 98, 48,115,230, 76,175,215,235, 46, 15,128,191, 49,  0,245,223, 45,133, 66, 65,100, 50, 25,148, 74,
- 37,173, 63, 45,195,247,121,196,197,197,189,174, 86,171, 95,180,217,108,168,174,174,134,197, 98,113, 42, 43, 70,163, 17,148,210,
- 58,129,129, 50,153,236,105,  7, 49,242,134, 76, 38,131, 76, 38,171,179, 44,208,215, 41,  0, 87,162,151,201,100,234,250, 99,139,
-171, 82,208,132,224, 61,126,114, 75,253, 94,126,249,101,168,213,106, 72,165, 82, 20, 23, 23,163, 89,179,102, 40, 45, 45,229,173,
-  0, 28, 62,124,152,164,165,165, 93,122,230,153,103,176,127,255,126,188,245,214, 91,  0,208,113,198,140, 25, 87,154,130,252, 93,
-149,128,198, 88,254,220,248, 82, 82, 82,130,162,162, 34,226, 48,  4,165,233,233,233,170,232,232,104, 72, 36, 18,202, 39, 16,176,
-158, 18, 48, 13,192,  6,135, 18,112,  8,128, 28,128, 68,161, 80, 92, 67,  0, 77,215,129,155, 58, 27,159,187,128,159,165, 75,151,
- 54,184,255,110,146,255,140, 25, 51,238, 72,202,208,198,200,188,116,217,123,255, 14,  9,241,205,107,233,105,126,216, 31,200,100,
- 50,105, 98, 98,162,122,239,222,189,116,211,166, 77,117, 20,129,250,164,196, 87,102, 70, 70, 70,131,154, 13,151,148,196,151,196,
- 64, 13, 41,156, 82,169,148, 23,249,115,136,138,138,114,206,235,159, 60,121,242, 47,153,153,153,255,225, 60,  2, 23, 47, 94,236,
-250,198, 27,111, 72,  9, 33,188,228,221,137, 60,  0,245,239,179,187,249,111, 31,148, 82, 93, 66, 66,194,226, 29, 59,118,188, 99,
-181, 90, 81, 89, 89,233,140,  1,  0,128, 27, 55,110,160,178,178, 18,148, 82,206,106,247,105,178,157,155,255,175,191,236,175,126,
-156,  0, 95,242,119,125,206,247,218, 82, 94, 78,  9,120,245,213, 87,145,151,151,135, 73,147, 38,225,195, 15, 63,196,130,  5, 11,
- 32, 20, 10, 33, 22,139,189, 61, 87, 66, 41,101,103,205,154,133,255,252,231, 63, 88,189,122, 53,  0,116,222,191,127,255, 21,135,
-197,238, 87,103,114,153,182,106, 50,148,149,149,193, 77, 30,  0,117,118,118,182,116,204,152, 49, 42,127,150, 60, 58,172,254,105,
-  0,182,  1,152, 11, 32, 46, 64,254, 13,195, 93, 16, 32, 47,  5,192,151,164, 28,254, 18,118, 83,163, 41,200,255, 94, 28, 52,230,
-206,157, 43, 61,117,234, 84,147,202,116, 88, 67,170,166,148,201, 17, 30,183,182, 30,128, 51, 25, 16,203,178,216,188,121, 51,111,
- 37,224,149, 87, 94,225,218,121, 91, 12,  0,195, 48, 96, 89, 22,255,248,199, 63, 84,124,201,211,147,188,198,174, 36, 72, 75, 75,
-251,175, 70,163,185,113,240,224,193,157,124,173,254, 59,237,109,171,127,127,221,185,216,125, 81,  2,  8, 33,239, 78,156, 56, 49,
-119,221,186,117, 39,130,130,130,192,173, 10, 96, 89, 22, 17, 17, 17,208,106,181, 92, 10,219, 80,  0, 54,190,  6,129,107,240,223,
-145, 35, 71, 32,147,201,234,140, 39,222,198,161,146,146, 18, 90, 82, 82, 34,173,239,226,111,228,146, 63,  0, 13,186,251,173,203,
-151, 47, 23,  3, 48,195, 30, 63,197,125,124, 82,  2, 92, 19,255, 60,255,252,243,206,239,213,213,213, 94, 95,179,184,184, 56,210,
-175, 95, 63,250,213, 87, 95, 61,177, 97,195,134,239, 56,178,221,176, 97,  3,124,141,250,231,112,229,202, 21,103, 74,226, 38,130,
-122,251,246,237, 13,245, 41,245,190,125,251,124,170, 85,225,225,240, 85,119,217, 74,255,236, 53, 73,184, 85,  0,238,136,159,215,
- 42,128,166, 38,245,134,228,221, 43,202,195,189,220,113,250,246,237,171,238,219,183,111,147,202,116, 12,142,119,252, 90, 93,221,
-255,245, 95,234,134,150,157, 57,218,199,167,109,196,135,235,189,163,215, 26, 21, 21,181,171, 49,145,254, 77, 25,  3,224,174, 15,
-123,242,246,248,208,231, 79,206,152, 49,163,217,238,221,187, 63, 40, 45, 45,125,209, 96, 48,192,102,179, 97,208,160, 65, 24, 58,
-116,104,166, 76, 38, 91,200,135,252,  1,160,160,160,192,249,221, 53,214,164,160,160,224,182,109, 79,136,142,142, 38, 14, 47,129,
- 20,128,138, 83, 38, 92,166,  2,124,126, 38, 83,166, 76,105,232,144,208,101,188, 12,186, 27,227,138, 66,161, 96,143, 31, 63,142,
- 79, 63,253,148,  0,224,149,148,231,239,127,247,156,147,105,216,176, 97,152, 60,121, 50,239, 54,120,147, 23,192,189,167,  4, 52,
- 68,254,110, 21,128,166, 38,193, 64,133,184,  0,220,245,  1,127,203, 87,254, 25,238,205, 61,252, 27,186,113,227,198,205,133,221,
-253,234, 23, 14, 30, 60, 72,166, 79,159,126, 71, 20, 90,127, 51,  7,254,158,202, 98, 99,209,191,127,255, 38, 45,198,211,212,242,
-254, 12, 70,217,253,164,  4,120,181,162,  6, 13, 26, 20, 24,136,  3,  8, 32,128,  0,  2,  8,224, 79,  6, 38,112, 11,  2,  8, 32,
-128,  0,  2,  8, 32,160,  0,  4, 16, 64,  0,  1,  4, 16, 64,  0,  1,  5, 32,128,  0,  2,  8, 32,128,251, 16, 86,  0,108,224, 54,
-  4,224,  9,194,192, 45,  8, 32,128,  0,  2,  8,140,237,  1,252,201, 59,201,156, 57,115,252,142,184,116, 23,213,237, 73,158,183,
-245,199,190,202,107,234,246,  5,228,  5,228,253,217,229,253,244,250, 69,191,  7,150,193, 31,116,197,157,150,119,228, 53,255,229,
-197,126,120,187,188,140,140, 12,  2,  0,132, 16,137,197, 98,193,249,243,231, 85,102,179, 25, 66,161, 16,151, 47, 95,198,211,225,
-221,176,171,168,  8,134,  7, 59, 35, 46, 46, 78, 42, 16,  8, 64, 41, 85,  3, 64, 86, 86,214, 29,127, 30, 92,251, 92, 65,  8,233,
- 11,160,205,137, 19, 39,182,119,232,208,129,209,104, 52,226, 14, 29, 58,188, 31, 18, 18,178, 18,192, 21,199,114, 82, 38, 43, 43,
-203,230, 65, 94,115,135,183, 64, 79,  8,161,  0,112,233,248,127, 87,201, 71,149,166,173, 47,138, 57, 47,108, 51, 46,174, 89,243,
- 22,181,  0, 40,165, 84,  8, 32, 50, 43, 43,235, 82,224,125,187,183,229,221, 81, 45,145,111,182, 45, 95,179,191,249,147, 50,183,
-114,205,215, 18, 97, 84,184,234,220,153,179,210,  7,130,155, 33,236,239, 51,212,247,146,150,213, 80, 62,242,192, 18,151,187,143,
- 45, 91,182, 72,118,236,216,161,202,124,221,190,253,237,254, 81,152, 49, 99,  6,175,231,178, 63,255,144,132, 33, 68,117,250,212,
- 41,104,181, 90,116,237,218, 21,205,154, 55, 71, 82,226, 56,222,207,117,207,158, 61,117, 94,220,220,220, 92,143,181, 20,114,115,
-115,253,238, 55, 92,161,166,172,172,172,198,245,187, 20,141,227, 11,  5, 64,128,156, 40,255,101,197, 46,  7,162,159,181,127, 47,
- 89,  3, 28,153,223,248,135,154,124,179,110,251,114, 91,241,250, 51, 66,  8,213,233,116,210,221,187,119,171, 74, 74, 74,144, 34,
-106,137,118,157, 91,195,168, 51, 32, 68,111,197,200,  5,207, 97,244,164,169,216,246,101, 22,182,238,221,171, 26, 55,110,156,244,
- 30,232,194,103,108, 54, 91,251,146,146, 18,118,224,192,129, 65, 49, 49, 49, 56,122,244,232,235, 70,163,113, 98,207,158, 61,101,
-132, 16, 13,165,212,219, 84, 64,141,235,134,213,106,101,126, 41,250,169,103,167, 89,131,241,143, 97,253, 90, 23,236,254,120,211,
-230, 99,146,159,123,246, 31,243,161, 67,222,101,135,194,192,  6, 60, 13,127, 50, 55,145,175,249,251,125,201,131,239, 43,249,219,
-214,111,151,196,183,238,164, 34, 29,163, 81, 92, 91,137,246, 29,186,169, 44,172, 13,167, 62, 91,139,242,174,173,165,195, 38, 77,
-224,165,  8, 28, 81,201,105,239, 30,220,150,  0,223,236,102,177,255, 71,138,244,105, 64,239, 30,192,252, 37,141, 35,110,174, 64,
- 73, 99,179,147,185, 83, 38,154, 74,110, 99,144,158,158, 78,177,152,128,188,219,240, 57,148, 82, 96, 49,193,148,223, 82,238,153,
-181,214,183,200,159, 58,200,127, 52, 14, 28, 56,128, 25, 51,102,120,253,219,  7,  7,238,166,125,251, 14, 69, 78,206, 85, 28,206,
-183, 39,172, 57,115,234, 52,  0, 96,246, 95,191,166,167,207, 38, 75,195,196,252,158, 75, 98, 98, 34,187,103,207, 30, 38, 55, 55,
- 23,251,246,237,243, 88,136,201,159, 20,170,158,222,219, 12,185,156,102,249,161, 80,112,233,194, 27,157,202, 56,250,217,186,197,
-118,154, 66,  1,112,185, 79,142,234,132,188,112,238,220, 57,168, 55,109, 82,189, 43,155,130, 65, 51,158, 71, 80,219, 72, 64,232,
- 72,246,199, 82,128, 21,129, 53, 81, 76,120, 54, 29,165,255,250,  8,135, 14, 29, 82,141, 24, 49, 66,202,121,  1,238, 18,108, 12,
-195,180,105,213,170, 21,212,106,181,112,224,192,129, 24, 54,108, 24,115,237,218,181,193,191,252,242,203,241,  7, 31,124,112,  8,
- 33,228,154,131,172, 25,158,247,174,217,216, 49,137,209, 31, 46,219,194, 44, 76, 61,214, 34, 46,105,142, 52,110,184,114,212,130,
- 79, 47, 63, 26,243,208,204, 88, 66, 72, 13,236, 49,  6, 76, 67,253,204, 53,177,149,183,126,212,104,133, 52,128, 58,168,159,  0,
-168, 62,252, 42,  6,228, 58,128, 12,154, 57,  0,115, 70,190,192,128,103,229,190,250, 74,128, 92, 46,167,177,177,177,200,206,206,
-166,174,101, 75,125, 34,214,188, 35,146,233,131,227, 85, 65, 54, 22, 54, 80,132, 84,134,226,218,141, 27,184, 86, 83,133,238,193,
-205, 96, 42,190,162, 58,188,117,135,116, 56, 15, 37,160,119, 15,224,212, 57,  6,148,138, 97, 35,193,120, 34,209,130,201,227, 12,
-184, 21, 67,211,248, 84,  9,141, 37,105,142,248, 23, 46, 92,136,162,162, 34,  0,192,246, 83, 34, 24, 45, 22,149,252,175, 67,125,
- 82,  4,124, 81,226, 28, 41, 94, 61, 63,151,197,246,195,177,177,177, 13,231,111, 95,236,223, 59,190,237,139,171,146,173,191,188,
-237, 84,120, 38, 14, 88, 44,125,236,133, 14,141, 30,112,183,108,217, 34,217,190,125,187,138, 97, 24,188,252,  1,156,213,207,248,
-212,193,136,140,252, 65, 18, 55, 60,  3,192, 86,140, 26,245,175, 58,199,166, 79,  7, 38, 76,  0, 38, 32, 87,181,252, 95,224,165,
-  4,112,228,175, 86,219, 79,157, 58,117,170,179,176,146, 47,  4,230,201,242,231, 82, 50,187, 94, 95, 70,134,127,228,223,100,136,
- 93,  6,  0, 88,177, 98,197, 45,  5, 96, 72, 38,112,244,229,187,210,156,125,251,246, 97,229,228,116,116, 31,147,  8,  8, 76, 32,
- 34,  6, 68,200,128,  8, 68,160,148,128,213, 89, 65,109, 54, 80,179, 13,207, 61,251, 60,158,127,107, 46,206,181,109,171,234,209,
-163,199,221,244,  4,144,162,162,162,248,206,157, 59,  7,149,148,148, 32, 47, 47, 15,167, 78,157, 66, 98, 98, 34,226,227,227,219,
-175, 94,189,250,189, 41, 83,166, 60,231,131,  2, 32, 56,176,247,127,255,247,228, 32,125,219, 35, 53,  2, 76, 95, 92,139,135,  7,
-127,130, 23,230, 77, 21,126,188,176,178,251,194,143,215, 77,143, 30, 60, 93,129,  6,210, 32,187, 18,186,235,152,158,145,145, 65,
-221,237,111,234,130,112,  1,220,  1, 15,128,235, 67, 90,191,115, 93,101,143,  7,122, 68,200,223,125,142,157, 51,242,  5, 95,170,
- 57,145,236,236,108,202,165, 37,229,254,151,203,229, 52, 37, 37,197, 55,171,122,231, 33,201,248,152,126,170, 32,163, 21, 33, 31,
-191,  2,171,222, 12,241,203, 75, 16, 30, 36,134, 81,100,128,206,104, 64,  8,  8, 76,151,202, 85, 85, 85, 85,210,240,240,112,143,
-131,240,169,115, 64,246,  6, 22,128,222,241,  1, 70, 61,196, 96,242, 56,  2,215, 64,218,244,105, 64,246,  6, 63, 60,166, 41, 41,
- 82,199,117,250,101,173,115,228,207, 17, 63,  0, 40, 14, 88, 96, 48,235,  0,  0, 99, 23,238, 65,206,210, 68, 21,  0,222,242,207,
-125,116, 14, 34, 82,124,171, 35,144, 50,144, 86,189, 93,182,203,209,250,175,252, 82,132,146,119,237,228,239,169,198, 60,145,231,
- 80,251, 57,252,172,255,163,219, 45,146,236, 45,127, 87, 81, 80,124, 56,239, 91, 12,151,196, 96,253, 23,251,241,239,221, 25,170,
-237,114,138, 57,127,121, 91, 58,104, 84,123,191, 20,129,218,139,114, 58,102, 32,144,243,213,  9, 80, 74,209,188,205,131, 78,242,
- 95,185,114,165,199,246,233,140, 74, 73,122, 74,123, 21,240, 57,128,111,113,248, 48, 48,124,248,173,227,239,189,119,235,251, 75,
- 47,230,170,178,254,221, 75,202,176,157, 61,182,147, 35,255,132,132,  4,176, 44,139,207, 62,251,172,201, 94,112,185, 92,238, 36,
-255,186, 74,129,156,102,101,121,126,231,152, 41,218, 58,234, 47,113,252,195,166,184, 57,143, 56, 78, 36,246, 47,  3,  7,222, 62,
-199,206, 76,213, 58,189,242,  0,192,178,169,152, 55,111,158,243,248,188,121,243,176, 98,197, 10, 48, 61,103,221,250, 85,199,249,
-238,228,  9,167,186,111,159,213,234,230, 60, 30,237, 51, 26,141,104,215,181, 27,192,154,193,  4,  3, 68, 40,128,181,166, 10,198,
-146,243,184,113,185, 12,157, 70, 72, 64,130, 34, 64, 44,102, 64,192, 96,233,156,  5, 72,204,126, 27,243,231,207,111,210, 65,217,
- 91,170,108, 23,178, 37,148,210,  8,131,193, 48, 34, 42, 42, 10,167, 79,159,  6,203,178, 56,127,254, 60,214,172, 89,131, 62,125,
-250,160, 99,199,142, 51,  1, 60, 87,143,172,217,134,200,155, 82,218,170, 43,115, 88,210,190, 75, 82, 80,101,222, 49, 84,105,131,
-241,159,109, 86,236, 40,248, 47, 94, 76,  9, 17, 10,245,108, 44, 48,189,193, 58,  8,119,162,184, 85,  0,190,161,161,190,227,206,
- 51, 32,228, 75,252,148, 82, 72, 95, 79, 64,118,158, 34, 34, 29,114,252,252,213, 49, 96,164,243,181,226,  5,142,244,245,250,117,
-  0,  8,140,198,213,136,138, 82, 34, 39, 39,  7,190,164,241, 28, 22,220, 66,213,198,104,131,120,241,243,176,221,212,192,122,229,
- 38,132, 65, 34,132, 18,  1,194,136,  0, 97,  2, 33,162, 68, 98,104,107, 42,113,117,223, 33, 85,248,228, 71, 60, 14,116,238, 72,
-125,255,143,172, 67,  1,  0,150, 45, 34,160,  4,176,135,199,248,222,193, 29,164, 44,205,201,201, 81,229,228,228,248, 53,133,224,
- 74,254, 16, 10, 80,114,213, 62,248,149, 94, 55,162, 75, 91, 49,122,166,110, 69,206,154, 73, 42,190,238,117, 17, 41,134,144,148,
- 65, 64,110,194, 70, 91, 33,184, 13, 65,216,180, 43, 96, 89, 13,140,198, 28,216,138,254,225,155, 39,151, 71,229, 54, 95, 74,188,
- 42,182,188,160,138,143,122,  3,159,125, 59, 11,205,152, 46,  0,128,231,255,222, 11,  3,135, 69, 99,221,231,121, 88,249,223,119,
- 84,138, 81,254,185, 14,  9,  1,228, 47, 29,119, 14,122, 15, 63,252, 48,246,239,223,239,149,252,  1, 96,198, 52,145, 10,216,  7,
-224, 56, 42,175, 55, 67,207, 46,192,170, 85,181, 80,169,128,158, 61,129,232,104,187,136,202,235,205,236, 47,227,128,223, 84,191,
-254,210,153,120, 34,255,125,251,246,129,101, 89, 39, 73,111,220,184,177,209,  4,226,186, 93,159,252,  1,192, 27,249,  3, 64,150,
- 66, 65, 40, 32, 33,128, 58, 61, 61,189,193,142,207,186, 12,250,138,236,108, 41, 33,192,202, 47, 86,222, 22,243,178, 50, 75,225,
-234, 95,145, 80, 74, 85,159,124,242,137,115,199, 39,159,124,130, 21, 43, 86, 32, 43, 43,171,110, 21, 57,  2,137, 59,121, 89,246,
- 20,182, 82, 74,169,250,185,231,158,107,176,125, 86, 23, 47, 74,246,170, 85, 82, 66,128,172,149, 89, 42,119,228, 37,108,222, 28,
- 16,  9, 96,211, 87,226,183, 29,123,177,110, 83, 46,190,184,114, 30,  0, 80,248, 78, 11,244, 28, 61,  1,166,210, 75, 56,241,203,
- 17, 28, 59,127,  6, 85,215,174,225,248,241,227, 77, 86, 88,107,205,154, 53, 18,126,125,152,132, 83, 74,123, 23, 21, 21,125,252,
-230,155,111,246,251,248,227,143,131,204,102, 51,  4,  2,  1,154, 55,111, 14,157, 78,135,194,194, 66, 68, 71, 71,115,117, 11, 60,
- 89,255, 97,132, 16,150, 82, 26, 85,121,249,224,143,239,252, 95,105,212,151,243, 58, 64,163, 11, 66,144,144, 65,167, 72, 49,174,
-221, 52, 67,254, 79, 43,  6, 14,141, 13,235,226,197,147,144,145,145, 65, 57, 69,192,181, 47, 54,244, 61,128, 59, 15,142,252,235,
- 43,  7,140,183, 65,132,171,247, 93,199,205,153, 52,195,231,  6,100,103,103, 83, 59,249,175,119,146,191,248,199, 11,208,239,122,
-160,206,113,175,150,171, 98,189, 36, 92, 83,  3, 54, 72,  8,243,145, 19, 48,253, 86,  2,227,238,253,128,193,132, 32, 74, 17, 10,
-  1,132, 32, 48,177, 86,104, 76, 70,124,177,103,155, 87,153,203, 22,217,173,123, 87,216,183, 57,115,133,226,244, 89,138,249, 75,
-252,239,179, 50,153, 76,237,234,246, 82, 42,149,188, 94,116,165, 82,233,172,173,205,225,233, 21,151,177,247,136, 22,165,215,141,
- 78, 37,160,248,178,  1,144,109,130, 82,169,228,229,142, 20, 18,123,229, 48, 81,205, 49,132,133,157, 69,176,184,  6, 44,171,129,
-197,114,  4,  2, 65, 52,204,186,138,187,214, 89,247,126,115, 92,  2,144, 58,228,127,245, 52,197,144, 73,  2,252,253,253, 68, 60,
-156,216, 15,  0,117,156,231, 27,214,175, 95, 79, 95,254,128,160, 89,235,  1,160,  0,146, 38,207,193,129,  3,  7,120,253, 45,203,
- 92,162,109,218,252,234, 36,255,154, 10,123,  9,230,129,  3,237,228,207, 21,  2,180, 31, 11, 65, 77, 69,  8,162, 66,175,122,148,
-153,156,156, 12,169, 84,138, 49, 99,198, 96,234,212,169, 16,  8,  4,183,125, 92,247,243,133,187,247,214, 47,101,201,133,136,  9,
- 33,206, 79, 67,251,  8,160,  6,133,186,  1, 89,183,222,175,244,116,149, 59,203,121,222,188,121, 72, 79, 79,175, 75,168, 13,200,
-251, 86,161,192,241,227,199, 85,132, 16,  9,128, 58,247,204,233,207,174,183,207, 83,251,130, 40,  5, 19, 26, 12,203,181,139, 80,
-188,241,  6,214,232, 42,161, 77,136,115, 30,255,242,191,107,240,246,130,217,136,153,255, 52,222, 61,182, 15,155,180,231,145,248,
-216, 99,136,142,142,246,121, 10, 96,205,154, 53, 18,185, 92, 78, 87,175, 94, 93,167, 15, 23, 20, 20,168, 60, 77, 67, 17, 66, 68,
-132,144,161,199,142, 29, 43,205,203,203, 83,191,252,242,203,113,159,125,246,153,184,182,182,214, 89,166,217,104, 52,162, 89,179,
-102,197, 83,166, 76,233, 53,114,228,200, 46, 94, 20,  9,134, 16,210,245, 88,254,230,242, 51,187,230, 95,152,255, 90,102,251,173,
-139, 59,224,183, 50, 33,170,106,  5, 96,  9, 80, 81,107,  6,109,217,195,248,210,235, 75,250, 61,250,196, 95,188, 78, 39,100,101,
-101, 17,110,172, 83, 40, 20, 94,191,  7,112,119,200,223,173,  7,192,149,248,249,140, 51,190, 88, 34,183, 92,109,171,221,122,  7,
-234,196, 25, 52,224,198,232,215,170,173, 74, 67, 45,  8,170,208, 64,252,237, 62, 16, 33,  3, 24,205,160, 53, 58, 16,171, 21, 34,
-  0, 54,202,194,104,179,162,198,106,  6, 88,239,115,168, 92,144,223,178, 69, 13, 15,131,246, 32,193,198, 15,168, 10,133,130,112,
- 46,125, 62,214,250,109,214, 63,128,255,189,208,190,206,246,208, 87, 75, 32,162, 55, 97, 33,173,144,147,147,179,143,175, 23, 64,
- 92,171, 66,212,187,255,197,141,151, 51,112, 83, 19,130, 14,150, 19,176,217, 74,  0,  0, 23,127,110,119,215, 58,236,166,157,159,
-170,102,143, 83,212, 33,127, 14,113,145,111, 96, 68,191,100,196, 71,157,192,166,157,239,171,198, 78,230, 63,136,172, 91,183,142,
-254,240,195, 15,168,168, 24,139,150, 45,247,162, 89,171,254,160,148,130, 97, 24, 94,129, 72,165,165, 64, 73,201,113,110, 34,  1,
- 16,215, 66,163,  3,134, 13,179,239, 41, 46,  6, 62,255, 28,168,169,  6,116,181, 64,173, 14,  8,139,172,230,213,182,134,230,250,
-207,157, 59,  7,  0,248,224,131, 15,  0,  0, 49, 49, 49, 77,230,102,118,237,147,124,254,102,238,220,185,112,181,216,235, 19,183,
- 15,144,  0,183,230,254, 93,193,121,  1, 28,231,168, 61,  9,153,213, 49,  6,103, 78,156, 68, 89,100,164,138, 97, 24,188,248,226,
-139,248,215,191,254,229,119,251, 70,153, 34, 64,217, 90,204,254, 96, 17,  6, 36, 39, 67,241,193,  7, 96,152, 91, 60,167, 40, 62,
-126,203, 67,184,127, 63,246,236,217,131,243,231,207,251, 28,  4,184,102,205, 26, 73,126,126,190, 10,  0, 10, 11, 11, 85, 12,195,
- 72, 83, 83, 83,213,171, 87,175,150, 80, 74, 17, 31, 31, 47, 53, 24, 12,170,  6, 20, 59, 75, 65, 65,193,128, 25, 51,102,180,232,
-222,189, 59,118,236,216,161,175,170,170, 18, 26, 12,  6,187,183,195, 49,255, 49,126,252,248, 24, 66, 72,  8,165,212,224, 70, 12,
-227, 34,143, 41, 57,253,243,138,183,255,145,214,172,101,207, 28,252,148,243, 44,126,189, 68, 80,122, 93,  8, 80,  6, 38,179,  5,
- 26,218,178,236,111,179,158,143, 35,132,148,209, 38,208, 42,249,196,217,  4,240,251,160,193, 41,128,188,188,188,219,246, 85,150,
-105,125, 38, 59, 87, 15,128,125, 10,192,222,127,196, 63, 94, 64,240,241, 50,216, 34,236, 86, 84,253, 57,228,134,214, 53,158,188,
- 92, 10,125,112,  8,162,173, 86,116, 10,105,134, 80, 81, 16,136,197,  2,176, 20, 86,155, 13, 53, 54, 51,244, 54, 43, 76,212,  6,
- 27, 40,168, 15,157,109,254,146, 91, 74,128, 61, 46,224, 22,233, 47, 91, 36, 64,230, 34,130,151,151, 88, 27,125,211,101, 50,153,
-154, 43, 93,202,  7, 11,115,236,247,125,105, 74,164,147,240,157,174,124,122, 19, 34,  0, 66,170,197, 87,179, 35,173, 79, 43,249,
-197,117,136,174,255,  8, 27,236,110,234,143,133,225,120,250,250, 69, 20,253,179, 19,194,218,245, 65, 85, 89, 25,174, 93,184,114,
- 87, 59,230,192, 97,209,208, 57,186,155, 62,228, 36, 66, 13,125,241,245, 59, 22,231,241,145,178,126,200,223,228,155,229, 63,121,
-244, 15,248,246, 91, 25, 34,242,149, 88,190,  8,120,105,  9,197,232,209,163,121, 47,251,235,214,169, 51,233,209,163,174, 22,184,
-109,155, 61,240,111,253,122,160,103, 79,138, 21, 43,  8,222,125,183,214,174, 32,  0,232,217, 43, 18, 47,191,196,175,141,156,149,
-154,156,156,140,141, 27, 55,214,177,100,147,146,146, 26, 36, 55,127, 21, 81, 31, 61,120,210, 21, 43, 86,168, 26, 82,  0,150, 45,
- 91,134,236,236,108, 94,150,240,115,207, 61,167,226, 34,255,221,225,165,151, 94,194,242,229,203, 85,217,217,217, 30,219,248,195,
-201, 82,188,254,238,  2,204, 90,252, 15,188,102, 54,227,147, 79, 62,105,240, 30, 45, 91,182, 12, 74,165, 18,132, 16, 73, 67,132,
- 61,186,111, 23,172,254,242,115,196, 78,159,142,119,222,121,199,163,210, 48,111,222, 60, 44, 91,182, 12,171, 86,173, 82,251,122,
-239,243,243,243, 85, 92,176,156, 92, 46,167,  5,  5,  5,170,212,212, 84,114,248,240, 97, 21, 33,  4,169,169,169,234,149, 43, 87,
- 54,248,247,122,189, 62, 98,219,182,109, 24, 59,118, 44,138,139,139, 67,117, 58, 29, 44, 22, 11, 24,134,129,217,108, 70, 74, 74,
- 10,113,144,187,129,143, 99,203,100, 50,  5, 29,217, 60, 29,163,159,124, 23,187,242,206,225,252, 85,  1,170,117, 12,  4, 66,160,
- 76, 23,130, 23, 95, 93, 20, 15,224, 50, 95,238,231,226, 78,  0,126,211,  1,  1,220, 29,235, 31,238,220, 56,156,107, 70, 34,145,
- 64, 34,145,224,151, 95,126,113,126, 74,126,188,136, 42, 67, 21, 90, 14,243,125,221, 47, 71,238,161,161, 51, 32,254,241,  2, 68,
- 23, 43, 64,  9, 65,208,172,138, 58,199,189, 18, 87,144,  0, 54, 10, 92,214, 85,162,180, 74,131, 27,213, 90, 84, 25,141,208,154,
- 13,184, 97, 50,224,170, 81,143, 50, 99, 45, 52, 22, 19,180,172,  5,102,214,123, 54,204, 81, 15,185, 25,240, 92,226,  2,102, 79,
-109,  6,138, 32, 80,223,202,128, 59, 93,248,245, 59, 59, 95,247,191,211,242,188,110,196,222, 35,218, 58,196,207,145,127, 48,123,
- 17,193,236, 69,188, 61, 94,136,210,210, 82, 51, 95,153,155,207,179,104,157,153,229,220, 62,175,179,225,242,185, 50,156, 62,120,
-  2,215, 46, 84,222,245,142,187,254, 11,187,  2, 90, 93, 78, 17,106,232, 11,201, 44, 33,158, 92, 44,114,126, 50, 55, 77,  7,  1,
-225, 61, 32, 61,254,112, 30,158,157, 47, 67,100,193, 94, 16, 66,240,221, 65,251, 35,224, 75,254, 28, 98,122,247,170,167, 88,  0,
-159,125,  6,156, 61,107,247,  4,188,243, 14,117,186,223, 41,165,136,140,140,244, 62,  2, 59,250,168,205,102,131,205,102,195,  7,
- 31,124,128,115,231,206,225,204,153, 51, 56,115,230, 12,148, 74, 37, 22, 44, 88,128,210,210,210,187,249, 72,212, 13, 89,210,115,
-231,206,229,172, 58, 94,100, 72,  8,113,107,253,115,240,116,204, 21,251,131, 43, 65,152,102,248,247,235, 75,208,108,155, 18,233,
-233,233,112, 45, 53, 44,239,217, 31,115, 99, 71, 32, 52, 52, 20,163, 71,143,198,155,111,190,  9,165, 82,169,210,106,181,110,223,
-191, 47,203,206,224,106,191,190,232,216,177,163,148,101,217,  6,189, 29,156,167,194, 95,207,139,107,164,124,124,124,188,148, 35,
- 74,  0,136,139,139,147,122,185,119, 99, 70,143, 30,221,162,180,180, 20,251,247,239,199,  3, 15, 60,  0,161, 80,232, 84, 22, 59,
-118,236,200,119, 58,130,117,200, 35, 61,122, 15, 94,152,189, 59,  2,191,238, 88,140, 81,241,125, 16, 38,102, 16, 22,106, 67, 72,
-176,  9,143, 60, 62,133,  5,160,169,175,171,122, 83, 46,185,235,227, 51, 29, 16,192,221,  3,227,233, 33, 42, 20,138,230,115,231,
-206,197,220,185,115,  1,192,252, 94,198,123,176,148, 91, 17, 18, 34,246, 43, 25, 73, 74,138, 61,124, 56,116,252, 89, 80,  1,131,
- 55,191,214, 59,173,127,190,  8,237,216, 81,106,109, 22, 10, 45,181,225,164, 78,139,227, 85, 21, 56, 81,125, 19, 39,170, 53, 56,
-169,211,224,172, 94,139, 10,147, 17,181, 86, 43,174,232,117,206,223,244,132,201,227,  8,150, 45, 18, 96,217, 34,  1, 40,  4,160,
-132, 65,250, 52,130,231,166,  5, 97,214,212,214,232,209,163, 45, 88,136,  0,248,118,201,156,171, 63, 37, 37, 69, 90,127,159, 15,
-247, 76, 90,124,217,174,200, 23,125,100, 15,162,219,245, 74,184,221,125, 67,181, 16, 80, 29, 76,140, 61,162, 89,163,209,132,166,
-164,164,248, 84, 20, 61, 54, 54, 22, 74,165, 18,235,107,117, 48,152, 25, 60,187,225,223, 40, 23,135,192, 96,190,123,101, 34, 38,
- 13,124, 91,154,175, 89,130,245,255,185,101,226,127,253,142,  5,113,145,111,220, 82, 40, 31,253, 92,154,165,200,226,149, 91, 98,
-249, 27, 64,234,252,177,136, 40, 80, 66,250,207,  4, 48, 19,  1,181, 90,237, 87, 31,238,218,181,110,244,248,152, 49, 64, 68,  4,
- 16, 29, 13, 12, 31,216, 28,226, 32,  1,  4,204, 45,177,226,144, 16,175,  3, 50,195, 48,206,185,254,115,231,206, 33, 38, 38,166,
-206,231,221,119,223,197,187,239,190,139, 43, 87,248,123,101,220,205,215,187, 34, 35,195,119, 11, 44, 59, 59, 91,186,124,249,114,
-183,132,205,215,250,119,113, 61,223, 22,167,192,109,179, 44,191, 20,246,102, 66,192,234, 77, 16,181,235, 10,249,251,239, 35, 53,
- 44,  2, 17,234,124,231,241, 89,127, 73,197,219, 31,255, 27,197,203,254,135,183,  6,140,193,148,200,238,216,179,101, 11, 74, 74,
- 74,220,190,127, 79,100,200,209,175,127,127, 41, 23,212,200, 41,100,174,211, 51,238,246,121,176,190,104, 70, 70,  6,229,  2,251,
-184,249,126, 87,146, 79, 77, 77, 85,199,197,197, 73, 57,215,127,106,106,170,218,203,125,203, 19,137, 68, 15, 60,241,196, 19,231,
-170,170,170,160,213,106, 17, 18, 18,130,214,173, 91, 35, 34, 34,  2, 17, 17, 17,222,110, 30, 91, 79,158, 45, 56, 56, 88,255, 84,
-198,191,164,107,126, 28,138, 11,151,170,209, 54, 92,128,248, 94,  4, 15,118,167,  8,107,209,162, 18,128,205,  3,111,  4,234, 13,
-220,167,214, 63,224,125, 25, 96,173, 66,161,  8,  6, 16, 38,151,203,157, 90, 96,167,132, 14,126,105,190, 10,133,130,200,100, 50,
- 40,149, 74, 26, 52, 43,167,142, 43,146,111, 30,128,150,143,141, 85, 87,228,236,128,222,106, 66,181, 78,143,115, 22, 11, 68,172,
-221, 81, 95,101, 49,130,165, 20, 20,192,142,235,231,161,179, 90,  0,128,199,192, 68, 48,127, 73,221, 62,110,159, 10, 96, 97,131,
-  9,191,157,173,193,234,141,213, 62, 93,175, 43,209,203,100, 50,117,125, 47,128,171, 82,224,  9, 50,153, 76,157, 35,159,  2,209,
-216, 47,  0, 68,163,162,226, 86,112, 94, 16,123, 21,102,166, 61,254, 54,224, 12,174, 94,181, 15,196, 10,133, 98, 47, 31,185, 25,
- 95,103,215, 81,188,114,114,114,192, 77, 74,108, 56,118,200,167, 85, 25, 77,141, 71,159,111,175,222, 42,167, 56,168, 60,  1,  0,
- 24,209,207,158, 25,239, 31,243, 22,227,208,137,126,248,120,211,116, 40,182, 61,175, 82, 76,226, 71,224,207,206,151, 33, 42, 74,
-233,106,200, 66,163,145,129,210, 28,135,171,146, 34, 39, 39,133,151,172,228, 39,159, 34,123,118,237,166,128,221,245, 47,149, 18,
-220,188, 20, 14,157, 86, 12, 67,117, 16, 54,172, 37,152, 59,151,226, 98,121, 13,134,199,199, 97,250,212,105,188,172, 98,155,205,
-230,156,239, 87, 42,237,109,117, 37,252,242,242,114,148,151,151,251,236,222,151,203,229,148, 97,152,219, 72, 53, 43, 75, 65,252,
- 72,  2,164,166,148,214,137,  5,112,241,  8,240,118,133,187,186,246,235, 71,239,123,115,251,215, 87,114,172, 53, 53, 16,181,138,
-130, 32,180, 25,250, 61,149,140,119,199, 37,226,117,110,217,222,224, 33,176, 25,140, 16,181,108,139,  1,113, 18,116,235,212, 29,
-255,250, 45, 31,253,251,247,151,254,248,227,143,183, 41,  1, 25,114, 57,  0,162,  2,128,231, 51, 50,156, 75,  7,173,245,200, 94,
- 40, 20,  0,244,214, 66, 69,  2, 96,160,155, 65,118,208,160, 65,132, 82,234,116,241, 23, 22, 22, 58, 93,252,174,231, 57,182,189,
-146,191,195, 96,127, 35, 34, 34,162, 95, 92, 92, 92,143, 83,167, 78,225,232,209,163,176,217,108,  8, 11, 11,131, 94,175, 47,143,
-138,138,186,224,139,209, 71,  8, 97,218,182,109,187,231,241,199, 31,111, 91,112,160, 16, 43,114,246,160,  5,  9, 66,175,182, 38,
-156,189, 25,134,135,123, 89,206,  3,176,112, 10,154, 67,161,180,121,122, 38,174, 99, 93, 96, 10,224,222,  6,159,249, 98, 51,  0,
-179, 43, 81, 95,206,187,  2, 76,247,157,252, 93,201,198,221,160,197, 87,  9,168,214,104,165,150, 80,177,170,138, 97,113,205, 88,
- 11, 88, 44,176, 81, 10,  2,224,183,218, 74,148,233,171, 65, 41,229,146,216,240, 24,152, 40,210,167, 17,100,111,184,213, 39, 79,
-157,  3,122,247,176, 66,  0, 93,163,200,223,181,179,251,235,242, 74, 73, 73,145,230,228, 60,175,  2,138,160,209,104,204,165,165,
-165,194,165,137, 96, 22,238, 25,141,121,253, 15, 57,173, 48,190, 74,133, 59,175, 75,253,109,142,132,248, 90,115, 88, 76, 48, 52,
-187,132,  2,238,151,251, 57, 51,  1, 42, 65,249,  4, 41,102, 76,250, 66,170,216,250, 55, 85,254, 38,138,248,168, 19, 24, 41,235,
-135,  3,123, 78,160, 64,251, 62,  8,  8,228,147, 62,231,125,173, 81, 81, 74, 16, 66, 48,121,242,100,172, 90, 85, 13,206, 40,182,
-255, 79, 29,247, 56,167,206,128,228, 97, 10, 22,  9, 99,164,210,188,125, 42,213,152, 49,128,249, 90,103, 92,170, 12,  6,235,152,
-109,109,175,107,139, 87,210,107,176,167,160, 23,154,119,234,197,171,141, 28,241, 95,190,124, 25,  0,112,237,218, 53,167,103,224,
-250,245,235,206,129,213, 31, 40, 20, 10,194, 37,  2,170, 63,135,155,165, 80, 16, 62,249,  0, 92,177,106,213,170, 58,177,  0,203,
-151, 47,247,217,250,175, 79, 24,254, 66, 44, 22,227,218,197, 11,232,222,163, 39, 88,171,  9,196,106,131,176,121, 11, 52, 31, 50,
- 20,205,  6, 63,  4, 86,103,133, 77,111,  2,181,218,  0, 27,139,133, 43, 63,198,212,233, 83, 33, 22,139,221,202,179,110,136,228,
-245,187,238,206,139,253,208,253,185,241,241,241,210,130,130,  2, 21, 55,  6,140, 28, 57,210,237,189,226, 65,254, 32,132,176,  0,
-118,246,234,213,107,240,167,159,126,106,190,113,227,134, 49, 49, 49,241,241,162,162,162,183,244,122,125, 69,171, 86,173,228,125,
-251,246,213,248,112,239, 69,  0,186,196, 13, 31,222, 58, 99, 86,  6,206, 95, 62,175,121,102, 86,198,168,195,123,214,102, 94,173,
-209,140, 24,154,144,200,182,237, 20,243,164, 27,175,  1,235,105, 44,112,229,138,134,146,255,  4, 18,  1,221, 63, 10, 64,131,214,
-133, 63,228,207,145, 13,151, 19,192, 31, 37,160,187,124,134, 26,  0, 41, 83,172,161,  8, 17, 67, 75,173, 48, 91,173, 96, 41,139,
-150,225,225,184,172,171,226,151,193,206,  1,119,203,251,110,197,  0,248,150,137,205,157,139,191,177,233,122, 29,127, 59,105,232,
-208,161, 91, 23, 46, 92, 24, 20, 21, 21,197, 94,189,122, 21,243,250, 95,173, 67,254,190,252,134,187,251,239, 55, 28, 89,254,234,
- 39,121,114,119, 14, 95, 12,126, 84,160,206,122, 52,139,108,249,236,138,100,251,177,119, 84,249,155,  0,  2,130, 73,  3,223,150,
- 62,250, 60,255,  4, 64, 92, 95,178, 19,124,181, 99,144,  2,220,241,206,154, 76,187,243, 36,172, 75, 22,  1, 26, 46,174, 49,125,
-234, 52,245,244,169,211, 72,133,246, 83,137,173,166, 70, 69,  4,128,222, 24,  2, 82, 99,133,144, 17, 66,207,136,165,227,166,204,
-134,144, 18,175,237, 76, 76, 76, 36, 15, 60,240,  0,189, 83,239,159,221,218,207, 34, 25, 25, 25,212, 53,162,221,213, 19,224,163,
- 56, 53,103,249,187, 40, 20,234,187, 49,120,141, 25, 51,  6,127,219,148,141,119,107, 42, 49, 40,225, 97, 48,109, 35,237,109,178,
- 80,123,234, 94,136, 64,  4, 66,144, 32,  1, 86,101, 45, 67,139,177, 67,209,163, 71,143,223, 53,117, 47,103,221,231,231,231,171,
-134, 15, 31, 46,157, 57,115,102,163,126,251,220,185,115,178,189,123,247, 94, 20,  8,  4, 91, 70,141, 26,245, 30,195, 48, 55,226,
-226,226,242,156,150,140,139, 71,137, 16,  2,119,207,220,197, 19,160, 60,122,244,232,176,175,214,172,101,130,  4,193,151,146,159,
- 78, 30,200, 48,140,246,225,  9,179, 39,  2,  8,119, 16,127, 13,  0,106,181, 90,157,242,234, 41,109,129,146,242,247, 32,248,184,
-255,253, 82,  0,154, 66, 97,240, 68, 62,190, 12,112, 82,121, 42, 81,238, 81, 74,216,211,197, 42,157,201, 12,171,205,134, 30,195,
-134, 32,198, 58,220, 39, 50,108,202, 96, 20, 46,233, 15,  0, 21,231,233,112,153, 10, 32,141,144,187, 77, 38,147,  9,149, 74,229,
-252,165, 75,151,254,211, 69,185, 24,163, 80, 40,124, 74, 68,226,240, 20, 52, 89,242,146, 41,191,165, 56,238, 99,195,215, 55, 69,
-169,244, 75,211,127,236,133, 14,234,199,208,248,231, 99, 39,119,130,103,231,143,113,230, 41,231,198,177, 53,153,123, 17,214, 37,
-139,132,117, 73,241, 73,102, 68,139,191,171, 15, 94,  4, 97,153, 75, 18,131,222, 94,  7, 32, 76, 44, 83,135,119,132, 79, 43, 70,
- 93,250,159,200,161,113, 54,249,188, 42,167,  4, 52,133, 44, 71, 44,128,138,251,222, 88,121,254,174, 44,235,209,163,  7,218,189,
-248,162,116,197,238,221,170,146,247,190, 69,138,168, 37, 34, 28,197,123, 12,122, 43,230, 46,120, 13,130,208, 40,236, 88,171,192,
- 47,173,  8,198, 53, 34,111,191,205,102,133,175, 49, 64,245,149,  0, 62, 86,190,151,251, 68,206,156, 57,115,131, 82,154,217,187,
-119,239,255,171,168,168,208,  9,133, 66, 88,173, 86,218,178,101, 75,167, 71, 69,167,211, 33, 40, 40,200,233, 69,242, 32,111,116,
- 97, 97, 33, 88, 43,193,136,145,  3,223,190,124,249,178, 86,163,209, 32, 42, 42,138,237,212,169,147,150,123, 54, 85, 85, 85, 16,
-139,197, 32,132, 32, 56, 56,152,151,209,199, 41,  9,245,191,215,247,138,  6,112,159,121,  0,238,148, 82,224, 55, 49, 38,202,212,
- 72,148,221, 83,209,164, 14, 37,128,220,129,121,116,155, 76, 38,251,127, 50,153,236,255, 53, 69,251,154,240,122, 73, 83,156,115,
- 39, 97,183,234,  1, 71,138,253,122,199, 82, 26, 37,155, 97, 59,171,195,196,157,155,162,153,150, 59,121, 15,154,176,232,138,218,
-151,185,122, 47,202,132,223,114, 40,165, 36, 52, 52, 20,147, 39, 79,134,163,124, 47, 74, 93,202,247, 30,220,187,199, 89,190,119,
-108,220, 88, 56,148,222,  6,127,111,149,246, 67,242, 92,228,107,183, 19, 19,207,106,130, 60,148,128, 70,227,161,135, 30, 50, 89,
-173,214, 60,  0, 58,150,101,169,217,108, 95,248,115,227,198, 13,  0, 64,179,102,246,165,189,220,126,145, 72,228,241,254, 61,250,
-232,163,156,140,221, 44,203, 34, 34, 34,  2, 44,203, 58, 87,156, 56, 86,177, 16,163,209, 72,  1, 32, 65,144,246, 25,  0,  0, 32,
-  0, 73, 68, 65, 84, 40, 40,  8,132, 16,230,247, 24,219,  3,240, 31,124, 82, 73,  3,  0, 25, 52,104, 80, 64, 19, 11, 32,128,  0,
-  2,184,127, 96,  5, 96,  4, 32,110, 98, 35,206, 91,193, 32,222, 21,  5,  3,184, 63, 16,120,152,  1,  4, 16, 64,  0,247, 23,132,
-  0,154,241, 32,127, 61,236, 65,220, 77,197,  7, 44,  2,203,254,254,112, 29, 41,128,  0,  2,  8, 32,128, 63, 30, 66,  3,124, 17,
- 64,192,  3, 16, 64,  0,  1,  4, 16, 64,  0,  1,  4, 20,128,  0,  2,  8, 32,128,  0,  2,248,179,163,142, 75,103,206,156, 57,126,
- 71,112,186, 43,222,115,175,203,139, 30, 18,140,144,224,107, 16,  5, 85,130,101,237,203,194,  4,  2,  6, 12, 17,216,255,103,  8,
-  8, 97, 64,137,208,190,  6, 22, 86,108,221, 46,  2,165, 20, 81, 76, 75,248,216,190, 96,  0,173, 96, 15,224,169,129,125,185,151,
-  5,142, 57,181,251,241,254,  5,228,  5,228,  5,228,  5,228,  5,228,221,155,242,124, 86,  0,254,108,248,225,192, 89, 12, 27,106,
- 65,100,  4,160,209, 18,252,244,139, 24, 66, 70,136,  9,227,109,216,163,106, 13, 66, 24, 16,134,129,184, 57, 48,102, 88, 37,  0,
- 33, 30,142,167, 40, 44, 18,218,105,156,  7, 84,135, 14, 80,  0, 16, 81, 11,134,143, 26,115,241,204,175, 63,154,202,171,141, 49,
- 54,189, 17, 50,153, 44,  2, 64, 85, 64, 15,189,191,145,251,245,127, 36, 61,123,116, 87,221,184, 97,108, 84,194,167,251,  8,146,
-244,244,116,215, 60,  0,141,186,230,244,244,116,191,211,  1,  7, 16, 64,  0, 77,228,  1,224,176,246,171, 47,121,107, 19,207,206,
-156,229,245,101,109,106,121, 77,137,194, 34, 17,146, 18,109,248,229,215, 16,  4,137,132, 16, 10,132, 16,137, 40,130,  5, 22, 64,
-216, 28, 66, 24, 48,172,159, 21,226,160, 96, 80,  0,237,219,  2,143, 77, 96,177,119, 11, 63,242, 63,251,219, 25, 60,208,183,  7,
- 58,116,140,192,229,139,167,186,134,183,235,142, 86, 29,108,248,254,187,239,160, 84, 42, 43,239,246,250,120,165, 82, 57, 33, 39,
- 39,103, 59,183,157,146,146,242,168, 76, 38,219, 30,120, 53,188,227,215, 95,148,212,106, 60, 33,157,246, 88, 15, 21,203, 86,160,
-170,131, 65,117,234,248, 38,212,154,218, 99,104,236,168, 63, 44,137,165,167,167,171,230,205,155,  7, 66,  8,175,178,189,124,192,
- 37,139,105,130,114,243,  1, 52, 82,  1,243,  8, 74,145,189,106, 85,131,207,155, 75,240,227,154, 45,144,171, 33,224, 82, 75,192,
-249,156, 93, 43, 35,  6,208,180,224,178,  1,114,112,151, 27,224,158,242,  0, 48,248,125,251,193,132,113, 22, 80,  8, 32, 20,136,
- 48, 98, 56, 65,155,214, 12,132, 66,  6,193, 34,  1,122,199, 48,184,120,201,138, 97,177, 12, 90, 70,137,241,253,190, 22,  0,  0,
-  1, 53,192,158, 10,219,230,149,252,127, 45, 42, 66,183, 14,157,240,107,126,  1, 14,155, 45,208,222,212, 34, 40,184, 57,250, 12,
- 30,137,129, 35,199, 65,181, 53,  7,  0,191,220,248,119,128,248,199,228,228,228,236, 93,184,112, 33,138,138,138,184, 14, 83,  9,
-224,197,217,179,103,111, 75, 73, 73,145,201,100,178,189,127,184,151,226, 39, 37, 13, 22,106, 32,100,204, 48, 26,109,168,210,133,
-224,225,209, 83,124,186,255,155,114,191,146,180,  8,209,224, 47, 83,135,160, 91,215,199, 84, 45, 90,132,195, 98,181,226,198,141,
-155,104, 91,122,  9,197,231, 74,112,232,160,134,142, 24,249,184, 95,207, 53, 59, 59,155,186, 12,206,247,218,224, 40,  1,110,149,
-195,117, 84,  7,148,224, 46,165,  3,254, 29,223, 23,186,121,243,230,219,235, 41,220, 53,242,162, 18,  2,  2,218,  4,247,157,150,
-126, 13,114,120,182, 43,199, 59,178,100, 58,170, 33,185, 96,118,150, 14,195,166,126,234, 81,145,251,254,251,239,157,219, 73, 73,
- 73,216,185,115,167,199,237,  0,238, 60,249,187,238,115, 85,  4, 60, 42,  0,  7, 15, 28,198,200,135,135,255,110,141,102,125,200,
-159,234,154, 74,210,223,236, 83,140, 80,  0,173, 70,136,118,109, 68,104,215, 38,  8,181,181, 34,136, 69, 66,216,132,193, 24, 50,
-128, 96,208,131,  2, 48, 68,100, 79,129, 41, 10,130,136, 49,129,136,131, 96,213,  3, 86,232, 60,146,255,129,125,123,209,189,125,
-107, 28,255,229, 56, 22,189,247,118,157,246, 45,121,231,  3,202,  8,  8,134,196, 14,193,247, 59,247,250, 84,121,143,101, 89, 73,
- 81, 81,145,234,236,217,179,  8,  9,  9, 65, 72, 72,136, 52, 41, 41, 73,237,227, 96, 38,205,201,201,217,203, 17,191, 75,231,136,
-  0, 48,238,223,255,254,247,205,217,179,103, 43,  1, 36,202,100, 50,229,189,216,193, 87,175, 94, 45, 73, 75, 75,227,125,221,255,
-219,184, 86,210, 63,166,185,170,107,123, 35,194, 91,  4,131, 97, 66, 97, 48, 88, 81,161, 49, 32, 79,185,130,138, 91, 12,193,240,
- 97,163,121,245, 35, 17,174, 97,242,163, 15,170,250,245,235,131,171,215,180, 56,242,211, 81,212,214,234, 16, 30,222, 28,209,209,
- 93,193,  8, 68,176,217, 74,241,211,207,  7,232,224, 65, 15,255,161,172,155,244,244,116,213, 75, 47,189,228,220,158, 55,111, 30,
-150, 47, 95,174, 90,229,193, 42,244,137,140,238, 81, 15,128, 67, 73,167,185,185,185,112, 87, 88,233,247,132,171,149,173, 80,100,
- 73, 41,109,156, 18,192,116,125,202, 73,222,133, 31, 54,115,107,134,181,139, 96,208, 49,138,185,111,159,223,159, 21,174,100,239,
- 78, 41,240,234,  1, 56,120,224, 48,  0, 52, 90, 17, 56,240, 98,177,199,227, 15,255,171,167,223,131,  5, 33,196,175,106,123, 74,
-117, 27,136,132, 34,116,238, 80,139,154, 26, 17,142, 28,239, 12,129, 64,  0,  1, 17, 32, 72,100, 69,191,158,122,244,234, 41,  0,
-  1,131, 32, 81, 48,130,  4,  4,177, 15,154, 17, 21,201, 98,253,255,121,150,221,167,123, 91, 92, 60, 87,126, 27,249,  3,192,162,
-197,175,147, 15,222,251, 39,109, 31,255, 32, 34, 35,154,243,110,175,193, 96,144, 44, 95,190, 92,117,241,226,197, 58,250,134,201,
-100,194,227,143,243,183, 54,115,114,114,246,185,146,191, 27,180,202,204,204,172,124,249,229,151,247,220,237, 41,138,134,200,255,
-240,225,195,170,180,180, 52,222,109,139,137,142, 82,117,108, 91,141, 86, 45,195,208,169, 99, 59,132,134,133,226,226,197, 50,216,
-108, 44, 58,118,104,142, 19,191,229, 99,205,233, 98, 73,234, 51,179, 60, 14,166,199,142, 29,160, 79, 78,234,131, 46, 93, 58,225,
-228,111, 23,113,228,200,111,184,113,179,  6,148,  2,145,145, 33,208,235,107, 49,120,112, 63, 84, 86, 86,161,236,200, 79,248,234,
-191,103, 36, 51,255,194, 95, 81,185,199, 33,  1,236,197,167, 56,124,242,201, 39,220,182, 79, 94,128,244,244,116,234,234, 18,118,
-181, 32, 93, 93,210, 77, 49,189,240,222,123,239,209,206,157, 59, 55, 58, 23,191, 76, 38, 35,132, 16,186,105,211, 38,143, 57,246,
- 57,100,100,100, 80,119, 30,130, 53,107,214, 72,184,226, 64,238,148, 88,185, 92, 78, 27, 74,229,234, 90,207,129, 82, 10,185, 60,
- 67,213, 24, 47, 68,125,121,195, 94,171,197,143, 31, 54,171, 67,252,  1,220,159,214,127,253, 62,212,168, 41,128,198, 42,  2, 15,
-255,171,103,131, 74,128, 63,228,207, 33, 47, 47, 15,101,101,101,  0,128,142, 29, 59, 82, 95,148,  0,  1, 53, 64, 72,108,  8, 18,
-137,240,211,241,214, 16,  8,133,104, 46,210,217,227,  0,154, 49, 40, 43,107,142,  7,251,177, 32,132, 32,229, 49, 43, 40,203,  0,
- 36,216,238,120, 67, 77,131,114,245,149,151,112, 77, 83,139,151,223,122,171,193,182, 84, 86,105,160,189,113,205, 33,139, 55,113,
-215, 39,127,  0,192,142, 29, 59, 96,179,217, 36, 79, 62,249,164,215,  1, 78,169, 84,142,169, 95,250,151,235, 48, 85, 85,117,226,
- 17, 35, 22, 47, 94, 12,165, 82, 57,246, 94,154, 10,224,200,223,151,191,249,223,198,181,146,  7, 99, 76,  8,  9,137,128, 56, 56,
-  8,221,187,119, 67,231,110,221, 80, 93,173,134, 70, 83,139,160, 32,  1,162, 34,197, 16,134, 68,120,204, 21, 15,  0, 66, 90,134,
-230,205, 90, 66,111,176,226,248,241, 98, 92,185, 86,133,171,215,106, 97, 48,137,209,165,163, 21,226, 96,  1,138,207,148,224,129,
- 30, 61,112,229,106, 53, 12,214, 22, 94,101, 58,136,142,122,219,239,235,116, 64, 67, 50,253,145,197, 89,255,243,230,205,187,109,
-255, 75, 47,189,228, 87, 44,128, 59, 18,173, 63,119,220, 84, 94,133,252,252,124, 21, 26, 89,144,103,239,222,189, 52, 39, 39,  7,
- 41, 41, 41,112, 55, 29,192,199, 83,197,145, 63,  0, 20, 22, 22,170, 24,134,169,211,166, 53,107,214, 72,248, 24, 61,241,241,241,
- 82, 78, 78, 83,120, 92, 54,189, 20,134, 41,203,117,110,137,191, 99, 20,227, 24,165,248, 61,222,164,164,164, 58, 94,146, 71, 30,
-121,164,206,189, 10,184,253,239, 29,248, 28,  3,208, 84, 30,129,166, 68,113,177, 93,177, 40, 43, 43,243, 73,  9, 16, 10,133, 16,
-  9, 68, 16,137,  8, 70,143,  4,244, 58, 19,206,159, 11,130, 72, 40,130,208, 38, 68,220,112,138, 32,145,  8,  2,  1,  3, 80,  2,
-141, 22,248,241,168, 16, 44,203,  2,184,209,160,220,163, 63,157, 67,109,109,195, 25, 56, 63, 90,188,152,  6,  7,139, 97, 48, 84,
-193,198, 90,121, 95,231,209,163, 71, 27, 86, 58,244,122, 94, 68, 83,223,245,239, 78, 51,220,186,117,171,235,249,202,187,225,  5,
-112,231,226,119, 37,255,248,248,120,222, 85,232, 58,117,108,171, 98,152, 75,176,218, 88,152, 45, 86,220,184,169,129, 40, 72, 12,
-147,201,  2,139,213,  6,171,149,133,213, 70, 81,169,189,233, 85, 86,144, 72,  7,113, 72, 39, 84, 84, 84,161,186, 70, 15,141,214,
-128, 22, 45,  7, 98,196,131, 15,162,240,224, 78,116, 48, 91, 81, 85, 93,133, 94,189,122, 32, 56, 72,  8, 93,141,230,143, 50, 86,
- 72, 40,165,206,185,127, 87,172, 88,177,194,175, 88,128,121,243,230,213,241, 38,212, 63,198, 87,  1,176,151,122,230, 44,218, 40,
-140, 29, 59,182, 78,127,229, 12,132,210,210, 82,149, 82,169,244,171, 48,149, 82,169,116,146, 63, 55, 29,176,121,243,102,175,228,
- 90,223, 83,149,159,159,175,226,  2,223,228,114, 57, 45, 40, 40, 80,165,166,166, 58,143, 23, 20, 20,168,  8,241,220,188,248,248,
-120,169,107,153,225,140,140, 12,234,233, 94,121, 27, 15, 83, 82, 82,144, 28,175,196, 70,  0, 83,151,235,240,208,107,181, 30,239,
-253,176,169,158,239, 85,253, 57,126,111, 49,  1,  1,220,121,111, 64, 67, 30,128,223,213,191,227,206,210,111,140,245, 95,207, 98,
- 69,113,113, 49, 86,172, 88,193,187,212,164, 64, 32, 68,220, 48, 22,  2, 70,136, 31,139,196, 56, 93, 44,198,196,241,192,163,143,
-  0,147,146,  8,218,183, 13,130, 56, 40, 24,226,160, 96,132,136,131,209,177,125, 48,196, 65, 98,136,131, 60,151,196,124,115,209,
- 27,100,233,135,239,146,134,  6,146, 30,221,187, 34, 60, 34, 12, 98,214,140, 90,189,229,119,239, 20,  7, 14, 28,216,123,224,192,
-129, 58,132,239,250,  1,128,138,138, 10, 76,154, 52,233,174, 89,249,133,133,133, 42, 87,107,136,219,  7,  0,195,135, 15,247,201,
-146,179,217,  0,157,222,  2,157,206,140,234,106, 19,174, 95,215,226,202,149,155,168,169, 49,161,182,214,130,218, 90, 51,116, 58,
- 11,170, 42,189,175,200, 52,153,172, 48, 26,109,176, 88,204,104,222, 60,  8,157, 59,182, 64,104, 88, 24,  0, 32,186, 71, 55,116,
-234,208,  2,225, 45,196,160,212,  6,139,149,133,201,164,251, 67, 12, 36,233,233,233,170,249,243,231,123, 36,115,110,105, 32, 79,
-239,132,212,161, 52,184,197,242,229,203,177,106,213, 42,159, 75, 13,219,221,226,114,234,250,225,  8,181,172,172, 12, 57, 57, 57,
- 62,151,162,221,187,119, 47,205,205,205,117, 37,127,200,100, 50,146,156,156,236,241,239,230,204,153,  3, 66,136,211,170, 95,189,
-122,181,  4,  0,226,226,226,164,174, 74,172,235,113, 74,169,243, 56,143,171,173, 99,197,187, 83, 28,188, 41, 19,  0,208,170, 85,
- 43, 16, 23,235,161,177,242,  2,184,247,200,223,221,182, 95, 30,128,123,201,242,191, 53,192,219, 32, 16,  8,124,254,187,145,195,
- 88,180,105, 29,140,234,106, 33,130,133, 86,  4,  7,  9,160, 62, 28,132,137, 82, 17,130, 68, 34, 84, 87,139,112,176, 40, 12, 45,
-196,  4, 12,195, 32, 73,102,198,227, 19, 41, 24,134,226,253,159,125,111,167, 82,169,164,130, 80, 49, 52,162, 86,  8,181, 92,198,
-217, 50,138, 49,146,209,188,255,126,240,224,193, 56,116,232,144,219, 99,161,161,161,188,  7, 75,173, 86, 59,214, 49,240, 32, 53,
- 53,213,185,191,162,162,194,249, 61, 53, 53, 21,229,229,229,119,229,121,166,165,165,169, 11, 11, 11,145,159,159,175, 98, 89, 86,
-202, 48, 12, 56,203,191,161,121, 83, 79, 40,189,116, 69,218,186,133, 94, 21, 28, 36,128,217,194,194,104,186,140, 75,151, 43,160,
-209, 86, 67,163,209,163, 66, 99, 64,133,198,128,136,168,110, 94,101, 93,191, 73,113,237,250, 77,244,233,211,  3,149, 90, 45, 68,
- 66,  6,213, 53,151,161,171,100,209,247,  1, 29,218,182,110,141,208,208, 80,  4,  7,135,224,234,181, 26, 16, 65, 36, 95,130, 37,
- 46,228,216, 36,171,  0,154,122,  5, 65, 67,214, 58, 80, 39, 22,128, 47,212,  0, 48,119,238,220,219,188, 10, 46,211, 12,106,127,
-218, 57,101,202,148, 58, 22,108, 78, 78,142,147,188,158,122,234, 41, 36, 38, 38, 18,190,137, 83,220, 88,254, 78,212,247, 52,212,
-199,160, 65,131,  8,165,212,105,229, 23, 22, 22,170,  8, 33,206,210,192,169,169,169,234,252,252,124,228,231,231,171, 82, 83, 83,
-201,225,195,135,157,199, 87,174, 92,217,160,220,252,252,124, 21,195, 16,105, 65,129,253,157,152, 51,103, 14,126,254,249, 39, 41,
- 71,225,  5,  5,  5, 42,238,250,249, 40, 19, 43, 87,174,196,231,210, 72, 76, 93,161,  7, 96,159, 14,112,197,212, 21,122,231,253,
- 76,147,138,  2,204,122,191, 40,237, 11, 63,170,171,116, 47,125, 21, 63,255,252, 51,255, 85,  0,119,130,248, 93, 99,  1, 26, 99,
-253,215,181,228,235,146,127, 82, 82, 18,228,114,185,215,169,128, 86,173,  4, 96,136,  0,173, 91,  9,208,179,  7,197,149, 43, 66,
- 48,  2,  2,145, 80,  8,145, 80,132, 95,143,133, 33, 42, 76,  4,129, 64,128,145,195,109,  8,  9,  9,  6,203, 82,128,218,252, 34,
-255,102,109, 59,227,122, 45,133,238,172, 26, 66, 34,192, 43,139, 23, 17, 31,  7, 54,233,165, 75,151, 84,151, 46, 93,186,237,122,
- 39, 79,158,204,107,176, 76, 73, 73, 73,172,168,168,216,195,145, 60,  0, 76,154, 52,  9,107,214,172,113,158, 83, 93, 93,141,242,
-242,114,108,219,182, 13, 41, 41, 41, 99,238, 70,231,141,139,139,147,230,231,231,171, 10, 11, 11, 85, 92,176, 88, 92, 92,156, 95,
-115,184, 51,255,146,166,222,240,191,108,208,178,106,232, 13, 22,104,131,141,160,208,194,104,180,162,186,218,132,242,155,122, 92,
-185, 90,139, 81,210,174, 94,101, 25,204,173, 80,114,254,  6,162,187,119, 65,247,238,157, 80, 81,113, 19,145, 17, 54,244,236, 25,
-142, 54,173,163, 33, 14,  9, 65,101,101, 45,142, 28, 61,133,203,101,213,104,215,169,223,125, 59,128, 80,128, 18,  2, 41,199,165,
-174,164,234,105,221, 62,117,  4, 11,222,110, 62,162,206,170,178,236,236,108,233,138, 21, 43, 84,245, 21,128,101,203,150,113,  9,
-134, 60,202,163,148, 82, 66,  8,145,203, 35, 93,218, 68,111, 35,230,156, 28,251, 20, 65,114,114, 50, 47,247,127,221, 41,133,189,
-110,201,159, 47,226,227,227,165,  5,  5,  5, 42,206,235, 48,114,228, 72,169,187,227, 92, 48,158, 55,194,230,230,214, 15, 30, 60,
-164, 34,132,128, 16,130, 65,131,  6, 74,  7, 13, 26,164,118, 81, 16, 28,231,  2,222,222, 23, 78, 30, 51, 69, 11, 78, 94,202,152,
-110,117, 30,212,148,229, 39,157,242,248, 32, 16,  3,112,255,192,171,  2,112, 47, 90,252, 28,166, 77,155,214,168,191,103, 24,  6,
-  2,129,253,211, 39,134,193,224,  1, 54,  4,  7,137,237, 10,128, 72,132, 17,195,129,224, 96, 64, 36,  8, 70,171, 86, 98,  8,  4,
- 58,216,108, 44, 88,214,119,183,189, 94,115, 13,226, 78,189,113, 94,249, 95,180, 22, 50,120,102,209,235, 62, 15, 40, 33, 33, 33,
-234,215, 95,127, 93,218,152,101,128, 50,153, 76, 41,151,203,241,194, 11, 47, 56,247,113,150,126,117,117, 53,244,122, 61,210,210,
-210,  0,  0, 95,124,241,  5, 20, 10,133,234,110, 60,219,212,212, 84, 53,203,178, 82,206,242, 31, 54,108, 88,163,  2,184, 58,117,
-237,133,162,130, 93,104,211, 42, 20,161,161,246,110,111, 50,217, 80, 93, 99,134, 70,107, 64,231,238,253,240,240,136,  4,175,207,
-100,194,132,167,200,238,239,255,143, 22, 20,158,192,168,145,  3,209,181,107, 87, 88,204, 70, 12, 30,244, 32,194,194,195,113,177,
-164, 20,101, 87, 42,113, 48,255, 55,104,107,194, 49, 57, 62,225,190,245,153,206,201,144,  3,128, 10, 32,152, 35,151, 59,  9,156,
-173, 71,250, 12, 67,236,218,130,131,151,  9,128,129,110,230, 27, 51,228,114, 10, 10,151, 72, 21,130,244,244,244, 58, 94,128,185,
-115,231,130, 16,130,140, 12,185,138, 99,127, 16, 96,224,192, 65,238,200,203,233,142,247, 70,114,124,201,191, 62,146,147,147, 49,
-118,236, 88,105, 99,250, 49, 28,115,245,195,255, 63,123, 95, 30,222, 68,181,191,255,206,100,239, 74, 91, 74,203, 94, 40, 84,144,
-173, 64, 69, 68,150,  4,202, 34, 75, 69,160, 40,139,124,145,235,109,192,237,178, 92, 69,209,251,243,222,171,160,184,  0, 94,185,
- 66,203, 85, 81,161, 98, 91,  5, 11, 22, 10,133,132, 69,212, 74,169,236, 88,160,172, 45,116, 77,211,166,217, 51,231,247, 71, 58,
- 49, 13,105, 51, 73,195,234,188,207,147, 39,201,204,228,147,153, 51,115,206,251,217,206,231, 60,252,176, 98,206,156, 57,234,166,
-246, 59,197,246,155,  4,155, 59,192, 42, 95,246, 48,  2,165,118, 85, 42,184,158,159,171,188,140, 69, 65,246, 70,151, 70, 57,142,
-201, 88,116,197,161, 16,228, 30,107,126,236,115, 87,  7,128,207,  1,184, 71, 21,128, 33,143, 14,186, 37, 49, 31,127, 89,254,206,
- 15,146, 47,168,214, 80,104, 27, 69, 59, 74,254,238,222,107,143,239, 75, 36, 82, 72,196, 18, 76,122,140,130, 84, 34,134, 76, 74,
-161,186, 74,128,252,130, 96,216, 24, 27, 58,118,240, 46,174,155,151,151, 71,106,244,  6,104,142,228,160,123, 71, 17, 78,150,248,
- 30, 23,166,105, 90, 61,104,208, 32,106,208,160, 65, 62,203, 72, 78, 78, 86,172, 93,187, 86,197,186,249,171,170,170,158,124,248,
-225,135,117,123,246,236,249,225,241,199, 31, 31, 83, 85, 85, 69, 61,253,244,211,185,201,201,201,138, 59,249,112, 54,184,250, 21,
- 78,159,125,127,230,236,228, 78,138,206,158, 70,105,241,101,208, 52,  5,155,141, 64, 42, 11, 71, 92,207,222,120, 98,114, 50,231,
-  7,189,180,130, 81, 84, 87,149,170,140, 70, 43,250,244,238,138,246,237, 90,227,202,213, 50,104, 78, 92,192,239, 69, 87,176,119,
-223,113, 92, 46, 33,120,246,175, 47,250,212,121,238,150,226, 63,204, 55, 97, 62, 31,215,127,  5, 71,121, 23, 62,199,154, 53,107,
- 28, 10,192,154, 53,107,128,226,141, 55, 29,235, 78, 94, 19, 94,129,155,198,172,150, 22,235,161, 40,170, 69,207, 30, 75,242, 77,
-145,187,167,253,238,188, 10, 46,191,117, 39,143,251,125,190,252, 45,178,214,204,177,143, 13, 35, 59, 53, 34,127,  0, 72, 30,255,
-144,253,131,230, 55,143, 10,  0, 95,  7,224,238, 65,218,202, 87,111, 10,  3,120,165,  0,220,205,  9, 31,190, 22,255,113,198,145,
-163, 18, 72,197, 98, 76, 26, 79,129,166, 40, 12, 74,176,226,196, 73, 25,104,202, 30,243,175,169,161,209, 46, 90,  0,154, 18,227,
-216,  9, 49,164, 18,192,108, 49,227,242, 21,153, 87,228,127,161,168, 16, 15,143,154,  8, 97,235,135,113,161, 40, 31,194, 27, 89,
-120,229,229,215,200,123,239,191,115, 71, 26,184,161, 94,189, 34, 33, 33, 65,181,116,233, 82,244,238,221,187, 92,163,209, 32, 33,
- 33, 65,161,209,104,240,210, 75, 47,169,146,147,147,239,138,186,246, 45, 37,126, 87, 37, 96,232,144, 17,216,248,213,167,242,182,
-209,109, 85,129,129,129,156,172,254,155,  6,216, 57,127, 81,  3,160, 54,111, 74, 37,167,127,255,  5,109,163,130, 32,149,138,160,
-211,153, 81,114,189, 22,148,176, 35,158,253,235, 28, 62, 91,138, 11,142, 46,  1, 98,159, 65,163,233,133,  5,139, 91, 66,214, 45,
- 62,165,249,243,195,157, 20,  9,255, 16,154, 39, 82,246,134,180, 91, 90,207,192, 93,155, 37, 63, 34,177, 95,171,225,186,253,197,
-227,158, 69,124,124,188, 35,225, 47,109,229,171, 55,237,243,168,  0,248,187, 30,255,237,174,239,239,213,195, 15, 10, 26, 13,133,
-128,104, 10, 17,225, 20, 18,  6, 88, 32, 21, 11, 32, 17, 91, 16, 17, 46,109, 24,  4, 40, 12, 78,176, 33,255,168,200,238, 45,224,
- 56,200,228,229,229,145, 94, 15,132, 96,201,223,254, 13,131,184,  3,190,203, 43, 65,108,156,221,114, 15,250,117,  7,150,252,253,
- 53,242,225,  7,119, 78,  9, 72, 76, 76,164,242,242,242,228, 43, 87,174, 84, 57,123,  7,252,161, 92,221,205,104, 40,246,211,226,
-107,156, 53, 91, 73, 29, 58,188,159, 84, 84, 85,192,112, 67, 15,169, 52,  2, 29,186,244,245, 73,169,184,215, 96, 47,135,237,167,
-203, 44,222,  8,199,140,128,226, 47,238,248,181,121, 74,238,187,223, 48,102,226,147, 94, 89,238,158,124,143,124, 14,192,221,165,
-  4, 52, 69,254, 30, 61,  0,127,  6, 16,216,179,250, 41,154,128,128, 32,188, 21,193,254, 67, 66, 72,197, 34, 72,196, 66, 36,141,
- 39, 32,132, 65, 88,132, 21, 86, 27,  5,134,177, 53, 12,126,158,209, 55, 70,135,  9, 83,147,161, 19,118, 71,155,160, 64,204,124,
- 34, 28,233, 91, 79, 56,148,  0,139,237,187, 59,126,253,172, 34,192,119, 25,223,189, 10,247,235,181,165,105,222,165, 82,194, 94,
-189,153, 25, 50,195,125,149,135,148,176, 87,111,222, 81,176,184, 69, 86, 63,143,150, 97,218,243,107,253,246, 12,223,239,198,195,
-189,166,  4,120, 52,128,227,227,227,249,160, 13, 15, 30, 60,120,240,224,241, 39,  3, 95,232,153,  7, 15, 30, 60,120,240,224, 21,
-  0, 30, 60,120,240,224,193,131,  7,175,  0,240,224,193,131,  7, 15, 30, 60,120,  5,128,  7, 15, 30, 60,120,240,224,113,127,160,
-209, 44,128,  5, 11, 22,248,156,193,233,174,182,182,191,229,205,154, 55,223,227,239,234,171,111, 56, 62,  7,134, 71, 59, 62,111,
-254,108,253, 77,199, 70, 42,158,245, 40,111,207,234, 63, 42,230,141, 94,180,214,241,185, 66,245, 63,248,114,126, 77,193,215,243,
-107, 10,238,206,111,242,211, 74,143,191, 59,162,250,  1, 49, 49, 49,184,116,233, 18, 18, 20, 19, 28,219,183,125,149,122,203,219,
-239,217,235,215,155,125, 94, 76, 66,161,124, 73, 73,137, 99,202,226,218,168, 40,199,241,255,107,219,246,150, 63,127,174,242,178,
-179,179,229, 57, 57, 57,141, 42, 37,142, 31, 63, 94,145,148,148,164,190, 19,253,163,176,176,208,103,121,253,251,247,191,213,231,
- 71, 45, 88,176,  0,119,243,248,114, 39,228,165,167,167,207,232,211,167, 79,250,137, 19, 39,166,206,156, 57,243,187,150,202,115,
- 94,232,200, 57, 35,255,126,109, 63, 94, 94,211,242,188, 86,  0, 92, 97,181, 90,229, 70,163, 17,148, 64,  4,138,162, 96,179, 90,
- 32, 22,  9, 33,145, 72,212, 45,213, 60,172, 86,171, 28,  0,132, 66, 97,139,100,213, 87,223, 64, 96,120,180,131,248,163, 59,198,
-  0,  0,110, 92,189,228,147,188, 61,171, 95,192,232, 69,107, 29,196,245,223,236,124,  0,192,243, 73,131,112, 63,226,136,234,  7,
- 36, 40, 38,224,136,234,  7,  0,192,132,105,179,  0,  0,151, 46,221,249,246,251, 79, 89,153,188,  8, 80,197,  1,138, 34,192,190,
-134,250,210, 87,  0,  0,131, 86,190,119, 71,219, 77,173, 86,147,156,156, 28, 24,141,198, 70,219,165, 82,169, 42, 36, 36,  4,114,
-185,252,174,156, 14, 69, 81,212,208,  7,186,180,255,130,216,108,250,162, 43, 55, 94, 35,132,236,224,237,160,102,148, 78,147,105,
-100, 97, 97, 97, 72,105,105,105,116,120,120,120,171,129,  3,  7,150,  4,  7,  7,127,229,171,188,244,244,244, 81, 51,103,206,220,
-159,158,158,254, 44,128,208,167,158,153, 63, 15,  0,115,226,196,137, 57,  0,182,  1, 96,188,145,199,174,121,194, 18,127, 75,250,
-155,235, 42,137,254,154,210,215,148, 82,194,227, 46,243,  0, 56,163,182, 78, 39,111, 27,247,144,106, 68,159, 30,  8,144,136, 64,
-  8,129,205, 70,112,242,220,101, 92, 60,126, 80, 33,147,136, 32, 16,  8,124, 34,239, 32,233, 37,121,175,238,197,170,147, 69, 93,
- 21,245,166, 24,159,137, 31,  0,100,161, 17,168,175,190,225, 32,254,230, 60,  2, 92, 44,213, 65,179, 94,197,158,213, 47, 56, 58,
- 82, 83,199, 53, 55,199,210,245, 63,197, 98, 49,  0,123,153, 76,134,177,247,111,155,205,230, 56,127, 90, 32,226,108, 69,  3, 64,
-219, 54,246, 82,157,230,218, 26,152,172, 86,  0,128,206,106,151,215,101,204, 95,208,173, 87,127, 78,196, 15,  0,253,134,140,194,
- 17,213, 15, 14,226,111,234,184,219,217,126,  0,240, 66, 89, 25,  1,128,177,129,129,200,173,175, 87,177,196, 15,  0,191,239,222,
-115,211,113,241,109,219,114, 58, 79,109, 96,165,188,160,242, 87,148, 92, 57,134,238,157,  7, 99,176, 84,238,245, 51,156,157,157,
-253,248,206,157, 59, 89,242,183,  2, 48,  2,  8,  0,192, 24,141, 70,161, 76, 38, 67,109,109,173,220,157, 39,224, 14,147,127,212,
- 67,241,125,118,230,126,189, 62,168,190,228, 12,134, 38, 47, 72,167, 40,106, 14, 33,100,219,221, 54, 48,229,229,229,145,150,212,
-167,224,178, 24, 88,115,176, 88, 44,242,252,252,124,213,169, 83,167, 28,219, 42, 43, 43, 81, 84, 84,132,182,109,219,126, 41,151,
-203, 21,193,193,193, 92,239, 47,157,158,158,254, 47,  0,143, 12, 29, 59, 89,150,158,158, 30,245,212, 51,243,131,  1,216,  0,176,
- 15,238,  3, 13,199, 13,231,122,125,108,127, 83, 42,149,164,169,254,198, 30,231,169,191, 41,149, 74,114,224,167,124,  8,  4, 66,
-216,108, 86,104,235,116,152, 57,245,113,242,193,  7, 31,180,136,176, 93,149,138,150,222, 23, 30,158,225,110,217, 95, 22,156, 42,
-  1,214, 27,204,242, 81, 73, 51, 85, 29,219,132, 34, 64, 42,  4,195, 48,176, 49,128, 80, 64, 33, 60,180,  7,122,117,239,164,202,
-203,253, 65, 97,179,212,203,189, 85,  2,204,102,179,188,103,175,139,170,126, 61, 46, 66, 64,219, 84,234, 35,237, 21, 98,145,200,
- 43, 25,245,213, 55, 32, 11,141, 64,104, 72, 48,  0, 56,222,221, 29, 23,221, 49,198,163, 55, 96,207,234, 23, 48,104,214,171,248,
-191, 39,167,  0,128,227,221,221,113,255,205,206,247, 74,187, 22,  8,  4,232,208,161,  3,  4,  2,  1,204,102, 51,234,235,235, 97,
-179,217,160,209,104,124,186,185, 65, 66,  1, 62, 91,179, 21,146, 80,160,236, 18,240,171,174,  4, 21, 55,206,227,171,213,175,121,
-101,245,247, 27, 50, 10, 29,218,217, 67, 36, 29,220,144,127, 76, 76,140, 35, 28,  0,  0,215,174, 93,243, 75,251,113, 41,174,250,
- 66, 89, 25, 25, 27, 24,136,183, 94,120, 30,  0,240,150, 19,241,111, 42, 42,106, 76,254, 94, 84,107,221,127,105,147,188,243, 51,
- 66,213,171,157,102,195,196, 36, 66,194, 16,156,169,220,139,207,223,207, 80, 76,235,155,202,245, 25, 20,230,228,228,108, 51, 24,
- 12,216,184,113,163,113,238,220,185, 82,  0, 65,  0,152,141, 27, 55,154,231,206,157, 43, 52, 24, 12,144, 74,165,170,164,164,164,
- 22, 13,116,223,125,247,157,124,247,238,221,170,150,214,178,119, 60, 59, 98,250,255,125,252,214, 43,178, 86,167,191,134,236,247,
-125,248,231,200,176,224,151,182, 87,252,187,193,242,188,171,200, 63, 35, 35,  3, 26,205,104,146,153,153,236,245,181,127,246,217,
-103,242,150,144, 77,125,125,189, 60, 59, 59, 91, 85, 87, 87,231,118,255,245,235,215,145,149,149,165,234,217,179,167, 98,240,224,
-193,158,158, 27, 42, 61, 61,253,171,161, 99, 39, 79, 47, 42, 60, 44,236,208, 46,218,250,212, 51,243, 27,141,187,251,126,248, 14,
-125,250,244,233,145,158,158,254, 88,159, 62,125,178,  1,224,208,161, 67,205,146, 42,151,254,166, 84, 42,  9, 40, 10,240, 80,229,
-111,253,250,245,228, 70,121, 37, 10, 79,158,118,108, 51, 26, 77,120,239,227, 52,157,114,238, 12,158,176,239, 99,220,148,  4, 88,
- 87, 87, 39, 31, 58,230,  9, 85,143, 78, 17,144,136,104, 48, 12,131, 27, 55,110,224,196,177, 66,152,173, 12, 24,134, 32, 34, 52,
-  0, 99, 30,155,168, 50,152,172, 94,255,161, 68, 84,142,216, 78, 55,  0,  1,133,  7,187, 95,133, 68, 88,230,181,229,239, 76,254,
- 55, 89,120,181,117,184,113,245, 18,100,161, 17, 77,122,  5,154, 35, 47, 87,124,241,205,119,120, 62,105, 16,  6,205,122,181, 73,
-171,214, 29,196, 98, 49,  4,  2,  1, 66, 66, 66, 80, 92, 92, 12,141, 70, 99, 87,164,124, 36,255,182,109,162, 16, 36, 20,224,137,
- 23,223,198, 99, 51,135, 96,199,201, 18,220, 48,160,197,228,239,138,107,165, 55,112,234,200,143,136, 12, 11,177,147,191, 80,224,
-151,246, 27, 55,245,255,  0,  0, 97, 66,145, 87,228, 15,  0,255, 88,251, 95,252, 99,237,127, 29,228,159, 91, 95,143,151,199, 76,
-180,239,140, 20,115,186,238, 47, 46,191, 43,255,235,146, 71, 84,207,116,126, 14, 34, 58,  8,129,  8,  0, 13,  1,218, 71, 61,138,
- 23,222, 90,172, 42,110,183,154,147, 26,161, 86,171, 45,  0,240,197, 23, 95,232,  1, 72,217,101,148, 55,110,220,200,  0,  8,112,
- 94, 86, 89,173, 86,251, 20,151,211,235,245,114,111,182,115,176,252,135, 62, 52, 32, 94,159,249,221, 86,101,255,222,113,130,250,
-211,123,113,169,188, 14,215,107,244, 96,  8,241, 41, 17, 56, 37, 37,133, 36, 39,103,146,205,155, 55,251,181,144,152, 19,249, 35,
- 60, 60,207, 39, 25,249,249,249,170,212,212, 84,138,162, 40,135, 50,224,229, 57,220, 68,254, 71,142, 28,193,204,153, 51,157, 61,
-  4, 56,123,246,172, 74,175,215, 55,187, 96, 86,122,122,250, 11, 67,199, 78,158,184,124,217, 34, 97,102,102, 38,254,247,241,  7,
-194,  6,143,145,131,252, 51, 51, 51,177,118,237, 90,244,233,211, 39,219, 83,127,115, 37,255,166,250,219, 99,143, 54,120,  1,131,
-  3, 61,202,251,240,227,117, 14,242, 47,175,172, 66,121,101, 21,180,117, 58,136, 68,194,160,117, 27,191, 54,186, 90,241, 60,238,
- 13,196,199,199,223,244,106, 86,  1,176,217,108, 36, 34,166, 47, 98,162, 91,193,104,177,129,162,128,220,220, 93,248,242,139,141,
- 56,126,236, 24, 94, 94,188, 16,  2,  1, 13,198,198, 32, 36, 64,130,152,190, 67, 85,  6,131,129,115,  7,179, 88, 44,242, 94,221,
- 47,171, 66,130,244,248,236,139,114,208, 20,193,160, 62,191,171, 44, 22,139, 87,157,212, 29,249,179,196,111,208, 86, 53, 82, 16,
-180,181,117, 30,229,185,235, 76,108, 71,202,223,252,110, 35,130,251,226, 27,110,229,123, 99, 99, 99, 17, 17, 17,129,218,218, 90,
-136,197, 98,208, 52, 13,131,193,  0,141, 70,  3,129, 64,192, 14,204,156,175,249,219,109, 91,177,112,205,110,108,253,248, 13,180,
-109, 19,133,128,192,112, 92,181,149,224,171,213,175, 33,168, 97,208, 16,112,148,231,142,252, 89,226,215,150, 94, 64,143, 14,109,
- 80,167, 55, 66, 18, 32,  1,108, 54,143,249,  0,158,218,239,181, 13, 59,112,234,232, 79,232,221,245, 65,104,109,158,149, 70,150,
-252,127,223,189,  7,255, 88,251, 95,199,246,220,250,122,228,214,215,163, 88,249, 47,236, 62,125, 28,189,  6,117,  5,170, 60, 47,
-205,156,126,110,165,124,193, 75,163, 84,145,129, 61, 97, 32,117,128,169, 28, 98, 83, 53, 76,182, 58, 24, 25,  3, 24,113, 16,218,
- 15, 75, 64,214,111, 43, 60, 13,116,212,150, 45, 91, 96, 52, 26,161, 84, 42,  3,148, 74, 37, 96, 15,  1, 64,169, 84,162,225,123,
-131,  5,101,196,150, 45, 91,188,238,180,103,207,158,149, 47, 94,188, 88,245,209, 71, 31, 17,138,162, 84,  0,112,240,224, 65,178,
- 98,197, 10,242,198, 27,111,248,180, 52,115,176,132,222,248,223, 87,159,145,141,109,111, 18, 28, 62,123,  3, 59, 46,209,120,117,
-103,153,233, 95,106,157,182,222,130,255,243, 69,166, 70, 51,250, 86, 90,254,  8, 15,207,195,172, 89,179,188, 94,141,210,153,240,
-215,175, 95, 79,177,203, 73,115,197,225,195,135,229,101,101,220,140, 18,179,217,140, 19, 39, 78,236,107,238,121,  1, 32,239,208,
- 46, 90,156,156,156, 12,  0, 40, 40, 40,192,190, 31,190,147, 94, 43,189,193,176,228, 15,  0,201,201,201,142,254,118,226,196,137,
-213, 45,233,111,239,205,157,136,147, 23,174, 34,186,107, 91,160, 94,207,249,218,203, 43,171, 96,177, 88, 27,198,106, 43, 44, 22,
- 43,174, 94,190, 36,109,201, 61,117,245, 30,240,222,132,187, 11,141, 92, 81, 38,147,  9,253,123,244, 80,  5,200, 68, 96, 24,  2,
- 27,  3,252,120,240, 16,254,245,214,219, 96,  8,112,238,252,121, 28, 63,246, 27,122,247,238,  7,129,128,194,  3, 93, 59,160,248,
-168, 21, 50,142,139,227,137,133,229,136,139, 41,  5,132, 20,174, 94,183,  0, 66, 10,125,123, 92, 70,254,137,114, 16,180,247,233,
-  2,156,221,251,238, 60,  3,  6,109, 85,163,217,  0,158,224,236,222,119,167,105,231,111,126, 23,163, 23,173,117,155,197,238, 12,
-171,213,138,128,128,  0,208, 52,141,176,176, 48,232,245,122,212,215,219,151,  1,142,140,140, 68, 85, 85,149, 87, 11,112, 24, 53,
-192, 32,153, 12, 47,127,124, 16,163,251,  1,151, 11,129, 95, 27,246,189,252,241, 65,252,103,145,  2, 54,198,230,117,251,157, 58,
-242,163,227,243,168,129, 61, 32, 12,166,145,171, 62,141,254, 61, 58, 34, 36, 72,130, 47,178,242,144,160,152,128,107,110,102,  1,
-120,106,191,236,211,  4,184, 14, 36,141,162,176, 97, 71, 49, 34,194,186, 96,202,163, 20,167,246, 99,221,253,185,245,127, 44,157,
- 76,254,185, 26,104,175,  5,245,215, 55, 65,254,245, 22, 64, 27, 64,229,175,192,218,168, 40,234,127,205,  4,  2, 98,167,  6,169,
- 58,183, 26,136, 90,155, 14, 38,205,121,124,117, 37, 29,135,146, 52,120,240, 89,  5,198,188, 24,  4, 89,216,  3,144, 10,195, 32,
- 76,210,226,215,239,126, 37, 15, 37, 60,212,212, 32,229,248, 15,154,166, 65,  8, 49, 55, 40,209, 70,154,166,245,132,144,112,216,
-147,184,124,158, 94,219,163, 71, 15,245,152, 49, 99, 20, 85, 85, 85,170,220,220, 92,187,226,147,155,139,158, 61,123,162, 71,143,
- 30, 62, 45,207, 92,103, 98, 94,154,247,143,255,108,127,127, 66, 52, 77,140, 90,252,117,115,145,197,106,177,172, 53,217,176,130,
- 16, 82,237,139,204,201,147,205,183,156,252,135, 15, 31,174,246, 86, 78,126,126,126,163,144,  9,235,  5,224,186,170,164,205,102,
-243, 74, 97,184,120,241, 34, 30,126,248,225,166,158, 23, 41,128,  7,  1,  8, 71, 78,152, 82, 83, 92, 92,220,170,160,160,  0,153,
-153,153, 24, 88, 92, 76, 23, 20, 20,  0,  0,  6, 14, 28,136,113, 35, 18, 16, 18, 36,193,218,207,183,150,207,156, 57,115,217,186,
-117,235, 22,121,219,223,174,111,123, 23,193,189,164,  8,234,190, 16, 25,239, 62,139,126,189,163,241,192,196,183,145,154,154, 74,
- 53,151, 37,174,173,173,131, 84, 42,  1,  0,136, 68, 66,232,245, 70,191,222, 91,158,244,239, 12,188, 94, 12,136, 97, 24,  4, 72,
-196, 48, 91,  9,104, 10,160, 41,224,205,127,191, 13, 27,  3,212,215,235,112,227,198,117, 68, 69, 69,131, 16,  6, 86, 43, 32, 21,
-  9, 33, 16,113,115,193, 90,173, 86,249,131,177,215, 84,173,195,106,  1,138,178,235,198, 20, 64, 81,  4,  3,122,157, 83,253,114,
- 60, 74,225,237,140,  0,214,186,111, 42, 36,192,197,250,119,213,162,155, 34,126,111,172,127,192,158, 48,212,166, 77, 27, 72, 36,
- 18,135,203,144, 77,252, 11, 13, 13,133, 72, 36,194,213,171, 87, 33,226, 40,239,243,188,253,120,118,226,  8,176,230, 77,145,213,
-238,254,  7,  0,121, 28, 16,242,182, 10,139,254, 62,  4, 97, 94, 92,239,181, 82,123,178, 98,167, 54,225,208,152, 76, 16,134,  8,
- 96,172,208,  3, 52,141,182,157, 59, 96,247,190, 95,125,106,191,255, 91,178, 28, 23,127,220, 11,225, 13,160, 38, 10,  8,160,105,
- 12,142,233,130,145, 35,162, 56,201,113,141,245,111,122,242, 89,124,107,250, 29,232,102,  4,126, 17,  2, 65, 66, 96,210, 64,116,
-152,196,205,120,141,109, 31, 14,179,185, 26, 34,171,  5, 95, 93, 73,199, 79,115, 67, 49,252,137,199,209,163, 77, 79,197,201,221,
-106, 85,255,228,122,136,204,245,176,246, 96, 80, 81,198, 45,105,180, 65,121, 51,206,157, 59, 55,  8,128,134, 16, 34,  2,128,185,
-115,231,182,184,182,198,148, 41, 83,212,135, 14, 29, 82,156, 57,115, 70, 21, 16, 16,128,128,128,  0,204,154, 53,203,167, 65,148,
-162,168,232,137, 19, 39,110,248,251,223,255, 78,191,188,232, 37,166, 55,115,158, 54,153, 45,245,102, 27,249,187, 55,114, 82, 82,
- 82,136, 70, 51, 26,147, 39,155, 49,107,214, 44,202,215,243,185,149,228,239,206,221,191,126,253,122, 74,169, 84,146,121,243,230,
-113, 58, 95,157, 78,215,200,237,239,140,197,139, 23, 99,241, 98,251,162, 69,  9,  9,  9,206,199, 75,154, 16,215, 14, 64, 76,131,
- 82, 24, 48,110,234,190,156,179,102,  0,  0, 32,  0, 73, 68, 65, 84,108, 99,215,174, 93,165,153,153,153, 96,201, 63, 57, 57, 25,
- 81,109,219, 58,247,183, 29,112, 10, 17,112,233,111, 41,147,134,227,231,210,114,  4,247, 11, 70, 73,238,  5, 64, 42,193,212, 23,
-231, 32,188,195, 68,142, 99,179, 13, 37,215,203,172, 34,145, 80,200,122,  0,  0,224,234,229, 75, 45,186,175, 77,133, 14,120,133,
-224,206, 41,  4,174, 74,  0,237,206,196, 33,132,128, 33,128,141,177, 43,  1, 20,  5,124,247,109, 22,158,152, 50, 13,173, 35,219,
- 56,  6, 64,226,197, 90,217,  2,186, 28,189,186, 93,117,124,239,219, 59,192,225, 36, 27,240, 96, 49,  4,116,185,215, 23,228,234,
-238,119,183,223, 27,235,223,213,221,239,110,191,243, 92,246,230, 80, 91, 91,139,186,186, 58,152, 76, 38, 48, 12,131,138,138, 10,
-135,251, 95,175,215, 67,167,211,121, 21,  2,216,250,241, 27, 80,159,  4,180,151,  0,139,  1,248,207, 82,133,195,253,127,180, 16,
-248,237,250,143, 16,120,217,126,218,210, 11,  8, 15, 13, 68, 68,120, 32, 30,136,235,137,226,139, 21, 40, 42,169, 66,167,136, 80,
-152,202,202,113,254,220,249, 70,181,  0,184,180,223, 16,249,227, 24,170,152,129,173,219, 51,160, 58,144,129,244, 85, 75, 48,117,
-201, 10, 28,183,  0, 21, 85,229,156,218,207, 57,214,255,204,144,135, 49,235,193,206,200,216,186, 15,199,143, 95,194,170, 19,  5,
-216, 50,122, 14,240,233, 97,148,148, 84, 52,170,  5,208, 20, 58, 24, 37,176,153, 43, 97, 54,107,  1,  0, 81,237, 59,162, 71,207,
-158,138, 90,153, 61, 23,195,192,232, 65,155,234, 33,171, 23,160,236,250, 13, 79,132,106,247,200, 24,141, 48, 26,141, 82,  0,102,
-  0,193, 70,163, 49,196,117, 74,160,175,208,235,245,242,  3,  7, 14,168,122,246,236,137,217,179,103, 43, 42, 43, 43,145,155,155,
-203,185,179, 81, 20, 53, 84, 34,145,232,130,131,131,173,163, 71,143,190,190,116,233,210,118,203,150, 45, 43,254,181,240,248,248,
- 45,167, 76,103, 45, 12,188, 94,143,245, 86,184,252,253, 73,254,174,214, 63,155,163,224,236,  5,224, 34, 67, 36,250, 67, 37, 95,
-181,106,149,227,229,238, 59,224,152,225,211,212,189, 17, 55,188,104,  0, 66,109,233,  5,183,238,116,182,191, 21, 30, 45,188, 56,
-115,230,204, 20,111,250,219,176,135, 30, 64,226,163,113, 88,254,239, 15,240,225,154, 28,252,191, 77,251, 48,127,100,  2,110,124,
-159,  3,173,166,214, 35,217,166,166,166, 82,201, 73,227, 96,177, 88, 11, 45, 22,171,213, 89,  1,  0,128, 21,111,190,230, 51, 97,
-243, 68,127,103,225, 46,246,239,234, 21,104,164,  0,208, 52, 13,173, 78, 15,  1, 77,193,106,181,129, 33,  4, 86,198,158, 68,122,
-236,183, 66,140, 28, 53,214,238, 38, 35,  4,  2, 90,128, 58,189, 25, 86,179,201,179,134,105,179,201,187,180,191,174,138, 12,215,
- 58,180,140, 33,131,130,236,221,134,162, 64, 81,  4,253,123,158, 87, 89,109, 54, 57,215,139, 99,173,251,230,146,  1,125,178, 94,
-155, 73,174,241,  6, 97, 97, 97,168,168,168,128, 68, 34, 65, 93, 93, 29, 34, 35, 35, 29, 73,129, 70,163, 17, 53, 53, 53, 94, 41,
-  0, 41,203,183,224, 63, 75, 21,  8,141,  1,212, 39,129,151, 86,170, 16, 36, 20, 96,202,223,222,193, 53,230,  6, 54,175,122,  5,
-  2,154,187, 60,214,250, 31, 56, 48, 14,145, 93, 99,208, 38,178, 53,196, 52,  5, 43, 69, 80, 81,111,128,166,206,232, 83,251,125,
-248,238, 54, 76,238,217,  5, 33, 33, 17,  8,136,108,  7, 75,181,  6,133, 59,190, 70, 77,245, 21,159, 30,226,207,222,125,  1, 88,
-148,  8,161,213,140,152,122,160, 92, 80,139,255, 92,255, 21, 16,135,112,150,113,116,251,207,138, 74,218,128, 43, 98, 61, 18,186,
- 41,240,224,156, 32, 20,135,169, 85,145,145,133,170,142,131,139,161,165,235, 96, 34,  6,232, 55, 49,144,  6,  5,115,177,252,157,
-  7,120,118, 22,128,216, 95, 29,119,215,174, 93,  0,128, 89,179,102, 41,122,244,232,161,126,226,137, 39, 28, 22, 35, 23,242,143,
-140,140,220,185, 97,195,134,192,212,212, 84,193,162, 69,139,176,112,225, 66,114,248,240,225,193,132,144, 92,189,133,244, 36,132,
-252,226,189, 53, 23,214,164,219,223,215,132, 64,127,146,191, 43,193, 59, 43, 44,235,215,175,167,242,243,243, 57,185,246,175, 93,
-187,118,152,253,156,158,158,238,120,185,110, 99, 17, 30, 30, 14,  0, 77, 13,130,215,  0,212,  0,160,175,149,222,192, 79, 63,253,
-228,136,249, 15, 28, 56, 16,  0,144,153,153,137,111,178,115,160,169, 51,234,  1,172,128,125,106, 32,231,254,246,253,214,127, 98,
-236,210, 23, 49,126,252, 40,180,150,  8, 80, 71, 17,228, 22, 93,197, 79, 39, 75,188, 34,234,  5,115,103, 60, 84,124,254,188,240,
-234,229, 75, 96, 95, 43,222,124,173, 89, 75,158,199,221, 77,252,174,219,220,161, 81,  8, 64, 34,145,224,220,233,227,138,152,118,
-225, 42,153, 72,  8,155,141,  1, 69, 81,160, 40, 32, 69,249, 60,  8, 97, 96,107,168,  7,160, 55, 26,113,166,168, 24, 98,177,103,
- 39,182,213, 82,141,254, 15, 94,116, 30, 69,241,220,162,139,248,118, 83,119,135,238,156,208,251,  2,126, 62,214, 19, 66, 65,164,
- 87,214,191, 59,226, 55,104,171,  0,192, 39,235,223, 93, 71,203,223,252, 46,  0,112,182,254,  1,251, 60,255,232,232,104,152, 76,
- 38,148,149,149,193,102,179,161,117,235,214,168,170,170, 66,235,214,173, 27,218,149, 59, 97, 87,220, 56,143, 55,222, 86, 65,123,
-  9,120,127,201, 48,232,172, 54, 44, 94,153,137,143,150, 38, 99,201,170, 29, 16, 82, 20,188,224,127,104, 75, 47,160,109,235, 86,
- 16, 65,  4, 27, 40, 92,191,120, 10,151,203,181,136,141, 12,199,247, 71, 15,227,204,105,120,109,253, 79,157,183, 24,162,112,128,
- 22,  0, 27,115, 46,226,219, 79, 94,198,188,119, 83,177,120, 82, 63, 60, 63,170,179, 87,237,151, 91, 95,143, 15,147,166,  3, 53,
- 82,128, 18,  1, 31,126,128,105,191, 30,196,238, 81, 11, 64,189,243, 34,168,159, 95,225,100,253,  3,192,111,215, 35,240,176, 65,
- 11,157, 76,  0,189, 84,138,216,169, 34,152,136,  1, 90, 90,  4, 43,226, 64,108,122, 88, 42,175,227,199,143,181,152, 53, 51,246,
-142,116,218,130,130,  2,210, 64, 12,212,148, 41, 83,212,118,223,152, 29,195,134, 13,163,134, 13, 27,198,133,252, 31,109,215,174,
-221,174,119,222,121, 39,240,220,185,115, 16,137, 68,  8,  9,  9,193,241,227,199, 45,132,144,138,150,156, 95,115,115,242,125,241,
- 14,248,147,252, 93,173,127, 59,177,222, 60,125,144, 75, 46, 64,114,114,242,185,111,190,249,102,136,213,202,109,134,147, 84, 42,
-157,215,204,238, 58,  0, 23,  1, 12, 44, 42, 60, 12,231,152,255,115,243,166, 99, 87,215,174, 96,195,  1, 59,187,118, 13,152, 57,
-115,230,231,222,244,183, 39, 19, 31, 70, 40, 19,  6, 61, 68,248,118,245,139,248,100,199,111,120,121,220, 80,204, 93,149,142,105,
- 43,190,242,202,  2,119, 46, 38,228,110, 27, 63,127,255,254, 68, 35, 15,128, 64, 32,160,106,174,159,199,133,171, 85, 16,138,  4,
-176,218, 24, 88,172, 54, 28, 61, 90,128, 47,191,252, 28,102, 27,129,197,198, 64, 44,164, 81,174,209,161,228,204, 79, 10,153, 76,
-166,246, 64,132,242,158,177,151,255,176,254,237, 67, 21,190,221, 20,103, 31,227,104,  2,208,  4, 52,205, 96,112,191, 51, 42, 27,
-  7, 47,128, 59,235,223,121, 22, 64, 96,120,180, 87,228,239,206,250,119,206,170, 29,189,104,173, 87,228,101, 31, 20, 53,208,233,
-116, 16,137, 68, 14,235,159, 97, 24,199,187,183, 10,192, 87,171, 95,195,209,146,253,  8,138,182, 39,253,  5, 11,  5,168,184,113,
- 30, 33, 18, 17,106,170,175, 65, 64, 83, 16,210,220,194,207,172,245,223, 49, 60, 24,167,139, 47,194,106, 54, 67, 34, 20, 67,167,
- 51,226,123,213, 97, 36, 40, 38,120, 69,254,108,251, 61,254,194, 91,216,252,159,143,160,103,128,142,177, 29,112,242,212,207, 88,
- 60,169,159, 79,237,  7,  0,139, 99, 19,176,253,220, 62, 64,107,  5,164,173,177, 39,255, 52,168,119, 94,196,218,168, 40,138, 43,
-249,  3,192,204,238, 75,213, 63,238,201,  7,204,117,208, 81,117,208,208, 58,104,133, 22, 88,108,181,144, 24,245,144,150, 94,196,
-150,101,231, 16, 19, 31,135,102, 18,  0, 27, 65,230,148,249, 42,149, 74, 33,149, 74,221,238,227,138, 13, 27, 54, 96,195,134, 13,
- 45,234,204,193,193,193, 47,157, 63,127, 62, 48, 36, 36,  4, 50,153, 12,225,225,225,168,168,168,  0, 69, 81,122,127, 14, 26,172,
-197,159,151,151, 71,  0,123, 66,160, 55, 73,129,254, 38,255,207, 62,251, 76, 78, 60,207,117,231, 52, 35, 32, 48, 48, 48, 69, 40,
- 20, 94,112,221,190,106,213,170, 70,150, 63,  0,116,238,220, 25,137,137,137, 27, 61,217, 63,215, 74,111, 52,202,246,127,227, 31,
-139, 32, 17,138, 17, 21, 21,  5,118,118, 64,195,254, 64,111,250,219,179,242,190, 88,248,193, 71,168, 43, 43, 71,100, 72, 27,156,
- 58,125,  5,115, 87,165, 35, 53, 53,149,242,133,172,217,223, 57,255,222, 89, 14,239,  9,184, 55,240,219,111,191, 53, 91, 12,168,
- 73, 15, 64,195, 32,162, 46, 80,111, 83, 16,146,164,138,105, 23,129,224,  0,  9, 30,236, 29,143,  7,123,245,131,144,  6,116,  6,
- 27,174, 92,175, 70,190,250,  7, 69, 80, 96,128,199, 63,168,215,235, 17,215,249, 58,140, 38, 41,  8,107,212, 16, 64, 38, 53,130,
- 16,160,186, 70,  2, 80, 64,112,160, 21,125,226, 46,225,224,145,254,  8, 14, 14,230,108,253, 59, 91,252,178,208,  8,136,136,  5,
-176,254, 49,222,217,132,158,207,209,217,250,119,182,248,217,109,231, 79, 21, 58,142,229, 82,101,207, 89,  9,  0,128,232,104,187,
- 50, 82, 93, 93,141,144,144, 16,135,251,223, 27,  5,128, 85,  2,128,119,176, 32,121,  4,240,159,131,248,228,245,  9,152,182,228,
- 35,164,191,251, 60,132, 20,  5,177,132,219,140, 29,214,250, 63,125,165, 28,221, 58,182,198,167,255,219,130,152,152, 24,132,182,
-139, 69,191,118,177,176,152,254,112,255,139, 56,200,100,173,255,183,231,141,194, 75,111,110, 68,199,174, 84,139,218,143,181,254,
-199,108,253, 12,187,103,205,  0,213, 97, 48,  0,123, 85, 64,192, 94, 34,152, 61,246,165,168, 40, 78,196,209,215,244, 10,149,254,
-193, 74,121,236,148, 58, 85, 76,247,222,168,149,  1, 23,113, 25,117,151, 42, 80,177,194,  6,157,166,  3, 22,205, 89,194,249,134,
-172, 91,183,142,146,201,100,196, 96, 48,192,201,242, 36, 50,153, 12,235,214,173,243,162, 60,145,255, 80, 87, 87,247,254,243,207,
- 63,159,180, 97,195,  6,105,104,104, 40, 84, 42, 21,214,172, 89, 83,107, 54,155,199,249,243,127, 88,139,159,157, 46,231,109, 66,
- 96, 98, 98, 34,165,209,140, 38,254, 32,127,  0, 96,137,157, 11, 65,113,168, 48,104,158, 51,103,206,224,140,140,140,227,245,245,
-245,109, 45, 22,251, 52, 83, 87,242,127,240,193,  7, 49,120,240,224,137, 28,238,179, 80, 91,122,  1,203,255,249,  6,190,219,190,
- 19, 99,135, 14,192,222,188,159,237,  6, 76,187, 88,132,182,139,197,192,226, 98,140,155, 58,187,242, 74,149,126, 76,167,136,128,
- 44,174,214,255,194,180,237, 88,246,151, 49,104, 23, 45,119, 40, 23,236, 53,114,241,220,248,226, 29,224, 61,  1,247,174, 82,192,
- 73,  1,  0,128,144,224, 32,245, 81,245, 54,197,197, 14, 15,160,107,247,158,170,144, 64, 25, 24,  2, 24, 76,102, 20, 23, 23,163,
-162,248, 55, 69,112, 80, 32,104,154,246,216,113,101, 82, 41, 50,118,141, 80,176, 25,240,205,186, 35,104, 26,129,129,220,173, 39,
-118, 10, 96, 96,120, 52, 24,155,197, 78,254, 13,176, 80, 34,143, 37,118, 93,193, 78,169, 25,189,104,109, 35,210,242,133,252,157,
-149,  0,231,194, 63,213,213,213,158,111,128,  7, 37,224, 43,167, 89,194, 27, 86, 60,247,199, 23,139, 14, 65, 28,229,116, 12, 15,
- 70,198,145,223,112,242,236,239, 72, 80, 76,104, 68,250,222,144, 63,139,199, 95,120, 11,223, 14,  8,196, 11, 79,244,240, 75,251,
- 45,142, 77,192,146,236, 12, 80,203,223,196,206,168,135,177, 70,119,178,209,254, 41,161,173,208, 65,234,221,154, 20, 51,187, 47,
- 85,239,204,206,194, 53,205,  5, 84, 84, 93, 71, 89, 81, 16,  4,182, 16, 60,218,119, 24, 20,115, 20,119,116, 80,243, 71,181, 63,
- 66,200, 17,138,162, 70, 83, 20,181,231,163,143, 62,146, 78,158, 60,185, 86,175,215,143,241, 37,230,223, 28,252, 49,  5, 80,169,
- 12,243, 11,249,187, 90,169,126, 66,229,244,233,211, 99,235,234,234,150, 23, 20, 20, 44, 42, 41, 41, 65,125,125, 61,196, 98, 49,
-218,182,109,139,200,200,200,201,  3,  6, 12,248,158,163,172, 51,  0,  6,118, 12, 15,198, 35,143, 60,130,223,206,149,160,117,151,
- 94,141,250,219,184,169,179,245,  0, 62,230, 66,254, 44,158,149,247,197,232,188, 95, 48,235,205, 47, 49,124,248,112, 68, 69, 69,
-185, 85,180,252,213, 32,172, 18,224, 77, 91, 55,165,144,241, 74,196,157, 35,125, 78,165,128,  1, 32, 36, 36, 68,109,170,190, 42,
- 63,170, 46, 82,  0,246, 76, 90, 66,  8, 36, 18,  9, 66, 67, 56,215,192,134, 72, 36, 82,135,138, 68,126,191, 56,214,213, 47,176,
-234,  1,171,222,145,  1,207, 18,191,183,115,177, 88, 87,255,249, 83,133, 56,127,170, 16,145,145,145,168,168,168,240,137,248, 67,
- 35,219,193,204, 33, 57,146, 43,102,189,245, 21, 14, 31, 84,251, 77,222,165, 75,151, 28,171,253, 89, 76,198,155,200,223, 27,226,
-103, 49,103, 64,160,223,218, 15,  0,168,213,175, 56,136,159, 37,255,139,245,245,138, 41,161,173, 48,137,163,213,239, 14,143,117,
-153, 70,161, 75,195, 23, 31, 18,219,215,175, 95, 79,177,213,254,214,173, 91, 71, 57, 87,254,219,184,113, 35,181,110,221, 58,199,
-231,245,235,215,223,246, 78, 79,  8, 57, 68, 81,212,240,172,172,172,197,181,181,181,171,  9, 33,249,254,254, 15,127, 76,  1,244,
- 39, 57,221, 34, 24,130,131,131, 23,203,229,242,197, 45,148,115,232,196,137, 19,143,  2,232,210,186, 75, 47,189,197,100, 12,104,
-232,111,181,  0,180,  0,206,116,138,  8,120, 18,246,100, 65,206, 24,253,198,134,219, 66,252, 45, 81,180,120,146,191, 51,136,143,
-143,231, 68,254, 30, 13, 80,161, 80,168,246,228,142,191,221, 96, 99,251, 44,241,163,133,196,207,198,166,181,229,215,160, 45,191,
-134,200,200,200, 22, 89,252,  0, 96,181, 49, 94,123, 31,154, 67,121,181,214,231,115,113,  5, 27,219,247, 23,241,251,187,253,216,
-216,254,118,157,142, 56, 91,253,253,133,162, 22, 17,255,159,  9,132,144, 95,  1,204,224, 91,226,206, 99,230,204,153,169,  0,190,
-188, 82,165,215, 91, 76, 70,231,120,100, 72,167,136,128, 48,120,185,250, 31, 75,170,206,110,254,123, 72,169,226,113, 27,149,  0,
- 78,134, 86,124,124, 60,159,216,193,131,  7, 15, 30, 60,120,252,201, 64,243, 77,192,131,  7, 15, 30, 60,120,240, 10,  0, 15, 30,
- 60,120,240,224,193,131, 87,  0,120,240,224,193,131,  7, 15, 30,188,  2,192,131,  7, 15, 30, 60,120,240,184, 47,208,104, 22,192,
-130,  5, 11,124,206, 34,117,183,220,228,221, 46,175,176,176,208,103,121,253,251,247,191,229,242,252,125,189,173, 91,199,251, 44,
-175,178,242,183, 59,125,127,169,  6,133,149,129,155,226, 43,247,226,243,119,187,228, 53, 20, 38,162, 27,218,144,  0, 32, 11, 22,
- 44, 96,248,246,227,229,221, 75,242,210,210,210,132, 41, 41, 41, 86,  0,248,244,211, 79, 73,247,238,221, 49,124,248,112,138,111,
- 63,247,242,188, 86,  0,238,  7,180,180,200,196,244,233,211,229,  0,156, 75,134, 42, 50, 50, 50,212,188,174,120,103,160,213,106,
-159, 62,113,226, 68, 63,129, 64,176, 68, 34,145, 64,175,215,191, 50,116,232,208, 15,224,135, 74,123,132, 16,175,171, 49,222,139,
- 88,176, 96,  1,  1,199, 69,102,120,220, 57,100,103,103,203,147,146,146,212, 62,254, 86,145,147,147,179,207, 31,  5,165, 26,228,
- 61,153,147,147,179,101,253,250,245,225,176,175,105, 96,195, 29,168,110,233, 12,150,252, 15, 28, 56, 64,126,249,229, 23, 36, 36,
- 36, 96,248,240,225,252,131,227, 47, 15,192,189,142,188,188, 60,121, 75,126, 63,125,250,116,121, 70, 70,134,106,250,244,233,206,
-155, 85,211,167, 79,247, 89,  9, 96, 21,138,204,204, 76,182, 84,167, 87,178, 82, 82, 82,136,151,255,215,236,124,224, 61,123, 62,
-247, 86,158, 66,163,  9,188, 19, 10, 16,117,242,228,201,247,107,107,107,255,210,185,115,231, 86,149,149,149,104, 88,110,247,189,
-111,191,253,246,189,192,192,192,145,227,198,141, 83,181,232, 15,124, 32,127,165,114,129,215,131, 96,106,234, 58,234,246,201,107,
-190, 28,110, 83,139,190,112,237, 95, 25, 25, 25, 42,188, 73,129,250,183,123,133, 10,111, 82,152,126, 38,217,235,118, 29, 59,118,
- 44,  1,128,220,220, 92,191, 16, 24,187, 20,176, 82, 25,230,247,249,241,217,217,217,242,156,156, 28,149, 55,100,251,215,191,166,
- 16, 66,236, 75,171,187,195,164, 73, 19, 21, 57, 57, 57,170,164,164, 36,202,135,231,120,228,206,157, 59,247,142, 24, 49,  2,243,
-231,207, 39,233,233,233,163,107,107,107,243,188, 57, 55, 55, 74, 35,158, 26, 34,134,114,190,178,250,149, 77, 75,191,127,119,198,
-187,143,179,251, 54,108, 72,107,246, 28,103,207,158, 77,  0, 32, 48,176,233,165, 13,234,235,235,  1,  0,115,231,206,245,233,254,
-156, 61,162, 64, 94,218, 49, 36,166,164,145,148,148, 20,190,254,  1,  7,176,197,129,156,107,  4,  8, 61,116,120,183,117,179, 57,
-212,211,190, 83,104, 17, 33, 56,147,127, 70, 70,  6, 53,125,250,116,226, 36,215,235,235,101, 21, 10,150,104, 26, 22,252,240, 94,
-161,200, 12,247,226, 95, 19, 61, 30, 81, 63,233, 57,238,226,188, 92,215,166, 41,  2,242,210, 43, 67,105,181,218,111,122,247,238,
- 61, 21,  0, 77,  8,129, 76, 38, 67,121,121, 57,106,106,106, 16, 26, 26,138,242,242,242,125,187,118,237, 82,140, 27, 55,206, 43,
-229, 36, 47, 47,143,176, 11,179, 80, 20,133,169, 83,167, 34, 49, 49, 81, 65, 81, 20,103, 57,217,217,219, 28,159,147,146, 38,123,
-252,238,  9,134,195, 47,252,209,220, 67,214, 54,250,238,186, 77, 54,196,243,162, 74,236,114,194,206, 56,112,224,  0, 86,172, 88,
-113,211,189,216,180,105, 19,225,216,110,242,204,204, 76, 21,222,164, 26,  8, 54,249,230,129,251, 77,170,197, 22,226, 93, 60,182,
- 52,178,180, 83, 83, 83, 21,132, 16,108,222,188,153, 28, 58,116,  8,125,251,246,245,248,219,195, 77,212,100,220,154,185,  4, 57,
- 57, 57, 42,134, 97,144,150,150,  6, 79,203, 42, 83, 20, 37, 39,132, 56,158,215,239,191,255, 62,128,162, 40,204,152, 49,163, 12,
- 64,212,204,153, 51,247,172, 95,191,158,246,198, 98,255, 96,207,  7,142,207, 55,114,175,131,162, 40,164,255, 45,  0,  0,133,247,
-103,191,247,120,235,214,173,  1,  0, 95,127,145,142,249, 35,230,115,146, 57,112,224, 64,116,237,218,213, 47,237,158,150,150, 70,
-167,164,164, 48,159,126,250, 41,249,229,151, 95, 80, 86, 20,  3, 84,134,241,172,238, 37,249,187,130,110,110, 32,207,204,204, 68,
- 90, 90, 26,113, 55,128,250,178, 50, 84, 75, 45,116, 79,242,156,172,108,159,141,194,140,140, 12, 42, 35, 35,131, 98,149,  0,  0,
-138,150, 40, 20, 20, 69, 33, 57, 57, 25,132, 16,202,233,220,188, 86, 84,168,233, 26,199,139,203,118, 79,  8,218,177,206,241,226,
-178,221, 27,242, 39,132,128, 93,157,205,211, 42,109,238,158, 73,141, 70,243,101,104,104,232, 84,  0,244,188,121,243, 48,107,214,
- 44,136,197, 98,200,100, 50, 72,165, 82, 80, 20,  5,129, 64,  0,173, 86,203,185, 29,179,178,178,228, 74,165,146,100,101,101,193,
-233,158,224,219,111,191,197,252,249,243, 85, 89, 89, 89,242,187,177,227,186, 83,  8,238,132,103, 45, 51, 51, 83,149,154,154, 74,
- 61,121,118,186, 91, 11, 95,169, 84,146,233,103,146, 21,238, 60,  3,158, 48,127,254,124,242,242,203, 47,163, 75,151, 46,126, 57,
-223,249,243,231, 19,165, 50, 12, 17, 17,123,253,218, 14,219,182,109, 27,149,151,151,183,175, 95,191,126,212, 39,159,124,162,102,
-201,191, 37,216,154,185,  4,171, 87,175,  6,195, 48, 88,178,100,  9,184,200,116, 38,127,  0,216,185,115,231,246,  6, 87,120,216,
-140, 25, 51,172, 35, 70,140,128, 82,169,100,184, 26, 45,174,125,116,205,154, 53,120,242, 17,187,109,152,254, 55, 25,158, 26, 34,
-198, 43, 99, 95,230,124, 77,129,129,129, 24, 62,124, 56, 82, 82, 82,168,196,196, 68,183, 47,246, 24,174,202, 94, 74, 74, 10,  3,
-216,151, 89,  7,128,144,128, 74,158,213, 91, 72,254,205, 42,  0, 44, 89, 21, 20, 20, 56,202, 78, 58, 91, 79,222, 18,173,195,130,
-240,243,160,228, 70, 25, 80,248,179,241, 50, 50, 50, 84,126,144,225, 80, 40,146,147,147, 21,108, 27,222, 79,112, 38,127,  0, 40,
- 41, 41,113,236,187,118,237, 26,103,133, 81,171,213,190,163,215,235,103,211, 52, 77,207,156, 57, 19, 90,173, 22,165,165,165, 16,
-137, 68, 16, 10,133, 16, 10,133, 16,137, 68,144,201,100, 48, 24, 12,110, 75,162,186, 25,224,228,123,246,236, 81, 81, 20,133,105,
-211,166, 97,253,250,245, 84, 98, 98, 34,149,154,154, 74, 77,155, 54,141,125,126, 84,252, 80,209, 60,249, 55,180,165,130, 29,196,
-157,239,125,114,114,178, 34, 49, 49, 81, 13,248, 86,146, 54, 49, 49,145, 90,191,126, 61,149,153,153,  9, 66,136, 95,148,177,215,
- 94,123, 13,153,153,153,156,158, 17, 79,248,238,187,239, 70, 31, 57,114, 36, 47, 38, 38,  6, 58,157,142,  4,  6,  6,146,131,  7,
- 15,  2,112, 36, 89,250, 68,254,171, 86,173,  2, 69, 81,160,105, 26, 71,142, 28,  1, 43,211, 11,143,196,227, 20, 69,225,169,167,
-158,178, 54,108, 50,207,152, 49,163, 86, 46,151, 99,254,252,249,204,247,223,127,239,241,218,157, 67, 97, 55,114,175,  3, 20,176,
-249,165, 63,170, 22,167,255, 45,  0, 51, 30,149, 96,233,184, 87, 56,159, 23, 23,203,159,203, 49,  7, 14, 28, 32,105,105,105,142,
-215,145, 35, 71,160,187, 50, 16, 48, 27, 64,  5, 89,145,247,246, 25, 56,239,103, 95,124,207,109, 76,254, 41, 75,223,117,187, 95,
-216, 92,135, 44, 46, 46, 38,  5,  5,  5,200,204,204,  4,251,153,117,237,120,211,201,111, 53,249, 59, 91,213,236, 32,116,183,194,
- 57, 36,112,191,129, 16,130,146,146, 18,220,184,113,195,177,205,245,187,  7,  8,126,250,233,167,241,113,113,113, 16,  8,  4, 56,
-127,254, 60,  8, 33,248,253,247,223, 97, 54,155, 65, 81, 20,132, 66, 33, 40,138,130,205,102,131, 94,175,199,214,173, 91,145,152,
-216,124,216, 99,239,222,189, 42,  0,152, 54,109,218, 77,207,109,195,119,194, 18,  5,151,231,218,213,173,239,233, 59, 23, 43,159,
- 69, 83,225,  0, 46,174,127, 55,131,103,139,147,164, 28, 49,127, 39,  5,142, 85, 96,217,152,127,158, 19,249,251, 98,173,179, 74,
- 24, 75, 70,123,247,238, 85,249, 26,  6, 96,229,117,239,222,253, 38,114,243,  5,235,214,173,195,153, 51,103, 72,100,100, 36,218,
-183,111,239, 88,246,249,210,165, 75, 16,  8,  4,248,239,127,255,235,211, 31,140,120,212,190,124, 25,195, 48,248,251,223,255,142,
- 53,107,214,224,224,193,131,160, 40, 10,147,146,254,138,203,151,184, 45,224,184,115,231,206,109, 13,247,216,  8,251, 12, 25,  6,
-  0,102,204,152, 81,  3,160, 85, 78, 78, 14, 40,138,226,172, 80,217,173,255,155,215, 49,177,135,  3,128,175,211, 11,145,173,205,
-190,109,222,178,179,103,207,226,200,145, 35,141,182,217,106, 46,194,106, 97,  0,170, 14,173,198, 89,112,196,101,177,235,132,132,
-  4,158,249, 57,144,127,179, 10, 64,131,219,133, 98,173,126,150,252,221,198,254,188, 32,235,230, 44, 65, 46,113, 98, 79,242, 92,
-247,223,169, 21,169,166, 79,159,238, 28,107, 38,238,246,179,158,129, 22,145,110,134,127,227, 96,186,137, 11,124,178,252,155, 26,
-108, 59,116,232,112,211,177,205,220,147, 86,225,225,225,189, 77, 38, 19,170,171,171,113,248,240, 97,  8,  4,  2,152,205,102, 24,
- 12,  6, 48, 12,227, 88,149,210, 98,177,192,100, 50,113, 10, 49,176,247,161,169,231, 54, 49, 49,145,202,202,202, 34,153,153,153,
- 30,149,  9,187,213,117,107,114,  0,100, 67,214,222, 68,244,236,119, 95, 20,129,225,195,135,183, 92,  9,112,137,249,231,229,229,
-201, 29,100,255, 71,204,223,167, 28, 25, 23, 37, 12,128,125,181, 69,165, 82, 73,184,220,  7,174, 94,128,134,220,  7,175,115, 11,
-216,149, 29,219,183,111,143,144,144, 16,202, 85,217,237,221,187,183,207,150, 63, 33,  4, 86,171,213,177,109,232,208,161, 56,120,
-240, 32,246,255,104,195,  7, 43,185,197,216,179,179,179,199, 54,196,254, 79,  3,104, 13,192,121,177,161, 82,  0,173,  0, 32, 39,
- 39, 71,213,175, 95, 63,143,242, 26,199,254,221,120, 10, 26,222,185,202,243,  7, 82, 82, 82,168,132,132,  4,162,250, 50, 18,214,
-154,223, 64, 49, 53,128,205,190,210, 42, 45,176,162,246, 32, 13,145, 88,  8,147,173, 21,126,190,212, 15,111,172,210,224,200,145,
- 35,148,187,105,213, 60,188, 84,  0, 92, 61,  1,222, 90,254,197,197,197,196,159,238,110, 79,242, 26,194, 18,126,243, 52,164,165,
-165, 81, 41, 41, 41, 62,253,214,245, 60, 83, 83, 83,117, 74,165, 50,168,169,253,190,194, 57,246,239, 15,101,192, 57,246,207, 85,
- 25,152, 53,107, 22,  2,  3,  3, 17, 20, 20,132,224,224, 96,132,134,134, 50, 97, 97, 97,116, 78, 78, 14,158,126,250,105,199,113,
- 82,169, 20, 99,198,140,129, 82,169, 36, 77,172, 86, 21, 97, 54,155, 81, 93, 93, 13,163,209,136,208,208, 80, 72, 36, 18, 88,173,
- 86, 16, 66, 96,179,217, 96, 54,155, 97,177, 88, 96,179,217,188,202, 47,240, 20,178,154, 54,109, 26,238,134,208,140,167,132, 64,
-111,193, 42,  1, 62, 63, 95,255,110,186,237,166,159, 73,110,200,187,241, 77,182,171,245,239,172, 72,250,146, 12,232,106,253, 55,
-167,152,114, 37,127,129, 64, 64, 66, 66, 66,  0,123, 66, 29,  5,128, 88, 44, 22,104,181, 90,180,105,211,198,167,235,102,141, 41,
-161, 80,136, 69,139, 22,225,200,145, 35,248, 35,238,207,253,153,222,181,107,215,174, 97,195,134,  1, 64, 48,236,225, 92, 61,  0,
-108,217,178,165,205,254,253,251, 67,  8, 33, 14,101,155,203, 60,241, 53, 31,173,193, 83,131,111,182,254,103,253, 71,143, 45,135,
- 45, 32,132,160,255,204,254,152, 63, 98, 62,229,235,188,115, 95,149,  0,197,156, 52,178,107, 77,103,  8,117,181,128,213,254,215,
- 12,  0,177, 16, 40,185,209, 10,251,174, 12,180,165,125, 93, 33, 56,114,228,  8,149,144,144, 32,197,159, 28, 92,172,127,128, 67,
- 37,192,188,188, 60,135,235,223, 57, 31,128, 11,186,118,237, 74, 37, 39, 39,251, 45, 38,207, 65,158,207,241,245,233,211,167, 19,
-215, 87, 94, 94, 30,195,206, 10,112,154, 17,224,235, 67, 28,116, 63, 63,112,105,105,105, 88,181,106, 85,163,231,138, 37,255,164,
-164, 36, 36, 37, 37,  1,  0,246,239,223,223,156,152,240,226,226, 98,163,205,102,131, 70,163, 65,101,101, 37, 52, 26, 13,244,122,
- 61,244,122, 61,116, 58, 29,106,107,107,161,213,106, 97, 48, 24, 96, 50,153, 28, 73, 65,205,146, 24, 69, 33, 43, 43,203, 43,133,
-237, 94,198,129,  3,  7, 26,189,156,113,246,236, 89,185,243,119, 46, 49,103,215,152,191,171,229,222,146,172,125,119,191, 93,191,
-126, 61,149,149,149,229,215, 92,128,172,172, 44,206, 99, 23, 75,254, 52, 77,147,134,231,203,225,250,103, 24,  6,101,101,101,232,
-222,189, 59,181, 96,193,  2,175,207,229,245,165, 35,176,127,255,126, 48,223,180,  2, 33,  4,171, 87,175,118,220,163,  3,135, 57,
-231,237, 33, 59, 59,123, 50,  0,204,152, 49,163,164, 65,  1, 48,125,253,245,230, 54, 11, 22, 44,104,179,127,255,126, 60,246,216,
- 99,163,189,153,166,120, 35,247, 58, 40, 80,216,236,100,253,207,252, 72, 15,193, 83, 90,124,125,216,140,133, 11, 23, 98,229,174,
-247,238,196,184, 34, 96,149,128,113, 11,173, 32,134, 80,160, 22, 64, 45, 32,168,  3,106,203,128,157,133,109,145,246,117,133,160,
-193, 91, 32, 76, 73, 73, 49,242,228,239,153,252, 61,122,  0,210,210,210, 26,197,253,157,243,  1,184,206,189,108,112, 23, 42, 88,
-183,124, 75, 93,242,238,228,177,110,255,196,196, 68,181,191,166, 16, 37, 38, 38,158,204,203,203,235,125, 55,222, 96,214,234,247,
-151,251,159,181,250,189,117,255,179,216,188,121,179,227,243,191,254,245, 47,124,254,249,231,  0, 96,  6, 32,102,137, 31,  0,198,
-140, 25,227, 73,  1, 48,196,197,197, 65,175,215,195,108, 54,163,162,162,  2, 18,137,  4, 66,161,208,225,  1,168,175,175,135, 94,
-175,135,201,100,130, 86,171,197,212,169, 83, 61, 42,152,172,117,223,220,180, 86,246, 56, 46,184,149, 57,  0,190,236,119,  5, 59,
-221,207, 29, 86,175, 94,173, 90,180,104,145,162, 71,143, 30,234, 59,249, 12, 55,101,253, 59,195,155, 92,128,166,172,127, 95, 45,
-127,154,166,  9,195, 48, 20,128,127,178,143,182,205,102,123, 51, 48, 48, 16, 29, 58,116,240,105,140,121,227,213, 17, 80,171,213,
-160,178, 34,  0,  0,187,223,  8,198,152,183,235, 48,124,248,112, 44, 95,185,223,171,194, 84, 59,119,238,220, 58, 98,196,  8,  0,
-168,216,178, 37,189,253,254,253,  7, 91, 17,138, 96,252, 99,227,147,146,146,146,182,123, 51,156,  0,246,216,255, 83, 67, 68,141,
- 45,126, 16, 44, 90,184,  8, 81, 99,162,239, 88,193,172,148,148,148, 70, 26, 62,169,  3, 36,102,128, 33, 20,172, 54,  2,  9,  1,
-162,100,180,243,241, 86,240,176,243,247,202, 87,155, 84, 16, 88, 15,172,144,139,229, 63,112,224,192,155,242,  1,188,113,209,185,
-146,182, 31,200,217, 85,158,234, 22, 60,120,189,243,242,242,252, 38,239,126, 77,252, 99, 11,203,176,110,226,204,204, 76, 60,243,
-204, 51,  0, 32,102,143,113,222,215, 48,104, 53,133, 83,131,  7, 15,126, 90,173, 86,103,218,108, 54,212,214,214,194, 98,177, 56,
-226,254, 70,163,209, 49,197,144, 77, 12, 28, 51,102,140,154,195,243, 66,101,102,102,146,  6, 47, 64,163,231, 54, 47, 47,143,221,
-142,196,196, 68, 78,222,170,219,157,  3,224, 26, 22,240,116, 63,154,219,175, 84, 42,201,234,213,171, 85, 79, 62,249, 36,190,249,
-230, 27,159,238,185,235,244, 91,246,123, 70, 70,134, 42,165, 68,137,233, 30, 44,237,177, 99,199,146,139, 23, 47, 98,215,174, 93,
- 77,182,247,197,139, 23,  1,  0,185,185,185, 30,207, 39, 57, 57,147, 36, 39,143,194,232,209,197, 40, 46, 46,118,155, 93, 94, 85,
- 53, 10,128,  6, 74,101,211,227, 22, 75,254,102,179,153,136,197, 98,246,152,127, 54, 40,  4,111, 94,190,124, 25,157, 59,119,246,
-201,242,167,105,202,174,176,179,228,127,220,138,207, 85,102,  0,192,242,149,251,189, 30, 35,216, 62,177, 96,193,130,120, 66,  8,
- 38, 76,156, 48,117,210,196, 73,223,249, 50, 52, 77,126,226,241,211, 20, 69, 61, 72,  8, 32,120, 74, 11, 66,  8, 22, 45, 94,132,
-232, 49,109,255,  8,124,248, 14,150,157,  9, 90, 80, 73, 48, 45, 45,141,100,188,218, 14, 65, 85, 23,113,161,182,  3,186, 72, 42,
-128,192, 40,  8,235,203, 16, 82, 95,  5,160,141,195, 99,224,170, 52,240,240,193,  3,224, 60,221,207,197,213, 71, 50, 51, 51,193,
- 53, 97,202,149,180,253,117,226,206,242,252, 48,255,159, 71, 11,225,236, 66,119, 38, 33,182,158,132,235,190, 38, 98,136, 86,  0,
-223,142, 24, 49,226,197,156,156,156,143,173, 86, 43,106,106,106, 28, 57,  0,  0, 80, 81, 81,129,154,154, 26, 16, 66,224, 77,120,
-105,244,232,209,138, 61,123,246,168, 50, 51, 51,145,149,149, 69, 92, 99,254,163, 71,143,246,170, 24,208,173,128,225,240, 11, 94,
- 19,190, 59,130,111, 78,  9, 72, 77, 77,165,230,207,159, 79,124, 33,255, 70,  9,128, 78,247,221, 41, 41,208, 91, 47, 64,147,138,
-251,165, 75,151, 28, 10, 26, 87, 67,195, 57, 84,121,243,117,115, 27,171,180, 90, 45,  9, 13, 13,117, 38,255, 55, 77, 38, 19, 74,
- 75, 75,209,165, 75, 23,159,200, 95,169, 84, 18,230,155, 48,236, 62,110, 55, 78, 55,170,204,216,114,216, 12, 66,  8, 14,254,228,
-123,100,241,192,129,  3,120,236,177,199, 20,190,150, 15,102,  9,154, 97, 24, 17,  0,124,243,147,  5, 11, 23, 46, 68,244,216,182,
- 46,254,  1,239,192, 86,249, 27, 62,124, 56,  1,220, 79,247,115,170,  4,200,249,254,118,166,235,129,200,120, 60,189, 65, 11, 32,
-202,222,  6,207,183, 70, 39,225, 85,188,157, 88,142, 47, 84, 42,190, 42, 32, 26, 87,250,115,181,252, 93,247, 11,155, 27, 40,210,
-210,210,136,187,105, 83,222,132,  0,220,144,182,223,224, 34,207,175,243,255, 93,202,  1,123,141,228,228,100,112, 72, 88,228,140,
-166,220,253,190,134,  1,154,114,247,251, 18,  6,112, 46, 47,235, 74, 62,205,237,107,234, 82, 41,138, 90, 59, 97,194,132,245,155,
- 55,111,182,136,197, 98,152, 76, 38, 88,173, 86, 48, 12,131, 86,173, 90, 65,163,209, 32,217,203,169,103,211,166, 77, 83, 79,155,
- 54,141,218,179,103, 15,201,202,202, 66,102,102, 38,216,186,  0,119,115,229, 57,127, 99,223,190,125,100,194,132,  9,216,177, 99,
- 71,139,201,223,149,228,242,236, 10,153, 71,111,220,203, 47,191,124,147,113,225,138, 87, 94,121,133,112, 77,242, 84, 42,195, 60,
-202, 83, 42,185,197,255,101, 50, 71,233, 75, 66,  8,129, 94,175, 71,105,105,169,207, 49,255, 70,158,143,183,235, 26,125,111,  9,
-249,127,242,201, 39,254,122,102,153,236,239,183,119,119,174,  4,232, 47, 52,167,144,109,220,184,209, 43,235, 95, 57, 45,182,244,
-179, 34,180, 75,205,186,  0,103,238, 25,254,223, 52,178,111,254,  3, 56, 87, 38,195,185,115,231,160, 80, 40,192,195, 15, 30,  0,
-  0,104,138,228,239, 70, 45,235,110,155,255,239,143, 41,126,127, 40, 34,137,126, 59,175,233,211,167, 43,188, 45,239,235,129, 24,
-136,179, 66,227, 46,209,202,117, 31, 71,194,181,206,154, 53,139,218,189,123,183,252,202,149, 43, 42,131,193,  0,155,205,134,  7,
- 31,124, 80,145,144,144,224,243,253, 30, 61,122, 52, 53,122,244,104,118,132,247, 41, 52,115,171,115,  0, 60,125,231, 98,113, 54,
-100,135, 55, 38, 28, 47,139,204,176,109,132, 55, 41,146,135,228,155,236,193,148,148, 20,146, 82,162,  4,213,184, 16, 16,  5,  0,
-231,206,157, 35,205,244, 85,143,141, 62,106,212, 40,202,139,190, 79,249,227, 24,  0,168,174,174,134, 76, 38, 35, 20, 69,161,115,
-231,206,160, 40,138,234,222,189, 59, 90, 74,254,244,147, 26, 80, 20,133,164,199,237,179,138, 40,138,114, 76,247, 99,221,249,119,
-  8,204,192,217,  3,252, 42,112,238,220,185,172,242, 31,212,224,213,179,194,238,254,103,156,142,241,234,130, 83,179, 46,180,115,
-230, 30,214,213,159,146,146, 66, 41,247,170,200,185,115,231,120, 54,247,183,  2,112,175,192, 31,115,253,253, 69,216,183, 64,177,
-241,235,121,249,123, 97,159, 91,109, 61, 55,196,248,221,254,135,217,108,134, 64, 32,128, 64, 32,184,141,207,218, 58,234,238,150,
-215,116, 95,152, 61,123,182,247,  2,223,252, 99, 29,139,204,204,204, 70,131,118, 74,137,210,217,242, 86,223, 15, 99, 73,116,116,
- 52,245, 71, 95,177, 39,219,182,148,252,237,247,164,185,165,128,110,198,186,117,191,220, 54,141, 96,254,136,249,212,237, 30, 19,
-188, 28, 55,  2, 97,207, 41,178, 56, 41,159,142, 56,191, 66,161,160,120,203,223, 51,220,133,  6,168,248,248,120,190, 96,  2, 15,
- 30, 60,120,240,224,241, 39,  3,205, 55,  1, 15, 30, 60,120,240,224,193, 43,  0, 60,120,240,224,193,131,  7, 15, 94,  1,224,193,
-131,  7, 15, 30, 60,120,240, 10,  0, 15, 30, 60,120,240,224,193,227,190, 64,163, 89,  0, 11, 22, 44,240, 57, 27,212, 93, 97, 23,
- 94, 30, 47,143,151,119,251,228, 45, 91,182,172,177,118, 79,211,142,105,142,206, 83,205,216,106,138,206, 83,207,220,149, 15, 14,
- 10, 10,130, 84, 42,117,252,158,166,105,199,140, 11,103,121,236,194, 76, 12, 99,159,229,197, 46,150,195,223, 95,111,228, 81,114,
-129, 80,  2,194, 88,193, 48, 86,181, 47,242,  8, 33,138, 99,199,142,  9,227,227,227,243,224, 82,117,207, 71,121,242, 99,199,142,
- 33, 62, 62, 94,205,247,183,123, 79,158,215, 10,192,159, 17,175,191,158,223,168,225,150, 47, 31, 68,221, 85,242,242, 95, 39,  0,
-176,124,208,114,202,249,179,175,242,216, 74,113, 74,165, 18,169,169,169,205, 29,215,236,126,103,121,112,154,166,199,254,198,249,
-247, 74,165,210,177,143,171,220, 63, 35,104,115,189,188,226,228, 97, 12, 15,171, 80,181,183, 94, 69, 17,233,130, 35,245,225,138,
-144,184,135, 33, 14, 12, 86,123,250,253,161, 67,135, 48,116,232, 80,  7,241,179,132, 77, 81,212, 77,132,205, 48,140,227,117,249,
-242,101,183,242,142, 30, 61,138,129,  3,  7, 66, 38,147, 65, 40, 20, 66, 32, 16, 52,146,201,146,190,205,102,115,188, 76, 38, 19,
- 10, 10, 10,208,173, 91,183,251,241, 22, 81,118, 94, 36,242,223,127,255, 29,231,206,157, 83,181,106,213, 10,195,134, 13,107, 81,
- 31,167, 40, 90, 46,145,134,163, 85,216,  3,170,122, 93,137, 66, 87, 92,229, 80,150,  0,  0, 32,  0, 73, 68, 65, 84,119, 85,238,
-173, 12,134, 97,228, 89, 89, 89,251,138,138,138,176, 99,199, 14,200,100, 50, 44, 89,178, 68,  0,167,185,247, 62,200, 83, 21, 95,
- 56,143, 61,187,115, 33,150, 72,176,112,225,162,145,132, 16, 21,223, 83,239, 83, 15,192,189,132,172,172, 44,143, 26,207,180,105,
-211, 60,118, 76,150,160, 93,137,219, 87,248, 91,158,191,225, 84,153,143,211,160,197,165,180, 44, 87,121, 13,138, 64,139,170,139,
-179, 85,  5,157,255,255,158,239,133,132,200, 79, 31,218,141,144,139, 63,169,244,122, 19, 44, 15,211,144,117,160,208,253,202,113,
- 60, 20, 76, 84,154,138, 95,241, 91,192, 28, 69, 37,213,190, 89, 37,224,244,233,211, 16,  8,  4, 24, 54,108, 24,132, 66,161,227,
-197, 42,  4,172,213,111,181, 90, 97,179,217, 96,177, 88,112,249,242,101,236,219,183,207,173, 60,189, 94,143,194,194, 66, 12, 30,
- 60, 24, 98,177, 24, 34,145,168,145, 76,134, 97, 96,181, 90, 97,181, 90, 97,177, 88, 96, 48, 24, 80, 88, 88,  8,157, 78,119, 87,
-232, 83, 13,207, 25,141, 63, 10,209,248,204,209,203,150, 45, 99, 92,198, 22,212,213,213, 33, 34, 34,194,167,  9,232,203,150, 45,
-107,116, 62, 95,165, 23, 64, 38,107,  3,129, 64,172,210,213, 93,245, 90,102,126,126, 62,116, 58, 29,  6, 15, 30,124, 57, 49, 49,
-177,109, 85, 85, 21,118,239,222,109, 11, 15, 15, 71, 66, 66, 66,179,125,100,238,216, 81, 55,181,205,137,179,103,161, 14, 14,192,
-226,213,255,190,218,127, 64,239,142,215,175,149, 99,119,142,122, 95, 76,239,254,137,181,181,218,189, 60,117,222,253, 96, 75,255,
- 58,195,181, 22,128,176,185, 65,150, 29, 92, 61,125,191, 19,228,255,220,115,207, 53,123,140, 70,163,193,215, 95,127, 77,184, 40,
-  1, 44, 89,183,212, 90,191, 21,242,156, 45,255,150, 90,255, 78, 36, 76,  1, 32, 74,165,210,227,194, 49, 28,201,154, 98,137,157,
-181,246,157, 45,127,103,170,227,250,204, 56,121, 42,136,115, 57, 97,  0,168,174,182, 87, 70, 12, 15,207,187, 47, 58,234,165, 95,
-242,208,237,170, 74,1